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

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ath6kl_get_wmi_id

   1 /* SPDX-License-Identifier: ISC */
   2 #if !defined(_ATH6KL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
   3 
   4 #include <net/cfg80211.h>
   5 #include <linux/skbuff.h>
   6 #include <linux/tracepoint.h>
   7 #include "wmi.h"
   8 #include "hif.h"
   9 
  10 #if !defined(_ATH6KL_TRACE_H)
  11 static inline unsigned int ath6kl_get_wmi_id(void *buf, size_t buf_len)
  12 {
  13         struct wmi_cmd_hdr *hdr = buf;
  14 
  15         if (buf_len < sizeof(*hdr))
  16                 return 0;
  17 
  18         return le16_to_cpu(hdr->cmd_id);
  19 }
  20 #endif /* __ATH6KL_TRACE_H */
  21 
  22 #define _ATH6KL_TRACE_H
  23 
  24 /* create empty functions when tracing is disabled */
  25 #if !defined(CONFIG_ATH6KL_TRACING)
  26 #undef TRACE_EVENT
  27 #define TRACE_EVENT(name, proto, ...) \
  28 static inline void trace_ ## name(proto) {}
  29 #undef DECLARE_EVENT_CLASS
  30 #define DECLARE_EVENT_CLASS(...)
  31 #undef DEFINE_EVENT
  32 #define DEFINE_EVENT(evt_class, name, proto, ...) \
  33 static inline void trace_ ## name(proto) {}
  34 #endif /* !CONFIG_ATH6KL_TRACING || __CHECKER__ */
  35 
  36 #undef TRACE_SYSTEM
  37 #define TRACE_SYSTEM ath6kl
  38 
  39 TRACE_EVENT(ath6kl_wmi_cmd,
  40         TP_PROTO(void *buf, size_t buf_len),
  41 
  42         TP_ARGS(buf, buf_len),
  43 
  44         TP_STRUCT__entry(
  45                 __field(unsigned int, id)
  46                 __field(size_t, buf_len)
  47                 __dynamic_array(u8, buf, buf_len)
  48         ),
  49 
  50         TP_fast_assign(
  51                 __entry->id = ath6kl_get_wmi_id(buf, buf_len);
  52                 __entry->buf_len = buf_len;
  53                 memcpy(__get_dynamic_array(buf), buf, buf_len);
  54         ),
  55 
  56         TP_printk(
  57                 "id %d len %zd",
  58                 __entry->id, __entry->buf_len
  59         )
  60 );
  61 
  62 TRACE_EVENT(ath6kl_wmi_event,
  63         TP_PROTO(void *buf, size_t buf_len),
  64 
  65         TP_ARGS(buf, buf_len),
  66 
  67         TP_STRUCT__entry(
  68                 __field(unsigned int, id)
  69                 __field(size_t, buf_len)
  70                 __dynamic_array(u8, buf, buf_len)
  71         ),
  72 
  73         TP_fast_assign(
  74                 __entry->id = ath6kl_get_wmi_id(buf, buf_len);
  75                 __entry->buf_len = buf_len;
  76                 memcpy(__get_dynamic_array(buf), buf, buf_len);
  77         ),
  78 
  79         TP_printk(
  80                 "id %d len %zd",
  81                 __entry->id, __entry->buf_len
  82         )
  83 );
  84 
  85 TRACE_EVENT(ath6kl_sdio,
  86         TP_PROTO(unsigned int addr, int flags,
  87                  void *buf, size_t buf_len),
  88 
  89         TP_ARGS(addr, flags, buf, buf_len),
  90 
  91         TP_STRUCT__entry(
  92                 __field(unsigned int, tx)
  93                 __field(unsigned int, addr)
  94                 __field(int, flags)
  95                 __field(size_t, buf_len)
  96                 __dynamic_array(u8, buf, buf_len)
  97         ),
  98 
  99         TP_fast_assign(
 100                 __entry->addr = addr;
 101                 __entry->flags = flags;
 102                 __entry->buf_len = buf_len;
 103                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 104 
 105                 if (flags & HIF_WRITE)
 106                         __entry->tx = 1;
 107                 else
 108                         __entry->tx = 0;
 109         ),
 110 
 111         TP_printk(
 112                 "%s addr 0x%x flags 0x%x len %zd\n",
 113                 __entry->tx ? "tx" : "rx",
 114                 __entry->addr,
 115                 __entry->flags,
 116                 __entry->buf_len
 117         )
 118 );
 119 
 120 TRACE_EVENT(ath6kl_sdio_scat,
 121         TP_PROTO(unsigned int addr, int flags, unsigned int total_len,
 122                  unsigned int entries, struct hif_scatter_item *list),
 123 
 124         TP_ARGS(addr, flags, total_len, entries, list),
 125 
 126         TP_STRUCT__entry(
 127                 __field(unsigned int, tx)
 128                 __field(unsigned int, addr)
 129                 __field(int, flags)
 130                 __field(unsigned int, entries)
 131                 __field(size_t, total_len)
 132                 __dynamic_array(unsigned int, len_array, entries)
 133                 __dynamic_array(u8, data, total_len)
 134         ),
 135 
 136         TP_fast_assign(
 137                 unsigned int *len_array;
 138                 int i, offset = 0;
 139                 size_t len;
 140 
 141                 __entry->addr = addr;
 142                 __entry->flags = flags;
 143                 __entry->entries = entries;
 144                 __entry->total_len = total_len;
 145 
 146                 if (flags & HIF_WRITE)
 147                         __entry->tx = 1;
 148                 else
 149                         __entry->tx = 0;
 150 
 151                 len_array = __get_dynamic_array(len_array);
 152 
 153                 for (i = 0; i < entries; i++) {
 154                         len = list[i].len;
 155 
 156                         memcpy((u8 *) __get_dynamic_array(data) + offset,
 157                                list[i].buf, len);
 158 
 159                         len_array[i] = len;
 160                         offset += len;
 161                 }
 162         ),
 163 
 164         TP_printk(
 165                 "%s addr 0x%x flags 0x%x entries %d total_len %zd\n",
 166                 __entry->tx ? "tx" : "rx",
 167                 __entry->addr,
 168                 __entry->flags,
 169                 __entry->entries,
 170                 __entry->total_len
 171         )
 172 );
 173 
 174 TRACE_EVENT(ath6kl_sdio_irq,
 175         TP_PROTO(void *buf, size_t buf_len),
 176 
 177         TP_ARGS(buf, buf_len),
 178 
 179         TP_STRUCT__entry(
 180                 __field(size_t, buf_len)
 181                 __dynamic_array(u8, buf, buf_len)
 182         ),
 183 
 184         TP_fast_assign(
 185                 __entry->buf_len = buf_len;
 186                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 187         ),
 188 
 189         TP_printk(
 190                 "irq len %zd\n", __entry->buf_len
 191         )
 192 );
 193 
 194 TRACE_EVENT(ath6kl_htc_rx,
 195         TP_PROTO(int status, int endpoint, void *buf,
 196                  size_t buf_len),
 197 
 198         TP_ARGS(status, endpoint, buf, buf_len),
 199 
 200         TP_STRUCT__entry(
 201                 __field(int, status)
 202                 __field(int, endpoint)
 203                 __field(size_t, buf_len)
 204                 __dynamic_array(u8, buf, buf_len)
 205         ),
 206 
 207         TP_fast_assign(
 208                 __entry->status = status;
 209                 __entry->endpoint = endpoint;
 210                 __entry->buf_len = buf_len;
 211                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 212         ),
 213 
 214         TP_printk(
 215                 "status %d endpoint %d len %zd\n",
 216                 __entry->status,
 217                 __entry->endpoint,
 218                 __entry->buf_len
 219         )
 220 );
 221 
 222 TRACE_EVENT(ath6kl_htc_tx,
 223         TP_PROTO(int status, int endpoint, void *buf,
 224                  size_t buf_len),
 225 
 226         TP_ARGS(status, endpoint, buf, buf_len),
 227 
 228         TP_STRUCT__entry(
 229                 __field(int, status)
 230                 __field(int, endpoint)
 231                 __field(size_t, buf_len)
 232                 __dynamic_array(u8, buf, buf_len)
 233         ),
 234 
 235         TP_fast_assign(
 236                 __entry->status = status;
 237                 __entry->endpoint = endpoint;
 238                 __entry->buf_len = buf_len;
 239                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 240         ),
 241 
 242         TP_printk(
 243                 "status %d endpoint %d len %zd\n",
 244                 __entry->status,
 245                 __entry->endpoint,
 246                 __entry->buf_len
 247         )
 248 );
 249 
 250 #define ATH6KL_MSG_MAX 200
 251 
 252 DECLARE_EVENT_CLASS(ath6kl_log_event,
 253         TP_PROTO(struct va_format *vaf),
 254         TP_ARGS(vaf),
 255         TP_STRUCT__entry(
 256                 __dynamic_array(char, msg, ATH6KL_MSG_MAX)
 257         ),
 258         TP_fast_assign(
 259                 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
 260                                        ATH6KL_MSG_MAX,
 261                                        vaf->fmt,
 262                                        *vaf->va) >= ATH6KL_MSG_MAX);
 263         ),
 264         TP_printk("%s", __get_str(msg))
 265 );
 266 
 267 DEFINE_EVENT(ath6kl_log_event, ath6kl_log_err,
 268              TP_PROTO(struct va_format *vaf),
 269              TP_ARGS(vaf)
 270 );
 271 
 272 DEFINE_EVENT(ath6kl_log_event, ath6kl_log_warn,
 273              TP_PROTO(struct va_format *vaf),
 274              TP_ARGS(vaf)
 275 );
 276 
 277 DEFINE_EVENT(ath6kl_log_event, ath6kl_log_info,
 278              TP_PROTO(struct va_format *vaf),
 279              TP_ARGS(vaf)
 280 );
 281 
 282 TRACE_EVENT(ath6kl_log_dbg,
 283         TP_PROTO(unsigned int level, struct va_format *vaf),
 284         TP_ARGS(level, vaf),
 285         TP_STRUCT__entry(
 286                 __field(unsigned int, level)
 287                 __dynamic_array(char, msg, ATH6KL_MSG_MAX)
 288         ),
 289         TP_fast_assign(
 290                 __entry->level = level;
 291                 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
 292                                        ATH6KL_MSG_MAX,
 293                                        vaf->fmt,
 294                                        *vaf->va) >= ATH6KL_MSG_MAX);
 295         ),
 296         TP_printk("%s", __get_str(msg))
 297 );
 298 
 299 TRACE_EVENT(ath6kl_log_dbg_dump,
 300         TP_PROTO(const char *msg, const char *prefix,
 301                  const void *buf, size_t buf_len),
 302 
 303         TP_ARGS(msg, prefix, buf, buf_len),
 304 
 305         TP_STRUCT__entry(
 306                 __string(msg, msg)
 307                 __string(prefix, prefix)
 308                 __field(size_t, buf_len)
 309                 __dynamic_array(u8, buf, buf_len)
 310         ),
 311 
 312         TP_fast_assign(
 313                 __assign_str(msg, msg);
 314                 __assign_str(prefix, prefix);
 315                 __entry->buf_len = buf_len;
 316                 memcpy(__get_dynamic_array(buf), buf, buf_len);
 317         ),
 318 
 319         TP_printk(
 320                 "%s/%s\n", __get_str(prefix), __get_str(msg)
 321         )
 322 );
 323 
 324 #endif /* _ ATH6KL_TRACE_H || TRACE_HEADER_MULTI_READ*/
 325 
 326 /* we don't want to use include/trace/events */
 327 #undef TRACE_INCLUDE_PATH
 328 #define TRACE_INCLUDE_PATH .
 329 #undef TRACE_INCLUDE_FILE
 330 #define TRACE_INCLUDE_FILE trace
 331 
 332 /* This part must be outside protection */
 333 #include <trace/define_trace.h>

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