15e3dd157SKalle Valo /* 25e3dd157SKalle Valo * Copyright (c) 2005-2011 Atheros Communications Inc. 35e3dd157SKalle Valo * Copyright (c) 2011-2013 Qualcomm Atheros, Inc. 45e3dd157SKalle Valo * 55e3dd157SKalle Valo * Permission to use, copy, modify, and/or distribute this software for any 65e3dd157SKalle Valo * purpose with or without fee is hereby granted, provided that the above 75e3dd157SKalle Valo * copyright notice and this permission notice appear in all copies. 85e3dd157SKalle Valo * 95e3dd157SKalle Valo * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 105e3dd157SKalle Valo * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 115e3dd157SKalle Valo * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 125e3dd157SKalle Valo * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 135e3dd157SKalle Valo * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 145e3dd157SKalle Valo * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 155e3dd157SKalle Valo * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 165e3dd157SKalle Valo */ 175e3dd157SKalle Valo 185e3dd157SKalle Valo #if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 195e3dd157SKalle Valo 205e3dd157SKalle Valo #include <linux/tracepoint.h> 21d35a6c18SMichal Kazior #include "core.h" 225e3dd157SKalle Valo 235ce8e7fdSRajkumar Manoharan #if !defined(_TRACE_H_) 245ce8e7fdSRajkumar Manoharan static inline u32 ath10k_frm_hdr_len(void *buf) 255ce8e7fdSRajkumar Manoharan { 265ce8e7fdSRajkumar Manoharan return ieee80211_hdrlen(((struct ieee80211_hdr *)buf)->frame_control); 275ce8e7fdSRajkumar Manoharan } 285ce8e7fdSRajkumar Manoharan #endif 295ce8e7fdSRajkumar Manoharan 305e3dd157SKalle Valo #define _TRACE_H_ 315e3dd157SKalle Valo 325e3dd157SKalle Valo /* create empty functions when tracing is disabled */ 335e3dd157SKalle Valo #if !defined(CONFIG_ATH10K_TRACING) 345e3dd157SKalle Valo #undef TRACE_EVENT 355e3dd157SKalle Valo #define TRACE_EVENT(name, proto, ...) \ 365e3dd157SKalle Valo static inline void trace_ ## name(proto) {} 375e3dd157SKalle Valo #undef DECLARE_EVENT_CLASS 385e3dd157SKalle Valo #define DECLARE_EVENT_CLASS(...) 395e3dd157SKalle Valo #undef DEFINE_EVENT 405e3dd157SKalle Valo #define DEFINE_EVENT(evt_class, name, proto, ...) \ 415e3dd157SKalle Valo static inline void trace_ ## name(proto) {} 425e3dd157SKalle Valo #endif /* !CONFIG_ATH10K_TRACING || __CHECKER__ */ 435e3dd157SKalle Valo 445e3dd157SKalle Valo #undef TRACE_SYSTEM 455e3dd157SKalle Valo #define TRACE_SYSTEM ath10k 465e3dd157SKalle Valo 475e3dd157SKalle Valo #define ATH10K_MSG_MAX 200 485e3dd157SKalle Valo 495e3dd157SKalle Valo DECLARE_EVENT_CLASS(ath10k_log_event, 50d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, struct va_format *vaf), 51d35a6c18SMichal Kazior TP_ARGS(ar, vaf), 525e3dd157SKalle Valo TP_STRUCT__entry( 53d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 54d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 555e3dd157SKalle Valo __dynamic_array(char, msg, ATH10K_MSG_MAX) 565e3dd157SKalle Valo ), 575e3dd157SKalle Valo TP_fast_assign( 58d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 59d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 605e3dd157SKalle Valo WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg), 615e3dd157SKalle Valo ATH10K_MSG_MAX, 625e3dd157SKalle Valo vaf->fmt, 635e3dd157SKalle Valo *vaf->va) >= ATH10K_MSG_MAX); 645e3dd157SKalle Valo ), 65d35a6c18SMichal Kazior TP_printk( 66d35a6c18SMichal Kazior "%s %s %s", 67d35a6c18SMichal Kazior __get_str(driver), 68d35a6c18SMichal Kazior __get_str(device), 69d35a6c18SMichal Kazior __get_str(msg) 70d35a6c18SMichal Kazior ) 715e3dd157SKalle Valo ); 725e3dd157SKalle Valo 735e3dd157SKalle Valo DEFINE_EVENT(ath10k_log_event, ath10k_log_err, 74d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, struct va_format *vaf), 75d35a6c18SMichal Kazior TP_ARGS(ar, vaf) 765e3dd157SKalle Valo ); 775e3dd157SKalle Valo 785e3dd157SKalle Valo DEFINE_EVENT(ath10k_log_event, ath10k_log_warn, 79d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, struct va_format *vaf), 80d35a6c18SMichal Kazior TP_ARGS(ar, vaf) 815e3dd157SKalle Valo ); 825e3dd157SKalle Valo 835e3dd157SKalle Valo DEFINE_EVENT(ath10k_log_event, ath10k_log_info, 84d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, struct va_format *vaf), 85d35a6c18SMichal Kazior TP_ARGS(ar, vaf) 865e3dd157SKalle Valo ); 875e3dd157SKalle Valo 885e3dd157SKalle Valo TRACE_EVENT(ath10k_log_dbg, 89d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, unsigned int level, struct va_format *vaf), 90d35a6c18SMichal Kazior TP_ARGS(ar, level, vaf), 915e3dd157SKalle Valo TP_STRUCT__entry( 92d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 93d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 945e3dd157SKalle Valo __field(unsigned int, level) 955e3dd157SKalle Valo __dynamic_array(char, msg, ATH10K_MSG_MAX) 965e3dd157SKalle Valo ), 975e3dd157SKalle Valo TP_fast_assign( 98d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 99d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 1005e3dd157SKalle Valo __entry->level = level; 1015e3dd157SKalle Valo WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg), 1025e3dd157SKalle Valo ATH10K_MSG_MAX, 1035e3dd157SKalle Valo vaf->fmt, 1045e3dd157SKalle Valo *vaf->va) >= ATH10K_MSG_MAX); 1055e3dd157SKalle Valo ), 106d35a6c18SMichal Kazior TP_printk( 107d35a6c18SMichal Kazior "%s %s %s", 108d35a6c18SMichal Kazior __get_str(driver), 109d35a6c18SMichal Kazior __get_str(device), 110d35a6c18SMichal Kazior __get_str(msg) 111d35a6c18SMichal Kazior ) 1125e3dd157SKalle Valo ); 1135e3dd157SKalle Valo 1145e3dd157SKalle Valo TRACE_EVENT(ath10k_log_dbg_dump, 115d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, const char *msg, const char *prefix, 1165e3dd157SKalle Valo const void *buf, size_t buf_len), 1175e3dd157SKalle Valo 118d35a6c18SMichal Kazior TP_ARGS(ar, msg, prefix, buf, buf_len), 1195e3dd157SKalle Valo 1205e3dd157SKalle Valo TP_STRUCT__entry( 121d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 122d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 1235e3dd157SKalle Valo __string(msg, msg) 1245e3dd157SKalle Valo __string(prefix, prefix) 1255e3dd157SKalle Valo __field(size_t, buf_len) 1265e3dd157SKalle Valo __dynamic_array(u8, buf, buf_len) 1275e3dd157SKalle Valo ), 1285e3dd157SKalle Valo 1295e3dd157SKalle Valo TP_fast_assign( 130d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 131d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 1325e3dd157SKalle Valo __assign_str(msg, msg); 1335e3dd157SKalle Valo __assign_str(prefix, prefix); 1345e3dd157SKalle Valo __entry->buf_len = buf_len; 1355e3dd157SKalle Valo memcpy(__get_dynamic_array(buf), buf, buf_len); 1365e3dd157SKalle Valo ), 1375e3dd157SKalle Valo 1385e3dd157SKalle Valo TP_printk( 139d35a6c18SMichal Kazior "%s %s %s/%s\n", 140d35a6c18SMichal Kazior __get_str(driver), 141d35a6c18SMichal Kazior __get_str(device), 142d35a6c18SMichal Kazior __get_str(prefix), 143d35a6c18SMichal Kazior __get_str(msg) 1445e3dd157SKalle Valo ) 1455e3dd157SKalle Valo ); 1465e3dd157SKalle Valo 1475e3dd157SKalle Valo TRACE_EVENT(ath10k_wmi_cmd, 148d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, int id, void *buf, size_t buf_len, int ret), 1495e3dd157SKalle Valo 150d35a6c18SMichal Kazior TP_ARGS(ar, id, buf, buf_len, ret), 1515e3dd157SKalle Valo 1525e3dd157SKalle Valo TP_STRUCT__entry( 153d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 154d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 1555e3dd157SKalle Valo __field(unsigned int, id) 1565e3dd157SKalle Valo __field(size_t, buf_len) 1575e3dd157SKalle Valo __dynamic_array(u8, buf, buf_len) 1589e84f653SMichal Kazior __field(int, ret) 1595e3dd157SKalle Valo ), 1605e3dd157SKalle Valo 1615e3dd157SKalle Valo TP_fast_assign( 162d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 163d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 1645e3dd157SKalle Valo __entry->id = id; 1655e3dd157SKalle Valo __entry->buf_len = buf_len; 166be8b3943SMichal Kazior __entry->ret = ret; 1675e3dd157SKalle Valo memcpy(__get_dynamic_array(buf), buf, buf_len); 1685e3dd157SKalle Valo ), 1695e3dd157SKalle Valo 1705e3dd157SKalle Valo TP_printk( 171d35a6c18SMichal Kazior "%s %s id %d len %zu ret %d", 172d35a6c18SMichal Kazior __get_str(driver), 173d35a6c18SMichal Kazior __get_str(device), 1745e3dd157SKalle Valo __entry->id, 175be8b3943SMichal Kazior __entry->buf_len, 176be8b3943SMichal Kazior __entry->ret 1775e3dd157SKalle Valo ) 1785e3dd157SKalle Valo ); 1795e3dd157SKalle Valo 1805e3dd157SKalle Valo TRACE_EVENT(ath10k_wmi_event, 181d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, int id, void *buf, size_t buf_len), 1825e3dd157SKalle Valo 183d35a6c18SMichal Kazior TP_ARGS(ar, id, buf, buf_len), 1845e3dd157SKalle Valo 1855e3dd157SKalle Valo TP_STRUCT__entry( 186d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 187d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 1885e3dd157SKalle Valo __field(unsigned int, id) 1895e3dd157SKalle Valo __field(size_t, buf_len) 1905e3dd157SKalle Valo __dynamic_array(u8, buf, buf_len) 1915e3dd157SKalle Valo ), 1925e3dd157SKalle Valo 1935e3dd157SKalle Valo TP_fast_assign( 194d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 195d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 1965e3dd157SKalle Valo __entry->id = id; 1975e3dd157SKalle Valo __entry->buf_len = buf_len; 1985e3dd157SKalle Valo memcpy(__get_dynamic_array(buf), buf, buf_len); 1995e3dd157SKalle Valo ), 2005e3dd157SKalle Valo 2015e3dd157SKalle Valo TP_printk( 202d35a6c18SMichal Kazior "%s %s id %d len %zu", 203d35a6c18SMichal Kazior __get_str(driver), 204d35a6c18SMichal Kazior __get_str(device), 2055e3dd157SKalle Valo __entry->id, 2065e3dd157SKalle Valo __entry->buf_len 2075e3dd157SKalle Valo ) 2085e3dd157SKalle Valo ); 2095e3dd157SKalle Valo 210a9bf0506SKalle Valo TRACE_EVENT(ath10k_htt_stats, 211d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, void *buf, size_t buf_len), 212a9bf0506SKalle Valo 213d35a6c18SMichal Kazior TP_ARGS(ar, buf, buf_len), 214a9bf0506SKalle Valo 215a9bf0506SKalle Valo TP_STRUCT__entry( 216d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 217d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 218a9bf0506SKalle Valo __field(size_t, buf_len) 219a9bf0506SKalle Valo __dynamic_array(u8, buf, buf_len) 220a9bf0506SKalle Valo ), 221a9bf0506SKalle Valo 222a9bf0506SKalle Valo TP_fast_assign( 223d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 224d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 225a9bf0506SKalle Valo __entry->buf_len = buf_len; 226a9bf0506SKalle Valo memcpy(__get_dynamic_array(buf), buf, buf_len); 227a9bf0506SKalle Valo ), 228a9bf0506SKalle Valo 229a9bf0506SKalle Valo TP_printk( 230d35a6c18SMichal Kazior "%s %s len %zu", 231d35a6c18SMichal Kazior __get_str(driver), 232d35a6c18SMichal Kazior __get_str(device), 233a9bf0506SKalle Valo __entry->buf_len 234a9bf0506SKalle Valo ) 235a9bf0506SKalle Valo ); 236a9bf0506SKalle Valo 237869526b9SKalle Valo TRACE_EVENT(ath10k_wmi_dbglog, 238d35a6c18SMichal Kazior TP_PROTO(struct ath10k *ar, void *buf, size_t buf_len), 239869526b9SKalle Valo 240d35a6c18SMichal Kazior TP_ARGS(ar, buf, buf_len), 241869526b9SKalle Valo 242869526b9SKalle Valo TP_STRUCT__entry( 243d35a6c18SMichal Kazior __string(device, dev_name(ar->dev)) 244d35a6c18SMichal Kazior __string(driver, dev_driver_string(ar->dev)) 245869526b9SKalle Valo __field(size_t, buf_len) 246869526b9SKalle Valo __dynamic_array(u8, buf, buf_len) 247869526b9SKalle Valo ), 248869526b9SKalle Valo 249869526b9SKalle Valo TP_fast_assign( 250d35a6c18SMichal Kazior __assign_str(device, dev_name(ar->dev)); 251d35a6c18SMichal Kazior __assign_str(driver, dev_driver_string(ar->dev)); 252869526b9SKalle Valo __entry->buf_len = buf_len; 253869526b9SKalle Valo memcpy(__get_dynamic_array(buf), buf, buf_len); 254869526b9SKalle Valo ), 255869526b9SKalle Valo 256869526b9SKalle Valo TP_printk( 257d35a6c18SMichal Kazior "%s %s len %zu", 258d35a6c18SMichal Kazior __get_str(driver), 259d35a6c18SMichal Kazior __get_str(device), 260869526b9SKalle Valo __entry->buf_len 261869526b9SKalle Valo ) 262869526b9SKalle Valo ); 263869526b9SKalle Valo 264bfdd7937SRajkumar Manoharan TRACE_EVENT(ath10k_htt_pktlog, 265bfdd7937SRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *buf, u16 buf_len), 266bfdd7937SRajkumar Manoharan 267bfdd7937SRajkumar Manoharan TP_ARGS(ar, buf, buf_len), 268bfdd7937SRajkumar Manoharan 269bfdd7937SRajkumar Manoharan TP_STRUCT__entry( 270bfdd7937SRajkumar Manoharan __string(device, dev_name(ar->dev)) 271bfdd7937SRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 272bfdd7937SRajkumar Manoharan __field(u16, buf_len) 273bfdd7937SRajkumar Manoharan __dynamic_array(u8, pktlog, buf_len) 274bfdd7937SRajkumar Manoharan ), 275bfdd7937SRajkumar Manoharan 276bfdd7937SRajkumar Manoharan TP_fast_assign( 277bfdd7937SRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 278bfdd7937SRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 279bfdd7937SRajkumar Manoharan __entry->buf_len = buf_len; 280bfdd7937SRajkumar Manoharan memcpy(__get_dynamic_array(pktlog), buf, buf_len); 281bfdd7937SRajkumar Manoharan ), 282bfdd7937SRajkumar Manoharan 283bfdd7937SRajkumar Manoharan TP_printk( 284bfdd7937SRajkumar Manoharan "%s %s size %hu", 285bfdd7937SRajkumar Manoharan __get_str(driver), 286bfdd7937SRajkumar Manoharan __get_str(device), 287bfdd7937SRajkumar Manoharan __entry->buf_len 288bfdd7937SRajkumar Manoharan ) 289bfdd7937SRajkumar Manoharan ); 290bfdd7937SRajkumar Manoharan 291d1e50f47SRajkumar Manoharan TRACE_EVENT(ath10k_htt_tx, 292d1e50f47SRajkumar Manoharan TP_PROTO(struct ath10k *ar, u16 msdu_id, u16 msdu_len, 293d1e50f47SRajkumar Manoharan u8 vdev_id, u8 tid), 294d1e50f47SRajkumar Manoharan 295d1e50f47SRajkumar Manoharan TP_ARGS(ar, msdu_id, msdu_len, vdev_id, tid), 296d1e50f47SRajkumar Manoharan 297d1e50f47SRajkumar Manoharan TP_STRUCT__entry( 298d1e50f47SRajkumar Manoharan __string(device, dev_name(ar->dev)) 299d1e50f47SRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 300d1e50f47SRajkumar Manoharan __field(u16, msdu_id) 301d1e50f47SRajkumar Manoharan __field(u16, msdu_len) 302d1e50f47SRajkumar Manoharan __field(u8, vdev_id) 303d1e50f47SRajkumar Manoharan __field(u8, tid) 304d1e50f47SRajkumar Manoharan ), 305d1e50f47SRajkumar Manoharan 306d1e50f47SRajkumar Manoharan TP_fast_assign( 307d1e50f47SRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 308d1e50f47SRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 309d1e50f47SRajkumar Manoharan __entry->msdu_id = msdu_id; 310d1e50f47SRajkumar Manoharan __entry->msdu_len = msdu_len; 311d1e50f47SRajkumar Manoharan __entry->vdev_id = vdev_id; 312d1e50f47SRajkumar Manoharan __entry->tid = tid; 313d1e50f47SRajkumar Manoharan ), 314d1e50f47SRajkumar Manoharan 315d1e50f47SRajkumar Manoharan TP_printk( 316d1e50f47SRajkumar Manoharan "%s %s msdu_id %d msdu_len %d vdev_id %d tid %d", 317d1e50f47SRajkumar Manoharan __get_str(driver), 318d1e50f47SRajkumar Manoharan __get_str(device), 319d1e50f47SRajkumar Manoharan __entry->msdu_id, 320d1e50f47SRajkumar Manoharan __entry->msdu_len, 321d1e50f47SRajkumar Manoharan __entry->vdev_id, 322d1e50f47SRajkumar Manoharan __entry->tid 323d1e50f47SRajkumar Manoharan ) 324d1e50f47SRajkumar Manoharan ); 325d1e50f47SRajkumar Manoharan 326d1e50f47SRajkumar Manoharan TRACE_EVENT(ath10k_txrx_tx_unref, 327d1e50f47SRajkumar Manoharan TP_PROTO(struct ath10k *ar, u16 msdu_id), 328d1e50f47SRajkumar Manoharan 329d1e50f47SRajkumar Manoharan TP_ARGS(ar, msdu_id), 330d1e50f47SRajkumar Manoharan 331d1e50f47SRajkumar Manoharan TP_STRUCT__entry( 332d1e50f47SRajkumar Manoharan __string(device, dev_name(ar->dev)) 333d1e50f47SRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 334d1e50f47SRajkumar Manoharan __field(u16, msdu_id) 335d1e50f47SRajkumar Manoharan ), 336d1e50f47SRajkumar Manoharan 337d1e50f47SRajkumar Manoharan TP_fast_assign( 338d1e50f47SRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 339d1e50f47SRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 340d1e50f47SRajkumar Manoharan __entry->msdu_id = msdu_id; 341d1e50f47SRajkumar Manoharan ), 342d1e50f47SRajkumar Manoharan 343d1e50f47SRajkumar Manoharan TP_printk( 344d1e50f47SRajkumar Manoharan "%s %s msdu_id %d", 345d1e50f47SRajkumar Manoharan __get_str(driver), 346d1e50f47SRajkumar Manoharan __get_str(device), 347d1e50f47SRajkumar Manoharan __entry->msdu_id 348d1e50f47SRajkumar Manoharan ) 349d1e50f47SRajkumar Manoharan ); 3509b57f88fSRajkumar Manoharan 3515ce8e7fdSRajkumar Manoharan DECLARE_EVENT_CLASS(ath10k_hdr_event, 3529b57f88fSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 3539b57f88fSRajkumar Manoharan 3549b57f88fSRajkumar Manoharan TP_ARGS(ar, data, len), 3559b57f88fSRajkumar Manoharan 3569b57f88fSRajkumar Manoharan TP_STRUCT__entry( 3579b57f88fSRajkumar Manoharan __string(device, dev_name(ar->dev)) 3589b57f88fSRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 3599b57f88fSRajkumar Manoharan __field(size_t, len) 3605ce8e7fdSRajkumar Manoharan __dynamic_array(u8, data, ath10k_frm_hdr_len(data)) 3619b57f88fSRajkumar Manoharan ), 3629b57f88fSRajkumar Manoharan 3639b57f88fSRajkumar Manoharan TP_fast_assign( 3649b57f88fSRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 3659b57f88fSRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 3665ce8e7fdSRajkumar Manoharan __entry->len = ath10k_frm_hdr_len(data); 3675ce8e7fdSRajkumar Manoharan memcpy(__get_dynamic_array(data), data, __entry->len); 3689b57f88fSRajkumar Manoharan ), 3699b57f88fSRajkumar Manoharan 3709b57f88fSRajkumar Manoharan TP_printk( 3719b57f88fSRajkumar Manoharan "%s %s len %zu\n", 3729b57f88fSRajkumar Manoharan __get_str(driver), 3739b57f88fSRajkumar Manoharan __get_str(device), 3749b57f88fSRajkumar Manoharan __entry->len 3759b57f88fSRajkumar Manoharan ) 3769b57f88fSRajkumar Manoharan ); 3779b57f88fSRajkumar Manoharan 3785ce8e7fdSRajkumar Manoharan DECLARE_EVENT_CLASS(ath10k_payload_event, 3795ce8e7fdSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 3805ce8e7fdSRajkumar Manoharan 3815ce8e7fdSRajkumar Manoharan TP_ARGS(ar, data, len), 3825ce8e7fdSRajkumar Manoharan 3835ce8e7fdSRajkumar Manoharan TP_STRUCT__entry( 3845ce8e7fdSRajkumar Manoharan __string(device, dev_name(ar->dev)) 3855ce8e7fdSRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 3865ce8e7fdSRajkumar Manoharan __field(size_t, len) 3875ce8e7fdSRajkumar Manoharan __dynamic_array(u8, payload, (len - ath10k_frm_hdr_len(data))) 3885ce8e7fdSRajkumar Manoharan ), 3895ce8e7fdSRajkumar Manoharan 3905ce8e7fdSRajkumar Manoharan TP_fast_assign( 3915ce8e7fdSRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 3925ce8e7fdSRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 3935ce8e7fdSRajkumar Manoharan __entry->len = len - ath10k_frm_hdr_len(data); 3945ce8e7fdSRajkumar Manoharan memcpy(__get_dynamic_array(payload), 3955ce8e7fdSRajkumar Manoharan data + ath10k_frm_hdr_len(data), __entry->len); 3965ce8e7fdSRajkumar Manoharan ), 3975ce8e7fdSRajkumar Manoharan 3985ce8e7fdSRajkumar Manoharan TP_printk( 3995ce8e7fdSRajkumar Manoharan "%s %s len %zu\n", 4005ce8e7fdSRajkumar Manoharan __get_str(driver), 4015ce8e7fdSRajkumar Manoharan __get_str(device), 4025ce8e7fdSRajkumar Manoharan __entry->len 4035ce8e7fdSRajkumar Manoharan ) 4045ce8e7fdSRajkumar Manoharan ); 4055ce8e7fdSRajkumar Manoharan 4065ce8e7fdSRajkumar Manoharan DEFINE_EVENT(ath10k_hdr_event, ath10k_tx_hdr, 4079b57f88fSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 4089b57f88fSRajkumar Manoharan TP_ARGS(ar, data, len) 4099b57f88fSRajkumar Manoharan ); 4109b57f88fSRajkumar Manoharan 4115ce8e7fdSRajkumar Manoharan DEFINE_EVENT(ath10k_payload_event, ath10k_tx_payload, 4129b57f88fSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 4139b57f88fSRajkumar Manoharan TP_ARGS(ar, data, len) 4149b57f88fSRajkumar Manoharan ); 4159b57f88fSRajkumar Manoharan 4165ce8e7fdSRajkumar Manoharan DEFINE_EVENT(ath10k_hdr_event, ath10k_rx_hdr, 4179b57f88fSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 4189b57f88fSRajkumar Manoharan TP_ARGS(ar, data, len) 4199b57f88fSRajkumar Manoharan ); 4209b57f88fSRajkumar Manoharan 4215ce8e7fdSRajkumar Manoharan DEFINE_EVENT(ath10k_payload_event, ath10k_rx_payload, 4229b57f88fSRajkumar Manoharan TP_PROTO(struct ath10k *ar, void *data, size_t len), 4239b57f88fSRajkumar Manoharan TP_ARGS(ar, data, len) 4249b57f88fSRajkumar Manoharan ); 425a5d85f60SMichal Kazior 4265ce8e7fdSRajkumar Manoharan TRACE_EVENT(ath10k_htt_rx_desc, 427a5d85f60SMichal Kazior TP_PROTO(struct ath10k *ar, void *data, size_t len), 4285ce8e7fdSRajkumar Manoharan 4295ce8e7fdSRajkumar Manoharan TP_ARGS(ar, data, len), 4305ce8e7fdSRajkumar Manoharan 4315ce8e7fdSRajkumar Manoharan TP_STRUCT__entry( 4325ce8e7fdSRajkumar Manoharan __string(device, dev_name(ar->dev)) 4335ce8e7fdSRajkumar Manoharan __string(driver, dev_driver_string(ar->dev)) 4345ce8e7fdSRajkumar Manoharan __field(u16, len) 4355ce8e7fdSRajkumar Manoharan __dynamic_array(u8, rxdesc, len) 4365ce8e7fdSRajkumar Manoharan ), 4375ce8e7fdSRajkumar Manoharan 4385ce8e7fdSRajkumar Manoharan TP_fast_assign( 4395ce8e7fdSRajkumar Manoharan __assign_str(device, dev_name(ar->dev)); 4405ce8e7fdSRajkumar Manoharan __assign_str(driver, dev_driver_string(ar->dev)); 4415ce8e7fdSRajkumar Manoharan __entry->len = len; 4425ce8e7fdSRajkumar Manoharan memcpy(__get_dynamic_array(rxdesc), data, len); 4435ce8e7fdSRajkumar Manoharan ), 4445ce8e7fdSRajkumar Manoharan 4455ce8e7fdSRajkumar Manoharan TP_printk( 4465ce8e7fdSRajkumar Manoharan "%s %s rxdesc len %d", 4475ce8e7fdSRajkumar Manoharan __get_str(driver), 4485ce8e7fdSRajkumar Manoharan __get_str(device), 4495ce8e7fdSRajkumar Manoharan __entry->len 4505ce8e7fdSRajkumar Manoharan ) 451a5d85f60SMichal Kazior ); 4525ce8e7fdSRajkumar Manoharan 4535e3dd157SKalle Valo #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ 4545e3dd157SKalle Valo 4555e3dd157SKalle Valo /* we don't want to use include/trace/events */ 4565e3dd157SKalle Valo #undef TRACE_INCLUDE_PATH 4575e3dd157SKalle Valo #define TRACE_INCLUDE_PATH . 4585e3dd157SKalle Valo #undef TRACE_INCLUDE_FILE 4595e3dd157SKalle Valo #define TRACE_INCLUDE_FILE trace 4605e3dd157SKalle Valo 4615e3dd157SKalle Valo /* This part must be outside protection */ 4625e3dd157SKalle Valo #include <trace/define_trace.h> 463