1*4882a593Smuzhiyun /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2019 The Linux Foundation. All rights reserved. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <linux/tracepoint.h> 9*4882a593Smuzhiyun #include "core.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define _TRACE_H_ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* create empty functions when tracing is disabled */ 14*4882a593Smuzhiyun #if !defined(CONFIG_ATH11K_TRACING) 15*4882a593Smuzhiyun #undef TRACE_EVENT 16*4882a593Smuzhiyun #define TRACE_EVENT(name, proto, ...) \ 17*4882a593Smuzhiyun static inline void trace_ ## name(proto) {} 18*4882a593Smuzhiyun #endif /* !CONFIG_ATH11K_TRACING || __CHECKER__ */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #undef TRACE_SYSTEM 21*4882a593Smuzhiyun #define TRACE_SYSTEM ath11k 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun TRACE_EVENT(ath11k_htt_pktlog, 24*4882a593Smuzhiyun TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len, 25*4882a593Smuzhiyun u32 pktlog_checksum), 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun TP_ARGS(ar, buf, buf_len, pktlog_checksum), 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun TP_STRUCT__entry( 30*4882a593Smuzhiyun __string(device, dev_name(ar->ab->dev)) 31*4882a593Smuzhiyun __string(driver, dev_driver_string(ar->ab->dev)) 32*4882a593Smuzhiyun __field(u16, buf_len) 33*4882a593Smuzhiyun __field(u32, pktlog_checksum) 34*4882a593Smuzhiyun __dynamic_array(u8, pktlog, buf_len) 35*4882a593Smuzhiyun ), 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun TP_fast_assign( 38*4882a593Smuzhiyun __assign_str(device, dev_name(ar->ab->dev)); 39*4882a593Smuzhiyun __assign_str(driver, dev_driver_string(ar->ab->dev)); 40*4882a593Smuzhiyun __entry->buf_len = buf_len; 41*4882a593Smuzhiyun __entry->pktlog_checksum = pktlog_checksum; 42*4882a593Smuzhiyun memcpy(__get_dynamic_array(pktlog), buf, buf_len); 43*4882a593Smuzhiyun ), 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun TP_printk( 46*4882a593Smuzhiyun "%s %s size %hu pktlog_checksum %d", 47*4882a593Smuzhiyun __get_str(driver), 48*4882a593Smuzhiyun __get_str(device), 49*4882a593Smuzhiyun __entry->buf_len, 50*4882a593Smuzhiyun __entry->pktlog_checksum 51*4882a593Smuzhiyun ) 52*4882a593Smuzhiyun ); 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun TRACE_EVENT(ath11k_htt_ppdu_stats, 55*4882a593Smuzhiyun TP_PROTO(struct ath11k *ar, const void *data, size_t len), 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun TP_ARGS(ar, data, len), 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun TP_STRUCT__entry( 60*4882a593Smuzhiyun __string(device, dev_name(ar->ab->dev)) 61*4882a593Smuzhiyun __string(driver, dev_driver_string(ar->ab->dev)) 62*4882a593Smuzhiyun __field(u16, len) 63*4882a593Smuzhiyun __dynamic_array(u8, ppdu, len) 64*4882a593Smuzhiyun ), 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun TP_fast_assign( 67*4882a593Smuzhiyun __assign_str(device, dev_name(ar->ab->dev)); 68*4882a593Smuzhiyun __assign_str(driver, dev_driver_string(ar->ab->dev)); 69*4882a593Smuzhiyun __entry->len = len; 70*4882a593Smuzhiyun memcpy(__get_dynamic_array(ppdu), data, len); 71*4882a593Smuzhiyun ), 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun TP_printk( 74*4882a593Smuzhiyun "%s %s ppdu len %d", 75*4882a593Smuzhiyun __get_str(driver), 76*4882a593Smuzhiyun __get_str(device), 77*4882a593Smuzhiyun __entry->len 78*4882a593Smuzhiyun ) 79*4882a593Smuzhiyun ); 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun TRACE_EVENT(ath11k_htt_rxdesc, 82*4882a593Smuzhiyun TP_PROTO(struct ath11k *ar, const void *data, size_t len), 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun TP_ARGS(ar, data, len), 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun TP_STRUCT__entry( 87*4882a593Smuzhiyun __string(device, dev_name(ar->ab->dev)) 88*4882a593Smuzhiyun __string(driver, dev_driver_string(ar->ab->dev)) 89*4882a593Smuzhiyun __field(u16, len) 90*4882a593Smuzhiyun __dynamic_array(u8, rxdesc, len) 91*4882a593Smuzhiyun ), 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun TP_fast_assign( 94*4882a593Smuzhiyun __assign_str(device, dev_name(ar->ab->dev)); 95*4882a593Smuzhiyun __assign_str(driver, dev_driver_string(ar->ab->dev)); 96*4882a593Smuzhiyun __entry->len = len; 97*4882a593Smuzhiyun memcpy(__get_dynamic_array(rxdesc), data, len); 98*4882a593Smuzhiyun ), 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun TP_printk( 101*4882a593Smuzhiyun "%s %s rxdesc len %d", 102*4882a593Smuzhiyun __get_str(driver), 103*4882a593Smuzhiyun __get_str(device), 104*4882a593Smuzhiyun __entry->len 105*4882a593Smuzhiyun ) 106*4882a593Smuzhiyun ); 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun /* we don't want to use include/trace/events */ 111*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 112*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 113*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 114*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* This part must be outside protection */ 117*4882a593Smuzhiyun #include <trace/define_trace.h> 118