1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /****************************************************************************** 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright(c) 2009 - 2014 Intel Corporation. All rights reserved. 5*4882a593Smuzhiyun * Copyright(c) 2015 Intel Deutschland GmbH 6*4882a593Smuzhiyun * Copyright(c) 2018 - 2019 Intel Corporation 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Contact Information: 9*4882a593Smuzhiyun * Intel Linux Wireless <linuxwifi@intel.com> 10*4882a593Smuzhiyun * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun *****************************************************************************/ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #if !defined(__IWLWIFI_DEVICE_TRACE_DATA) || defined(TRACE_HEADER_MULTI_READ) 15*4882a593Smuzhiyun #define __IWLWIFI_DEVICE_TRACE_DATA 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #include <linux/tracepoint.h> 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #undef TRACE_SYSTEM 20*4882a593Smuzhiyun #define TRACE_SYSTEM iwlwifi_data 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun TRACE_EVENT(iwlwifi_dev_tx_tb, 23*4882a593Smuzhiyun TP_PROTO(const struct device *dev, struct sk_buff *skb, 24*4882a593Smuzhiyun u8 *data_src, dma_addr_t phys, size_t data_len), 25*4882a593Smuzhiyun TP_ARGS(dev, skb, data_src, phys, data_len), 26*4882a593Smuzhiyun TP_STRUCT__entry( 27*4882a593Smuzhiyun DEV_ENTRY 28*4882a593Smuzhiyun __field(u64, phys) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun __dynamic_array(u8, data, 31*4882a593Smuzhiyun iwl_trace_data(skb) ? data_len : 0) 32*4882a593Smuzhiyun ), 33*4882a593Smuzhiyun TP_fast_assign( 34*4882a593Smuzhiyun DEV_ASSIGN; 35*4882a593Smuzhiyun __entry->phys = phys; 36*4882a593Smuzhiyun if (iwl_trace_data(skb)) 37*4882a593Smuzhiyun memcpy(__get_dynamic_array(data), data_src, data_len); 38*4882a593Smuzhiyun ), 39*4882a593Smuzhiyun TP_printk("[%s] TX frame data", __get_str(dev)) 40*4882a593Smuzhiyun ); 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun TRACE_EVENT(iwlwifi_dev_rx_data, 43*4882a593Smuzhiyun TP_PROTO(const struct device *dev, 44*4882a593Smuzhiyun const struct iwl_trans *trans, 45*4882a593Smuzhiyun void *rxbuf, size_t len), 46*4882a593Smuzhiyun TP_ARGS(dev, trans, rxbuf, len), 47*4882a593Smuzhiyun TP_STRUCT__entry( 48*4882a593Smuzhiyun DEV_ENTRY 49*4882a593Smuzhiyun __dynamic_array(u8, data, 50*4882a593Smuzhiyun len - iwl_rx_trace_len(trans, rxbuf, len, NULL)) 51*4882a593Smuzhiyun ), 52*4882a593Smuzhiyun TP_fast_assign( 53*4882a593Smuzhiyun size_t offs = iwl_rx_trace_len(trans, rxbuf, len, NULL); 54*4882a593Smuzhiyun DEV_ASSIGN; 55*4882a593Smuzhiyun if (offs < len) 56*4882a593Smuzhiyun memcpy(__get_dynamic_array(data), 57*4882a593Smuzhiyun ((u8 *)rxbuf) + offs, len - offs); 58*4882a593Smuzhiyun ), 59*4882a593Smuzhiyun TP_printk("[%s] RX frame data", __get_str(dev)) 60*4882a593Smuzhiyun ); 61*4882a593Smuzhiyun #endif /* __IWLWIFI_DEVICE_TRACE_DATA */ 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 64*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 65*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 66*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE iwl-devtrace-data 67*4882a593Smuzhiyun #include <trace/define_trace.h> 68