0001
0002
0003
0004
0005
0006 #if !defined(CONFIG_IWLWIFI_DEVICE_TRACING)
0007
0008 #define trace_iwlmei_sap_data(...)
0009
0010 #else
0011
0012 #if !defined(__IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_DATA) || defined(TRACE_HEADER_MULTI_READ)
0013
0014 #ifndef __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_DATA
0015 enum iwl_sap_data_trace_type {
0016 IWL_SAP_RX_DATA_TO_AIR,
0017 IWL_SAP_TX_DATA_FROM_AIR,
0018 IWL_SAP_RX_DATA_DROPPED_FROM_AIR,
0019 IWL_SAP_TX_DHCP,
0020 };
0021
0022 static inline size_t
0023 iwlmei_sap_data_offset(enum iwl_sap_data_trace_type trace_type)
0024 {
0025 switch (trace_type) {
0026 case IWL_SAP_RX_DATA_TO_AIR:
0027 return 0;
0028 case IWL_SAP_TX_DATA_FROM_AIR:
0029 case IWL_SAP_RX_DATA_DROPPED_FROM_AIR:
0030 return sizeof(struct iwl_sap_hdr);
0031 case IWL_SAP_TX_DHCP:
0032 return sizeof(struct iwl_sap_cb_data);
0033 default:
0034 WARN_ON_ONCE(1);
0035 }
0036
0037 return 0;
0038 }
0039 #endif
0040
0041 #define __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_DATA
0042
0043 #include <linux/tracepoint.h>
0044 #include <linux/skbuff.h>
0045 #include "sap.h"
0046
0047 #undef TRACE_SYSTEM
0048 #define TRACE_SYSTEM iwlmei_sap_data
0049
0050 TRACE_EVENT(iwlmei_sap_data,
0051 TP_PROTO(const struct sk_buff *skb,
0052 enum iwl_sap_data_trace_type trace_type),
0053 TP_ARGS(skb, trace_type),
0054 TP_STRUCT__entry(
0055 __dynamic_array(u8, data,
0056 skb->len - iwlmei_sap_data_offset(trace_type))
0057 __field(u32, trace_type)
0058 ),
0059 TP_fast_assign(
0060 size_t offset = iwlmei_sap_data_offset(trace_type);
0061 __entry->trace_type = trace_type;
0062 skb_copy_bits(skb, offset, __get_dynamic_array(data),
0063 skb->len - offset);
0064 ),
0065 TP_printk("sap_data:trace_type %d len %d",
0066 __entry->trace_type, __get_dynamic_array_len(data))
0067 );
0068
0069
0070
0071
0072
0073
0074 #endif
0075
0076 #undef TRACE_INCLUDE_PATH
0077 #define TRACE_INCLUDE_PATH .
0078 #undef TRACE_INCLUDE_FILE
0079 #define TRACE_INCLUDE_FILE trace-data
0080 #include <trace/define_trace.h>
0081
0082 #endif