2009-07-07 15:46:22 +04:00
# if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
# define __MAC80211_DRIVER_TRACE
# include <linux/tracepoint.h>
# include <net/mac80211.h>
# include "ieee80211_i.h"
2009-07-20 01:21:07 +04:00
# if !defined(CONFIG_MAC80211_DRIVER_API_TRACER) || defined(__CHECKER__)
2009-07-07 15:46:22 +04:00
# undef TRACE_EVENT
# define TRACE_EVENT(name, proto, ...) \
static inline void trace_ # # name ( proto ) { }
2011-01-26 11:22:15 +03:00
# undef DECLARE_EVENT_CLASS
# define DECLARE_EVENT_CLASS(...)
# undef DEFINE_EVENT
# define DEFINE_EVENT(evt_class, name, proto, ...) \
static inline void trace_ # # name ( proto ) { }
2009-07-07 15:46:22 +04:00
# endif
# undef TRACE_SYSTEM
# define TRACE_SYSTEM mac80211
# define MAXNAME 32
# define LOCAL_ENTRY __array(char, wiphy_name, 32)
# define LOCAL_ASSIGN strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
# define LOCAL_PR_FMT "%s"
# define LOCAL_PR_ARG __entry->wiphy_name
# define STA_ENTRY __array(char, sta_addr, ETH_ALEN)
# define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN))
# define STA_PR_FMT " sta:%pM"
# define STA_PR_ARG __entry->sta_addr
2010-09-16 16:58:23 +04:00
# define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \
__field ( bool , p2p ) \
2009-11-25 22:30:31 +03:00
__string ( vif_name , sdata - > dev ? sdata - > dev - > name : " <nodev> " )
2010-09-16 16:58:23 +04:00
# define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \
__entry - > p2p = sdata - > vif . p2p ; \
2009-11-25 22:30:31 +03:00
__assign_str ( vif_name , sdata - > dev ? sdata - > dev - > name : " <nodev> " )
2010-09-16 16:58:23 +04:00
# define VIF_PR_FMT " vif:%s(%d%s)"
# define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? " / p2p" : ""
2009-07-07 15:46:22 +04:00
2010-04-07 18:48:40 +04:00
/*
* Tracing for driver callbacks .
*/
2011-01-26 11:22:15 +03:00
DECLARE_EVENT_CLASS ( local_only_evt ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
TP_ARGS ( local ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
) ,
TP_printk ( LOCAL_PR_FMT , LOCAL_PR_ARG )
) ;
2009-07-07 15:46:22 +04:00
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_return_void ,
TP_PROTO ( struct ieee80211_local * local ) ,
TP_ARGS ( local )
) ;
2010-06-10 12:56:20 +04:00
TRACE_EVENT ( drv_return_int ,
TP_PROTO ( struct ieee80211_local * local , int ret ) ,
2009-07-07 15:46:22 +04:00
TP_ARGS ( local , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , ret )
) ,
2010-06-10 12:56:20 +04:00
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > ret = ret ;
) ,
TP_printk ( LOCAL_PR_FMT " - %d " , LOCAL_PR_ARG , __entry - > ret )
) ;
2009-07-07 15:46:22 +04:00
2011-04-06 10:11:10 +04:00
TRACE_EVENT ( drv_return_bool ,
TP_PROTO ( struct ieee80211_local * local , bool ret ) ,
TP_ARGS ( local , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( bool , ret )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > ret = ret ;
) ,
TP_printk ( LOCAL_PR_FMT " - %s " , LOCAL_PR_ARG , ( __entry - > ret ) ?
" true " : " false " )
) ;
2010-06-10 12:56:20 +04:00
TRACE_EVENT ( drv_return_u64 ,
TP_PROTO ( struct ieee80211_local * local , u64 ret ) ,
TP_ARGS ( local , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u64 , ret )
) ,
2009-07-07 15:46:22 +04:00
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > ret = ret ;
) ,
2010-06-10 12:56:20 +04:00
TP_printk ( LOCAL_PR_FMT " - %llu " , LOCAL_PR_ARG , __entry - > ret )
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_start ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_stop ,
2009-07-07 15:46:22 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
TRACE_EVENT ( drv_add_interface ,
TP_PROTO ( struct ieee80211_local * local ,
2010-06-10 12:56:20 +04:00
struct ieee80211_sub_if_data * sdata ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , sdata ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
__array ( char , addr , 6 )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
2009-11-25 22:30:31 +03:00
memcpy ( __entry - > addr , sdata - > vif . addr , 6 ) ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT VIF_PR_FMT " addr:%pM " ,
LOCAL_PR_ARG , VIF_PR_ARG , __entry - > addr
2009-07-07 15:46:22 +04:00
)
) ;
2010-08-27 14:35:58 +04:00
TRACE_EVENT ( drv_change_interface ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_sub_if_data * sdata ,
2010-09-16 16:58:23 +04:00
enum nl80211_iftype type , bool p2p ) ,
2010-08-27 14:35:58 +04:00
2010-09-16 16:58:23 +04:00
TP_ARGS ( local , sdata , type , p2p ) ,
2010-08-27 14:35:58 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
__field ( u32 , new_type )
2010-09-16 16:58:23 +04:00
__field ( bool , new_p2p )
2010-08-27 14:35:58 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
__entry - > new_type = type ;
2010-09-16 16:58:23 +04:00
__entry - > new_p2p = p2p ;
2010-08-27 14:35:58 +04:00
) ,
TP_printk (
2010-09-16 16:58:23 +04:00
LOCAL_PR_FMT VIF_PR_FMT " new type:%d%s " ,
LOCAL_PR_ARG , VIF_PR_ARG , __entry - > new_type ,
__entry - > new_p2p ? " /p2p " : " "
2010-08-27 14:35:58 +04:00
)
) ;
2009-07-07 15:46:22 +04:00
TRACE_EVENT ( drv_remove_interface ,
2009-11-25 22:30:31 +03:00
TP_PROTO ( struct ieee80211_local * local , struct ieee80211_sub_if_data * sdata ) ,
2009-07-07 15:46:22 +04:00
2009-11-25 22:30:31 +03:00
TP_ARGS ( local , sdata ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
__array ( char , addr , 6 )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
2009-11-25 22:30:31 +03:00
memcpy ( __entry - > addr , sdata - > vif . addr , 6 ) ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
LOCAL_PR_FMT VIF_PR_FMT " addr:%pM " ,
LOCAL_PR_ARG , VIF_PR_ARG , __entry - > addr
)
) ;
TRACE_EVENT ( drv_config ,
TP_PROTO ( struct ieee80211_local * local ,
2010-06-10 12:56:20 +04:00
u32 changed ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , changed ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , changed )
2009-11-25 21:07:20 +03:00
__field ( u32 , flags )
__field ( int , power_level )
__field ( int , dynamic_ps_timeout )
__field ( int , max_sleep_period )
__field ( u16 , listen_interval )
__field ( u8 , long_frame_max_tx_count )
__field ( u8 , short_frame_max_tx_count )
__field ( int , center_freq )
__field ( int , channel_type )
2009-12-01 15:37:02 +03:00
__field ( int , smps )
2009-07-07 15:46:22 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > changed = changed ;
2009-11-25 21:07:20 +03:00
__entry - > flags = local - > hw . conf . flags ;
__entry - > power_level = local - > hw . conf . power_level ;
__entry - > dynamic_ps_timeout = local - > hw . conf . dynamic_ps_timeout ;
__entry - > max_sleep_period = local - > hw . conf . max_sleep_period ;
__entry - > listen_interval = local - > hw . conf . listen_interval ;
__entry - > long_frame_max_tx_count = local - > hw . conf . long_frame_max_tx_count ;
__entry - > short_frame_max_tx_count = local - > hw . conf . short_frame_max_tx_count ;
__entry - > center_freq = local - > hw . conf . channel - > center_freq ;
__entry - > channel_type = local - > hw . conf . channel_type ;
2009-12-01 15:37:02 +03:00
__entry - > smps = local - > hw . conf . smps_mode ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT " ch:%#x freq:%d " ,
LOCAL_PR_ARG , __entry - > changed , __entry - > center_freq
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_bss_info_changed ,
TP_PROTO ( struct ieee80211_local * local ,
2009-11-25 22:30:31 +03:00
struct ieee80211_sub_if_data * sdata ,
2009-07-07 15:46:22 +04:00
struct ieee80211_bss_conf * info ,
u32 changed ) ,
2009-11-25 22:30:31 +03:00
TP_ARGS ( local , sdata , info , changed ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
__field ( bool , assoc )
__field ( u16 , aid )
__field ( bool , cts )
__field ( bool , shortpre )
__field ( bool , shortslot )
__field ( u8 , dtimper )
__field ( u16 , bcnint )
__field ( u16 , assoc_cap )
__field ( u64 , timestamp )
__field ( u32 , basic_rates )
__field ( u32 , changed )
2009-11-25 21:07:20 +03:00
__field ( bool , enable_beacon )
__field ( u16 , ht_operation_mode )
2009-07-07 15:46:22 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
__entry - > changed = changed ;
__entry - > aid = info - > aid ;
__entry - > assoc = info - > assoc ;
__entry - > shortpre = info - > use_short_preamble ;
__entry - > cts = info - > use_cts_prot ;
__entry - > shortslot = info - > use_short_slot ;
__entry - > dtimper = info - > dtim_period ;
__entry - > bcnint = info - > beacon_int ;
__entry - > assoc_cap = info - > assoc_capability ;
__entry - > timestamp = info - > timestamp ;
__entry - > basic_rates = info - > basic_rates ;
2009-11-25 21:07:20 +03:00
__entry - > enable_beacon = info - > enable_beacon ;
__entry - > ht_operation_mode = info - > ht_operation_mode ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
LOCAL_PR_FMT VIF_PR_FMT " changed:%#x " ,
LOCAL_PR_ARG , VIF_PR_ARG , __entry - > changed
)
) ;
2009-08-17 18:16:53 +04:00
TRACE_EVENT ( drv_prepare_multicast ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local , int mc_count ) ,
2009-08-17 18:16:53 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , mc_count ) ,
2009-08-17 18:16:53 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , mc_count )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > mc_count = mc_count ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT " prepare mc (%d) " ,
LOCAL_PR_ARG , __entry - > mc_count
2009-08-17 18:16:53 +04:00
)
) ;
2009-07-07 15:46:22 +04:00
TRACE_EVENT ( drv_configure_filter ,
TP_PROTO ( struct ieee80211_local * local ,
unsigned int changed_flags ,
unsigned int * total_flags ,
2009-08-17 18:16:53 +04:00
u64 multicast ) ,
2009-07-07 15:46:22 +04:00
2009-08-17 18:16:53 +04:00
TP_ARGS ( local , changed_flags , total_flags , multicast ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( unsigned int , changed )
__field ( unsigned int , total )
2009-08-17 18:16:53 +04:00
__field ( u64 , multicast )
2009-07-07 15:46:22 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > changed = changed_flags ;
__entry - > total = * total_flags ;
2009-08-17 18:16:53 +04:00
__entry - > multicast = multicast ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
2009-08-17 18:16:53 +04:00
LOCAL_PR_FMT " changed:%#x total:%#x " ,
LOCAL_PR_ARG , __entry - > changed , __entry - > total
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_set_tim ,
TP_PROTO ( struct ieee80211_local * local ,
2010-06-10 12:56:20 +04:00
struct ieee80211_sta * sta , bool set ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , sta , set ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
STA_ENTRY
__field ( bool , set )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
STA_ASSIGN ;
__entry - > set = set ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT STA_PR_FMT " set:%d " ,
LOCAL_PR_ARG , STA_PR_FMT , __entry - > set
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_set_key ,
TP_PROTO ( struct ieee80211_local * local ,
2009-11-25 22:30:31 +03:00
enum set_key_cmd cmd , struct ieee80211_sub_if_data * sdata ,
2009-07-07 15:46:22 +04:00
struct ieee80211_sta * sta ,
2010-06-10 12:56:20 +04:00
struct ieee80211_key_conf * key ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , cmd , sdata , sta , key ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
STA_ENTRY
2010-08-10 11:46:38 +04:00
__field ( u32 , cipher )
2009-07-07 15:46:22 +04:00
__field ( u8 , hw_key_idx )
__field ( u8 , flags )
__field ( s8 , keyidx )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
STA_ASSIGN ;
2010-08-10 11:46:38 +04:00
__entry - > cipher = key - > cipher ;
2009-07-07 15:46:22 +04:00
__entry - > flags = key - > flags ;
__entry - > keyidx = key - > keyidx ;
__entry - > hw_key_idx = key - > hw_key_idx ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_update_tkip_key ,
TP_PROTO ( struct ieee80211_local * local ,
2010-01-21 13:40:47 +03:00
struct ieee80211_sub_if_data * sdata ,
2009-07-07 15:46:22 +04:00
struct ieee80211_key_conf * conf ,
2010-01-21 13:40:47 +03:00
struct ieee80211_sta * sta , u32 iv32 ) ,
2009-07-07 15:46:22 +04:00
2010-01-21 13:40:47 +03:00
TP_ARGS ( local , sdata , conf , sta , iv32 ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
2010-01-21 13:40:47 +03:00
VIF_ENTRY
STA_ENTRY
2009-07-07 15:46:22 +04:00
__field ( u32 , iv32 )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
2010-01-21 13:40:47 +03:00
VIF_ASSIGN ;
STA_ASSIGN ;
2009-07-07 15:46:22 +04:00
__entry - > iv32 = iv32 ;
) ,
TP_printk (
2010-01-21 13:40:47 +03:00
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x " ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG , __entry - > iv32
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_hw_scan ,
TP_PROTO ( struct ieee80211_local * local ,
2010-04-27 13:59:34 +04:00
struct ieee80211_sub_if_data * sdata ,
2010-06-10 12:56:20 +04:00
struct cfg80211_scan_request * req ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , sdata , req ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
2010-04-27 13:59:34 +04:00
VIF_ENTRY
2009-07-07 15:46:22 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
2010-04-27 13:59:34 +04:00
VIF_ASSIGN ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT VIF_PR_FMT ,
LOCAL_PR_ARG , VIF_PR_ARG
2009-07-07 15:46:22 +04:00
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_sw_scan_start ,
2009-07-07 15:46:22 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_sw_scan_complete ,
2009-07-07 15:46:22 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
TRACE_EVENT ( drv_get_stats ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_low_level_stats * stats ,
int ret ) ,
TP_ARGS ( local , stats , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , ret )
__field ( unsigned int , ackfail )
__field ( unsigned int , rtsfail )
__field ( unsigned int , fcserr )
__field ( unsigned int , rtssucc )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > ret = ret ;
__entry - > ackfail = stats - > dot11ACKFailureCount ;
__entry - > rtsfail = stats - > dot11RTSFailureCount ;
__entry - > fcserr = stats - > dot11FCSErrorCount ;
__entry - > rtssucc = stats - > dot11RTSSuccessCount ;
) ,
TP_printk (
LOCAL_PR_FMT " ret:%d " ,
LOCAL_PR_ARG , __entry - > ret
)
) ;
TRACE_EVENT ( drv_get_tkip_seq ,
TP_PROTO ( struct ieee80211_local * local ,
u8 hw_key_idx , u32 * iv32 , u16 * iv16 ) ,
TP_ARGS ( local , hw_key_idx , iv32 , iv16 ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u8 , hw_key_idx )
__field ( u32 , iv32 )
__field ( u16 , iv16 )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > hw_key_idx = hw_key_idx ;
__entry - > iv32 = * iv32 ;
__entry - > iv16 = * iv16 ;
) ,
TP_printk (
LOCAL_PR_FMT , LOCAL_PR_ARG
)
) ;
2010-11-08 12:51:06 +03:00
TRACE_EVENT ( drv_set_frag_threshold ,
TP_PROTO ( struct ieee80211_local * local , u32 value ) ,
TP_ARGS ( local , value ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , value )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > value = value ;
) ,
TP_printk (
LOCAL_PR_FMT " value:%d " ,
LOCAL_PR_ARG , __entry - > value
)
) ;
2009-07-07 15:46:22 +04:00
TRACE_EVENT ( drv_set_rts_threshold ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local , u32 value ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , value ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , value )
) ,
TP_fast_assign (
2009-12-22 00:50:48 +03:00
LOCAL_ASSIGN ;
__entry - > value = value ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT " value:%d " ,
LOCAL_PR_ARG , __entry - > value
2009-12-22 00:50:48 +03:00
)
) ;
TRACE_EVENT ( drv_set_coverage_class ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local , u8 value ) ,
2009-12-22 00:50:48 +03:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , value ) ,
2009-12-22 00:50:48 +03:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u8 , value )
) ,
TP_fast_assign (
2009-07-07 15:46:22 +04:00
LOCAL_ASSIGN ;
__entry - > value = value ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT " value:%d " ,
LOCAL_PR_ARG , __entry - > value
2009-07-07 15:46:22 +04:00
)
) ;
TRACE_EVENT ( drv_sta_notify ,
TP_PROTO ( struct ieee80211_local * local ,
2009-11-25 22:30:31 +03:00
struct ieee80211_sub_if_data * sdata ,
2009-07-07 15:46:22 +04:00
enum sta_notify_cmd cmd ,
struct ieee80211_sta * sta ) ,
2009-11-25 22:30:31 +03:00
TP_ARGS ( local , sdata , cmd , sta ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
STA_ENTRY
__field ( u32 , cmd )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
STA_ASSIGN ;
__entry - > cmd = cmd ;
) ,
TP_printk (
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd:%d " ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG , __entry - > cmd
)
) ;
2010-02-03 15:59:58 +03:00
TRACE_EVENT ( drv_sta_add ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_sub_if_data * sdata ,
2010-06-10 12:56:20 +04:00
struct ieee80211_sta * sta ) ,
2010-02-03 15:59:58 +03:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , sdata , sta ) ,
2010-02-03 15:59:58 +03:00
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
STA_ENTRY
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
STA_ASSIGN ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG
2010-02-03 15:59:58 +03:00
)
) ;
TRACE_EVENT ( drv_sta_remove ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_sub_if_data * sdata ,
struct ieee80211_sta * sta ) ,
TP_ARGS ( local , sdata , sta ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
VIF_ENTRY
STA_ENTRY
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
VIF_ASSIGN ;
STA_ASSIGN ;
) ,
TP_printk (
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG
)
) ;
2009-07-07 15:46:22 +04:00
TRACE_EVENT ( drv_conf_tx ,
TP_PROTO ( struct ieee80211_local * local , u16 queue ,
2010-06-10 12:56:20 +04:00
const struct ieee80211_tx_queue_params * params ) ,
2009-07-07 15:46:22 +04:00
2010-06-10 12:56:20 +04:00
TP_ARGS ( local , queue , params ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u16 , queue )
__field ( u16 , txop )
__field ( u16 , cw_min )
__field ( u16 , cw_max )
__field ( u8 , aifs )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > queue = queue ;
__entry - > txop = params - > txop ;
__entry - > cw_max = params - > cw_max ;
__entry - > cw_min = params - > cw_min ;
__entry - > aifs = params - > aifs ;
) ,
TP_printk (
2010-06-10 12:56:20 +04:00
LOCAL_PR_FMT " queue:%d " ,
LOCAL_PR_ARG , __entry - > queue
2009-07-07 15:46:22 +04:00
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_get_tsf ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
TRACE_EVENT ( drv_set_tsf ,
TP_PROTO ( struct ieee80211_local * local , u64 tsf ) ,
TP_ARGS ( local , tsf ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u64 , tsf )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > tsf = tsf ;
) ,
TP_printk (
LOCAL_PR_FMT " tsf:%llu " ,
LOCAL_PR_ARG , ( unsigned long long ) __entry - > tsf
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_reset_tsf ,
2009-07-07 15:46:22 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_tx_last_beacon ,
2010-06-10 12:56:20 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2009-07-07 15:46:22 +04:00
) ;
TRACE_EVENT ( drv_ampdu_action ,
TP_PROTO ( struct ieee80211_local * local ,
2009-11-25 22:30:31 +03:00
struct ieee80211_sub_if_data * sdata ,
2009-07-07 15:46:22 +04:00
enum ieee80211_ampdu_mlme_action action ,
struct ieee80211_sta * sta , u16 tid ,
2011-01-18 15:51:05 +03:00
u16 * ssn , u8 buf_size ) ,
2009-07-07 15:46:22 +04:00
2011-01-18 15:51:05 +03:00
TP_ARGS ( local , sdata , action , sta , tid , ssn , buf_size ) ,
2009-07-07 15:46:22 +04:00
TP_STRUCT__entry (
LOCAL_ENTRY
STA_ENTRY
__field ( u32 , action )
__field ( u16 , tid )
__field ( u16 , ssn )
2011-01-18 15:51:05 +03:00
__field ( u8 , buf_size )
2009-11-16 14:00:38 +03:00
VIF_ENTRY
2009-07-07 15:46:22 +04:00
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
2009-11-16 14:00:38 +03:00
VIF_ASSIGN ;
2009-07-07 15:46:22 +04:00
STA_ASSIGN ;
__entry - > action = action ;
__entry - > tid = tid ;
2010-01-26 10:58:57 +03:00
__entry - > ssn = ssn ? * ssn : 0 ;
2011-01-18 15:51:05 +03:00
__entry - > buf_size = buf_size ;
2009-07-07 15:46:22 +04:00
) ,
TP_printk (
2011-01-18 15:51:05 +03:00
LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d buf:%d " ,
LOCAL_PR_ARG , VIF_PR_ARG , STA_PR_ARG , __entry - > action ,
__entry - > tid , __entry - > buf_size
2009-07-07 15:46:22 +04:00
)
) ;
2009-12-23 15:15:32 +03:00
2010-06-29 22:51:23 +04:00
TRACE_EVENT ( drv_get_survey ,
TP_PROTO ( struct ieee80211_local * local , int idx ,
struct survey_info * survey ) ,
TP_ARGS ( local , idx , survey ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , idx )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > idx = idx ;
) ,
TP_printk (
LOCAL_PR_FMT " idx:%d " ,
LOCAL_PR_ARG , __entry - > idx
)
) ;
2009-12-23 15:15:32 +03:00
TRACE_EVENT ( drv_flush ,
TP_PROTO ( struct ieee80211_local * local , bool drop ) ,
TP_ARGS ( local , drop ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( bool , drop )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > drop = drop ;
) ,
TP_printk (
LOCAL_PR_FMT " drop:%d " ,
LOCAL_PR_ARG , __entry - > drop
)
) ;
2010-04-07 18:48:40 +04:00
2010-05-11 18:20:57 +04:00
TRACE_EVENT ( drv_channel_switch ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_channel_switch * ch_switch ) ,
TP_ARGS ( local , ch_switch ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u64 , timestamp )
__field ( bool , block_tx )
__field ( u16 , freq )
__field ( u8 , count )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > timestamp = ch_switch - > timestamp ;
__entry - > block_tx = ch_switch - > block_tx ;
__entry - > freq = ch_switch - > channel - > center_freq ;
__entry - > count = ch_switch - > count ;
) ,
TP_printk (
LOCAL_PR_FMT " new freq:%u count:%d " ,
LOCAL_PR_ARG , __entry - > freq , __entry - > count
)
) ;
2010-11-10 06:50:56 +03:00
TRACE_EVENT ( drv_set_antenna ,
TP_PROTO ( struct ieee80211_local * local , u32 tx_ant , u32 rx_ant , int ret ) ,
TP_ARGS ( local , tx_ant , rx_ant , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , tx_ant )
__field ( u32 , rx_ant )
__field ( int , ret )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > tx_ant = tx_ant ;
__entry - > rx_ant = rx_ant ;
__entry - > ret = ret ;
) ,
TP_printk (
LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d " ,
LOCAL_PR_ARG , __entry - > tx_ant , __entry - > rx_ant , __entry - > ret
)
) ;
TRACE_EVENT ( drv_get_antenna ,
TP_PROTO ( struct ieee80211_local * local , u32 tx_ant , u32 rx_ant , int ret ) ,
TP_ARGS ( local , tx_ant , rx_ant , ret ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , tx_ant )
__field ( u32 , rx_ant )
__field ( int , ret )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > tx_ant = tx_ant ;
__entry - > rx_ant = rx_ant ;
__entry - > ret = ret ;
) ,
TP_printk (
LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d " ,
LOCAL_PR_ARG , __entry - > tx_ant , __entry - > rx_ant , __entry - > ret
)
) ;
2010-12-18 19:20:47 +03:00
TRACE_EVENT ( drv_remain_on_channel ,
TP_PROTO ( struct ieee80211_local * local , struct ieee80211_channel * chan ,
enum nl80211_channel_type chantype , unsigned int duration ) ,
TP_ARGS ( local , chan , chantype , duration ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , center_freq )
__field ( int , channel_type )
__field ( unsigned int , duration )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > center_freq = chan - > center_freq ;
__entry - > channel_type = chantype ;
__entry - > duration = duration ;
) ,
TP_printk (
LOCAL_PR_FMT " freq:%dMHz duration:%dms " ,
LOCAL_PR_ARG , __entry - > center_freq , __entry - > duration
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , drv_cancel_remain_on_channel ,
2010-12-18 19:20:47 +03:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2010-12-18 19:20:47 +03:00
) ;
2011-02-25 17:36:57 +03:00
TRACE_EVENT ( drv_offchannel_tx ,
TP_PROTO ( struct ieee80211_local * local , struct sk_buff * skb ,
struct ieee80211_channel * chan ,
enum nl80211_channel_type channel_type ,
unsigned int wait ) ,
TP_ARGS ( local , skb , chan , channel_type , wait ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( int , center_freq )
__field ( int , channel_type )
__field ( unsigned int , wait )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > center_freq = chan - > center_freq ;
__entry - > channel_type = channel_type ;
__entry - > wait = wait ;
) ,
TP_printk (
LOCAL_PR_FMT " freq:%dMHz, wait:%dms " ,
LOCAL_PR_ARG , __entry - > center_freq , __entry - > wait
)
) ;
2011-03-08 00:19:18 +03:00
TRACE_EVENT ( drv_set_ringparam ,
TP_PROTO ( struct ieee80211_local * local , u32 tx , u32 rx ) ,
TP_ARGS ( local , tx , rx ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , tx )
__field ( u32 , rx )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > tx = tx ;
__entry - > rx = rx ;
) ,
TP_printk (
LOCAL_PR_FMT " tx:%d rx %d " ,
LOCAL_PR_ARG , __entry - > tx , __entry - > rx
)
) ;
TRACE_EVENT ( drv_get_ringparam ,
TP_PROTO ( struct ieee80211_local * local , u32 * tx , u32 * tx_max ,
u32 * rx , u32 * rx_max ) ,
TP_ARGS ( local , tx , tx_max , rx , rx_max ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u32 , tx )
__field ( u32 , tx_max )
__field ( u32 , rx )
__field ( u32 , rx_max )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > tx = * tx ;
__entry - > tx_max = * tx_max ;
__entry - > rx = * rx ;
__entry - > rx_max = * rx_max ;
) ,
TP_printk (
LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d " ,
LOCAL_PR_ARG ,
__entry - > tx , __entry - > tx_max , __entry - > rx , __entry - > rx_max
)
) ;
2011-04-06 10:11:10 +04:00
DEFINE_EVENT ( local_only_evt , drv_tx_frames_pending ,
TP_PROTO ( struct ieee80211_local * local ) ,
TP_ARGS ( local )
) ;
2011-02-25 17:36:57 +03:00
DEFINE_EVENT ( local_only_evt , drv_offchannel_tx_cancel_wait ,
TP_PROTO ( struct ieee80211_local * local ) ,
TP_ARGS ( local )
) ;
2010-04-07 18:48:40 +04:00
/*
* Tracing for API calls that drivers call .
*/
TRACE_EVENT ( api_start_tx_ba_session ,
TP_PROTO ( struct ieee80211_sta * sta , u16 tid ) ,
TP_ARGS ( sta , tid ) ,
TP_STRUCT__entry (
STA_ENTRY
__field ( u16 , tid )
) ,
TP_fast_assign (
STA_ASSIGN ;
__entry - > tid = tid ;
) ,
TP_printk (
STA_PR_FMT " tid:%d " ,
STA_PR_ARG , __entry - > tid
)
) ;
TRACE_EVENT ( api_start_tx_ba_cb ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata , const u8 * ra , u16 tid ) ,
TP_ARGS ( sdata , ra , tid ) ,
TP_STRUCT__entry (
VIF_ENTRY
__array ( u8 , ra , ETH_ALEN )
__field ( u16 , tid )
) ,
TP_fast_assign (
VIF_ASSIGN ;
memcpy ( __entry - > ra , ra , ETH_ALEN ) ;
__entry - > tid = tid ;
) ,
TP_printk (
VIF_PR_FMT " ra:%pM tid:%d " ,
VIF_PR_ARG , __entry - > ra , __entry - > tid
)
) ;
TRACE_EVENT ( api_stop_tx_ba_session ,
2010-05-27 16:41:07 +04:00
TP_PROTO ( struct ieee80211_sta * sta , u16 tid ) ,
2010-04-07 18:48:40 +04:00
2010-05-27 16:41:07 +04:00
TP_ARGS ( sta , tid ) ,
2010-04-07 18:48:40 +04:00
TP_STRUCT__entry (
STA_ENTRY
__field ( u16 , tid )
) ,
TP_fast_assign (
STA_ASSIGN ;
__entry - > tid = tid ;
) ,
TP_printk (
2010-05-27 16:41:07 +04:00
STA_PR_FMT " tid:%d " ,
STA_PR_ARG , __entry - > tid
2010-04-07 18:48:40 +04:00
)
) ;
TRACE_EVENT ( api_stop_tx_ba_cb ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata , const u8 * ra , u16 tid ) ,
TP_ARGS ( sdata , ra , tid ) ,
TP_STRUCT__entry (
VIF_ENTRY
__array ( u8 , ra , ETH_ALEN )
__field ( u16 , tid )
) ,
TP_fast_assign (
VIF_ASSIGN ;
memcpy ( __entry - > ra , ra , ETH_ALEN ) ;
__entry - > tid = tid ;
) ,
TP_printk (
VIF_PR_FMT " ra:%pM tid:%d " ,
VIF_PR_ARG , __entry - > ra , __entry - > tid
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , api_restart_hw ,
2010-04-07 18:48:40 +04:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2010-04-07 18:48:40 +04:00
) ;
TRACE_EVENT ( api_beacon_loss ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata ) ,
TP_ARGS ( sdata ) ,
TP_STRUCT__entry (
VIF_ENTRY
) ,
TP_fast_assign (
VIF_ASSIGN ;
) ,
TP_printk (
VIF_PR_FMT ,
VIF_PR_ARG
)
) ;
TRACE_EVENT ( api_connection_loss ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata ) ,
TP_ARGS ( sdata ) ,
TP_STRUCT__entry (
VIF_ENTRY
) ,
TP_fast_assign (
VIF_ASSIGN ;
) ,
TP_printk (
VIF_PR_FMT ,
VIF_PR_ARG
)
) ;
TRACE_EVENT ( api_cqm_rssi_notify ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata ,
enum nl80211_cqm_rssi_threshold_event rssi_event ) ,
TP_ARGS ( sdata , rssi_event ) ,
TP_STRUCT__entry (
VIF_ENTRY
__field ( u32 , rssi_event )
) ,
TP_fast_assign (
VIF_ASSIGN ;
__entry - > rssi_event = rssi_event ;
) ,
TP_printk (
VIF_PR_FMT " event:%d " ,
VIF_PR_ARG , __entry - > rssi_event
)
) ;
TRACE_EVENT ( api_scan_completed ,
TP_PROTO ( struct ieee80211_local * local , bool aborted ) ,
TP_ARGS ( local , aborted ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( bool , aborted )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > aborted = aborted ;
) ,
TP_printk (
LOCAL_PR_FMT " aborted:%d " ,
LOCAL_PR_ARG , __entry - > aborted
)
) ;
TRACE_EVENT ( api_sta_block_awake ,
TP_PROTO ( struct ieee80211_local * local ,
struct ieee80211_sta * sta , bool block ) ,
TP_ARGS ( local , sta , block ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
STA_ENTRY
__field ( bool , block )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
STA_ASSIGN ;
__entry - > block = block ;
) ,
TP_printk (
LOCAL_PR_FMT STA_PR_FMT " block:%d " ,
LOCAL_PR_ARG , STA_PR_FMT , __entry - > block
)
) ;
2010-05-11 18:20:57 +04:00
TRACE_EVENT ( api_chswitch_done ,
TP_PROTO ( struct ieee80211_sub_if_data * sdata , bool success ) ,
TP_ARGS ( sdata , success ) ,
TP_STRUCT__entry (
VIF_ENTRY
__field ( bool , success )
) ,
TP_fast_assign (
VIF_ASSIGN ;
__entry - > success = success ;
) ,
TP_printk (
VIF_PR_FMT " success=%d " ,
VIF_PR_ARG , __entry - > success
)
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , api_ready_on_channel ,
2010-12-18 19:20:47 +03:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2010-12-18 19:20:47 +03:00
) ;
2011-01-26 11:22:15 +03:00
DEFINE_EVENT ( local_only_evt , api_remain_on_channel_expired ,
2010-12-18 19:20:47 +03:00
TP_PROTO ( struct ieee80211_local * local ) ,
2011-01-26 11:22:15 +03:00
TP_ARGS ( local )
2010-12-18 19:20:47 +03:00
) ;
2010-04-07 18:48:40 +04:00
/*
* Tracing for internal functions
* ( which may also be called in response to driver calls )
*/
TRACE_EVENT ( wake_queue ,
TP_PROTO ( struct ieee80211_local * local , u16 queue ,
enum queue_stop_reason reason ) ,
TP_ARGS ( local , queue , reason ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u16 , queue )
__field ( u32 , reason )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > queue = queue ;
__entry - > reason = reason ;
) ,
TP_printk (
LOCAL_PR_FMT " queue:%d, reason:%d " ,
LOCAL_PR_ARG , __entry - > queue , __entry - > reason
)
) ;
TRACE_EVENT ( stop_queue ,
TP_PROTO ( struct ieee80211_local * local , u16 queue ,
enum queue_stop_reason reason ) ,
TP_ARGS ( local , queue , reason ) ,
TP_STRUCT__entry (
LOCAL_ENTRY
__field ( u16 , queue )
__field ( u32 , reason )
) ,
TP_fast_assign (
LOCAL_ASSIGN ;
__entry - > queue = queue ;
__entry - > reason = reason ;
) ,
TP_printk (
LOCAL_PR_FMT " queue:%d, reason:%d " ,
LOCAL_PR_ARG , __entry - > queue , __entry - > reason
)
) ;
2009-07-20 01:21:07 +04:00
# endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
2009-07-07 15:46:22 +04:00
# undef TRACE_INCLUDE_PATH
# define TRACE_INCLUDE_PATH .
# undef TRACE_INCLUDE_FILE
# define TRACE_INCLUDE_FILE driver-trace
# include <trace/define_trace.h>