root/drivers/net/wireless/ath/ath10k/trace.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ath10k_frm_hdr_len

   1 /* SPDX-License-Identifier: ISC */
   2 /*
   3  * Copyright (c) 2005-2011 Atheros Communications Inc.
   4  * Copyright (c) 2011-2016 Qualcomm Atheros, Inc.
   5  */
   6 
   7 #if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
   8 
   9 #include <linux/tracepoint.h>
  10 #include "core.h"
  11 
  12 #if !defined(_TRACE_H_)
  13 static inline u32 ath10k_frm_hdr_len(const void *buf, size_t len)
  14 {
  15         const struct ieee80211_hdr *hdr = buf;
  16 
  17         /* In some rare cases (e.g. fcs error) device reports frame buffer
  18          * shorter than what frame header implies (e.g. len = 0). The buffer
  19          * can still be accessed so do a simple min() to guarantee caller
  20          * doesn't get value greater than len.
  21          */
  22         return min_t(u32, len, ieee80211_hdrlen(hdr->frame_control));
  23 }
  24 #endif
  25 
  26 #define _TRACE_H_
  27 
  28 /* create empty functions when tracing is disabled */
  29 #if !defined(CONFIG_ATH10K_TRACING)
  30 #undef TRACE_EVENT
  31 #define TRACE_EVENT(name, proto, ...) \
  32 static inline void trace_ ## name(proto) {} \
  33 static inline bool trace_##name##_enabled(void) \
  34 {                                               \
  35         return false;                           \
  36 }
  37 #undef DECLARE_EVENT_CLASS
  38 #define DECLARE_EVENT_CLASS(...)
  39 #undef DEFINE_EVENT
  40 #define DEFINE_EVENT(evt_class, name, proto, ...) \
  41 static inline void trace_ ## name(proto) {}
  42 #endif /* !CONFIG_ATH10K_TRACING || __CHECKER__ */
  43 
  44 #undef TRACE_SYSTEM
  45 #define TRACE_SYSTEM ath10k
  46 
  47 #define ATH10K_MSG_MAX 400
  48 
  49 DECLARE_EVENT_CLASS(ath10k_log_event,
  50         TP_PROTO(struct ath10k *ar, struct va_format *vaf),
  51         TP_ARGS(ar, vaf),
  52         TP_STRUCT__entry(
  53                 __string(device, dev_name(ar->dev))
  54                 __string(driver, dev_driver_string(ar->dev))
  55                 __dynamic_array(char, msg, ATH10K_MSG_MAX)
  56         ),
  57         TP_fast_assign(
  58                 __assign_str(device, dev_name(ar->dev));
  59                 __assign_str(driver, dev_driver_string(ar->dev));
  60                 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
  61                                        ATH10K_MSG_MAX,
  62                                        vaf->fmt,
  63                                        *vaf->va) >= ATH10K_MSG_MAX);
  64         ),
  65         TP_printk(
  66                 "%s %s %s",
  67                 __get_str(driver),
  68                 __get_str(device),
  69                 __get_str(msg)
  70         )
  71 );
  72 
  73 DEFINE_EVENT(ath10k_log_event, ath10k_log_err,
  74              TP_PROTO(struct ath10k *ar, struct va_format *vaf),
  75              TP_ARGS(ar, vaf)
  76 );
  77 
  78 DEFINE_EVENT(ath10k_log_event, ath10k_log_warn,
  79              TP_PROTO(struct ath10k *ar, struct va_format *vaf),
  80              TP_ARGS(ar, vaf)
  81 );
  82 
  83 DEFINE_EVENT(ath10k_log_event, ath10k_log_info,
  84              TP_PROTO(struct ath10k *ar, struct va_format *vaf),
  85              TP_ARGS(ar, vaf)
  86 );
  87 
  88 TRACE_EVENT(ath10k_log_dbg,
  89         TP_PROTO(struct ath10k *ar, unsigned int level, struct va_format *vaf),
  90         TP_ARGS(ar, level, vaf),
  91         TP_STRUCT__entry(
  92                 __string(device, dev_name(ar->dev))
  93                 __string(driver, dev_driver_string(ar->dev))
  94                 __field(unsigned int, level)
  95                 __dynamic_array(char, msg, ATH10K_MSG_MAX)
  96         ),
  97         TP_fast_assign(
  98                 __assign_str(device, dev_name(ar->dev));
  99                 __assign_str(driver, dev_driver_string(ar->dev));
 100                 __entry->level = level;
 101                 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
 102                                        ATH10K_MSG_MAX,
 103                                        vaf->fmt,
 104                                        *vaf->va) >= ATH10K_MSG_MAX);
 105         ),
 106         TP_printk(
 107                 "%s %s %s",
 108                 __get_str(driver),
 109                 __get_str(device),
 110                 __get_str(msg)
 111         )
 112 );
 113 
 114 TRACE_EVENT(ath10k_log_dbg_dump,
 115         TP_PROTO(struct ath10k *ar, const char *msg, const char *prefix,
 116                  const void *buf, size_t buf_len),
 117 
 118         TP_ARGS(ar, msg, prefix, buf, buf_len),
 119 
 120         TP_STRUCT__entry(
 121                 __string(device, dev_name(ar->dev))
 122                 __string(driver, dev_driver_string(ar->dev))
 123                 __string(msg, msg)
 124                 __string(prefix, prefix)
 125                 __field(size_t, buf_len)
 126                 __dynamic_array(u8, buf, buf_len)
 127         ),
 128 
 129         TP_fast_assign(
 130                 __assign_str(device, dev_name(ar->dev));
 131                 __assign_str(driver, dev_driver_string(ar->dev));
 132                 __assign_str(msg, msg);
 133                 __assign_str(prefix, prefix);
 134                 __entry->buf_len = buf_len;
 135                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 136         ),
 137 
 138         TP_printk(
 139                 "%s %s %s/%s\n",
 140                 __get_str(driver),
 141                 __get_str(device),
 142                 __get_str(prefix),
 143                 __get_str(msg)
 144         )
 145 );
 146 
 147 TRACE_EVENT(ath10k_wmi_cmd,
 148         TP_PROTO(struct ath10k *ar, int id, const void *buf, size_t buf_len),
 149 
 150         TP_ARGS(ar, id, buf, buf_len),
 151 
 152         TP_STRUCT__entry(
 153                 __string(device, dev_name(ar->dev))
 154                 __string(driver, dev_driver_string(ar->dev))
 155                 __field(unsigned int, id)
 156                 __field(size_t, buf_len)
 157                 __dynamic_array(u8, buf, buf_len)
 158         ),
 159 
 160         TP_fast_assign(
 161                 __assign_str(device, dev_name(ar->dev));
 162                 __assign_str(driver, dev_driver_string(ar->dev));
 163                 __entry->id = id;
 164                 __entry->buf_len = buf_len;
 165                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 166         ),
 167 
 168         TP_printk(
 169                 "%s %s id %d len %zu",
 170                 __get_str(driver),
 171                 __get_str(device),
 172                 __entry->id,
 173                 __entry->buf_len
 174         )
 175 );
 176 
 177 TRACE_EVENT(ath10k_wmi_event,
 178         TP_PROTO(struct ath10k *ar, int id, const void *buf, size_t buf_len),
 179 
 180         TP_ARGS(ar, id, buf, buf_len),
 181 
 182         TP_STRUCT__entry(
 183                 __string(device, dev_name(ar->dev))
 184                 __string(driver, dev_driver_string(ar->dev))
 185                 __field(unsigned int, id)
 186                 __field(size_t, buf_len)
 187                 __dynamic_array(u8, buf, buf_len)
 188         ),
 189 
 190         TP_fast_assign(
 191                 __assign_str(device, dev_name(ar->dev));
 192                 __assign_str(driver, dev_driver_string(ar->dev));
 193                 __entry->id = id;
 194                 __entry->buf_len = buf_len;
 195                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 196         ),
 197 
 198         TP_printk(
 199                 "%s %s id %d len %zu",
 200                 __get_str(driver),
 201                 __get_str(device),
 202                 __entry->id,
 203                 __entry->buf_len
 204         )
 205 );
 206 
 207 TRACE_EVENT(ath10k_htt_stats,
 208         TP_PROTO(struct ath10k *ar, const void *buf, size_t buf_len),
 209 
 210         TP_ARGS(ar, buf, buf_len),
 211 
 212         TP_STRUCT__entry(
 213                 __string(device, dev_name(ar->dev))
 214                 __string(driver, dev_driver_string(ar->dev))
 215                 __field(size_t, buf_len)
 216                 __dynamic_array(u8, buf, buf_len)
 217         ),
 218 
 219         TP_fast_assign(
 220                 __assign_str(device, dev_name(ar->dev));
 221                 __assign_str(driver, dev_driver_string(ar->dev));
 222                 __entry->buf_len = buf_len;
 223                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 224         ),
 225 
 226         TP_printk(
 227                 "%s %s len %zu",
 228                 __get_str(driver),
 229                 __get_str(device),
 230                 __entry->buf_len
 231         )
 232 );
 233 
 234 TRACE_EVENT(ath10k_wmi_dbglog,
 235         TP_PROTO(struct ath10k *ar, const void *buf, size_t buf_len),
 236 
 237         TP_ARGS(ar, buf, buf_len),
 238 
 239         TP_STRUCT__entry(
 240                 __string(device, dev_name(ar->dev))
 241                 __string(driver, dev_driver_string(ar->dev))
 242                 __field(u8, hw_type);
 243                 __field(size_t, buf_len)
 244                 __dynamic_array(u8, buf, buf_len)
 245         ),
 246 
 247         TP_fast_assign(
 248                 __assign_str(device, dev_name(ar->dev));
 249                 __assign_str(driver, dev_driver_string(ar->dev));
 250                 __entry->hw_type = ar->hw_rev;
 251                 __entry->buf_len = buf_len;
 252                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 253         ),
 254 
 255         TP_printk(
 256                 "%s %s %d len %zu",
 257                 __get_str(driver),
 258                 __get_str(device),
 259                 __entry->hw_type,
 260                 __entry->buf_len
 261         )
 262 );
 263 
 264 TRACE_EVENT(ath10k_htt_pktlog,
 265             TP_PROTO(struct ath10k *ar, const void *buf, u16 buf_len),
 266 
 267         TP_ARGS(ar, buf, buf_len),
 268 
 269         TP_STRUCT__entry(
 270                 __string(device, dev_name(ar->dev))
 271                 __string(driver, dev_driver_string(ar->dev))
 272                 __field(u8, hw_type);
 273                 __field(u16, buf_len)
 274                 __dynamic_array(u8, pktlog, buf_len)
 275         ),
 276 
 277         TP_fast_assign(
 278                 __assign_str(device, dev_name(ar->dev));
 279                 __assign_str(driver, dev_driver_string(ar->dev));
 280                 __entry->hw_type = ar->hw_rev;
 281                 __entry->buf_len = buf_len;
 282                 memcpy(__get_dynamic_array(pktlog), buf, buf_len);
 283         ),
 284 
 285         TP_printk(
 286                 "%s %s %d size %hu",
 287                 __get_str(driver),
 288                 __get_str(device),
 289                 __entry->hw_type,
 290                 __entry->buf_len
 291          )
 292 );
 293 
 294 TRACE_EVENT(ath10k_htt_tx,
 295             TP_PROTO(struct ath10k *ar, u16 msdu_id, u16 msdu_len,
 296                      u8 vdev_id, u8 tid),
 297 
 298         TP_ARGS(ar, msdu_id, msdu_len, vdev_id, tid),
 299 
 300         TP_STRUCT__entry(
 301                 __string(device, dev_name(ar->dev))
 302                 __string(driver, dev_driver_string(ar->dev))
 303                 __field(u16, msdu_id)
 304                 __field(u16, msdu_len)
 305                 __field(u8, vdev_id)
 306                 __field(u8, tid)
 307         ),
 308 
 309         TP_fast_assign(
 310                 __assign_str(device, dev_name(ar->dev));
 311                 __assign_str(driver, dev_driver_string(ar->dev));
 312                 __entry->msdu_id = msdu_id;
 313                 __entry->msdu_len = msdu_len;
 314                 __entry->vdev_id = vdev_id;
 315                 __entry->tid = tid;
 316         ),
 317 
 318         TP_printk(
 319                 "%s %s msdu_id %d msdu_len %d vdev_id %d tid %d",
 320                 __get_str(driver),
 321                 __get_str(device),
 322                 __entry->msdu_id,
 323                 __entry->msdu_len,
 324                 __entry->vdev_id,
 325                 __entry->tid
 326          )
 327 );
 328 
 329 TRACE_EVENT(ath10k_txrx_tx_unref,
 330             TP_PROTO(struct ath10k *ar, u16 msdu_id),
 331 
 332         TP_ARGS(ar, msdu_id),
 333 
 334         TP_STRUCT__entry(
 335                 __string(device, dev_name(ar->dev))
 336                 __string(driver, dev_driver_string(ar->dev))
 337                 __field(u16, msdu_id)
 338         ),
 339 
 340         TP_fast_assign(
 341                 __assign_str(device, dev_name(ar->dev));
 342                 __assign_str(driver, dev_driver_string(ar->dev));
 343                 __entry->msdu_id = msdu_id;
 344         ),
 345 
 346         TP_printk(
 347                 "%s %s msdu_id %d",
 348                 __get_str(driver),
 349                 __get_str(device),
 350                 __entry->msdu_id
 351          )
 352 );
 353 
 354 DECLARE_EVENT_CLASS(ath10k_hdr_event,
 355                     TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 356 
 357         TP_ARGS(ar, data, len),
 358 
 359         TP_STRUCT__entry(
 360                 __string(device, dev_name(ar->dev))
 361                 __string(driver, dev_driver_string(ar->dev))
 362                 __field(size_t, len)
 363                 __dynamic_array(u8, data, ath10k_frm_hdr_len(data, len))
 364         ),
 365 
 366         TP_fast_assign(
 367                 __assign_str(device, dev_name(ar->dev));
 368                 __assign_str(driver, dev_driver_string(ar->dev));
 369                 __entry->len = ath10k_frm_hdr_len(data, len);
 370                 memcpy(__get_dynamic_array(data), data, __entry->len);
 371         ),
 372 
 373         TP_printk(
 374                 "%s %s len %zu\n",
 375                 __get_str(driver),
 376                 __get_str(device),
 377                 __entry->len
 378         )
 379 );
 380 
 381 DECLARE_EVENT_CLASS(ath10k_payload_event,
 382                     TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 383 
 384         TP_ARGS(ar, data, len),
 385 
 386         TP_STRUCT__entry(
 387                 __string(device, dev_name(ar->dev))
 388                 __string(driver, dev_driver_string(ar->dev))
 389                 __field(size_t, len)
 390                 __dynamic_array(u8, payload, (len -
 391                                               ath10k_frm_hdr_len(data, len)))
 392         ),
 393 
 394         TP_fast_assign(
 395                 __assign_str(device, dev_name(ar->dev));
 396                 __assign_str(driver, dev_driver_string(ar->dev));
 397                 __entry->len = len - ath10k_frm_hdr_len(data, len);
 398                 memcpy(__get_dynamic_array(payload),
 399                        data + ath10k_frm_hdr_len(data, len), __entry->len);
 400         ),
 401 
 402         TP_printk(
 403                 "%s %s len %zu\n",
 404                 __get_str(driver),
 405                 __get_str(device),
 406                 __entry->len
 407         )
 408 );
 409 
 410 DEFINE_EVENT(ath10k_hdr_event, ath10k_tx_hdr,
 411              TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 412              TP_ARGS(ar, data, len)
 413 );
 414 
 415 DEFINE_EVENT(ath10k_payload_event, ath10k_tx_payload,
 416              TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 417              TP_ARGS(ar, data, len)
 418 );
 419 
 420 DEFINE_EVENT(ath10k_hdr_event, ath10k_rx_hdr,
 421              TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 422              TP_ARGS(ar, data, len)
 423 );
 424 
 425 DEFINE_EVENT(ath10k_payload_event, ath10k_rx_payload,
 426              TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 427              TP_ARGS(ar, data, len)
 428 );
 429 
 430 TRACE_EVENT(ath10k_htt_rx_desc,
 431             TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 432 
 433         TP_ARGS(ar, data, len),
 434 
 435         TP_STRUCT__entry(
 436                 __string(device, dev_name(ar->dev))
 437                 __string(driver, dev_driver_string(ar->dev))
 438                 __field(u8, hw_type);
 439                 __field(u16, len)
 440                 __dynamic_array(u8, rxdesc, len)
 441         ),
 442 
 443         TP_fast_assign(
 444                 __assign_str(device, dev_name(ar->dev));
 445                 __assign_str(driver, dev_driver_string(ar->dev));
 446                 __entry->hw_type = ar->hw_rev;
 447                 __entry->len = len;
 448                 memcpy(__get_dynamic_array(rxdesc), data, len);
 449         ),
 450 
 451         TP_printk(
 452                 "%s %s %d rxdesc len %d",
 453                 __get_str(driver),
 454                 __get_str(device),
 455                 __entry->hw_type,
 456                 __entry->len
 457          )
 458 );
 459 
 460 TRACE_EVENT(ath10k_wmi_diag_container,
 461             TP_PROTO(struct ath10k *ar,
 462                      u8 type,
 463                      u32 timestamp,
 464                      u32 code,
 465                      u16 len,
 466                      const void *data),
 467 
 468         TP_ARGS(ar, type, timestamp, code, len, data),
 469 
 470         TP_STRUCT__entry(
 471                 __string(device, dev_name(ar->dev))
 472                 __string(driver, dev_driver_string(ar->dev))
 473                 __field(u8, type)
 474                 __field(u32, timestamp)
 475                 __field(u32, code)
 476                 __field(u16, len)
 477                 __dynamic_array(u8, data, len)
 478         ),
 479 
 480         TP_fast_assign(
 481                 __assign_str(device, dev_name(ar->dev));
 482                 __assign_str(driver, dev_driver_string(ar->dev));
 483                 __entry->type = type;
 484                 __entry->timestamp = timestamp;
 485                 __entry->code = code;
 486                 __entry->len = len;
 487                 memcpy(__get_dynamic_array(data), data, len);
 488         ),
 489 
 490         TP_printk(
 491                 "%s %s diag container type %hhu timestamp %u code %u len %d",
 492                 __get_str(driver),
 493                 __get_str(device),
 494                 __entry->type,
 495                 __entry->timestamp,
 496                 __entry->code,
 497                 __entry->len
 498         )
 499 );
 500 
 501 TRACE_EVENT(ath10k_wmi_diag,
 502             TP_PROTO(struct ath10k *ar, const void *data, size_t len),
 503 
 504         TP_ARGS(ar, data, len),
 505 
 506         TP_STRUCT__entry(
 507                 __string(device, dev_name(ar->dev))
 508                 __string(driver, dev_driver_string(ar->dev))
 509                 __field(u16, len)
 510                 __dynamic_array(u8, data, len)
 511         ),
 512 
 513         TP_fast_assign(
 514                 __assign_str(device, dev_name(ar->dev));
 515                 __assign_str(driver, dev_driver_string(ar->dev));
 516                 __entry->len = len;
 517                 memcpy(__get_dynamic_array(data), data, len);
 518         ),
 519 
 520         TP_printk(
 521                 "%s %s tlv diag len %d",
 522                 __get_str(driver),
 523                 __get_str(device),
 524                 __entry->len
 525         )
 526 );
 527 
 528 #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/
 529 
 530 /* we don't want to use include/trace/events */
 531 #undef TRACE_INCLUDE_PATH
 532 #define TRACE_INCLUDE_PATH .
 533 #undef TRACE_INCLUDE_FILE
 534 #define TRACE_INCLUDE_FILE trace
 535 
 536 /* This part must be outside protection */
 537 #include <trace/define_trace.h>

/* [<][>][^][v][top][bottom][index][help] */