1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2f59374ebSSara Sharon /* 3f59374ebSSara Sharon * Portions of this file 4fafd2bceSSara Sharon * Copyright(c) 2016-2017 Intel Deutschland GmbH 5f276e20bSJohannes Berg * Copyright (C) 2018 - 2023 Intel Corporation 6f59374ebSSara Sharon */ 7f59374ebSSara Sharon 8011ad0e9SJohannes Berg #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) 9011ad0e9SJohannes Berg #define __MAC80211_DRIVER_TRACE 10011ad0e9SJohannes Berg 11011ad0e9SJohannes Berg #include <linux/tracepoint.h> 12011ad0e9SJohannes Berg #include <net/mac80211.h> 13011ad0e9SJohannes Berg #include "ieee80211_i.h" 14011ad0e9SJohannes Berg 15011ad0e9SJohannes Berg #undef TRACE_SYSTEM 16011ad0e9SJohannes Berg #define TRACE_SYSTEM mac80211 17011ad0e9SJohannes Berg 18011ad0e9SJohannes Berg #define MAXNAME 32 19011ad0e9SJohannes Berg #define LOCAL_ENTRY __array(char, wiphy_name, 32) 20011ad0e9SJohannes Berg #define LOCAL_ASSIGN strscpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME) 21011ad0e9SJohannes Berg #define LOCAL_PR_FMT "%s" 22011ad0e9SJohannes Berg #define LOCAL_PR_ARG __entry->wiphy_name 23011ad0e9SJohannes Berg 24011ad0e9SJohannes Berg #define STA_ENTRY __array(char, sta_addr, ETH_ALEN) 2547d76e31SMiaohe Lin #define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \ 2647d76e31SMiaohe Lin eth_zero_addr(__entry->sta_addr)) 278a4d32f3SArik Nemtsov #define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN) 28011ad0e9SJohannes Berg #define STA_PR_FMT " sta:%pM" 29011ad0e9SJohannes Berg #define STA_PR_ARG __entry->sta_addr 30011ad0e9SJohannes Berg 31011ad0e9SJohannes Berg #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ 32011ad0e9SJohannes Berg __field(bool, p2p) \ 33f9ac71bfSEliad Peller __string(vif_name, sdata->name) 34011ad0e9SJohannes Berg #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ 35011ad0e9SJohannes Berg __entry->p2p = sdata->vif.p2p; \ 36f9ac71bfSEliad Peller __assign_str(vif_name, sdata->name) 37011ad0e9SJohannes Berg #define VIF_PR_FMT " vif:%s(%d%s)" 38011ad0e9SJohannes Berg #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" 39011ad0e9SJohannes Berg 405a32aff3SJohannes Berg #define CHANDEF_ENTRY __field(u32, control_freq) \ 41b6011960SThomas Pedersen __field(u32, freq_offset) \ 424bf88530SJohannes Berg __field(u32, chan_width) \ 434bf88530SJohannes Berg __field(u32, center_freq1) \ 44b6011960SThomas Pedersen __field(u32, freq1_offset) \ 455a32aff3SJohannes Berg __field(u32, center_freq2) 465a32aff3SJohannes Berg #define CHANDEF_ASSIGN(c) \ 47254d3dfeSArik Nemtsov __entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0; \ 48b6011960SThomas Pedersen __entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0; \ 49254d3dfeSArik Nemtsov __entry->chan_width = (c) ? (c)->width : 0; \ 50254d3dfeSArik Nemtsov __entry->center_freq1 = (c) ? (c)->center_freq1 : 0; \ 51b6011960SThomas Pedersen __entry->freq1_offset = (c) ? (c)->freq1_offset : 0; \ 52254d3dfeSArik Nemtsov __entry->center_freq2 = (c) ? (c)->center_freq2 : 0; 53b6011960SThomas Pedersen #define CHANDEF_PR_FMT " control:%d.%03d MHz width:%d center: %d.%03d/%d MHz" 54b6011960SThomas Pedersen #define CHANDEF_PR_ARG __entry->control_freq, __entry->freq_offset, __entry->chan_width, \ 55b6011960SThomas Pedersen __entry->center_freq1, __entry->freq1_offset, __entry->center_freq2 565a32aff3SJohannes Berg 5721f659bfSEliad Peller #define MIN_CHANDEF_ENTRY \ 5821f659bfSEliad Peller __field(u32, min_control_freq) \ 59b6011960SThomas Pedersen __field(u32, min_freq_offset) \ 6021f659bfSEliad Peller __field(u32, min_chan_width) \ 6121f659bfSEliad Peller __field(u32, min_center_freq1) \ 62b6011960SThomas Pedersen __field(u32, min_freq1_offset) \ 6321f659bfSEliad Peller __field(u32, min_center_freq2) 6421f659bfSEliad Peller 6521f659bfSEliad Peller #define MIN_CHANDEF_ASSIGN(c) \ 6621f659bfSEliad Peller __entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0; \ 67b6011960SThomas Pedersen __entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0; \ 6821f659bfSEliad Peller __entry->min_chan_width = (c)->width; \ 6921f659bfSEliad Peller __entry->min_center_freq1 = (c)->center_freq1; \ 70*248e4776SJohannes Berg __entry->min_freq1_offset = (c)->freq1_offset; \ 7121f659bfSEliad Peller __entry->min_center_freq2 = (c)->center_freq2; 72b6011960SThomas Pedersen #define MIN_CHANDEF_PR_FMT " min_control:%d.%03d MHz min_width:%d min_center: %d.%03d/%d MHz" 73b6011960SThomas Pedersen #define MIN_CHANDEF_PR_ARG __entry->min_control_freq, __entry->min_freq_offset, \ 74b6011960SThomas Pedersen __entry->min_chan_width, \ 75b6011960SThomas Pedersen __entry->min_center_freq1, __entry->min_freq1_offset, \ 76b6011960SThomas Pedersen __entry->min_center_freq2 7721f659bfSEliad Peller 785a32aff3SJohannes Berg #define CHANCTX_ENTRY CHANDEF_ENTRY \ 7921f659bfSEliad Peller MIN_CHANDEF_ENTRY \ 8004ecd257SJohannes Berg __field(u8, rx_chains_static) \ 8104ecd257SJohannes Berg __field(u8, rx_chains_dynamic) 825a32aff3SJohannes Berg #define CHANCTX_ASSIGN CHANDEF_ASSIGN(&ctx->conf.def) \ 8321f659bfSEliad Peller MIN_CHANDEF_ASSIGN(&ctx->conf.min_def) \ 8404ecd257SJohannes Berg __entry->rx_chains_static = ctx->conf.rx_chains_static; \ 8504ecd257SJohannes Berg __entry->rx_chains_dynamic = ctx->conf.rx_chains_dynamic 8621f659bfSEliad Peller #define CHANCTX_PR_FMT CHANDEF_PR_FMT MIN_CHANDEF_PR_FMT " chains:%d/%d" 8721f659bfSEliad Peller #define CHANCTX_PR_ARG CHANDEF_PR_ARG, MIN_CHANDEF_PR_ARG, \ 8804ecd257SJohannes Berg __entry->rx_chains_static, __entry->rx_chains_dynamic 89c3645eacSMichal Kazior 909352c19fSJohannes Berg #define KEY_ENTRY __field(u32, cipher) \ 919352c19fSJohannes Berg __field(u8, hw_key_idx) \ 929352c19fSJohannes Berg __field(u8, flags) \ 939352c19fSJohannes Berg __field(s8, keyidx) 949352c19fSJohannes Berg #define KEY_ASSIGN(k) __entry->cipher = (k)->cipher; \ 959352c19fSJohannes Berg __entry->flags = (k)->flags; \ 969352c19fSJohannes Berg __entry->keyidx = (k)->keyidx; \ 979352c19fSJohannes Berg __entry->hw_key_idx = (k)->hw_key_idx; 989352c19fSJohannes Berg #define KEY_PR_FMT " cipher:0x%x, flags=%#x, keyidx=%d, hw_key_idx=%d" 999352c19fSJohannes Berg #define KEY_PR_ARG __entry->cipher, __entry->flags, __entry->keyidx, __entry->hw_key_idx 1009352c19fSJohannes Berg 10150ea05efSSara Sharon #define AMPDU_ACTION_ENTRY __field(enum ieee80211_ampdu_mlme_action, \ 10250ea05efSSara Sharon ieee80211_ampdu_mlme_action) \ 10350ea05efSSara Sharon STA_ENTRY \ 10450ea05efSSara Sharon __field(u16, tid) \ 10550ea05efSSara Sharon __field(u16, ssn) \ 10641cbb0f5SLuca Coelho __field(u16, buf_size) \ 10750ea05efSSara Sharon __field(bool, amsdu) \ 1086dad28aeSEmmanuel Grumbach __field(u16, timeout) \ 1096dad28aeSEmmanuel Grumbach __field(u16, action) 11050ea05efSSara Sharon #define AMPDU_ACTION_ASSIGN STA_NAMED_ASSIGN(params->sta); \ 11150ea05efSSara Sharon __entry->tid = params->tid; \ 11250ea05efSSara Sharon __entry->ssn = params->ssn; \ 11350ea05efSSara Sharon __entry->buf_size = params->buf_size; \ 11450ea05efSSara Sharon __entry->amsdu = params->amsdu; \ 1156dad28aeSEmmanuel Grumbach __entry->timeout = params->timeout; \ 1166dad28aeSEmmanuel Grumbach __entry->action = params->action; 1176dad28aeSEmmanuel Grumbach #define AMPDU_ACTION_PR_FMT STA_PR_FMT " tid %d, ssn %d, buf_size %u, amsdu %d, timeout %d action %d" 11850ea05efSSara Sharon #define AMPDU_ACTION_PR_ARG STA_PR_ARG, __entry->tid, __entry->ssn, \ 1196dad28aeSEmmanuel Grumbach __entry->buf_size, __entry->amsdu, __entry->timeout, \ 1206dad28aeSEmmanuel Grumbach __entry->action 121c3645eacSMichal Kazior 122011ad0e9SJohannes Berg /* 123011ad0e9SJohannes Berg * Tracing for driver callbacks. 124011ad0e9SJohannes Berg */ 125011ad0e9SJohannes Berg 126011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(local_only_evt, 127011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 128011ad0e9SJohannes Berg TP_ARGS(local), 129011ad0e9SJohannes Berg TP_STRUCT__entry( 130011ad0e9SJohannes Berg LOCAL_ENTRY 131011ad0e9SJohannes Berg ), 132011ad0e9SJohannes Berg TP_fast_assign( 133011ad0e9SJohannes Berg LOCAL_ASSIGN; 134011ad0e9SJohannes Berg ), 135011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG) 136011ad0e9SJohannes Berg ); 137011ad0e9SJohannes Berg 138011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(local_sdata_addr_evt, 139011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 140011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 141011ad0e9SJohannes Berg TP_ARGS(local, sdata), 142011ad0e9SJohannes Berg 143011ad0e9SJohannes Berg TP_STRUCT__entry( 144011ad0e9SJohannes Berg LOCAL_ENTRY 145011ad0e9SJohannes Berg VIF_ENTRY 146d458cdf7SJoe Perches __array(char, addr, ETH_ALEN) 147011ad0e9SJohannes Berg ), 148011ad0e9SJohannes Berg 149011ad0e9SJohannes Berg TP_fast_assign( 150011ad0e9SJohannes Berg LOCAL_ASSIGN; 151011ad0e9SJohannes Berg VIF_ASSIGN; 152d458cdf7SJoe Perches memcpy(__entry->addr, sdata->vif.addr, ETH_ALEN); 153011ad0e9SJohannes Berg ), 154011ad0e9SJohannes Berg 155011ad0e9SJohannes Berg TP_printk( 156011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " addr:%pM", 157011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr 158011ad0e9SJohannes Berg ) 159011ad0e9SJohannes Berg ); 160011ad0e9SJohannes Berg 161011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(local_u32_evt, 162011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 value), 163011ad0e9SJohannes Berg TP_ARGS(local, value), 164011ad0e9SJohannes Berg 165011ad0e9SJohannes Berg TP_STRUCT__entry( 166011ad0e9SJohannes Berg LOCAL_ENTRY 167011ad0e9SJohannes Berg __field(u32, value) 168011ad0e9SJohannes Berg ), 169011ad0e9SJohannes Berg 170011ad0e9SJohannes Berg TP_fast_assign( 171011ad0e9SJohannes Berg LOCAL_ASSIGN; 172011ad0e9SJohannes Berg __entry->value = value; 173011ad0e9SJohannes Berg ), 174011ad0e9SJohannes Berg 175011ad0e9SJohannes Berg TP_printk( 176011ad0e9SJohannes Berg LOCAL_PR_FMT " value:%d", 177011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->value 178011ad0e9SJohannes Berg ) 179011ad0e9SJohannes Berg ); 180011ad0e9SJohannes Berg 181011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(local_sdata_evt, 182011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 183011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 184011ad0e9SJohannes Berg TP_ARGS(local, sdata), 185011ad0e9SJohannes Berg 186011ad0e9SJohannes Berg TP_STRUCT__entry( 187011ad0e9SJohannes Berg LOCAL_ENTRY 188011ad0e9SJohannes Berg VIF_ENTRY 189011ad0e9SJohannes Berg ), 190011ad0e9SJohannes Berg 191011ad0e9SJohannes Berg TP_fast_assign( 192011ad0e9SJohannes Berg LOCAL_ASSIGN; 193011ad0e9SJohannes Berg VIF_ASSIGN; 194011ad0e9SJohannes Berg ), 195011ad0e9SJohannes Berg 196011ad0e9SJohannes Berg TP_printk( 197011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT, 198011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG 199011ad0e9SJohannes Berg ) 200011ad0e9SJohannes Berg ); 201011ad0e9SJohannes Berg 202011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_return_void, 203011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 204011ad0e9SJohannes Berg TP_ARGS(local) 205011ad0e9SJohannes Berg ); 206011ad0e9SJohannes Berg 207011ad0e9SJohannes Berg TRACE_EVENT(drv_return_int, 208011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, int ret), 209011ad0e9SJohannes Berg TP_ARGS(local, ret), 210011ad0e9SJohannes Berg TP_STRUCT__entry( 211011ad0e9SJohannes Berg LOCAL_ENTRY 212011ad0e9SJohannes Berg __field(int, ret) 213011ad0e9SJohannes Berg ), 214011ad0e9SJohannes Berg TP_fast_assign( 215011ad0e9SJohannes Berg LOCAL_ASSIGN; 216011ad0e9SJohannes Berg __entry->ret = ret; 217011ad0e9SJohannes Berg ), 218011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret) 219011ad0e9SJohannes Berg ); 220011ad0e9SJohannes Berg 221011ad0e9SJohannes Berg TRACE_EVENT(drv_return_bool, 222011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, bool ret), 223011ad0e9SJohannes Berg TP_ARGS(local, ret), 224011ad0e9SJohannes Berg TP_STRUCT__entry( 225011ad0e9SJohannes Berg LOCAL_ENTRY 226011ad0e9SJohannes Berg __field(bool, ret) 227011ad0e9SJohannes Berg ), 228011ad0e9SJohannes Berg TP_fast_assign( 229011ad0e9SJohannes Berg LOCAL_ASSIGN; 230011ad0e9SJohannes Berg __entry->ret = ret; 231011ad0e9SJohannes Berg ), 232011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ? 233011ad0e9SJohannes Berg "true" : "false") 234011ad0e9SJohannes Berg ); 235011ad0e9SJohannes Berg 236cca674d4SAntonio Quartulli TRACE_EVENT(drv_return_u32, 237cca674d4SAntonio Quartulli TP_PROTO(struct ieee80211_local *local, u32 ret), 238cca674d4SAntonio Quartulli TP_ARGS(local, ret), 239cca674d4SAntonio Quartulli TP_STRUCT__entry( 240cca674d4SAntonio Quartulli LOCAL_ENTRY 241cca674d4SAntonio Quartulli __field(u32, ret) 242cca674d4SAntonio Quartulli ), 243cca674d4SAntonio Quartulli TP_fast_assign( 244cca674d4SAntonio Quartulli LOCAL_ASSIGN; 245cca674d4SAntonio Quartulli __entry->ret = ret; 246cca674d4SAntonio Quartulli ), 247cca674d4SAntonio Quartulli TP_printk(LOCAL_PR_FMT " - %u", LOCAL_PR_ARG, __entry->ret) 248cca674d4SAntonio Quartulli ); 249cca674d4SAntonio Quartulli 250011ad0e9SJohannes Berg TRACE_EVENT(drv_return_u64, 251011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u64 ret), 252011ad0e9SJohannes Berg TP_ARGS(local, ret), 253011ad0e9SJohannes Berg TP_STRUCT__entry( 254011ad0e9SJohannes Berg LOCAL_ENTRY 255011ad0e9SJohannes Berg __field(u64, ret) 256011ad0e9SJohannes Berg ), 257011ad0e9SJohannes Berg TP_fast_assign( 258011ad0e9SJohannes Berg LOCAL_ASSIGN; 259011ad0e9SJohannes Berg __entry->ret = ret; 260011ad0e9SJohannes Berg ), 261011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret) 262011ad0e9SJohannes Berg ); 263011ad0e9SJohannes Berg 264011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_start, 265011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 266011ad0e9SJohannes Berg TP_ARGS(local) 267011ad0e9SJohannes Berg ); 268011ad0e9SJohannes Berg 269011ad0e9SJohannes Berg DEFINE_EVENT(local_u32_evt, drv_get_et_strings, 270011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 sset), 271011ad0e9SJohannes Berg TP_ARGS(local, sset) 272011ad0e9SJohannes Berg ); 273011ad0e9SJohannes Berg 274011ad0e9SJohannes Berg DEFINE_EVENT(local_u32_evt, drv_get_et_sset_count, 275011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 sset), 276011ad0e9SJohannes Berg TP_ARGS(local, sset) 277011ad0e9SJohannes Berg ); 278011ad0e9SJohannes Berg 279011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_get_et_stats, 280011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 281011ad0e9SJohannes Berg TP_ARGS(local) 282011ad0e9SJohannes Berg ); 283011ad0e9SJohannes Berg 284011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_suspend, 285011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 286011ad0e9SJohannes Berg TP_ARGS(local) 287011ad0e9SJohannes Berg ); 288011ad0e9SJohannes Berg 289011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_resume, 290011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 291011ad0e9SJohannes Berg TP_ARGS(local) 292011ad0e9SJohannes Berg ); 293011ad0e9SJohannes Berg 294011ad0e9SJohannes Berg TRACE_EVENT(drv_set_wakeup, 295011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, bool enabled), 296011ad0e9SJohannes Berg TP_ARGS(local, enabled), 297011ad0e9SJohannes Berg TP_STRUCT__entry( 298011ad0e9SJohannes Berg LOCAL_ENTRY 299011ad0e9SJohannes Berg __field(bool, enabled) 300011ad0e9SJohannes Berg ), 301011ad0e9SJohannes Berg TP_fast_assign( 302011ad0e9SJohannes Berg LOCAL_ASSIGN; 303011ad0e9SJohannes Berg __entry->enabled = enabled; 304011ad0e9SJohannes Berg ), 305011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled) 306011ad0e9SJohannes Berg ); 307011ad0e9SJohannes Berg 308011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_stop, 309011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 310011ad0e9SJohannes Berg TP_ARGS(local) 311011ad0e9SJohannes Berg ); 312011ad0e9SJohannes Berg 313011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface, 314011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 315011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 316011ad0e9SJohannes Berg TP_ARGS(local, sdata) 317011ad0e9SJohannes Berg ); 318011ad0e9SJohannes Berg 319011ad0e9SJohannes Berg TRACE_EVENT(drv_change_interface, 320011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 321011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 322011ad0e9SJohannes Berg enum nl80211_iftype type, bool p2p), 323011ad0e9SJohannes Berg 324011ad0e9SJohannes Berg TP_ARGS(local, sdata, type, p2p), 325011ad0e9SJohannes Berg 326011ad0e9SJohannes Berg TP_STRUCT__entry( 327011ad0e9SJohannes Berg LOCAL_ENTRY 328011ad0e9SJohannes Berg VIF_ENTRY 329011ad0e9SJohannes Berg __field(u32, new_type) 330011ad0e9SJohannes Berg __field(bool, new_p2p) 331011ad0e9SJohannes Berg ), 332011ad0e9SJohannes Berg 333011ad0e9SJohannes Berg TP_fast_assign( 334011ad0e9SJohannes Berg LOCAL_ASSIGN; 335011ad0e9SJohannes Berg VIF_ASSIGN; 336011ad0e9SJohannes Berg __entry->new_type = type; 337011ad0e9SJohannes Berg __entry->new_p2p = p2p; 338011ad0e9SJohannes Berg ), 339011ad0e9SJohannes Berg 340011ad0e9SJohannes Berg TP_printk( 341011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " new type:%d%s", 342011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type, 343011ad0e9SJohannes Berg __entry->new_p2p ? "/p2p" : "" 344011ad0e9SJohannes Berg ) 345011ad0e9SJohannes Berg ); 346011ad0e9SJohannes Berg 347011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface, 348011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 349011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 350011ad0e9SJohannes Berg TP_ARGS(local, sdata) 351011ad0e9SJohannes Berg ); 352011ad0e9SJohannes Berg 353011ad0e9SJohannes Berg TRACE_EVENT(drv_config, 354011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 355011ad0e9SJohannes Berg u32 changed), 356011ad0e9SJohannes Berg 357011ad0e9SJohannes Berg TP_ARGS(local, changed), 358011ad0e9SJohannes Berg 359011ad0e9SJohannes Berg TP_STRUCT__entry( 360011ad0e9SJohannes Berg LOCAL_ENTRY 361011ad0e9SJohannes Berg __field(u32, changed) 362011ad0e9SJohannes Berg __field(u32, flags) 363011ad0e9SJohannes Berg __field(int, power_level) 364011ad0e9SJohannes Berg __field(int, dynamic_ps_timeout) 365011ad0e9SJohannes Berg __field(u16, listen_interval) 366011ad0e9SJohannes Berg __field(u8, long_frame_max_tx_count) 367011ad0e9SJohannes Berg __field(u8, short_frame_max_tx_count) 368675a0b04SKarl Beldan CHANDEF_ENTRY 369011ad0e9SJohannes Berg __field(int, smps) 370011ad0e9SJohannes Berg ), 371011ad0e9SJohannes Berg 372011ad0e9SJohannes Berg TP_fast_assign( 373011ad0e9SJohannes Berg LOCAL_ASSIGN; 374011ad0e9SJohannes Berg __entry->changed = changed; 375011ad0e9SJohannes Berg __entry->flags = local->hw.conf.flags; 376011ad0e9SJohannes Berg __entry->power_level = local->hw.conf.power_level; 377011ad0e9SJohannes Berg __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout; 378011ad0e9SJohannes Berg __entry->listen_interval = local->hw.conf.listen_interval; 3793d01be72SJohannes Berg __entry->long_frame_max_tx_count = 3803d01be72SJohannes Berg local->hw.conf.long_frame_max_tx_count; 3813d01be72SJohannes Berg __entry->short_frame_max_tx_count = 3823d01be72SJohannes Berg local->hw.conf.short_frame_max_tx_count; 383675a0b04SKarl Beldan CHANDEF_ASSIGN(&local->hw.conf.chandef) 384011ad0e9SJohannes Berg __entry->smps = local->hw.conf.smps_mode; 385011ad0e9SJohannes Berg ), 386011ad0e9SJohannes Berg 387011ad0e9SJohannes Berg TP_printk( 388675a0b04SKarl Beldan LOCAL_PR_FMT " ch:%#x" CHANDEF_PR_FMT, 389675a0b04SKarl Beldan LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG 390011ad0e9SJohannes Berg ) 391011ad0e9SJohannes Berg ); 392011ad0e9SJohannes Berg 3937b7090b4SJohannes Berg TRACE_EVENT(drv_vif_cfg_changed, 394011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 395011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 3967b7090b4SJohannes Berg u64 changed), 397011ad0e9SJohannes Berg 3987b7090b4SJohannes Berg TP_ARGS(local, sdata, changed), 399011ad0e9SJohannes Berg 400011ad0e9SJohannes Berg TP_STRUCT__entry( 401011ad0e9SJohannes Berg LOCAL_ENTRY 402011ad0e9SJohannes Berg VIF_ENTRY 4037b7090b4SJohannes Berg __field(u64, changed) 404011ad0e9SJohannes Berg __field(bool, assoc) 4051724ffbcSJohannes Berg __field(bool, ibss_joined) 4061724ffbcSJohannes Berg __field(bool, ibss_creator) 407011ad0e9SJohannes Berg __field(u16, aid) 4087b7090b4SJohannes Berg __dynamic_array(u32, arp_addr_list, 4097b7090b4SJohannes Berg sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? 4107b7090b4SJohannes Berg IEEE80211_BSS_ARP_ADDR_LIST_LEN : 4117b7090b4SJohannes Berg sdata->vif.cfg.arp_addr_cnt) 4127b7090b4SJohannes Berg __field(int, arp_addr_cnt) 4137b7090b4SJohannes Berg __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) 4147b7090b4SJohannes Berg __field(int, s1g) 4157b7090b4SJohannes Berg __field(bool, idle) 416a3b8008dSJohannes Berg __field(bool, ps) 4177b7090b4SJohannes Berg ), 4187b7090b4SJohannes Berg 4197b7090b4SJohannes Berg TP_fast_assign( 4207b7090b4SJohannes Berg LOCAL_ASSIGN; 4217b7090b4SJohannes Berg VIF_ASSIGN; 4227b7090b4SJohannes Berg __entry->changed = changed; 4237b7090b4SJohannes Berg __entry->aid = sdata->vif.cfg.aid; 4247b7090b4SJohannes Berg __entry->assoc = sdata->vif.cfg.assoc; 4257b7090b4SJohannes Berg __entry->ibss_joined = sdata->vif.cfg.ibss_joined; 4267b7090b4SJohannes Berg __entry->ibss_creator = sdata->vif.cfg.ibss_creator; 427a3b8008dSJohannes Berg __entry->ps = sdata->vif.cfg.ps; 4287b7090b4SJohannes Berg 4297b7090b4SJohannes Berg __entry->arp_addr_cnt = sdata->vif.cfg.arp_addr_cnt; 4307b7090b4SJohannes Berg memcpy(__get_dynamic_array(arp_addr_list), 4317b7090b4SJohannes Berg sdata->vif.cfg.arp_addr_list, 4327b7090b4SJohannes Berg sizeof(u32) * (sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? 4337b7090b4SJohannes Berg IEEE80211_BSS_ARP_ADDR_LIST_LEN : 4347b7090b4SJohannes Berg sdata->vif.cfg.arp_addr_cnt)); 4357b7090b4SJohannes Berg memcpy(__get_dynamic_array(ssid), 4367b7090b4SJohannes Berg sdata->vif.cfg.ssid, 4377b7090b4SJohannes Berg sdata->vif.cfg.ssid_len); 4387b7090b4SJohannes Berg __entry->s1g = sdata->vif.cfg.s1g; 4397b7090b4SJohannes Berg __entry->idle = sdata->vif.cfg.idle; 4407b7090b4SJohannes Berg ), 4417b7090b4SJohannes Berg 4427b7090b4SJohannes Berg TP_printk( 4437b7090b4SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " changed:%#llx", 4447b7090b4SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed 4457b7090b4SJohannes Berg ) 4467b7090b4SJohannes Berg ); 4477b7090b4SJohannes Berg 4487b7090b4SJohannes Berg TRACE_EVENT(drv_link_info_changed, 4497b7090b4SJohannes Berg TP_PROTO(struct ieee80211_local *local, 4507b7090b4SJohannes Berg struct ieee80211_sub_if_data *sdata, 451d8675a63SJohannes Berg struct ieee80211_bss_conf *link_conf, 4527840bd46SGregory Greenman u64 changed), 4537b7090b4SJohannes Berg 4547840bd46SGregory Greenman TP_ARGS(local, sdata, link_conf, changed), 4557b7090b4SJohannes Berg 4567b7090b4SJohannes Berg TP_STRUCT__entry( 4577b7090b4SJohannes Berg LOCAL_ENTRY 4587b7090b4SJohannes Berg VIF_ENTRY 4597b7090b4SJohannes Berg __field(u64, changed) 4607b7090b4SJohannes Berg __field(int, link_id) 461011ad0e9SJohannes Berg __field(bool, cts) 462011ad0e9SJohannes Berg __field(bool, shortpre) 463011ad0e9SJohannes Berg __field(bool, shortslot) 4641724ffbcSJohannes Berg __field(bool, enable_beacon) 465011ad0e9SJohannes Berg __field(u8, dtimper) 466011ad0e9SJohannes Berg __field(u16, bcnint) 467011ad0e9SJohannes Berg __field(u16, assoc_cap) 4688c358bcdSJohannes Berg __field(u64, sync_tsf) 4698c358bcdSJohannes Berg __field(u32, sync_device_ts) 470ef429dadSJohannes Berg __field(u8, sync_dtim_count) 471011ad0e9SJohannes Berg __field(u32, basic_rates) 47257fbcce3SJohannes Berg __array(int, mcast_rate, NUM_NL80211_BANDS) 473011ad0e9SJohannes Berg __field(u16, ht_operation_mode) 47404ae87a5SPeter Zijlstra __field(s32, cqm_rssi_thold) 47504ae87a5SPeter Zijlstra __field(s32, cqm_rssi_hyst) 47604ae87a5SPeter Zijlstra __field(u32, channel_width) 47704ae87a5SPeter Zijlstra __field(u32, channel_cfreq1) 478b6011960SThomas Pedersen __field(u32, channel_cfreq1_offset) 47904ae87a5SPeter Zijlstra __field(bool, qos) 48004ae87a5SPeter Zijlstra __field(bool, hidden_ssid) 4811ea6f9c0SJohannes Berg __field(int, txpower) 48267baf663SJanusz Dziedzic __field(u8, p2p_oppps_ctwindow) 483011ad0e9SJohannes Berg ), 484011ad0e9SJohannes Berg 485011ad0e9SJohannes Berg TP_fast_assign( 486011ad0e9SJohannes Berg LOCAL_ASSIGN; 487011ad0e9SJohannes Berg VIF_ASSIGN; 488011ad0e9SJohannes Berg __entry->changed = changed; 4897840bd46SGregory Greenman __entry->link_id = link_conf->link_id; 4907ffc4b29SJohannes Berg __entry->shortpre = link_conf->use_short_preamble; 4917ffc4b29SJohannes Berg __entry->cts = link_conf->use_cts_prot; 4927ffc4b29SJohannes Berg __entry->shortslot = link_conf->use_short_slot; 4937ffc4b29SJohannes Berg __entry->enable_beacon = link_conf->enable_beacon; 4947ffc4b29SJohannes Berg __entry->dtimper = link_conf->dtim_period; 4957ffc4b29SJohannes Berg __entry->bcnint = link_conf->beacon_int; 4967ffc4b29SJohannes Berg __entry->assoc_cap = link_conf->assoc_capability; 4977ffc4b29SJohannes Berg __entry->sync_tsf = link_conf->sync_tsf; 4987ffc4b29SJohannes Berg __entry->sync_device_ts = link_conf->sync_device_ts; 4997ffc4b29SJohannes Berg __entry->sync_dtim_count = link_conf->sync_dtim_count; 5007ffc4b29SJohannes Berg __entry->basic_rates = link_conf->basic_rates; 5017ffc4b29SJohannes Berg memcpy(__entry->mcast_rate, link_conf->mcast_rate, 5021724ffbcSJohannes Berg sizeof(__entry->mcast_rate)); 5037ffc4b29SJohannes Berg __entry->ht_operation_mode = link_conf->ht_operation_mode; 5047ffc4b29SJohannes Berg __entry->cqm_rssi_thold = link_conf->cqm_rssi_thold; 5057ffc4b29SJohannes Berg __entry->cqm_rssi_hyst = link_conf->cqm_rssi_hyst; 5067ffc4b29SJohannes Berg __entry->channel_width = link_conf->chandef.width; 5077ffc4b29SJohannes Berg __entry->channel_cfreq1 = link_conf->chandef.center_freq1; 5087ffc4b29SJohannes Berg __entry->channel_cfreq1_offset = link_conf->chandef.freq1_offset; 5097ffc4b29SJohannes Berg __entry->qos = link_conf->qos; 5107ffc4b29SJohannes Berg __entry->hidden_ssid = link_conf->hidden_ssid; 5117ffc4b29SJohannes Berg __entry->txpower = link_conf->txpower; 5127ffc4b29SJohannes Berg __entry->p2p_oppps_ctwindow = link_conf->p2p_noa_attr.oppps_ctwindow; 513011ad0e9SJohannes Berg ), 514011ad0e9SJohannes Berg 515011ad0e9SJohannes Berg TP_printk( 5167b7090b4SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " link_id:%d, changed:%#llx", 5177b7090b4SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, 5187b7090b4SJohannes Berg __entry->changed 519011ad0e9SJohannes Berg ) 520011ad0e9SJohannes Berg ); 521011ad0e9SJohannes Berg 522011ad0e9SJohannes Berg TRACE_EVENT(drv_prepare_multicast, 523011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, int mc_count), 524011ad0e9SJohannes Berg 525011ad0e9SJohannes Berg TP_ARGS(local, mc_count), 526011ad0e9SJohannes Berg 527011ad0e9SJohannes Berg TP_STRUCT__entry( 528011ad0e9SJohannes Berg LOCAL_ENTRY 529011ad0e9SJohannes Berg __field(int, mc_count) 530011ad0e9SJohannes Berg ), 531011ad0e9SJohannes Berg 532011ad0e9SJohannes Berg TP_fast_assign( 533011ad0e9SJohannes Berg LOCAL_ASSIGN; 534011ad0e9SJohannes Berg __entry->mc_count = mc_count; 535011ad0e9SJohannes Berg ), 536011ad0e9SJohannes Berg 537011ad0e9SJohannes Berg TP_printk( 538011ad0e9SJohannes Berg LOCAL_PR_FMT " prepare mc (%d)", 539011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->mc_count 540011ad0e9SJohannes Berg ) 541011ad0e9SJohannes Berg ); 542011ad0e9SJohannes Berg 543011ad0e9SJohannes Berg TRACE_EVENT(drv_configure_filter, 544011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 545011ad0e9SJohannes Berg unsigned int changed_flags, 546011ad0e9SJohannes Berg unsigned int *total_flags, 547011ad0e9SJohannes Berg u64 multicast), 548011ad0e9SJohannes Berg 549011ad0e9SJohannes Berg TP_ARGS(local, changed_flags, total_flags, multicast), 550011ad0e9SJohannes Berg 551011ad0e9SJohannes Berg TP_STRUCT__entry( 552011ad0e9SJohannes Berg LOCAL_ENTRY 553011ad0e9SJohannes Berg __field(unsigned int, changed) 554011ad0e9SJohannes Berg __field(unsigned int, total) 555011ad0e9SJohannes Berg __field(u64, multicast) 556011ad0e9SJohannes Berg ), 557011ad0e9SJohannes Berg 558011ad0e9SJohannes Berg TP_fast_assign( 559011ad0e9SJohannes Berg LOCAL_ASSIGN; 560011ad0e9SJohannes Berg __entry->changed = changed_flags; 561011ad0e9SJohannes Berg __entry->total = *total_flags; 562011ad0e9SJohannes Berg __entry->multicast = multicast; 563011ad0e9SJohannes Berg ), 564011ad0e9SJohannes Berg 565011ad0e9SJohannes Berg TP_printk( 566011ad0e9SJohannes Berg LOCAL_PR_FMT " changed:%#x total:%#x", 567011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->changed, __entry->total 568011ad0e9SJohannes Berg ) 569011ad0e9SJohannes Berg ); 570011ad0e9SJohannes Berg 5711b09b556SAndrei Otcheretianski TRACE_EVENT(drv_config_iface_filter, 5721b09b556SAndrei Otcheretianski TP_PROTO(struct ieee80211_local *local, 5731b09b556SAndrei Otcheretianski struct ieee80211_sub_if_data *sdata, 5741b09b556SAndrei Otcheretianski unsigned int filter_flags, 5751b09b556SAndrei Otcheretianski unsigned int changed_flags), 5761b09b556SAndrei Otcheretianski 5771b09b556SAndrei Otcheretianski TP_ARGS(local, sdata, filter_flags, changed_flags), 5781b09b556SAndrei Otcheretianski 5791b09b556SAndrei Otcheretianski TP_STRUCT__entry( 5801b09b556SAndrei Otcheretianski LOCAL_ENTRY 5811b09b556SAndrei Otcheretianski VIF_ENTRY 5821b09b556SAndrei Otcheretianski __field(unsigned int, filter_flags) 5831b09b556SAndrei Otcheretianski __field(unsigned int, changed_flags) 5841b09b556SAndrei Otcheretianski ), 5851b09b556SAndrei Otcheretianski 5861b09b556SAndrei Otcheretianski TP_fast_assign( 5871b09b556SAndrei Otcheretianski LOCAL_ASSIGN; 5881b09b556SAndrei Otcheretianski VIF_ASSIGN; 5891b09b556SAndrei Otcheretianski __entry->filter_flags = filter_flags; 5901b09b556SAndrei Otcheretianski __entry->changed_flags = changed_flags; 5911b09b556SAndrei Otcheretianski ), 5921b09b556SAndrei Otcheretianski 5931b09b556SAndrei Otcheretianski TP_printk( 5941b09b556SAndrei Otcheretianski LOCAL_PR_FMT VIF_PR_FMT 5951b09b556SAndrei Otcheretianski " filter_flags: %#x changed_flags: %#x", 5961b09b556SAndrei Otcheretianski LOCAL_PR_ARG, VIF_PR_ARG, __entry->filter_flags, 5971b09b556SAndrei Otcheretianski __entry->changed_flags 5981b09b556SAndrei Otcheretianski ) 5991b09b556SAndrei Otcheretianski ); 6001b09b556SAndrei Otcheretianski 601011ad0e9SJohannes Berg TRACE_EVENT(drv_set_tim, 602011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 603011ad0e9SJohannes Berg struct ieee80211_sta *sta, bool set), 604011ad0e9SJohannes Berg 605011ad0e9SJohannes Berg TP_ARGS(local, sta, set), 606011ad0e9SJohannes Berg 607011ad0e9SJohannes Berg TP_STRUCT__entry( 608011ad0e9SJohannes Berg LOCAL_ENTRY 609011ad0e9SJohannes Berg STA_ENTRY 610011ad0e9SJohannes Berg __field(bool, set) 611011ad0e9SJohannes Berg ), 612011ad0e9SJohannes Berg 613011ad0e9SJohannes Berg TP_fast_assign( 614011ad0e9SJohannes Berg LOCAL_ASSIGN; 615011ad0e9SJohannes Berg STA_ASSIGN; 616011ad0e9SJohannes Berg __entry->set = set; 617011ad0e9SJohannes Berg ), 618011ad0e9SJohannes Berg 619011ad0e9SJohannes Berg TP_printk( 620011ad0e9SJohannes Berg LOCAL_PR_FMT STA_PR_FMT " set:%d", 62115ac7c47SSeth Forshee LOCAL_PR_ARG, STA_PR_ARG, __entry->set 622011ad0e9SJohannes Berg ) 623011ad0e9SJohannes Berg ); 624011ad0e9SJohannes Berg 625011ad0e9SJohannes Berg TRACE_EVENT(drv_set_key, 626011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 627011ad0e9SJohannes Berg enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata, 628011ad0e9SJohannes Berg struct ieee80211_sta *sta, 629011ad0e9SJohannes Berg struct ieee80211_key_conf *key), 630011ad0e9SJohannes Berg 631011ad0e9SJohannes Berg TP_ARGS(local, cmd, sdata, sta, key), 632011ad0e9SJohannes Berg 633011ad0e9SJohannes Berg TP_STRUCT__entry( 634011ad0e9SJohannes Berg LOCAL_ENTRY 635011ad0e9SJohannes Berg VIF_ENTRY 636011ad0e9SJohannes Berg STA_ENTRY 6379352c19fSJohannes Berg __field(u32, cmd) 638011ad0e9SJohannes Berg KEY_ENTRY 639011ad0e9SJohannes Berg ), 640011ad0e9SJohannes Berg 641011ad0e9SJohannes Berg TP_fast_assign( 642011ad0e9SJohannes Berg LOCAL_ASSIGN; 643011ad0e9SJohannes Berg VIF_ASSIGN; 6449352c19fSJohannes Berg STA_ASSIGN; 645011ad0e9SJohannes Berg __entry->cmd = cmd; 646011ad0e9SJohannes Berg KEY_ASSIGN(key); 647011ad0e9SJohannes Berg ), 6489352c19fSJohannes Berg 6499352c19fSJohannes Berg TP_printk( 650011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd: %d" KEY_PR_FMT, 651011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd, KEY_PR_ARG 652011ad0e9SJohannes Berg ) 653011ad0e9SJohannes Berg ); 654011ad0e9SJohannes Berg 655011ad0e9SJohannes Berg TRACE_EVENT(drv_update_tkip_key, 656011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 657011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 658011ad0e9SJohannes Berg struct ieee80211_key_conf *conf, 659011ad0e9SJohannes Berg struct ieee80211_sta *sta, u32 iv32), 660011ad0e9SJohannes Berg 661011ad0e9SJohannes Berg TP_ARGS(local, sdata, conf, sta, iv32), 662011ad0e9SJohannes Berg 663011ad0e9SJohannes Berg TP_STRUCT__entry( 664011ad0e9SJohannes Berg LOCAL_ENTRY 665011ad0e9SJohannes Berg VIF_ENTRY 666011ad0e9SJohannes Berg STA_ENTRY 667011ad0e9SJohannes Berg __field(u32, iv32) 668011ad0e9SJohannes Berg ), 669011ad0e9SJohannes Berg 670011ad0e9SJohannes Berg TP_fast_assign( 671011ad0e9SJohannes Berg LOCAL_ASSIGN; 672011ad0e9SJohannes Berg VIF_ASSIGN; 673011ad0e9SJohannes Berg STA_ASSIGN; 674011ad0e9SJohannes Berg __entry->iv32 = iv32; 675011ad0e9SJohannes Berg ), 676011ad0e9SJohannes Berg 677011ad0e9SJohannes Berg TP_printk( 678011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x", 679011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->iv32 680011ad0e9SJohannes Berg ) 681011ad0e9SJohannes Berg ); 682011ad0e9SJohannes Berg 683011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_hw_scan, 684011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 685011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 686011ad0e9SJohannes Berg TP_ARGS(local, sdata) 687011ad0e9SJohannes Berg ); 688011ad0e9SJohannes Berg 689011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan, 690011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 691011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 692011ad0e9SJohannes Berg TP_ARGS(local, sdata) 693011ad0e9SJohannes Berg ); 694011ad0e9SJohannes Berg 695011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_sched_scan_start, 696011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 697011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 698011ad0e9SJohannes Berg TP_ARGS(local, sdata) 699011ad0e9SJohannes Berg ); 700011ad0e9SJohannes Berg 701011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop, 702011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 703011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 704011ad0e9SJohannes Berg TP_ARGS(local, sdata) 705a344d677SJohannes Berg ); 706a344d677SJohannes Berg 707a344d677SJohannes Berg TRACE_EVENT(drv_sw_scan_start, 708a344d677SJohannes Berg TP_PROTO(struct ieee80211_local *local, 709a344d677SJohannes Berg struct ieee80211_sub_if_data *sdata, 710a344d677SJohannes Berg const u8 *mac_addr), 711a344d677SJohannes Berg 712a344d677SJohannes Berg TP_ARGS(local, sdata, mac_addr), 713a344d677SJohannes Berg 714a344d677SJohannes Berg TP_STRUCT__entry( 715a344d677SJohannes Berg LOCAL_ENTRY 716a344d677SJohannes Berg VIF_ENTRY 717a344d677SJohannes Berg __array(char, mac_addr, ETH_ALEN) 718a344d677SJohannes Berg ), 719a344d677SJohannes Berg 720a344d677SJohannes Berg TP_fast_assign( 721a344d677SJohannes Berg LOCAL_ASSIGN; 722a344d677SJohannes Berg VIF_ASSIGN; 723a344d677SJohannes Berg memcpy(__entry->mac_addr, mac_addr, ETH_ALEN); 724a344d677SJohannes Berg ), 725a344d677SJohannes Berg 726011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT ", addr:%pM", 727011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->mac_addr) 728a344d677SJohannes Berg ); 729a344d677SJohannes Berg 730a344d677SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_sw_scan_complete, 731a344d677SJohannes Berg TP_PROTO(struct ieee80211_local *local, 732011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 733011ad0e9SJohannes Berg TP_ARGS(local, sdata) 734011ad0e9SJohannes Berg ); 735011ad0e9SJohannes Berg 736011ad0e9SJohannes Berg TRACE_EVENT(drv_get_stats, 737011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 738011ad0e9SJohannes Berg struct ieee80211_low_level_stats *stats, 739011ad0e9SJohannes Berg int ret), 740011ad0e9SJohannes Berg 741011ad0e9SJohannes Berg TP_ARGS(local, stats, ret), 742011ad0e9SJohannes Berg 743011ad0e9SJohannes Berg TP_STRUCT__entry( 744011ad0e9SJohannes Berg LOCAL_ENTRY 745011ad0e9SJohannes Berg __field(int, ret) 746011ad0e9SJohannes Berg __field(unsigned int, ackfail) 747011ad0e9SJohannes Berg __field(unsigned int, rtsfail) 748011ad0e9SJohannes Berg __field(unsigned int, fcserr) 749011ad0e9SJohannes Berg __field(unsigned int, rtssucc) 750011ad0e9SJohannes Berg ), 751011ad0e9SJohannes Berg 752011ad0e9SJohannes Berg TP_fast_assign( 753011ad0e9SJohannes Berg LOCAL_ASSIGN; 754011ad0e9SJohannes Berg __entry->ret = ret; 755011ad0e9SJohannes Berg __entry->ackfail = stats->dot11ACKFailureCount; 756011ad0e9SJohannes Berg __entry->rtsfail = stats->dot11RTSFailureCount; 757011ad0e9SJohannes Berg __entry->fcserr = stats->dot11FCSErrorCount; 758011ad0e9SJohannes Berg __entry->rtssucc = stats->dot11RTSSuccessCount; 759011ad0e9SJohannes Berg ), 760011ad0e9SJohannes Berg 761011ad0e9SJohannes Berg TP_printk( 762011ad0e9SJohannes Berg LOCAL_PR_FMT " ret:%d", 763011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->ret 764011ad0e9SJohannes Berg ) 7659352c19fSJohannes Berg ); 766011ad0e9SJohannes Berg 7679352c19fSJohannes Berg TRACE_EVENT(drv_get_key_seq, 768011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 7699352c19fSJohannes Berg struct ieee80211_key_conf *key), 770011ad0e9SJohannes Berg 771011ad0e9SJohannes Berg TP_ARGS(local, key), 772011ad0e9SJohannes Berg 7739352c19fSJohannes Berg TP_STRUCT__entry( 774011ad0e9SJohannes Berg LOCAL_ENTRY 775011ad0e9SJohannes Berg KEY_ENTRY 776011ad0e9SJohannes Berg ), 777011ad0e9SJohannes Berg 7789352c19fSJohannes Berg TP_fast_assign( 779011ad0e9SJohannes Berg LOCAL_ASSIGN; 780011ad0e9SJohannes Berg KEY_ASSIGN(key); 781011ad0e9SJohannes Berg ), 7829352c19fSJohannes Berg 7839352c19fSJohannes Berg TP_printk( 784011ad0e9SJohannes Berg LOCAL_PR_FMT KEY_PR_FMT, 785011ad0e9SJohannes Berg LOCAL_PR_ARG, KEY_PR_ARG 786011ad0e9SJohannes Berg ) 787011ad0e9SJohannes Berg ); 788011ad0e9SJohannes Berg 789011ad0e9SJohannes Berg DEFINE_EVENT(local_u32_evt, drv_set_frag_threshold, 790011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 value), 791011ad0e9SJohannes Berg TP_ARGS(local, value) 792011ad0e9SJohannes Berg ); 793011ad0e9SJohannes Berg 794011ad0e9SJohannes Berg DEFINE_EVENT(local_u32_evt, drv_set_rts_threshold, 795011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 value), 796011ad0e9SJohannes Berg TP_ARGS(local, value) 797011ad0e9SJohannes Berg ); 798a4bcaf55SLorenzo Bianconi 799011ad0e9SJohannes Berg TRACE_EVENT(drv_set_coverage_class, 800011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, s16 value), 801011ad0e9SJohannes Berg 802011ad0e9SJohannes Berg TP_ARGS(local, value), 803011ad0e9SJohannes Berg 804a4bcaf55SLorenzo Bianconi TP_STRUCT__entry( 805011ad0e9SJohannes Berg LOCAL_ENTRY 806011ad0e9SJohannes Berg __field(s16, value) 807011ad0e9SJohannes Berg ), 808011ad0e9SJohannes Berg 809011ad0e9SJohannes Berg TP_fast_assign( 810011ad0e9SJohannes Berg LOCAL_ASSIGN; 811011ad0e9SJohannes Berg __entry->value = value; 812011ad0e9SJohannes Berg ), 813011ad0e9SJohannes Berg 814011ad0e9SJohannes Berg TP_printk( 815011ad0e9SJohannes Berg LOCAL_PR_FMT " value:%d", 816011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->value 817011ad0e9SJohannes Berg ) 818011ad0e9SJohannes Berg ); 819011ad0e9SJohannes Berg 820011ad0e9SJohannes Berg TRACE_EVENT(drv_sta_notify, 821011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 822011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 823011ad0e9SJohannes Berg enum sta_notify_cmd cmd, 824011ad0e9SJohannes Berg struct ieee80211_sta *sta), 825011ad0e9SJohannes Berg 826011ad0e9SJohannes Berg TP_ARGS(local, sdata, cmd, sta), 827011ad0e9SJohannes Berg 828011ad0e9SJohannes Berg TP_STRUCT__entry( 829011ad0e9SJohannes Berg LOCAL_ENTRY 830011ad0e9SJohannes Berg VIF_ENTRY 831011ad0e9SJohannes Berg STA_ENTRY 832011ad0e9SJohannes Berg __field(u32, cmd) 833011ad0e9SJohannes Berg ), 834011ad0e9SJohannes Berg 835011ad0e9SJohannes Berg TP_fast_assign( 836011ad0e9SJohannes Berg LOCAL_ASSIGN; 837011ad0e9SJohannes Berg VIF_ASSIGN; 838011ad0e9SJohannes Berg STA_ASSIGN; 839011ad0e9SJohannes Berg __entry->cmd = cmd; 840011ad0e9SJohannes Berg ), 841011ad0e9SJohannes Berg 842011ad0e9SJohannes Berg TP_printk( 843011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd:%d", 844011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd 845011ad0e9SJohannes Berg ) 846011ad0e9SJohannes Berg ); 847011ad0e9SJohannes Berg 848011ad0e9SJohannes Berg TRACE_EVENT(drv_sta_state, 849011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 850011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 851011ad0e9SJohannes Berg struct ieee80211_sta *sta, 852011ad0e9SJohannes Berg enum ieee80211_sta_state old_state, 853011ad0e9SJohannes Berg enum ieee80211_sta_state new_state), 854011ad0e9SJohannes Berg 855011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta, old_state, new_state), 856011ad0e9SJohannes Berg 857011ad0e9SJohannes Berg TP_STRUCT__entry( 858011ad0e9SJohannes Berg LOCAL_ENTRY 859011ad0e9SJohannes Berg VIF_ENTRY 860011ad0e9SJohannes Berg STA_ENTRY 861011ad0e9SJohannes Berg __field(u32, old_state) 862011ad0e9SJohannes Berg __field(u32, new_state) 863011ad0e9SJohannes Berg ), 864011ad0e9SJohannes Berg 865011ad0e9SJohannes Berg TP_fast_assign( 866011ad0e9SJohannes Berg LOCAL_ASSIGN; 867011ad0e9SJohannes Berg VIF_ASSIGN; 868011ad0e9SJohannes Berg STA_ASSIGN; 869011ad0e9SJohannes Berg __entry->old_state = old_state; 870011ad0e9SJohannes Berg __entry->new_state = new_state; 871011ad0e9SJohannes Berg ), 872011ad0e9SJohannes Berg 873011ad0e9SJohannes Berg TP_printk( 874011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " state: %d->%d", 875011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, 876011ad0e9SJohannes Berg __entry->old_state, __entry->new_state 877011ad0e9SJohannes Berg ) 878ba905bf4SAshok Raj Nagarajan ); 879ba905bf4SAshok Raj Nagarajan 880ba905bf4SAshok Raj Nagarajan TRACE_EVENT(drv_sta_set_txpwr, 881ba905bf4SAshok Raj Nagarajan TP_PROTO(struct ieee80211_local *local, 882ba905bf4SAshok Raj Nagarajan struct ieee80211_sub_if_data *sdata, 883ba905bf4SAshok Raj Nagarajan struct ieee80211_sta *sta), 884ba905bf4SAshok Raj Nagarajan 885ba905bf4SAshok Raj Nagarajan TP_ARGS(local, sdata, sta), 886ba905bf4SAshok Raj Nagarajan 887ba905bf4SAshok Raj Nagarajan TP_STRUCT__entry( 888ba905bf4SAshok Raj Nagarajan LOCAL_ENTRY 889ba905bf4SAshok Raj Nagarajan VIF_ENTRY 890ba905bf4SAshok Raj Nagarajan STA_ENTRY 891ba905bf4SAshok Raj Nagarajan __field(s16, txpwr) 892ba905bf4SAshok Raj Nagarajan __field(u8, type) 893ba905bf4SAshok Raj Nagarajan ), 894ba905bf4SAshok Raj Nagarajan 895ba905bf4SAshok Raj Nagarajan TP_fast_assign( 896ba905bf4SAshok Raj Nagarajan LOCAL_ASSIGN; 897046d2e7cSSriram R VIF_ASSIGN; 898046d2e7cSSriram R STA_ASSIGN; 899ba905bf4SAshok Raj Nagarajan __entry->txpwr = sta->deflink.txpwr.power; 900ba905bf4SAshok Raj Nagarajan __entry->type = sta->deflink.txpwr.type; 901ba905bf4SAshok Raj Nagarajan ), 902ba905bf4SAshok Raj Nagarajan 903ba905bf4SAshok Raj Nagarajan TP_printk( 904ba905bf4SAshok Raj Nagarajan LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " txpwr: %d type %d", 905ba905bf4SAshok Raj Nagarajan LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, 906ba905bf4SAshok Raj Nagarajan __entry->txpwr, __entry->type 907ba905bf4SAshok Raj Nagarajan ) 908011ad0e9SJohannes Berg ); 909011ad0e9SJohannes Berg 910011ad0e9SJohannes Berg TRACE_EVENT(drv_sta_rc_update, 911011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 912011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 913011ad0e9SJohannes Berg struct ieee80211_sta *sta, 914011ad0e9SJohannes Berg u32 changed), 915011ad0e9SJohannes Berg 916011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta, changed), 917011ad0e9SJohannes Berg 918011ad0e9SJohannes Berg TP_STRUCT__entry( 919011ad0e9SJohannes Berg LOCAL_ENTRY 920011ad0e9SJohannes Berg VIF_ENTRY 921011ad0e9SJohannes Berg STA_ENTRY 922011ad0e9SJohannes Berg __field(u32, changed) 923011ad0e9SJohannes Berg ), 924011ad0e9SJohannes Berg 925011ad0e9SJohannes Berg TP_fast_assign( 926011ad0e9SJohannes Berg LOCAL_ASSIGN; 927011ad0e9SJohannes Berg VIF_ASSIGN; 928011ad0e9SJohannes Berg STA_ASSIGN; 929011ad0e9SJohannes Berg __entry->changed = changed; 930011ad0e9SJohannes Berg ), 931011ad0e9SJohannes Berg 932011ad0e9SJohannes Berg TP_printk( 933011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " changed: 0x%x", 934011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed 935011ad0e9SJohannes Berg ) 9366a9d1b91SJohannes Berg ); 937011ad0e9SJohannes Berg 938011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(sta_event, 939011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 940011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 941011ad0e9SJohannes Berg struct ieee80211_sta *sta), 942011ad0e9SJohannes Berg 943011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta), 944011ad0e9SJohannes Berg 945011ad0e9SJohannes Berg TP_STRUCT__entry( 946011ad0e9SJohannes Berg LOCAL_ENTRY 947011ad0e9SJohannes Berg VIF_ENTRY 948011ad0e9SJohannes Berg STA_ENTRY 949011ad0e9SJohannes Berg ), 950011ad0e9SJohannes Berg 951011ad0e9SJohannes Berg TP_fast_assign( 952011ad0e9SJohannes Berg LOCAL_ASSIGN; 953011ad0e9SJohannes Berg VIF_ASSIGN; 954011ad0e9SJohannes Berg STA_ASSIGN; 955011ad0e9SJohannes Berg ), 956011ad0e9SJohannes Berg 957011ad0e9SJohannes Berg TP_printk( 958011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT, 959011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG 960011ad0e9SJohannes Berg ) 9612b9a7e1bSJohannes Berg ); 9622b9a7e1bSJohannes Berg 9632b9a7e1bSJohannes Berg DEFINE_EVENT(sta_event, drv_sta_statistics, 9642b9a7e1bSJohannes Berg TP_PROTO(struct ieee80211_local *local, 9652b9a7e1bSJohannes Berg struct ieee80211_sub_if_data *sdata, 9662b9a7e1bSJohannes Berg struct ieee80211_sta *sta), 9672b9a7e1bSJohannes Berg TP_ARGS(local, sdata, sta) 9686a9d1b91SJohannes Berg ); 969011ad0e9SJohannes Berg 970011ad0e9SJohannes Berg DEFINE_EVENT(sta_event, drv_sta_add, 971011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 9726a9d1b91SJohannes Berg struct ieee80211_sub_if_data *sdata, 9736a9d1b91SJohannes Berg struct ieee80211_sta *sta), 974011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta) 9756a9d1b91SJohannes Berg ); 9766a9d1b91SJohannes Berg 9776a9d1b91SJohannes Berg DEFINE_EVENT(sta_event, drv_sta_remove, 9786a9d1b91SJohannes Berg TP_PROTO(struct ieee80211_local *local, 9796a9d1b91SJohannes Berg struct ieee80211_sub_if_data *sdata, 9806a9d1b91SJohannes Berg struct ieee80211_sta *sta), 981011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta) 9826a9d1b91SJohannes Berg ); 9836a9d1b91SJohannes Berg 9846a9d1b91SJohannes Berg DEFINE_EVENT(sta_event, drv_sta_pre_rcu_remove, 9856a9d1b91SJohannes Berg TP_PROTO(struct ieee80211_local *local, 9866a9d1b91SJohannes Berg struct ieee80211_sub_if_data *sdata, 987011ad0e9SJohannes Berg struct ieee80211_sta *sta), 988011ad0e9SJohannes Berg TP_ARGS(local, sdata, sta) 989f59374ebSSara Sharon ); 990f59374ebSSara Sharon 991f59374ebSSara Sharon DEFINE_EVENT(sta_event, drv_sync_rx_queues, 992f59374ebSSara Sharon TP_PROTO(struct ieee80211_local *local, 993f59374ebSSara Sharon struct ieee80211_sub_if_data *sdata, 994f59374ebSSara Sharon struct ieee80211_sta *sta), 995f59374ebSSara Sharon TP_ARGS(local, sdata, sta) 996f815e2b3SJohannes Berg ); 997f815e2b3SJohannes Berg 998f815e2b3SJohannes Berg DEFINE_EVENT(sta_event, drv_sta_rate_tbl_update, 999f815e2b3SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1000f815e2b3SJohannes Berg struct ieee80211_sub_if_data *sdata, 1001f815e2b3SJohannes Berg struct ieee80211_sta *sta), 1002f815e2b3SJohannes Berg TP_ARGS(local, sdata, sta) 1003011ad0e9SJohannes Berg ); 1004011ad0e9SJohannes Berg 1005011ad0e9SJohannes Berg TRACE_EVENT(drv_conf_tx, 1006b3e2130bSJohannes Berg TP_PROTO(struct ieee80211_local *local, 1007011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 1008011ad0e9SJohannes Berg unsigned int link_id, 1009b3e2130bSJohannes Berg u16 ac, const struct ieee80211_tx_queue_params *params), 1010011ad0e9SJohannes Berg 1011011ad0e9SJohannes Berg TP_ARGS(local, sdata, link_id, ac, params), 1012011ad0e9SJohannes Berg 1013011ad0e9SJohannes Berg TP_STRUCT__entry( 1014b3e2130bSJohannes Berg LOCAL_ENTRY 1015011ad0e9SJohannes Berg VIF_ENTRY 1016011ad0e9SJohannes Berg __field(unsigned int, link_id) 1017011ad0e9SJohannes Berg __field(u16, ac) 1018011ad0e9SJohannes Berg __field(u16, txop) 1019011ad0e9SJohannes Berg __field(u16, cw_min) 1020011ad0e9SJohannes Berg __field(u16, cw_max) 1021011ad0e9SJohannes Berg __field(u8, aifs) 1022011ad0e9SJohannes Berg __field(bool, uapsd) 1023011ad0e9SJohannes Berg ), 1024011ad0e9SJohannes Berg 1025011ad0e9SJohannes Berg TP_fast_assign( 1026b3e2130bSJohannes Berg LOCAL_ASSIGN; 1027011ad0e9SJohannes Berg VIF_ASSIGN; 1028011ad0e9SJohannes Berg __entry->link_id = link_id; 1029011ad0e9SJohannes Berg __entry->ac = ac; 1030011ad0e9SJohannes Berg __entry->txop = params->txop; 1031011ad0e9SJohannes Berg __entry->cw_max = params->cw_max; 1032011ad0e9SJohannes Berg __entry->cw_min = params->cw_min; 1033011ad0e9SJohannes Berg __entry->aifs = params->aifs; 1034011ad0e9SJohannes Berg __entry->uapsd = params->uapsd; 1035011ad0e9SJohannes Berg ), 1036b3e2130bSJohannes Berg 1037b3e2130bSJohannes Berg TP_printk( 1038011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " link_id: %d, AC:%d", 1039011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, __entry->ac 1040011ad0e9SJohannes Berg ) 1041011ad0e9SJohannes Berg ); 1042011ad0e9SJohannes Berg 1043011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_get_tsf, 1044011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1045011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 1046011ad0e9SJohannes Berg TP_ARGS(local, sdata) 1047011ad0e9SJohannes Berg ); 1048011ad0e9SJohannes Berg 1049011ad0e9SJohannes Berg TRACE_EVENT(drv_set_tsf, 1050011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1051011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 1052011ad0e9SJohannes Berg u64 tsf), 1053011ad0e9SJohannes Berg 1054011ad0e9SJohannes Berg TP_ARGS(local, sdata, tsf), 1055011ad0e9SJohannes Berg 1056011ad0e9SJohannes Berg TP_STRUCT__entry( 1057011ad0e9SJohannes Berg LOCAL_ENTRY 1058011ad0e9SJohannes Berg VIF_ENTRY 1059011ad0e9SJohannes Berg __field(u64, tsf) 1060011ad0e9SJohannes Berg ), 1061011ad0e9SJohannes Berg 1062011ad0e9SJohannes Berg TP_fast_assign( 1063011ad0e9SJohannes Berg LOCAL_ASSIGN; 1064011ad0e9SJohannes Berg VIF_ASSIGN; 1065011ad0e9SJohannes Berg __entry->tsf = tsf; 1066011ad0e9SJohannes Berg ), 1067011ad0e9SJohannes Berg 1068011ad0e9SJohannes Berg TP_printk( 1069011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " tsf:%llu", 1070011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf 1071011ad0e9SJohannes Berg ) 1072354d381bSPedersen, Thomas ); 1073354d381bSPedersen, Thomas 1074354d381bSPedersen, Thomas TRACE_EVENT(drv_offset_tsf, 1075354d381bSPedersen, Thomas TP_PROTO(struct ieee80211_local *local, 1076354d381bSPedersen, Thomas struct ieee80211_sub_if_data *sdata, 1077354d381bSPedersen, Thomas s64 offset), 1078354d381bSPedersen, Thomas 1079354d381bSPedersen, Thomas TP_ARGS(local, sdata, offset), 1080354d381bSPedersen, Thomas 1081354d381bSPedersen, Thomas TP_STRUCT__entry( 1082354d381bSPedersen, Thomas LOCAL_ENTRY 1083354d381bSPedersen, Thomas VIF_ENTRY 1084354d381bSPedersen, Thomas __field(s64, tsf_offset) 1085354d381bSPedersen, Thomas ), 1086354d381bSPedersen, Thomas 1087354d381bSPedersen, Thomas TP_fast_assign( 1088354d381bSPedersen, Thomas LOCAL_ASSIGN; 1089354d381bSPedersen, Thomas VIF_ASSIGN; 1090354d381bSPedersen, Thomas __entry->tsf_offset = offset; 1091354d381bSPedersen, Thomas ), 1092354d381bSPedersen, Thomas 1093354d381bSPedersen, Thomas TP_printk( 1094354d381bSPedersen, Thomas LOCAL_PR_FMT VIF_PR_FMT " tsf offset:%lld", 1095354d381bSPedersen, Thomas LOCAL_PR_ARG, VIF_PR_ARG, 1096354d381bSPedersen, Thomas (unsigned long long)__entry->tsf_offset 1097354d381bSPedersen, Thomas ) 1098011ad0e9SJohannes Berg ); 1099011ad0e9SJohannes Berg 1100011ad0e9SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_reset_tsf, 1101011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1102011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 1103011ad0e9SJohannes Berg TP_ARGS(local, sdata) 1104011ad0e9SJohannes Berg ); 1105011ad0e9SJohannes Berg 1106011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_tx_last_beacon, 1107011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 1108011ad0e9SJohannes Berg TP_ARGS(local) 1109011ad0e9SJohannes Berg ); 1110011ad0e9SJohannes Berg 1111011ad0e9SJohannes Berg TRACE_EVENT(drv_ampdu_action, 111250ea05efSSara Sharon TP_PROTO(struct ieee80211_local *local, 1113011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 111450ea05efSSara Sharon struct ieee80211_ampdu_params *params), 1115011ad0e9SJohannes Berg 1116011ad0e9SJohannes Berg TP_ARGS(local, sdata, params), 1117011ad0e9SJohannes Berg 1118011ad0e9SJohannes Berg TP_STRUCT__entry( 111950ea05efSSara Sharon LOCAL_ENTRY 1120011ad0e9SJohannes Berg VIF_ENTRY 1121011ad0e9SJohannes Berg AMPDU_ACTION_ENTRY 1122011ad0e9SJohannes Berg ), 1123011ad0e9SJohannes Berg 1124011ad0e9SJohannes Berg TP_fast_assign( 112550ea05efSSara Sharon LOCAL_ASSIGN; 1126011ad0e9SJohannes Berg VIF_ASSIGN; 1127011ad0e9SJohannes Berg AMPDU_ACTION_ASSIGN; 1128011ad0e9SJohannes Berg ), 112950ea05efSSara Sharon 113050ea05efSSara Sharon TP_printk( 1131011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT AMPDU_ACTION_PR_FMT, 1132011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, AMPDU_ACTION_PR_ARG 1133011ad0e9SJohannes Berg ) 1134011ad0e9SJohannes Berg ); 1135140d905bSJohannes Berg 1136011ad0e9SJohannes Berg TRACE_EVENT(drv_get_survey, 1137011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, int _idx, 1138140d905bSJohannes Berg struct survey_info *survey), 1139011ad0e9SJohannes Berg 1140011ad0e9SJohannes Berg TP_ARGS(local, _idx, survey), 1141011ad0e9SJohannes Berg 1142011ad0e9SJohannes Berg TP_STRUCT__entry( 1143011ad0e9SJohannes Berg LOCAL_ENTRY 1144011ad0e9SJohannes Berg __field(int, idx) 1145011ad0e9SJohannes Berg ), 1146011ad0e9SJohannes Berg 1147140d905bSJohannes Berg TP_fast_assign( 1148011ad0e9SJohannes Berg LOCAL_ASSIGN; 1149011ad0e9SJohannes Berg __entry->idx = _idx; 1150011ad0e9SJohannes Berg ), 1151011ad0e9SJohannes Berg 1152011ad0e9SJohannes Berg TP_printk( 1153011ad0e9SJohannes Berg LOCAL_PR_FMT " idx:%d", 1154011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->idx 1155011ad0e9SJohannes Berg ) 1156011ad0e9SJohannes Berg ); 115739ecc01dSJohannes Berg 115839ecc01dSJohannes Berg TRACE_EVENT(drv_flush, 1159011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 116039ecc01dSJohannes Berg u32 queues, bool drop), 1161011ad0e9SJohannes Berg 1162011ad0e9SJohannes Berg TP_ARGS(local, queues, drop), 1163011ad0e9SJohannes Berg 1164011ad0e9SJohannes Berg TP_STRUCT__entry( 116539ecc01dSJohannes Berg LOCAL_ENTRY 1166011ad0e9SJohannes Berg __field(bool, drop) 1167011ad0e9SJohannes Berg __field(u32, queues) 1168011ad0e9SJohannes Berg ), 1169011ad0e9SJohannes Berg 1170011ad0e9SJohannes Berg TP_fast_assign( 117139ecc01dSJohannes Berg LOCAL_ASSIGN; 1172011ad0e9SJohannes Berg __entry->drop = drop; 1173011ad0e9SJohannes Berg __entry->queues = queues; 1174011ad0e9SJohannes Berg ), 117539ecc01dSJohannes Berg 117639ecc01dSJohannes Berg TP_printk( 1177011ad0e9SJohannes Berg LOCAL_PR_FMT " queues:0x%x drop:%d", 1178011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->queues, __entry->drop 1179011ad0e9SJohannes Berg ) 1180d00800a2SJohannes Berg ); 1181d00800a2SJohannes Berg 1182d00800a2SJohannes Berg DEFINE_EVENT(sta_event, drv_flush_sta, 1183d00800a2SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1184d00800a2SJohannes Berg struct ieee80211_sub_if_data *sdata, 1185d00800a2SJohannes Berg struct ieee80211_sta *sta), 1186d00800a2SJohannes Berg TP_ARGS(local, sdata, sta) 1187011ad0e9SJohannes Berg ); 1188011ad0e9SJohannes Berg 11890f791eb4SLuciano Coelho TRACE_EVENT(drv_channel_switch, 1190011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1191011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 11920f791eb4SLuciano Coelho struct ieee80211_channel_switch *ch_switch), 1193011ad0e9SJohannes Berg 1194011ad0e9SJohannes Berg TP_ARGS(local, sdata, ch_switch), 1195011ad0e9SJohannes Berg 11960f791eb4SLuciano Coelho TP_STRUCT__entry( 119785220d71SJohannes Berg LOCAL_ENTRY 1198011ad0e9SJohannes Berg VIF_ENTRY 11992ba45384SLuciano Coelho CHANDEF_ENTRY 1200011ad0e9SJohannes Berg __field(u64, timestamp) 1201011ad0e9SJohannes Berg __field(u32, device_timestamp) 1202011ad0e9SJohannes Berg __field(bool, block_tx) 1203011ad0e9SJohannes Berg __field(u8, count) 1204011ad0e9SJohannes Berg ), 1205011ad0e9SJohannes Berg 12060f791eb4SLuciano Coelho TP_fast_assign( 120785220d71SJohannes Berg LOCAL_ASSIGN; 1208011ad0e9SJohannes Berg VIF_ASSIGN; 12092ba45384SLuciano Coelho CHANDEF_ASSIGN(&ch_switch->chandef) 1210011ad0e9SJohannes Berg __entry->timestamp = ch_switch->timestamp; 1211011ad0e9SJohannes Berg __entry->device_timestamp = ch_switch->device_timestamp; 1212011ad0e9SJohannes Berg __entry->block_tx = ch_switch->block_tx; 1213011ad0e9SJohannes Berg __entry->count = ch_switch->count; 1214011ad0e9SJohannes Berg ), 12150f791eb4SLuciano Coelho 12160f791eb4SLuciano Coelho TP_printk( 1217011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " new " CHANDEF_PR_FMT " count:%d", 1218011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count 1219011ad0e9SJohannes Berg ) 1220011ad0e9SJohannes Berg ); 1221011ad0e9SJohannes Berg 1222011ad0e9SJohannes Berg TRACE_EVENT(drv_set_antenna, 1223011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), 1224011ad0e9SJohannes Berg 1225011ad0e9SJohannes Berg TP_ARGS(local, tx_ant, rx_ant, ret), 1226011ad0e9SJohannes Berg 1227011ad0e9SJohannes Berg TP_STRUCT__entry( 1228011ad0e9SJohannes Berg LOCAL_ENTRY 1229011ad0e9SJohannes Berg __field(u32, tx_ant) 1230011ad0e9SJohannes Berg __field(u32, rx_ant) 1231011ad0e9SJohannes Berg __field(int, ret) 1232011ad0e9SJohannes Berg ), 1233011ad0e9SJohannes Berg 1234011ad0e9SJohannes Berg TP_fast_assign( 1235011ad0e9SJohannes Berg LOCAL_ASSIGN; 1236011ad0e9SJohannes Berg __entry->tx_ant = tx_ant; 1237011ad0e9SJohannes Berg __entry->rx_ant = rx_ant; 1238011ad0e9SJohannes Berg __entry->ret = ret; 1239011ad0e9SJohannes Berg ), 1240011ad0e9SJohannes Berg 1241011ad0e9SJohannes Berg TP_printk( 1242011ad0e9SJohannes Berg LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d", 1243011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret 1244011ad0e9SJohannes Berg ) 1245011ad0e9SJohannes Berg ); 1246011ad0e9SJohannes Berg 1247011ad0e9SJohannes Berg TRACE_EVENT(drv_get_antenna, 1248011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), 1249011ad0e9SJohannes Berg 1250011ad0e9SJohannes Berg TP_ARGS(local, tx_ant, rx_ant, ret), 1251011ad0e9SJohannes Berg 1252011ad0e9SJohannes Berg TP_STRUCT__entry( 1253011ad0e9SJohannes Berg LOCAL_ENTRY 1254011ad0e9SJohannes Berg __field(u32, tx_ant) 1255011ad0e9SJohannes Berg __field(u32, rx_ant) 1256011ad0e9SJohannes Berg __field(int, ret) 1257011ad0e9SJohannes Berg ), 1258011ad0e9SJohannes Berg 1259011ad0e9SJohannes Berg TP_fast_assign( 1260011ad0e9SJohannes Berg LOCAL_ASSIGN; 1261011ad0e9SJohannes Berg __entry->tx_ant = tx_ant; 1262011ad0e9SJohannes Berg __entry->rx_ant = rx_ant; 1263011ad0e9SJohannes Berg __entry->ret = ret; 1264011ad0e9SJohannes Berg ), 1265011ad0e9SJohannes Berg 1266011ad0e9SJohannes Berg TP_printk( 1267011ad0e9SJohannes Berg LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d", 1268011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret 1269011ad0e9SJohannes Berg ) 1270011ad0e9SJohannes Berg ); 127149884568SEliad Peller 127249884568SEliad Peller TRACE_EVENT(drv_remain_on_channel, 127349884568SEliad Peller TP_PROTO(struct ieee80211_local *local, 1274d339d5caSIlan Peer struct ieee80211_sub_if_data *sdata, 1275d339d5caSIlan Peer struct ieee80211_channel *chan, 1276011ad0e9SJohannes Berg unsigned int duration, 1277d339d5caSIlan Peer enum ieee80211_roc_type type), 1278011ad0e9SJohannes Berg 1279011ad0e9SJohannes Berg TP_ARGS(local, sdata, chan, duration, type), 1280011ad0e9SJohannes Berg 128149884568SEliad Peller TP_STRUCT__entry( 1282011ad0e9SJohannes Berg LOCAL_ENTRY 1283b6011960SThomas Pedersen VIF_ENTRY 1284011ad0e9SJohannes Berg __field(int, center_freq) 1285d339d5caSIlan Peer __field(int, freq_offset) 1286011ad0e9SJohannes Berg __field(unsigned int, duration) 1287011ad0e9SJohannes Berg __field(u32, type) 1288011ad0e9SJohannes Berg ), 1289011ad0e9SJohannes Berg 129049884568SEliad Peller TP_fast_assign( 1291011ad0e9SJohannes Berg LOCAL_ASSIGN; 1292b6011960SThomas Pedersen VIF_ASSIGN; 1293011ad0e9SJohannes Berg __entry->center_freq = chan->center_freq; 1294d339d5caSIlan Peer __entry->freq_offset = chan->freq_offset; 1295011ad0e9SJohannes Berg __entry->duration = duration; 1296011ad0e9SJohannes Berg __entry->type = type; 1297011ad0e9SJohannes Berg ), 1298b6011960SThomas Pedersen 129949884568SEliad Peller TP_printk( 1300b6011960SThomas Pedersen LOCAL_PR_FMT VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d", 1301b6011960SThomas Pedersen LOCAL_PR_ARG, VIF_PR_ARG, 1302011ad0e9SJohannes Berg __entry->center_freq, __entry->freq_offset, 1303011ad0e9SJohannes Berg __entry->duration, __entry->type 1304011ad0e9SJohannes Berg ) 13055db4c4b9SEmmanuel Grumbach ); 13065db4c4b9SEmmanuel Grumbach 13075db4c4b9SEmmanuel Grumbach DEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel, 13085db4c4b9SEmmanuel Grumbach TP_PROTO(struct ieee80211_local *local, 1309011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata), 1310011ad0e9SJohannes Berg TP_ARGS(local, sdata) 1311011ad0e9SJohannes Berg ); 1312011ad0e9SJohannes Berg 1313011ad0e9SJohannes Berg TRACE_EVENT(drv_set_ringparam, 1314011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx), 1315011ad0e9SJohannes Berg 1316011ad0e9SJohannes Berg TP_ARGS(local, tx, rx), 1317011ad0e9SJohannes Berg 1318011ad0e9SJohannes Berg TP_STRUCT__entry( 1319011ad0e9SJohannes Berg LOCAL_ENTRY 1320011ad0e9SJohannes Berg __field(u32, tx) 1321011ad0e9SJohannes Berg __field(u32, rx) 1322011ad0e9SJohannes Berg ), 1323011ad0e9SJohannes Berg 1324011ad0e9SJohannes Berg TP_fast_assign( 1325011ad0e9SJohannes Berg LOCAL_ASSIGN; 1326011ad0e9SJohannes Berg __entry->tx = tx; 1327011ad0e9SJohannes Berg __entry->rx = rx; 1328011ad0e9SJohannes Berg ), 1329011ad0e9SJohannes Berg 1330011ad0e9SJohannes Berg TP_printk( 1331011ad0e9SJohannes Berg LOCAL_PR_FMT " tx:%d rx %d", 1332011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->tx, __entry->rx 1333011ad0e9SJohannes Berg ) 1334011ad0e9SJohannes Berg ); 1335011ad0e9SJohannes Berg 1336011ad0e9SJohannes Berg TRACE_EVENT(drv_get_ringparam, 1337011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max, 1338011ad0e9SJohannes Berg u32 *rx, u32 *rx_max), 1339011ad0e9SJohannes Berg 1340011ad0e9SJohannes Berg TP_ARGS(local, tx, tx_max, rx, rx_max), 1341011ad0e9SJohannes Berg 1342011ad0e9SJohannes Berg TP_STRUCT__entry( 1343011ad0e9SJohannes Berg LOCAL_ENTRY 1344011ad0e9SJohannes Berg __field(u32, tx) 1345011ad0e9SJohannes Berg __field(u32, tx_max) 1346011ad0e9SJohannes Berg __field(u32, rx) 1347011ad0e9SJohannes Berg __field(u32, rx_max) 1348011ad0e9SJohannes Berg ), 1349011ad0e9SJohannes Berg 1350011ad0e9SJohannes Berg TP_fast_assign( 1351011ad0e9SJohannes Berg LOCAL_ASSIGN; 1352011ad0e9SJohannes Berg __entry->tx = *tx; 1353011ad0e9SJohannes Berg __entry->tx_max = *tx_max; 1354011ad0e9SJohannes Berg __entry->rx = *rx; 1355011ad0e9SJohannes Berg __entry->rx_max = *rx_max; 1356011ad0e9SJohannes Berg ), 1357011ad0e9SJohannes Berg 1358011ad0e9SJohannes Berg TP_printk( 1359011ad0e9SJohannes Berg LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d", 1360011ad0e9SJohannes Berg LOCAL_PR_ARG, 1361011ad0e9SJohannes Berg __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max 1362011ad0e9SJohannes Berg ) 1363011ad0e9SJohannes Berg ); 1364011ad0e9SJohannes Berg 1365011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_tx_frames_pending, 1366011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 1367011ad0e9SJohannes Berg TP_ARGS(local) 1368011ad0e9SJohannes Berg ); 1369011ad0e9SJohannes Berg 1370011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, 1371011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 1372011ad0e9SJohannes Berg TP_ARGS(local) 1373011ad0e9SJohannes Berg ); 1374011ad0e9SJohannes Berg 1375011ad0e9SJohannes Berg TRACE_EVENT(drv_set_bitrate_mask, 1376011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1377011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 1378011ad0e9SJohannes Berg const struct cfg80211_bitrate_mask *mask), 1379011ad0e9SJohannes Berg 1380011ad0e9SJohannes Berg TP_ARGS(local, sdata, mask), 1381011ad0e9SJohannes Berg 1382011ad0e9SJohannes Berg TP_STRUCT__entry( 1383011ad0e9SJohannes Berg LOCAL_ENTRY 1384011ad0e9SJohannes Berg VIF_ENTRY 1385011ad0e9SJohannes Berg __field(u32, legacy_2g) 1386011ad0e9SJohannes Berg __field(u32, legacy_5g) 1387011ad0e9SJohannes Berg ), 1388011ad0e9SJohannes Berg 1389011ad0e9SJohannes Berg TP_fast_assign( 139057fbcce3SJohannes Berg LOCAL_ASSIGN; 139157fbcce3SJohannes Berg VIF_ASSIGN; 1392011ad0e9SJohannes Berg __entry->legacy_2g = mask->control[NL80211_BAND_2GHZ].legacy; 1393011ad0e9SJohannes Berg __entry->legacy_5g = mask->control[NL80211_BAND_5GHZ].legacy; 1394011ad0e9SJohannes Berg ), 1395011ad0e9SJohannes Berg 1396011ad0e9SJohannes Berg TP_printk( 1397011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x", 1398011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g 1399011ad0e9SJohannes Berg ) 1400011ad0e9SJohannes Berg ); 1401011ad0e9SJohannes Berg 1402011ad0e9SJohannes Berg TRACE_EVENT(drv_set_rekey_data, 1403011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1404011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 1405011ad0e9SJohannes Berg struct cfg80211_gtk_rekey_data *data), 1406011ad0e9SJohannes Berg 1407011ad0e9SJohannes Berg TP_ARGS(local, sdata, data), 1408011ad0e9SJohannes Berg 1409011ad0e9SJohannes Berg TP_STRUCT__entry( 1410011ad0e9SJohannes Berg LOCAL_ENTRY 1411011ad0e9SJohannes Berg VIF_ENTRY 1412011ad0e9SJohannes Berg __array(u8, kek, NL80211_KEK_LEN) 1413011ad0e9SJohannes Berg __array(u8, kck, NL80211_KCK_LEN) 1414011ad0e9SJohannes Berg __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) 1415011ad0e9SJohannes Berg ), 1416011ad0e9SJohannes Berg 1417011ad0e9SJohannes Berg TP_fast_assign( 1418011ad0e9SJohannes Berg LOCAL_ASSIGN; 1419011ad0e9SJohannes Berg VIF_ASSIGN; 1420011ad0e9SJohannes Berg memcpy(__entry->kek, data->kek, NL80211_KEK_LEN); 1421011ad0e9SJohannes Berg memcpy(__entry->kck, data->kck, NL80211_KCK_LEN); 1422011ad0e9SJohannes Berg memcpy(__entry->replay_ctr, data->replay_ctr, 1423011ad0e9SJohannes Berg NL80211_REPLAY_CTR_LEN); 1424011ad0e9SJohannes Berg ), 1425011ad0e9SJohannes Berg 1426011ad0e9SJohannes Berg TP_printk(LOCAL_PR_FMT VIF_PR_FMT, 1427011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG) 1428a8182929SEmmanuel Grumbach ); 1429011ad0e9SJohannes Berg 1430887da917SEmmanuel Grumbach TRACE_EVENT(drv_event_callback, 1431a8182929SEmmanuel Grumbach TP_PROTO(struct ieee80211_local *local, 1432011ad0e9SJohannes Berg struct ieee80211_sub_if_data *sdata, 1433a8182929SEmmanuel Grumbach const struct ieee80211_event *_event), 1434011ad0e9SJohannes Berg 1435011ad0e9SJohannes Berg TP_ARGS(local, sdata, _event), 1436011ad0e9SJohannes Berg 1437887da917SEmmanuel Grumbach TP_STRUCT__entry( 1438a8182929SEmmanuel Grumbach LOCAL_ENTRY 1439011ad0e9SJohannes Berg VIF_ENTRY 1440011ad0e9SJohannes Berg __field(u32, type) 1441011ad0e9SJohannes Berg ), 1442011ad0e9SJohannes Berg 1443887da917SEmmanuel Grumbach TP_fast_assign( 1444a8182929SEmmanuel Grumbach LOCAL_ASSIGN; 1445011ad0e9SJohannes Berg VIF_ASSIGN; 1446011ad0e9SJohannes Berg __entry->type = _event->type; 1447011ad0e9SJohannes Berg ), 1448a8182929SEmmanuel Grumbach 1449a8182929SEmmanuel Grumbach TP_printk( 1450011ad0e9SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " event:%d", 1451011ad0e9SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->type 1452011ad0e9SJohannes Berg ) 1453011ad0e9SJohannes Berg ); 1454011ad0e9SJohannes Berg 1455011ad0e9SJohannes Berg DECLARE_EVENT_CLASS(release_evt, 1456011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1457011ad0e9SJohannes Berg struct ieee80211_sta *sta, 1458011ad0e9SJohannes Berg u16 tids, int num_frames, 1459011ad0e9SJohannes Berg enum ieee80211_frame_release_type reason, 1460011ad0e9SJohannes Berg bool more_data), 1461011ad0e9SJohannes Berg 1462011ad0e9SJohannes Berg TP_ARGS(local, sta, tids, num_frames, reason, more_data), 1463011ad0e9SJohannes Berg 1464011ad0e9SJohannes Berg TP_STRUCT__entry( 1465011ad0e9SJohannes Berg LOCAL_ENTRY 1466011ad0e9SJohannes Berg STA_ENTRY 1467011ad0e9SJohannes Berg __field(u16, tids) 1468011ad0e9SJohannes Berg __field(int, num_frames) 1469011ad0e9SJohannes Berg __field(int, reason) 1470011ad0e9SJohannes Berg __field(bool, more_data) 1471011ad0e9SJohannes Berg ), 1472011ad0e9SJohannes Berg 1473011ad0e9SJohannes Berg TP_fast_assign( 1474011ad0e9SJohannes Berg LOCAL_ASSIGN; 1475011ad0e9SJohannes Berg STA_ASSIGN; 1476011ad0e9SJohannes Berg __entry->tids = tids; 1477011ad0e9SJohannes Berg __entry->num_frames = num_frames; 1478011ad0e9SJohannes Berg __entry->reason = reason; 1479011ad0e9SJohannes Berg __entry->more_data = more_data; 1480011ad0e9SJohannes Berg ), 1481011ad0e9SJohannes Berg 1482011ad0e9SJohannes Berg TP_printk( 1483011ad0e9SJohannes Berg LOCAL_PR_FMT STA_PR_FMT 1484011ad0e9SJohannes Berg " TIDs:0x%.4x frames:%d reason:%d more:%d", 1485011ad0e9SJohannes Berg LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames, 1486011ad0e9SJohannes Berg __entry->reason, __entry->more_data 1487011ad0e9SJohannes Berg ) 1488011ad0e9SJohannes Berg ); 1489011ad0e9SJohannes Berg 1490011ad0e9SJohannes Berg DEFINE_EVENT(release_evt, drv_release_buffered_frames, 1491011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1492011ad0e9SJohannes Berg struct ieee80211_sta *sta, 1493011ad0e9SJohannes Berg u16 tids, int num_frames, 1494011ad0e9SJohannes Berg enum ieee80211_frame_release_type reason, 1495011ad0e9SJohannes Berg bool more_data), 1496011ad0e9SJohannes Berg 1497011ad0e9SJohannes Berg TP_ARGS(local, sta, tids, num_frames, reason, more_data) 1498011ad0e9SJohannes Berg ); 1499011ad0e9SJohannes Berg 1500011ad0e9SJohannes Berg DEFINE_EVENT(release_evt, drv_allow_buffered_frames, 1501011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1502011ad0e9SJohannes Berg struct ieee80211_sta *sta, 1503011ad0e9SJohannes Berg u16 tids, int num_frames, 1504011ad0e9SJohannes Berg enum ieee80211_frame_release_type reason, 1505011ad0e9SJohannes Berg bool more_data), 1506011ad0e9SJohannes Berg 1507011ad0e9SJohannes Berg TP_ARGS(local, sta, tids, num_frames, reason, more_data) 150815fae341SJohannes Berg ); 1509a1845fc7SJohannes Berg 1510d4e36e55SIlan Peer DECLARE_EVENT_CLASS(mgd_prepare_complete_tx_evt, 151115fae341SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1512a1845fc7SJohannes Berg struct ieee80211_sub_if_data *sdata, 151315fae341SJohannes Berg u16 duration, u16 subtype, bool success), 1514d4e36e55SIlan Peer 1515d4e36e55SIlan Peer TP_ARGS(local, sdata, duration, subtype, success), 1516d4e36e55SIlan Peer 1517d4e36e55SIlan Peer TP_STRUCT__entry( 1518d4e36e55SIlan Peer LOCAL_ENTRY 151915fae341SJohannes Berg VIF_ENTRY 152015fae341SJohannes Berg __field(u32, duration) 1521d4e36e55SIlan Peer __field(u16, subtype) 1522d4e36e55SIlan Peer __field(u8, success) 1523d4e36e55SIlan Peer ), 1524d4e36e55SIlan Peer 1525d4e36e55SIlan Peer TP_fast_assign( 1526d4e36e55SIlan Peer LOCAL_ASSIGN; 152715fae341SJohannes Berg VIF_ASSIGN; 152815fae341SJohannes Berg __entry->duration = duration; 1529d4e36e55SIlan Peer __entry->subtype = subtype; 1530d4e36e55SIlan Peer __entry->success = success; 1531d4e36e55SIlan Peer ), 153215fae341SJohannes Berg 153315fae341SJohannes Berg TP_printk( 153415fae341SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " duration: %u, subtype:0x%x, success:%d", 1535d4e36e55SIlan Peer LOCAL_PR_ARG, VIF_PR_ARG, __entry->duration, 1536a1845fc7SJohannes Berg __entry->subtype, __entry->success 1537a1845fc7SJohannes Berg ) 153815fae341SJohannes Berg ); 153915fae341SJohannes Berg 154015fae341SJohannes Berg DEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_prepare_tx, 154115fae341SJohannes Berg TP_PROTO(struct ieee80211_local *local, 154215fae341SJohannes Berg struct ieee80211_sub_if_data *sdata, 154315fae341SJohannes Berg u16 duration, u16 subtype, bool success), 154415fae341SJohannes Berg 154515fae341SJohannes Berg TP_ARGS(local, sdata, duration, subtype, success) 154615fae341SJohannes Berg ); 154715fae341SJohannes Berg 154815fae341SJohannes Berg DEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_complete_tx, 154915fae341SJohannes Berg TP_PROTO(struct ieee80211_local *local, 155015fae341SJohannes Berg struct ieee80211_sub_if_data *sdata, 155115fae341SJohannes Berg u16 duration, u16 subtype, bool success), 155215fae341SJohannes Berg 155315fae341SJohannes Berg TP_ARGS(local, sdata, duration, subtype, success) 1554ee10f2c7SArik Nemtsov ); 1555ee10f2c7SArik Nemtsov 1556ee10f2c7SArik Nemtsov DEFINE_EVENT(local_sdata_evt, drv_mgd_protect_tdls_discover, 1557ee10f2c7SArik Nemtsov TP_PROTO(struct ieee80211_local *local, 1558ee10f2c7SArik Nemtsov struct ieee80211_sub_if_data *sdata), 1559ee10f2c7SArik Nemtsov 1560ee10f2c7SArik Nemtsov TP_ARGS(local, sdata) 1561c3645eacSMichal Kazior ); 1562c3645eacSMichal Kazior 1563c3645eacSMichal Kazior DECLARE_EVENT_CLASS(local_chanctx, 1564c3645eacSMichal Kazior TP_PROTO(struct ieee80211_local *local, 1565c3645eacSMichal Kazior struct ieee80211_chanctx *ctx), 1566c3645eacSMichal Kazior 1567c3645eacSMichal Kazior TP_ARGS(local, ctx), 1568c3645eacSMichal Kazior 1569c3645eacSMichal Kazior TP_STRUCT__entry( 1570c3645eacSMichal Kazior LOCAL_ENTRY 1571c3645eacSMichal Kazior CHANCTX_ENTRY 1572c3645eacSMichal Kazior ), 1573c3645eacSMichal Kazior 1574c3645eacSMichal Kazior TP_fast_assign( 1575c3645eacSMichal Kazior LOCAL_ASSIGN; 1576c3645eacSMichal Kazior CHANCTX_ASSIGN; 1577c3645eacSMichal Kazior ), 1578c3645eacSMichal Kazior 1579c3645eacSMichal Kazior TP_printk( 1580c3645eacSMichal Kazior LOCAL_PR_FMT CHANCTX_PR_FMT, 1581c3645eacSMichal Kazior LOCAL_PR_ARG, CHANCTX_PR_ARG 1582c3645eacSMichal Kazior ) 1583c3645eacSMichal Kazior ); 1584c3645eacSMichal Kazior 1585c3645eacSMichal Kazior DEFINE_EVENT(local_chanctx, drv_add_chanctx, 1586c3645eacSMichal Kazior TP_PROTO(struct ieee80211_local *local, 1587c3645eacSMichal Kazior struct ieee80211_chanctx *ctx), 1588c3645eacSMichal Kazior TP_ARGS(local, ctx) 1589c3645eacSMichal Kazior ); 1590c3645eacSMichal Kazior 1591c3645eacSMichal Kazior DEFINE_EVENT(local_chanctx, drv_remove_chanctx, 1592c3645eacSMichal Kazior TP_PROTO(struct ieee80211_local *local, 1593c3645eacSMichal Kazior struct ieee80211_chanctx *ctx), 1594c3645eacSMichal Kazior TP_ARGS(local, ctx) 1595c3645eacSMichal Kazior ); 1596c3645eacSMichal Kazior 1597c3645eacSMichal Kazior TRACE_EVENT(drv_change_chanctx, 1598c3645eacSMichal Kazior TP_PROTO(struct ieee80211_local *local, 1599c3645eacSMichal Kazior struct ieee80211_chanctx *ctx, 1600c3645eacSMichal Kazior u32 changed), 1601c3645eacSMichal Kazior 1602c3645eacSMichal Kazior TP_ARGS(local, ctx, changed), 1603c3645eacSMichal Kazior 1604c3645eacSMichal Kazior TP_STRUCT__entry( 1605c3645eacSMichal Kazior LOCAL_ENTRY 1606c3645eacSMichal Kazior CHANCTX_ENTRY 1607c3645eacSMichal Kazior __field(u32, changed) 1608c3645eacSMichal Kazior ), 1609c3645eacSMichal Kazior 1610c3645eacSMichal Kazior TP_fast_assign( 1611c3645eacSMichal Kazior LOCAL_ASSIGN; 1612c3645eacSMichal Kazior CHANCTX_ASSIGN; 1613c3645eacSMichal Kazior __entry->changed = changed; 1614c3645eacSMichal Kazior ), 1615c3645eacSMichal Kazior 1616c3645eacSMichal Kazior TP_printk( 1617c3645eacSMichal Kazior LOCAL_PR_FMT CHANCTX_PR_FMT " changed:%#x", 1618c3645eacSMichal Kazior LOCAL_PR_ARG, CHANCTX_PR_ARG, __entry->changed 1619c3645eacSMichal Kazior ) 16201a5f0c13SLuciano Coelho ); 16211a5f0c13SLuciano Coelho 16221a5f0c13SLuciano Coelho #if !defined(__TRACE_VIF_ENTRY) 16231a5f0c13SLuciano Coelho #define __TRACE_VIF_ENTRY 16241a5f0c13SLuciano Coelho struct trace_vif_entry { 16251a5f0c13SLuciano Coelho enum nl80211_iftype vif_type; 16261a5f0c13SLuciano Coelho bool p2p; 16271a5f0c13SLuciano Coelho char vif_name[IFNAMSIZ]; 16281a5f0c13SLuciano Coelho } __packed; 16291a5f0c13SLuciano Coelho 1630b6011960SThomas Pedersen struct trace_chandef_entry { 16311a5f0c13SLuciano Coelho u32 control_freq; 16321a5f0c13SLuciano Coelho u32 freq_offset; 1633b6011960SThomas Pedersen u32 chan_width; 16341a5f0c13SLuciano Coelho u32 center_freq1; 16351a5f0c13SLuciano Coelho u32 freq1_offset; 16361a5f0c13SLuciano Coelho u32 center_freq2; 16371a5f0c13SLuciano Coelho } __packed; 16381a5f0c13SLuciano Coelho 1639b4f85443SJohannes Berg struct trace_switch_entry { 16401a5f0c13SLuciano Coelho struct trace_vif_entry vif; 16411a5f0c13SLuciano Coelho unsigned int link_id; 16421a5f0c13SLuciano Coelho struct trace_chandef_entry old_chandef; 16431a5f0c13SLuciano Coelho struct trace_chandef_entry new_chandef; 16441a5f0c13SLuciano Coelho } __packed; 16451a5f0c13SLuciano Coelho 16461a5f0c13SLuciano Coelho #define SWITCH_ENTRY_ASSIGN(to, from) local_vifs[i].to = vifs[i].from 16471a5f0c13SLuciano Coelho #endif 16481a5f0c13SLuciano Coelho 16491a5f0c13SLuciano Coelho TRACE_EVENT(drv_switch_vif_chanctx, 16501a5f0c13SLuciano Coelho TP_PROTO(struct ieee80211_local *local, 16511a5f0c13SLuciano Coelho struct ieee80211_vif_chanctx_switch *vifs, 16521a5f0c13SLuciano Coelho int n_vifs, enum ieee80211_chanctx_switch_mode mode), 16531a5f0c13SLuciano Coelho TP_ARGS(local, vifs, n_vifs, mode), 16541a5f0c13SLuciano Coelho 16551a5f0c13SLuciano Coelho TP_STRUCT__entry( 16561a5f0c13SLuciano Coelho LOCAL_ENTRY 16571a5f0c13SLuciano Coelho __field(int, n_vifs) 16581a5f0c13SLuciano Coelho __field(u32, mode) 16591a5f0c13SLuciano Coelho __dynamic_array(u8, vifs, 16601a5f0c13SLuciano Coelho sizeof(struct trace_switch_entry) * n_vifs) 16611a5f0c13SLuciano Coelho ), 16621a5f0c13SLuciano Coelho 16631a5f0c13SLuciano Coelho TP_fast_assign( 16641a5f0c13SLuciano Coelho LOCAL_ASSIGN; 16651a5f0c13SLuciano Coelho __entry->n_vifs = n_vifs; 16661a5f0c13SLuciano Coelho __entry->mode = mode; 16671a5f0c13SLuciano Coelho { 16681a5f0c13SLuciano Coelho struct trace_switch_entry *local_vifs = 16691a5f0c13SLuciano Coelho __get_dynamic_array(vifs); 16701a5f0c13SLuciano Coelho int i; 16711a5f0c13SLuciano Coelho 16721a5f0c13SLuciano Coelho for (i = 0; i < n_vifs; i++) { 16731a5f0c13SLuciano Coelho struct ieee80211_sub_if_data *sdata; 16741a5f0c13SLuciano Coelho 16751a5f0c13SLuciano Coelho sdata = container_of(vifs[i].vif, 16761a5f0c13SLuciano Coelho struct ieee80211_sub_if_data, 16771a5f0c13SLuciano Coelho vif); 16781a5f0c13SLuciano Coelho 1679727eff4dSGregory Greenman SWITCH_ENTRY_ASSIGN(vif.vif_type, vif->type); 16801a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(vif.p2p, vif->p2p); 16811a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(link_id, link_conf->link_id); 16821a5f0c13SLuciano Coelho strncpy(local_vifs[i].vif.vif_name, 16831a5f0c13SLuciano Coelho sdata->name, 16841a5f0c13SLuciano Coelho sizeof(local_vifs[i].vif.vif_name)); 1685b6011960SThomas Pedersen SWITCH_ENTRY_ASSIGN(old_chandef.control_freq, 1686b6011960SThomas Pedersen old_ctx->def.chan->center_freq); 16871a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset, 16881a5f0c13SLuciano Coelho old_ctx->def.chan->freq_offset); 16891a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(old_chandef.chan_width, 16901a5f0c13SLuciano Coelho old_ctx->def.width); 1691b6011960SThomas Pedersen SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1, 1692b6011960SThomas Pedersen old_ctx->def.center_freq1); 16931a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset, 16941a5f0c13SLuciano Coelho old_ctx->def.freq1_offset); 16951a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2, 16961a5f0c13SLuciano Coelho old_ctx->def.center_freq2); 1697b6011960SThomas Pedersen SWITCH_ENTRY_ASSIGN(new_chandef.control_freq, 1698b6011960SThomas Pedersen new_ctx->def.chan->center_freq); 16991a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset, 17001a5f0c13SLuciano Coelho new_ctx->def.chan->freq_offset); 17011a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(new_chandef.chan_width, 17021a5f0c13SLuciano Coelho new_ctx->def.width); 1703b6011960SThomas Pedersen SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1, 1704b6011960SThomas Pedersen new_ctx->def.center_freq1); 17051a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset, 17061a5f0c13SLuciano Coelho new_ctx->def.freq1_offset); 17071a5f0c13SLuciano Coelho SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2, 17081a5f0c13SLuciano Coelho new_ctx->def.center_freq2); 17091a5f0c13SLuciano Coelho } 17101a5f0c13SLuciano Coelho } 17111a5f0c13SLuciano Coelho ), 17121a5f0c13SLuciano Coelho 17131a5f0c13SLuciano Coelho TP_printk( 17141a5f0c13SLuciano Coelho LOCAL_PR_FMT " n_vifs:%d mode:%d", 17151a5f0c13SLuciano Coelho LOCAL_PR_ARG, __entry->n_vifs, __entry->mode 17161a5f0c13SLuciano Coelho ) 1717c3645eacSMichal Kazior ); 1718c3645eacSMichal Kazior 1719c3645eacSMichal Kazior DECLARE_EVENT_CLASS(local_sdata_chanctx, 1720727eff4dSGregory Greenman TP_PROTO(struct ieee80211_local *local, 1721c3645eacSMichal Kazior struct ieee80211_sub_if_data *sdata, 1722c3645eacSMichal Kazior struct ieee80211_bss_conf *link_conf, 1723727eff4dSGregory Greenman struct ieee80211_chanctx *ctx), 1724c3645eacSMichal Kazior 1725c3645eacSMichal Kazior TP_ARGS(local, sdata, link_conf, ctx), 1726c3645eacSMichal Kazior 1727c3645eacSMichal Kazior TP_STRUCT__entry( 1728c3645eacSMichal Kazior LOCAL_ENTRY 1729b4f85443SJohannes Berg VIF_ENTRY 1730c3645eacSMichal Kazior CHANCTX_ENTRY 1731c3645eacSMichal Kazior __field(unsigned int, link_id) 1732c3645eacSMichal Kazior ), 1733c3645eacSMichal Kazior 1734c3645eacSMichal Kazior TP_fast_assign( 1735c3645eacSMichal Kazior LOCAL_ASSIGN; 1736727eff4dSGregory Greenman VIF_ASSIGN; 1737c3645eacSMichal Kazior CHANCTX_ASSIGN; 1738c3645eacSMichal Kazior __entry->link_id = link_conf->link_id; 1739c3645eacSMichal Kazior ), 1740b4f85443SJohannes Berg 1741b4f85443SJohannes Berg TP_printk( 1742c3645eacSMichal Kazior LOCAL_PR_FMT VIF_PR_FMT " link_id:%d" CHANCTX_PR_FMT, 1743c3645eacSMichal Kazior LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, CHANCTX_PR_ARG 1744c3645eacSMichal Kazior ) 1745c3645eacSMichal Kazior ); 1746c3645eacSMichal Kazior 1747c3645eacSMichal Kazior DEFINE_EVENT(local_sdata_chanctx, drv_assign_vif_chanctx, 1748727eff4dSGregory Greenman TP_PROTO(struct ieee80211_local *local, 1749c3645eacSMichal Kazior struct ieee80211_sub_if_data *sdata, 1750727eff4dSGregory Greenman struct ieee80211_bss_conf *link_conf, 1751c3645eacSMichal Kazior struct ieee80211_chanctx *ctx), 1752c3645eacSMichal Kazior TP_ARGS(local, sdata, link_conf, ctx) 1753c3645eacSMichal Kazior ); 1754c3645eacSMichal Kazior 1755c3645eacSMichal Kazior DEFINE_EVENT(local_sdata_chanctx, drv_unassign_vif_chanctx, 1756727eff4dSGregory Greenman TP_PROTO(struct ieee80211_local *local, 1757c3645eacSMichal Kazior struct ieee80211_sub_if_data *sdata, 1758727eff4dSGregory Greenman struct ieee80211_bss_conf *link_conf, 1759c3645eacSMichal Kazior struct ieee80211_chanctx *ctx), 1760c3645eacSMichal Kazior TP_ARGS(local, sdata, link_conf, ctx) 17611041638fSJohannes Berg ); 17621041638fSJohannes Berg 17631041638fSJohannes Berg TRACE_EVENT(drv_start_ap, 1764b327c84cSGregory Greenman TP_PROTO(struct ieee80211_local *local, 17651041638fSJohannes Berg struct ieee80211_sub_if_data *sdata, 1766b327c84cSGregory Greenman struct ieee80211_bss_conf *link_conf), 17671041638fSJohannes Berg 17681041638fSJohannes Berg TP_ARGS(local, sdata, link_conf), 17691041638fSJohannes Berg 17701041638fSJohannes Berg TP_STRUCT__entry( 1771ae7ba17bSShaul Triebitz LOCAL_ENTRY 17721041638fSJohannes Berg VIF_ENTRY 17731041638fSJohannes Berg __field(u32, link_id) 1774f276e20bSJohannes Berg __field(u8, dtimper) 177504ae87a5SPeter Zijlstra __field(u16, bcnint) 17761041638fSJohannes Berg __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) 17771041638fSJohannes Berg __field(bool, hidden_ssid) 17781041638fSJohannes Berg ), 17791041638fSJohannes Berg 17801041638fSJohannes Berg TP_fast_assign( 1781b327c84cSGregory Greenman LOCAL_ASSIGN; 1782b327c84cSGregory Greenman VIF_ASSIGN; 1783b327c84cSGregory Greenman __entry->link_id = link_conf->link_id; 1784b327c84cSGregory Greenman __entry->dtimper = link_conf->dtim_period; 1785f276e20bSJohannes Berg __entry->bcnint = link_conf->beacon_int; 1786f276e20bSJohannes Berg __entry->hidden_ssid = link_conf->hidden_ssid; 1787f276e20bSJohannes Berg memcpy(__get_dynamic_array(ssid), 17881041638fSJohannes Berg sdata->vif.cfg.ssid, 17891041638fSJohannes Berg sdata->vif.cfg.ssid_len); 17901041638fSJohannes Berg ), 1791ae7ba17bSShaul Triebitz 1792ae7ba17bSShaul Triebitz TP_printk( 17931041638fSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " link id %u", 17941041638fSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id 17951041638fSJohannes Berg ) 1796ae7ba17bSShaul Triebitz ); 17971041638fSJohannes Berg 1798ae7ba17bSShaul Triebitz TRACE_EVENT(drv_stop_ap, 1799b327c84cSGregory Greenman TP_PROTO(struct ieee80211_local *local, 1800ae7ba17bSShaul Triebitz struct ieee80211_sub_if_data *sdata, 1801b327c84cSGregory Greenman struct ieee80211_bss_conf *link_conf), 1802ae7ba17bSShaul Triebitz 1803ae7ba17bSShaul Triebitz TP_ARGS(local, sdata, link_conf), 1804ae7ba17bSShaul Triebitz 1805ae7ba17bSShaul Triebitz TP_STRUCT__entry( 1806ae7ba17bSShaul Triebitz LOCAL_ENTRY 1807ae7ba17bSShaul Triebitz VIF_ENTRY 1808ae7ba17bSShaul Triebitz __field(u32, link_id) 1809ae7ba17bSShaul Triebitz ), 1810ae7ba17bSShaul Triebitz 1811ae7ba17bSShaul Triebitz TP_fast_assign( 1812b327c84cSGregory Greenman LOCAL_ASSIGN; 1813ae7ba17bSShaul Triebitz VIF_ASSIGN; 1814ae7ba17bSShaul Triebitz __entry->link_id = link_conf->link_id; 1815ae7ba17bSShaul Triebitz ), 1816ae7ba17bSShaul Triebitz 1817ae7ba17bSShaul Triebitz TP_printk( 1818ae7ba17bSShaul Triebitz LOCAL_PR_FMT VIF_PR_FMT " link id %u", 18191041638fSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id 18201041638fSJohannes Berg ) 1821cf2c92d8SEliad Peller ); 1822cf2c92d8SEliad Peller 1823cf2c92d8SEliad Peller TRACE_EVENT(drv_reconfig_complete, 1824cf2c92d8SEliad Peller TP_PROTO(struct ieee80211_local *local, 1825cf2c92d8SEliad Peller enum ieee80211_reconfig_type reconfig_type), 1826cf2c92d8SEliad Peller TP_ARGS(local, reconfig_type), 1827cf2c92d8SEliad Peller 1828cf2c92d8SEliad Peller TP_STRUCT__entry( 1829cf2c92d8SEliad Peller LOCAL_ENTRY 1830cf2c92d8SEliad Peller __field(u8, reconfig_type) 1831cf2c92d8SEliad Peller ), 1832cf2c92d8SEliad Peller 1833cf2c92d8SEliad Peller TP_fast_assign( 1834cf2c92d8SEliad Peller LOCAL_ASSIGN; 1835cf2c92d8SEliad Peller __entry->reconfig_type = reconfig_type; 1836cf2c92d8SEliad Peller ), 1837cf2c92d8SEliad Peller 1838cf2c92d8SEliad Peller TP_printk( 1839cf2c92d8SEliad Peller LOCAL_PR_FMT " reconfig_type:%d", 1840cf2c92d8SEliad Peller LOCAL_PR_ARG, __entry->reconfig_type 18419214ad7fSJohannes Berg ) 18429214ad7fSJohannes Berg 1843a65240c1SJohannes Berg ); 1844a65240c1SJohannes Berg 1845a65240c1SJohannes Berg #if IS_ENABLED(CONFIG_IPV6) 1846a65240c1SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_ipv6_addr_change, 1847a65240c1SJohannes Berg TP_PROTO(struct ieee80211_local *local, 1848a65240c1SJohannes Berg struct ieee80211_sub_if_data *sdata), 1849a65240c1SJohannes Berg TP_ARGS(local, sdata) 1850a65240c1SJohannes Berg ); 185155fff501SJohannes Berg #endif 185255fff501SJohannes Berg 185355fff501SJohannes Berg TRACE_EVENT(drv_join_ibss, 185455fff501SJohannes Berg TP_PROTO(struct ieee80211_local *local, 185555fff501SJohannes Berg struct ieee80211_sub_if_data *sdata, 185655fff501SJohannes Berg struct ieee80211_bss_conf *info), 185755fff501SJohannes Berg 185855fff501SJohannes Berg TP_ARGS(local, sdata, info), 185955fff501SJohannes Berg 186055fff501SJohannes Berg TP_STRUCT__entry( 186155fff501SJohannes Berg LOCAL_ENTRY 186255fff501SJohannes Berg VIF_ENTRY 1863f276e20bSJohannes Berg __field(u8, dtimper) 186455fff501SJohannes Berg __field(u16, bcnint) 186555fff501SJohannes Berg __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) 186655fff501SJohannes Berg ), 186755fff501SJohannes Berg 186855fff501SJohannes Berg TP_fast_assign( 186955fff501SJohannes Berg LOCAL_ASSIGN; 187055fff501SJohannes Berg VIF_ASSIGN; 1871f276e20bSJohannes Berg __entry->dtimper = info->dtim_period; 1872f276e20bSJohannes Berg __entry->bcnint = info->beacon_int; 1873f276e20bSJohannes Berg memcpy(__get_dynamic_array(ssid), 187455fff501SJohannes Berg sdata->vif.cfg.ssid, 187555fff501SJohannes Berg sdata->vif.cfg.ssid_len); 187655fff501SJohannes Berg ), 187755fff501SJohannes Berg 187855fff501SJohannes Berg TP_printk( 187955fff501SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT, 188055fff501SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG 188155fff501SJohannes Berg ) 188255fff501SJohannes Berg ); 188355fff501SJohannes Berg 188455fff501SJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_leave_ibss, 188555fff501SJohannes Berg TP_PROTO(struct ieee80211_local *local, 188655fff501SJohannes Berg struct ieee80211_sub_if_data *sdata), 188755fff501SJohannes Berg TP_ARGS(local, sdata) 1888cca674d4SAntonio Quartulli ); 1889cca674d4SAntonio Quartulli 1890cca674d4SAntonio Quartulli TRACE_EVENT(drv_get_expected_throughput, 1891cca674d4SAntonio Quartulli TP_PROTO(struct ieee80211_sta *sta), 1892cca674d4SAntonio Quartulli 1893cca674d4SAntonio Quartulli TP_ARGS(sta), 1894cca674d4SAntonio Quartulli 1895cca674d4SAntonio Quartulli TP_STRUCT__entry( 1896cca674d4SAntonio Quartulli STA_ENTRY 1897cca674d4SAntonio Quartulli ), 1898cca674d4SAntonio Quartulli 1899cca674d4SAntonio Quartulli TP_fast_assign( 1900cca674d4SAntonio Quartulli STA_ASSIGN; 1901cca674d4SAntonio Quartulli ), 1902cca674d4SAntonio Quartulli 1903cca674d4SAntonio Quartulli TP_printk( 1904cca674d4SAntonio Quartulli STA_PR_FMT, STA_PR_ARG 1905cca674d4SAntonio Quartulli ) 1906708d50edSAyala Beker ); 1907708d50edSAyala Beker 1908708d50edSAyala Beker TRACE_EVENT(drv_start_nan, 1909708d50edSAyala Beker TP_PROTO(struct ieee80211_local *local, 1910708d50edSAyala Beker struct ieee80211_sub_if_data *sdata, 1911708d50edSAyala Beker struct cfg80211_nan_conf *conf), 1912708d50edSAyala Beker 1913708d50edSAyala Beker TP_ARGS(local, sdata, conf), 1914708d50edSAyala Beker TP_STRUCT__entry( 1915708d50edSAyala Beker LOCAL_ENTRY 19168585989dSLuca Coelho VIF_ENTRY 1917708d50edSAyala Beker __field(u8, master_pref) 1918708d50edSAyala Beker __field(u8, bands) 1919708d50edSAyala Beker ), 1920708d50edSAyala Beker 1921708d50edSAyala Beker TP_fast_assign( 1922708d50edSAyala Beker LOCAL_ASSIGN; 19238585989dSLuca Coelho VIF_ASSIGN; 1924708d50edSAyala Beker __entry->master_pref = conf->master_pref; 1925708d50edSAyala Beker __entry->bands = conf->bands; 1926708d50edSAyala Beker ), 1927708d50edSAyala Beker 19288585989dSLuca Coelho TP_printk( 1929708d50edSAyala Beker LOCAL_PR_FMT VIF_PR_FMT 19308585989dSLuca Coelho ", master preference: %u, bands: 0x%0x", 1931708d50edSAyala Beker LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, 1932708d50edSAyala Beker __entry->bands 1933708d50edSAyala Beker ) 1934708d50edSAyala Beker ); 1935708d50edSAyala Beker 1936708d50edSAyala Beker TRACE_EVENT(drv_stop_nan, 1937708d50edSAyala Beker TP_PROTO(struct ieee80211_local *local, 1938708d50edSAyala Beker struct ieee80211_sub_if_data *sdata), 1939708d50edSAyala Beker 1940708d50edSAyala Beker TP_ARGS(local, sdata), 1941708d50edSAyala Beker 1942708d50edSAyala Beker TP_STRUCT__entry( 1943708d50edSAyala Beker LOCAL_ENTRY 1944708d50edSAyala Beker VIF_ENTRY 1945708d50edSAyala Beker ), 1946708d50edSAyala Beker 1947708d50edSAyala Beker TP_fast_assign( 1948708d50edSAyala Beker LOCAL_ASSIGN; 1949708d50edSAyala Beker VIF_ASSIGN; 1950708d50edSAyala Beker ), 1951708d50edSAyala Beker 1952708d50edSAyala Beker TP_printk( 1953708d50edSAyala Beker LOCAL_PR_FMT VIF_PR_FMT, 1954708d50edSAyala Beker LOCAL_PR_ARG, VIF_PR_ARG 1955708d50edSAyala Beker ) 19565953ff6dSAyala Beker ); 19575953ff6dSAyala Beker 19585953ff6dSAyala Beker TRACE_EVENT(drv_nan_change_conf, 19595953ff6dSAyala Beker TP_PROTO(struct ieee80211_local *local, 19605953ff6dSAyala Beker struct ieee80211_sub_if_data *sdata, 19615953ff6dSAyala Beker struct cfg80211_nan_conf *conf, 19625953ff6dSAyala Beker u32 changes), 19635953ff6dSAyala Beker 19645953ff6dSAyala Beker TP_ARGS(local, sdata, conf, changes), 19655953ff6dSAyala Beker TP_STRUCT__entry( 19665953ff6dSAyala Beker LOCAL_ENTRY 19678585989dSLuca Coelho VIF_ENTRY 19685953ff6dSAyala Beker __field(u8, master_pref) 19695953ff6dSAyala Beker __field(u8, bands) 19705953ff6dSAyala Beker __field(u32, changes) 19715953ff6dSAyala Beker ), 19725953ff6dSAyala Beker 19735953ff6dSAyala Beker TP_fast_assign( 19745953ff6dSAyala Beker LOCAL_ASSIGN; 19758585989dSLuca Coelho VIF_ASSIGN; 19765953ff6dSAyala Beker __entry->master_pref = conf->master_pref; 19775953ff6dSAyala Beker __entry->bands = conf->bands; 19785953ff6dSAyala Beker __entry->changes = changes; 19795953ff6dSAyala Beker ), 19805953ff6dSAyala Beker 19818585989dSLuca Coelho TP_printk( 19825953ff6dSAyala Beker LOCAL_PR_FMT VIF_PR_FMT 19838585989dSLuca Coelho ", master preference: %u, bands: 0x%0x, changes: 0x%x", 19845953ff6dSAyala Beker LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, 19855953ff6dSAyala Beker __entry->bands, __entry->changes 19865953ff6dSAyala Beker ) 1987167e33f4SAyala Beker ); 1988167e33f4SAyala Beker 1989167e33f4SAyala Beker TRACE_EVENT(drv_add_nan_func, 1990167e33f4SAyala Beker TP_PROTO(struct ieee80211_local *local, 1991167e33f4SAyala Beker struct ieee80211_sub_if_data *sdata, 1992167e33f4SAyala Beker const struct cfg80211_nan_func *func), 1993167e33f4SAyala Beker 1994167e33f4SAyala Beker TP_ARGS(local, sdata, func), 1995167e33f4SAyala Beker TP_STRUCT__entry( 1996167e33f4SAyala Beker LOCAL_ENTRY 1997167e33f4SAyala Beker VIF_ENTRY 1998167e33f4SAyala Beker __field(u8, type) 1999167e33f4SAyala Beker __field(u8, inst_id) 2000167e33f4SAyala Beker ), 2001167e33f4SAyala Beker 2002167e33f4SAyala Beker TP_fast_assign( 2003167e33f4SAyala Beker LOCAL_ASSIGN; 2004167e33f4SAyala Beker VIF_ASSIGN; 2005167e33f4SAyala Beker __entry->type = func->type; 2006167e33f4SAyala Beker __entry->inst_id = func->instance_id; 2007167e33f4SAyala Beker ), 2008167e33f4SAyala Beker 2009167e33f4SAyala Beker TP_printk( 2010167e33f4SAyala Beker LOCAL_PR_FMT VIF_PR_FMT 2011167e33f4SAyala Beker ", type: %u, inst_id: %u", 2012167e33f4SAyala Beker LOCAL_PR_ARG, VIF_PR_ARG, __entry->type, __entry->inst_id 2013167e33f4SAyala Beker ) 2014167e33f4SAyala Beker ); 2015167e33f4SAyala Beker 2016167e33f4SAyala Beker TRACE_EVENT(drv_del_nan_func, 2017167e33f4SAyala Beker TP_PROTO(struct ieee80211_local *local, 2018167e33f4SAyala Beker struct ieee80211_sub_if_data *sdata, 2019167e33f4SAyala Beker u8 instance_id), 2020167e33f4SAyala Beker 2021167e33f4SAyala Beker TP_ARGS(local, sdata, instance_id), 2022167e33f4SAyala Beker TP_STRUCT__entry( 2023167e33f4SAyala Beker LOCAL_ENTRY 2024167e33f4SAyala Beker VIF_ENTRY 2025167e33f4SAyala Beker __field(u8, instance_id) 2026167e33f4SAyala Beker ), 2027167e33f4SAyala Beker 2028167e33f4SAyala Beker TP_fast_assign( 2029167e33f4SAyala Beker LOCAL_ASSIGN; 2030167e33f4SAyala Beker VIF_ASSIGN; 2031167e33f4SAyala Beker __entry->instance_id = instance_id; 2032167e33f4SAyala Beker ), 2033167e33f4SAyala Beker 2034167e33f4SAyala Beker TP_printk( 2035167e33f4SAyala Beker LOCAL_PR_FMT VIF_PR_FMT 2036167e33f4SAyala Beker ", instance_id: %u", 2037167e33f4SAyala Beker LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id 2038167e33f4SAyala Beker ) 2039cee7013bSJohannes Berg ); 2040cee7013bSJohannes Berg 2041cee7013bSJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_start_pmsr, 2042cee7013bSJohannes Berg TP_PROTO(struct ieee80211_local *local, 2043cee7013bSJohannes Berg struct ieee80211_sub_if_data *sdata), 2044cee7013bSJohannes Berg TP_ARGS(local, sdata) 2045cee7013bSJohannes Berg ); 2046cee7013bSJohannes Berg 2047cee7013bSJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_abort_pmsr, 2048cee7013bSJohannes Berg TP_PROTO(struct ieee80211_local *local, 2049cee7013bSJohannes Berg struct ieee80211_sub_if_data *sdata), 2050cee7013bSJohannes Berg TP_ARGS(local, sdata) 205137a7d0daSJohannes Berg ); 205237a7d0daSJohannes Berg 205337a7d0daSJohannes Berg TRACE_EVENT(drv_set_default_unicast_key, 205437a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 205537a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 205637a7d0daSJohannes Berg int key_idx), 205737a7d0daSJohannes Berg 205837a7d0daSJohannes Berg TP_ARGS(local, sdata, key_idx), 205937a7d0daSJohannes Berg 206037a7d0daSJohannes Berg TP_STRUCT__entry( 206137a7d0daSJohannes Berg LOCAL_ENTRY 206237a7d0daSJohannes Berg VIF_ENTRY 206337a7d0daSJohannes Berg __field(int, key_idx) 206437a7d0daSJohannes Berg ), 206537a7d0daSJohannes Berg 206637a7d0daSJohannes Berg TP_fast_assign( 206737a7d0daSJohannes Berg LOCAL_ASSIGN; 206837a7d0daSJohannes Berg VIF_ASSIGN; 206937a7d0daSJohannes Berg __entry->key_idx = key_idx; 207037a7d0daSJohannes Berg ), 207137a7d0daSJohannes Berg 207237a7d0daSJohannes Berg TP_printk(LOCAL_PR_FMT VIF_PR_FMT " key_idx:%d", 207337a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->key_idx) 207437a7d0daSJohannes Berg ); 207537a7d0daSJohannes Berg 207637a7d0daSJohannes Berg TRACE_EVENT(drv_channel_switch_beacon, 207737a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 207837a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 207937a7d0daSJohannes Berg struct cfg80211_chan_def *chandef), 208037a7d0daSJohannes Berg 208137a7d0daSJohannes Berg TP_ARGS(local, sdata, chandef), 208237a7d0daSJohannes Berg 208337a7d0daSJohannes Berg TP_STRUCT__entry( 208437a7d0daSJohannes Berg LOCAL_ENTRY 208537a7d0daSJohannes Berg VIF_ENTRY 208637a7d0daSJohannes Berg CHANDEF_ENTRY 208737a7d0daSJohannes Berg ), 208837a7d0daSJohannes Berg 208937a7d0daSJohannes Berg TP_fast_assign( 209037a7d0daSJohannes Berg LOCAL_ASSIGN; 209137a7d0daSJohannes Berg VIF_ASSIGN; 209237a7d0daSJohannes Berg CHANDEF_ASSIGN(chandef); 209337a7d0daSJohannes Berg ), 209437a7d0daSJohannes Berg 209537a7d0daSJohannes Berg TP_printk( 209637a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " channel switch to " CHANDEF_PR_FMT, 209737a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG 209837a7d0daSJohannes Berg ) 209937a7d0daSJohannes Berg ); 210037a7d0daSJohannes Berg 210137a7d0daSJohannes Berg TRACE_EVENT(drv_pre_channel_switch, 210237a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 210337a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 210437a7d0daSJohannes Berg struct ieee80211_channel_switch *ch_switch), 210537a7d0daSJohannes Berg 210637a7d0daSJohannes Berg TP_ARGS(local, sdata, ch_switch), 210737a7d0daSJohannes Berg 210837a7d0daSJohannes Berg TP_STRUCT__entry( 210937a7d0daSJohannes Berg LOCAL_ENTRY 211037a7d0daSJohannes Berg VIF_ENTRY 211137a7d0daSJohannes Berg CHANDEF_ENTRY 211237a7d0daSJohannes Berg __field(u64, timestamp) 211337a7d0daSJohannes Berg __field(u32, device_timestamp) 211437a7d0daSJohannes Berg __field(bool, block_tx) 211537a7d0daSJohannes Berg __field(u8, count) 211637a7d0daSJohannes Berg ), 211737a7d0daSJohannes Berg 211837a7d0daSJohannes Berg TP_fast_assign( 211937a7d0daSJohannes Berg LOCAL_ASSIGN; 212037a7d0daSJohannes Berg VIF_ASSIGN; 212137a7d0daSJohannes Berg CHANDEF_ASSIGN(&ch_switch->chandef) 212237a7d0daSJohannes Berg __entry->timestamp = ch_switch->timestamp; 212337a7d0daSJohannes Berg __entry->device_timestamp = ch_switch->device_timestamp; 212437a7d0daSJohannes Berg __entry->block_tx = ch_switch->block_tx; 212537a7d0daSJohannes Berg __entry->count = ch_switch->count; 212637a7d0daSJohannes Berg ), 212737a7d0daSJohannes Berg 212837a7d0daSJohannes Berg TP_printk( 212937a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " prepare channel switch to " 213037a7d0daSJohannes Berg CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu", 213137a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, 213237a7d0daSJohannes Berg __entry->block_tx, __entry->timestamp 213337a7d0daSJohannes Berg ) 213437a7d0daSJohannes Berg ); 213537a7d0daSJohannes Berg 213637a7d0daSJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_post_channel_switch, 213737a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 213837a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata), 213937a7d0daSJohannes Berg TP_ARGS(local, sdata) 214037a7d0daSJohannes Berg ); 214137a7d0daSJohannes Berg 214237a7d0daSJohannes Berg DEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch, 214337a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 214437a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata), 214537a7d0daSJohannes Berg TP_ARGS(local, sdata) 214637a7d0daSJohannes Berg ); 214737a7d0daSJohannes Berg 214837a7d0daSJohannes Berg TRACE_EVENT(drv_channel_switch_rx_beacon, 214937a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 215037a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 215137a7d0daSJohannes Berg struct ieee80211_channel_switch *ch_switch), 215237a7d0daSJohannes Berg 215337a7d0daSJohannes Berg TP_ARGS(local, sdata, ch_switch), 215437a7d0daSJohannes Berg 215537a7d0daSJohannes Berg TP_STRUCT__entry( 215637a7d0daSJohannes Berg LOCAL_ENTRY 215737a7d0daSJohannes Berg VIF_ENTRY 215837a7d0daSJohannes Berg CHANDEF_ENTRY 215937a7d0daSJohannes Berg __field(u64, timestamp) 216037a7d0daSJohannes Berg __field(u32, device_timestamp) 216137a7d0daSJohannes Berg __field(bool, block_tx) 216237a7d0daSJohannes Berg __field(u8, count) 216337a7d0daSJohannes Berg ), 216437a7d0daSJohannes Berg 216537a7d0daSJohannes Berg TP_fast_assign( 216637a7d0daSJohannes Berg LOCAL_ASSIGN; 216737a7d0daSJohannes Berg VIF_ASSIGN; 216837a7d0daSJohannes Berg CHANDEF_ASSIGN(&ch_switch->chandef) 216937a7d0daSJohannes Berg __entry->timestamp = ch_switch->timestamp; 217037a7d0daSJohannes Berg __entry->device_timestamp = ch_switch->device_timestamp; 217137a7d0daSJohannes Berg __entry->block_tx = ch_switch->block_tx; 217237a7d0daSJohannes Berg __entry->count = ch_switch->count; 217337a7d0daSJohannes Berg ), 217437a7d0daSJohannes Berg 217537a7d0daSJohannes Berg TP_printk( 217637a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT 217737a7d0daSJohannes Berg " received a channel switch beacon to " 217837a7d0daSJohannes Berg CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu", 217937a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, 218037a7d0daSJohannes Berg __entry->block_tx, __entry->timestamp 218137a7d0daSJohannes Berg ) 218237a7d0daSJohannes Berg ); 218337a7d0daSJohannes Berg 218437a7d0daSJohannes Berg TRACE_EVENT(drv_get_txpower, 218537a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 218637a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 218737a7d0daSJohannes Berg int dbm, int ret), 218837a7d0daSJohannes Berg 218937a7d0daSJohannes Berg TP_ARGS(local, sdata, dbm, ret), 219037a7d0daSJohannes Berg 219137a7d0daSJohannes Berg TP_STRUCT__entry( 219237a7d0daSJohannes Berg LOCAL_ENTRY 219337a7d0daSJohannes Berg VIF_ENTRY 219437a7d0daSJohannes Berg __field(int, dbm) 219537a7d0daSJohannes Berg __field(int, ret) 219637a7d0daSJohannes Berg ), 219737a7d0daSJohannes Berg 219837a7d0daSJohannes Berg TP_fast_assign( 219937a7d0daSJohannes Berg LOCAL_ASSIGN; 220037a7d0daSJohannes Berg VIF_ASSIGN; 220137a7d0daSJohannes Berg __entry->dbm = dbm; 220237a7d0daSJohannes Berg __entry->ret = ret; 220337a7d0daSJohannes Berg ), 220437a7d0daSJohannes Berg 220537a7d0daSJohannes Berg TP_printk( 220637a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " dbm:%d ret:%d", 220737a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->dbm, __entry->ret 220837a7d0daSJohannes Berg ) 220937a7d0daSJohannes Berg ); 221037a7d0daSJohannes Berg 221137a7d0daSJohannes Berg TRACE_EVENT(drv_tdls_channel_switch, 221237a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 221337a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 221437a7d0daSJohannes Berg struct ieee80211_sta *sta, u8 oper_class, 221537a7d0daSJohannes Berg struct cfg80211_chan_def *chandef), 221637a7d0daSJohannes Berg 221737a7d0daSJohannes Berg TP_ARGS(local, sdata, sta, oper_class, chandef), 221837a7d0daSJohannes Berg 221937a7d0daSJohannes Berg TP_STRUCT__entry( 222037a7d0daSJohannes Berg LOCAL_ENTRY 222137a7d0daSJohannes Berg VIF_ENTRY 222237a7d0daSJohannes Berg STA_ENTRY 222337a7d0daSJohannes Berg __field(u8, oper_class) 222437a7d0daSJohannes Berg CHANDEF_ENTRY 222537a7d0daSJohannes Berg ), 222637a7d0daSJohannes Berg 222737a7d0daSJohannes Berg TP_fast_assign( 222837a7d0daSJohannes Berg LOCAL_ASSIGN; 222937a7d0daSJohannes Berg VIF_ASSIGN; 223037a7d0daSJohannes Berg STA_ASSIGN; 223137a7d0daSJohannes Berg __entry->oper_class = oper_class; 223237a7d0daSJohannes Berg CHANDEF_ASSIGN(chandef) 223337a7d0daSJohannes Berg ), 223437a7d0daSJohannes Berg 223537a7d0daSJohannes Berg TP_printk( 223637a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " tdls channel switch to" 223737a7d0daSJohannes Berg CHANDEF_PR_FMT " oper_class:%d " STA_PR_FMT, 223837a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->oper_class, 223937a7d0daSJohannes Berg STA_PR_ARG 224037a7d0daSJohannes Berg ) 224137a7d0daSJohannes Berg ); 224237a7d0daSJohannes Berg 224337a7d0daSJohannes Berg TRACE_EVENT(drv_tdls_cancel_channel_switch, 224437a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 224537a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 224637a7d0daSJohannes Berg struct ieee80211_sta *sta), 224737a7d0daSJohannes Berg 224837a7d0daSJohannes Berg TP_ARGS(local, sdata, sta), 224937a7d0daSJohannes Berg 225037a7d0daSJohannes Berg TP_STRUCT__entry( 225137a7d0daSJohannes Berg LOCAL_ENTRY 225237a7d0daSJohannes Berg VIF_ENTRY 225337a7d0daSJohannes Berg STA_ENTRY 225437a7d0daSJohannes Berg ), 225537a7d0daSJohannes Berg 225637a7d0daSJohannes Berg TP_fast_assign( 225737a7d0daSJohannes Berg LOCAL_ASSIGN; 225837a7d0daSJohannes Berg VIF_ASSIGN; 225937a7d0daSJohannes Berg STA_ASSIGN; 226037a7d0daSJohannes Berg ), 226137a7d0daSJohannes Berg 226237a7d0daSJohannes Berg TP_printk( 226337a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT 226437a7d0daSJohannes Berg " tdls cancel channel switch with " STA_PR_FMT, 226537a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG 226637a7d0daSJohannes Berg ) 226737a7d0daSJohannes Berg ); 226837a7d0daSJohannes Berg 226937a7d0daSJohannes Berg TRACE_EVENT(drv_tdls_recv_channel_switch, 227037a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 227137a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 227237a7d0daSJohannes Berg struct ieee80211_tdls_ch_sw_params *params), 227337a7d0daSJohannes Berg 227437a7d0daSJohannes Berg TP_ARGS(local, sdata, params), 227537a7d0daSJohannes Berg 227637a7d0daSJohannes Berg TP_STRUCT__entry( 227737a7d0daSJohannes Berg LOCAL_ENTRY 227837a7d0daSJohannes Berg VIF_ENTRY 227937a7d0daSJohannes Berg __field(u8, action_code) 228037a7d0daSJohannes Berg STA_ENTRY 228137a7d0daSJohannes Berg CHANDEF_ENTRY 228237a7d0daSJohannes Berg __field(u32, status) 228337a7d0daSJohannes Berg __field(bool, peer_initiator) 228437a7d0daSJohannes Berg __field(u32, timestamp) 228537a7d0daSJohannes Berg __field(u16, switch_time) 228637a7d0daSJohannes Berg __field(u16, switch_timeout) 228737a7d0daSJohannes Berg ), 228837a7d0daSJohannes Berg 228937a7d0daSJohannes Berg TP_fast_assign( 229037a7d0daSJohannes Berg LOCAL_ASSIGN; 229137a7d0daSJohannes Berg VIF_ASSIGN; 229237a7d0daSJohannes Berg STA_NAMED_ASSIGN(params->sta); 229337a7d0daSJohannes Berg CHANDEF_ASSIGN(params->chandef) 229437a7d0daSJohannes Berg __entry->peer_initiator = params->sta->tdls_initiator; 229537a7d0daSJohannes Berg __entry->action_code = params->action_code; 229637a7d0daSJohannes Berg __entry->status = params->status; 229737a7d0daSJohannes Berg __entry->timestamp = params->timestamp; 229837a7d0daSJohannes Berg __entry->switch_time = params->switch_time; 229937a7d0daSJohannes Berg __entry->switch_timeout = params->switch_timeout; 230037a7d0daSJohannes Berg ), 230137a7d0daSJohannes Berg 230237a7d0daSJohannes Berg TP_printk( 230337a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " received tdls channel switch packet" 230437a7d0daSJohannes Berg " action:%d status:%d time:%d switch time:%d switch" 230537a7d0daSJohannes Berg " timeout:%d initiator: %d chan:" CHANDEF_PR_FMT STA_PR_FMT, 230637a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->action_code, __entry->status, 230737a7d0daSJohannes Berg __entry->timestamp, __entry->switch_time, 230837a7d0daSJohannes Berg __entry->switch_timeout, __entry->peer_initiator, 230937a7d0daSJohannes Berg CHANDEF_PR_ARG, STA_PR_ARG 231037a7d0daSJohannes Berg ) 231137a7d0daSJohannes Berg ); 231237a7d0daSJohannes Berg 231337a7d0daSJohannes Berg TRACE_EVENT(drv_wake_tx_queue, 231437a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 231537a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 231637a7d0daSJohannes Berg struct txq_info *txq), 231737a7d0daSJohannes Berg 231837a7d0daSJohannes Berg TP_ARGS(local, sdata, txq), 231937a7d0daSJohannes Berg 232037a7d0daSJohannes Berg TP_STRUCT__entry( 232137a7d0daSJohannes Berg LOCAL_ENTRY 232237a7d0daSJohannes Berg VIF_ENTRY 232337a7d0daSJohannes Berg STA_ENTRY 232437a7d0daSJohannes Berg __field(u8, ac) 232537a7d0daSJohannes Berg __field(u8, tid) 232637a7d0daSJohannes Berg ), 232737a7d0daSJohannes Berg 232837a7d0daSJohannes Berg TP_fast_assign( 232937a7d0daSJohannes Berg struct ieee80211_sta *sta = txq->txq.sta; 233037a7d0daSJohannes Berg 233137a7d0daSJohannes Berg LOCAL_ASSIGN; 233237a7d0daSJohannes Berg VIF_ASSIGN; 233337a7d0daSJohannes Berg STA_ASSIGN; 233437a7d0daSJohannes Berg __entry->ac = txq->txq.ac; 233537a7d0daSJohannes Berg __entry->tid = txq->txq.tid; 233637a7d0daSJohannes Berg ), 233737a7d0daSJohannes Berg 233837a7d0daSJohannes Berg TP_printk( 233937a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " ac:%d tid:%d", 234037a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid 234137a7d0daSJohannes Berg ) 234237a7d0daSJohannes Berg ); 234337a7d0daSJohannes Berg 234437a7d0daSJohannes Berg TRACE_EVENT(drv_get_ftm_responder_stats, 234537a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 234637a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 234737a7d0daSJohannes Berg struct cfg80211_ftm_responder_stats *ftm_stats), 234837a7d0daSJohannes Berg 234937a7d0daSJohannes Berg TP_ARGS(local, sdata, ftm_stats), 235037a7d0daSJohannes Berg 235137a7d0daSJohannes Berg TP_STRUCT__entry( 235237a7d0daSJohannes Berg LOCAL_ENTRY 235337a7d0daSJohannes Berg VIF_ENTRY 235437a7d0daSJohannes Berg ), 235537a7d0daSJohannes Berg 235637a7d0daSJohannes Berg TP_fast_assign( 235737a7d0daSJohannes Berg LOCAL_ASSIGN; 235837a7d0daSJohannes Berg VIF_ASSIGN; 235937a7d0daSJohannes Berg ), 236037a7d0daSJohannes Berg 236137a7d0daSJohannes Berg TP_printk( 236237a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT, 236337a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG 236437a7d0daSJohannes Berg ) 236537a7d0daSJohannes Berg ); 236637a7d0daSJohannes Berg 236737a7d0daSJohannes Berg DEFINE_EVENT(local_sdata_addr_evt, drv_update_vif_offload, 236837a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 236937a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata), 237037a7d0daSJohannes Berg TP_ARGS(local, sdata) 237137a7d0daSJohannes Berg ); 237237a7d0daSJohannes Berg 237337a7d0daSJohannes Berg DECLARE_EVENT_CLASS(sta_flag_evt, 237437a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 237537a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 237637a7d0daSJohannes Berg struct ieee80211_sta *sta, bool enabled), 237737a7d0daSJohannes Berg 237837a7d0daSJohannes Berg TP_ARGS(local, sdata, sta, enabled), 237937a7d0daSJohannes Berg 238037a7d0daSJohannes Berg TP_STRUCT__entry( 238137a7d0daSJohannes Berg LOCAL_ENTRY 238237a7d0daSJohannes Berg VIF_ENTRY 238337a7d0daSJohannes Berg STA_ENTRY 238437a7d0daSJohannes Berg __field(bool, enabled) 238537a7d0daSJohannes Berg ), 238637a7d0daSJohannes Berg 238737a7d0daSJohannes Berg TP_fast_assign( 238837a7d0daSJohannes Berg LOCAL_ASSIGN; 238937a7d0daSJohannes Berg VIF_ASSIGN; 239037a7d0daSJohannes Berg STA_ASSIGN; 239137a7d0daSJohannes Berg __entry->enabled = enabled; 239237a7d0daSJohannes Berg ), 239337a7d0daSJohannes Berg 239437a7d0daSJohannes Berg TP_printk( 239537a7d0daSJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " enabled:%d", 239637a7d0daSJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->enabled 239737a7d0daSJohannes Berg ) 239837a7d0daSJohannes Berg ); 239937a7d0daSJohannes Berg 240037a7d0daSJohannes Berg DEFINE_EVENT(sta_flag_evt, drv_sta_set_4addr, 240137a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 240237a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 240337a7d0daSJohannes Berg struct ieee80211_sta *sta, bool enabled), 240437a7d0daSJohannes Berg 240537a7d0daSJohannes Berg TP_ARGS(local, sdata, sta, enabled) 240637a7d0daSJohannes Berg ); 240737a7d0daSJohannes Berg 240837a7d0daSJohannes Berg DEFINE_EVENT(sta_flag_evt, drv_sta_set_decap_offload, 240937a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 241037a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 241137a7d0daSJohannes Berg struct ieee80211_sta *sta, bool enabled), 241237a7d0daSJohannes Berg 241337a7d0daSJohannes Berg TP_ARGS(local, sdata, sta, enabled) 241437a7d0daSJohannes Berg ); 241537a7d0daSJohannes Berg 241637a7d0daSJohannes Berg TRACE_EVENT(drv_add_twt_setup, 241737a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 241837a7d0daSJohannes Berg struct ieee80211_sta *sta, 241937a7d0daSJohannes Berg struct ieee80211_twt_setup *twt, 242037a7d0daSJohannes Berg struct ieee80211_twt_params *twt_agrt), 242137a7d0daSJohannes Berg 242237a7d0daSJohannes Berg TP_ARGS(local, sta, twt, twt_agrt), 242337a7d0daSJohannes Berg 242437a7d0daSJohannes Berg TP_STRUCT__entry( 242537a7d0daSJohannes Berg LOCAL_ENTRY 242637a7d0daSJohannes Berg STA_ENTRY 242737a7d0daSJohannes Berg __field(u8, dialog_token) 242837a7d0daSJohannes Berg __field(u8, control) 242937a7d0daSJohannes Berg __field(__le16, req_type) 243037a7d0daSJohannes Berg __field(__le64, twt) 243137a7d0daSJohannes Berg __field(u8, duration) 243237a7d0daSJohannes Berg __field(__le16, mantissa) 243337a7d0daSJohannes Berg __field(u8, channel) 243437a7d0daSJohannes Berg ), 243537a7d0daSJohannes Berg 243637a7d0daSJohannes Berg TP_fast_assign( 243737a7d0daSJohannes Berg LOCAL_ASSIGN; 243837a7d0daSJohannes Berg STA_ASSIGN; 243937a7d0daSJohannes Berg __entry->dialog_token = twt->dialog_token; 244037a7d0daSJohannes Berg __entry->control = twt->control; 244137a7d0daSJohannes Berg __entry->req_type = twt_agrt->req_type; 244237a7d0daSJohannes Berg __entry->twt = twt_agrt->twt; 244337a7d0daSJohannes Berg __entry->duration = twt_agrt->min_twt_dur; 244437a7d0daSJohannes Berg __entry->mantissa = twt_agrt->mantissa; 244537a7d0daSJohannes Berg __entry->channel = twt_agrt->channel; 244637a7d0daSJohannes Berg ), 244737a7d0daSJohannes Berg 244837a7d0daSJohannes Berg TP_printk( 244937a7d0daSJohannes Berg LOCAL_PR_FMT STA_PR_FMT 245037a7d0daSJohannes Berg " token:%d control:0x%02x req_type:0x%04x" 245137a7d0daSJohannes Berg " twt:%llu duration:%d mantissa:%d channel:%d", 245237a7d0daSJohannes Berg LOCAL_PR_ARG, STA_PR_ARG, __entry->dialog_token, 245337a7d0daSJohannes Berg __entry->control, le16_to_cpu(__entry->req_type), 245437a7d0daSJohannes Berg le64_to_cpu(__entry->twt), __entry->duration, 245537a7d0daSJohannes Berg le16_to_cpu(__entry->mantissa), __entry->channel 245637a7d0daSJohannes Berg ) 245737a7d0daSJohannes Berg ); 245837a7d0daSJohannes Berg 245937a7d0daSJohannes Berg TRACE_EVENT(drv_twt_teardown_request, 246037a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 246137a7d0daSJohannes Berg struct ieee80211_sta *sta, u8 flowid), 246237a7d0daSJohannes Berg 246337a7d0daSJohannes Berg TP_ARGS(local, sta, flowid), 246437a7d0daSJohannes Berg 246537a7d0daSJohannes Berg TP_STRUCT__entry( 246637a7d0daSJohannes Berg LOCAL_ENTRY 246737a7d0daSJohannes Berg STA_ENTRY 246837a7d0daSJohannes Berg __field(u8, flowid) 246937a7d0daSJohannes Berg ), 247037a7d0daSJohannes Berg 247137a7d0daSJohannes Berg TP_fast_assign( 247237a7d0daSJohannes Berg LOCAL_ASSIGN; 247337a7d0daSJohannes Berg STA_ASSIGN; 247437a7d0daSJohannes Berg __entry->flowid = flowid; 247537a7d0daSJohannes Berg ), 247637a7d0daSJohannes Berg 247737a7d0daSJohannes Berg TP_printk( 247837a7d0daSJohannes Berg LOCAL_PR_FMT STA_PR_FMT " flowid:%d", 247937a7d0daSJohannes Berg LOCAL_PR_ARG, STA_PR_ARG, __entry->flowid 248037a7d0daSJohannes Berg ) 248137a7d0daSJohannes Berg ); 248237a7d0daSJohannes Berg 248337a7d0daSJohannes Berg DEFINE_EVENT(sta_event, drv_net_fill_forward_path, 248437a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local, 248537a7d0daSJohannes Berg struct ieee80211_sub_if_data *sdata, 248637a7d0daSJohannes Berg struct ieee80211_sta *sta), 248737a7d0daSJohannes Berg TP_ARGS(local, sdata, sta) 248861587f15SFelix Fietkau ); 248961587f15SFelix Fietkau 249061587f15SFelix Fietkau TRACE_EVENT(drv_net_setup_tc, 249161587f15SFelix Fietkau TP_PROTO(struct ieee80211_local *local, 249261587f15SFelix Fietkau struct ieee80211_sub_if_data *sdata, 249361587f15SFelix Fietkau u8 type), 249461587f15SFelix Fietkau 249561587f15SFelix Fietkau TP_ARGS(local, sdata, type), 249661587f15SFelix Fietkau 249761587f15SFelix Fietkau TP_STRUCT__entry( 249861587f15SFelix Fietkau LOCAL_ENTRY 249961587f15SFelix Fietkau VIF_ENTRY 250061587f15SFelix Fietkau __field(u8, type) 250161587f15SFelix Fietkau ), 250261587f15SFelix Fietkau 250361587f15SFelix Fietkau TP_fast_assign( 250461587f15SFelix Fietkau LOCAL_ASSIGN; 250561587f15SFelix Fietkau VIF_ASSIGN; 250661587f15SFelix Fietkau __entry->type = type; 250761587f15SFelix Fietkau ), 250861587f15SFelix Fietkau 250961587f15SFelix Fietkau TP_printk( 251061587f15SFelix Fietkau LOCAL_PR_FMT VIF_PR_FMT " type:%d\n", 251161587f15SFelix Fietkau LOCAL_PR_ARG, VIF_PR_ARG, __entry->type 251261587f15SFelix Fietkau ) 2513d8787ec6SJohannes Berg ); 2514d8787ec6SJohannes Berg 2515d8787ec6SJohannes Berg TRACE_EVENT(drv_change_vif_links, 2516d8787ec6SJohannes Berg TP_PROTO(struct ieee80211_local *local, 2517d8787ec6SJohannes Berg struct ieee80211_sub_if_data *sdata, 2518d8787ec6SJohannes Berg u16 old_links, u16 new_links), 2519d8787ec6SJohannes Berg 2520d8787ec6SJohannes Berg TP_ARGS(local, sdata, old_links, new_links), 2521d8787ec6SJohannes Berg 2522d8787ec6SJohannes Berg TP_STRUCT__entry( 2523d8787ec6SJohannes Berg LOCAL_ENTRY 2524d8787ec6SJohannes Berg VIF_ENTRY 2525d8787ec6SJohannes Berg __field(u16, old_links) 2526d8787ec6SJohannes Berg __field(u16, new_links) 2527d8787ec6SJohannes Berg ), 2528d8787ec6SJohannes Berg 2529d8787ec6SJohannes Berg TP_fast_assign( 2530d8787ec6SJohannes Berg LOCAL_ASSIGN; 2531d8787ec6SJohannes Berg VIF_ASSIGN; 2532d8787ec6SJohannes Berg __entry->old_links = old_links; 2533d8787ec6SJohannes Berg __entry->new_links = new_links; 2534d8787ec6SJohannes Berg ), 2535d8787ec6SJohannes Berg 2536d8787ec6SJohannes Berg TP_printk( 2537d8787ec6SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT " old_links:0x%04x, new_links:0x%04x\n", 2538d8787ec6SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, __entry->old_links, __entry->new_links 2539d8787ec6SJohannes Berg ) 2540cb71f1d1SJohannes Berg ); 2541cb71f1d1SJohannes Berg 2542cb71f1d1SJohannes Berg TRACE_EVENT(drv_change_sta_links, 2543cb71f1d1SJohannes Berg TP_PROTO(struct ieee80211_local *local, 2544cb71f1d1SJohannes Berg struct ieee80211_sub_if_data *sdata, 2545cb71f1d1SJohannes Berg struct ieee80211_sta *sta, 2546cb71f1d1SJohannes Berg u16 old_links, u16 new_links), 2547cb71f1d1SJohannes Berg 2548cb71f1d1SJohannes Berg TP_ARGS(local, sdata, sta, old_links, new_links), 2549cb71f1d1SJohannes Berg 2550cb71f1d1SJohannes Berg TP_STRUCT__entry( 2551cb71f1d1SJohannes Berg LOCAL_ENTRY 2552cb71f1d1SJohannes Berg VIF_ENTRY 2553cb71f1d1SJohannes Berg STA_ENTRY 2554cb71f1d1SJohannes Berg __field(u16, old_links) 2555cb71f1d1SJohannes Berg __field(u16, new_links) 2556cb71f1d1SJohannes Berg ), 2557cb71f1d1SJohannes Berg 2558cb71f1d1SJohannes Berg TP_fast_assign( 2559cb71f1d1SJohannes Berg LOCAL_ASSIGN; 2560cb71f1d1SJohannes Berg VIF_ASSIGN; 2561cb71f1d1SJohannes Berg STA_ASSIGN; 2562cb71f1d1SJohannes Berg __entry->old_links = old_links; 2563cb71f1d1SJohannes Berg __entry->new_links = new_links; 2564cb71f1d1SJohannes Berg ), 2565cb71f1d1SJohannes Berg 2566cb71f1d1SJohannes Berg TP_printk( 2567cb71f1d1SJohannes Berg LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " old_links:0x%04x, new_links:0x%04x\n", 2568cb71f1d1SJohannes Berg LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, 2569cb71f1d1SJohannes Berg __entry->old_links, __entry->new_links 2570cb71f1d1SJohannes Berg ) 2571011ad0e9SJohannes Berg ); 2572011ad0e9SJohannes Berg 2573011ad0e9SJohannes Berg /* 2574011ad0e9SJohannes Berg * Tracing for API calls that drivers call. 2575011ad0e9SJohannes Berg */ 2576011ad0e9SJohannes Berg 2577011ad0e9SJohannes Berg TRACE_EVENT(api_start_tx_ba_session, 2578011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sta *sta, u16 tid), 2579011ad0e9SJohannes Berg 2580011ad0e9SJohannes Berg TP_ARGS(sta, tid), 2581011ad0e9SJohannes Berg 2582011ad0e9SJohannes Berg TP_STRUCT__entry( 2583011ad0e9SJohannes Berg STA_ENTRY 2584011ad0e9SJohannes Berg __field(u16, tid) 2585011ad0e9SJohannes Berg ), 2586011ad0e9SJohannes Berg 2587011ad0e9SJohannes Berg TP_fast_assign( 2588011ad0e9SJohannes Berg STA_ASSIGN; 2589011ad0e9SJohannes Berg __entry->tid = tid; 2590011ad0e9SJohannes Berg ), 2591011ad0e9SJohannes Berg 2592011ad0e9SJohannes Berg TP_printk( 2593011ad0e9SJohannes Berg STA_PR_FMT " tid:%d", 2594011ad0e9SJohannes Berg STA_PR_ARG, __entry->tid 2595011ad0e9SJohannes Berg ) 2596011ad0e9SJohannes Berg ); 2597011ad0e9SJohannes Berg 2598011ad0e9SJohannes Berg TRACE_EVENT(api_start_tx_ba_cb, 2599011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), 2600011ad0e9SJohannes Berg 2601011ad0e9SJohannes Berg TP_ARGS(sdata, ra, tid), 2602011ad0e9SJohannes Berg 2603011ad0e9SJohannes Berg TP_STRUCT__entry( 2604011ad0e9SJohannes Berg VIF_ENTRY 2605011ad0e9SJohannes Berg __array(u8, ra, ETH_ALEN) 2606011ad0e9SJohannes Berg __field(u16, tid) 2607011ad0e9SJohannes Berg ), 2608011ad0e9SJohannes Berg 2609011ad0e9SJohannes Berg TP_fast_assign( 2610011ad0e9SJohannes Berg VIF_ASSIGN; 2611011ad0e9SJohannes Berg memcpy(__entry->ra, ra, ETH_ALEN); 2612011ad0e9SJohannes Berg __entry->tid = tid; 2613011ad0e9SJohannes Berg ), 2614011ad0e9SJohannes Berg 2615011ad0e9SJohannes Berg TP_printk( 2616011ad0e9SJohannes Berg VIF_PR_FMT " ra:%pM tid:%d", 2617011ad0e9SJohannes Berg VIF_PR_ARG, __entry->ra, __entry->tid 2618011ad0e9SJohannes Berg ) 2619011ad0e9SJohannes Berg ); 2620011ad0e9SJohannes Berg 2621011ad0e9SJohannes Berg TRACE_EVENT(api_stop_tx_ba_session, 2622011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sta *sta, u16 tid), 2623011ad0e9SJohannes Berg 2624011ad0e9SJohannes Berg TP_ARGS(sta, tid), 2625011ad0e9SJohannes Berg 2626011ad0e9SJohannes Berg TP_STRUCT__entry( 2627011ad0e9SJohannes Berg STA_ENTRY 2628011ad0e9SJohannes Berg __field(u16, tid) 2629011ad0e9SJohannes Berg ), 2630011ad0e9SJohannes Berg 2631011ad0e9SJohannes Berg TP_fast_assign( 2632011ad0e9SJohannes Berg STA_ASSIGN; 2633011ad0e9SJohannes Berg __entry->tid = tid; 2634011ad0e9SJohannes Berg ), 2635011ad0e9SJohannes Berg 2636011ad0e9SJohannes Berg TP_printk( 2637011ad0e9SJohannes Berg STA_PR_FMT " tid:%d", 2638011ad0e9SJohannes Berg STA_PR_ARG, __entry->tid 2639011ad0e9SJohannes Berg ) 2640011ad0e9SJohannes Berg ); 2641011ad0e9SJohannes Berg 2642011ad0e9SJohannes Berg TRACE_EVENT(api_stop_tx_ba_cb, 2643011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), 2644011ad0e9SJohannes Berg 2645011ad0e9SJohannes Berg TP_ARGS(sdata, ra, tid), 2646011ad0e9SJohannes Berg 2647011ad0e9SJohannes Berg TP_STRUCT__entry( 2648011ad0e9SJohannes Berg VIF_ENTRY 2649011ad0e9SJohannes Berg __array(u8, ra, ETH_ALEN) 2650011ad0e9SJohannes Berg __field(u16, tid) 2651011ad0e9SJohannes Berg ), 2652011ad0e9SJohannes Berg 2653011ad0e9SJohannes Berg TP_fast_assign( 2654011ad0e9SJohannes Berg VIF_ASSIGN; 2655011ad0e9SJohannes Berg memcpy(__entry->ra, ra, ETH_ALEN); 2656011ad0e9SJohannes Berg __entry->tid = tid; 2657011ad0e9SJohannes Berg ), 2658011ad0e9SJohannes Berg 2659011ad0e9SJohannes Berg TP_printk( 2660011ad0e9SJohannes Berg VIF_PR_FMT " ra:%pM tid:%d", 2661011ad0e9SJohannes Berg VIF_PR_ARG, __entry->ra, __entry->tid 2662011ad0e9SJohannes Berg ) 2663011ad0e9SJohannes Berg ); 2664011ad0e9SJohannes Berg 2665011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, api_restart_hw, 2666011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 2667011ad0e9SJohannes Berg TP_ARGS(local) 2668011ad0e9SJohannes Berg ); 2669011ad0e9SJohannes Berg 2670011ad0e9SJohannes Berg TRACE_EVENT(api_beacon_loss, 2671011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata), 2672011ad0e9SJohannes Berg 2673011ad0e9SJohannes Berg TP_ARGS(sdata), 2674011ad0e9SJohannes Berg 2675011ad0e9SJohannes Berg TP_STRUCT__entry( 2676011ad0e9SJohannes Berg VIF_ENTRY 2677011ad0e9SJohannes Berg ), 2678011ad0e9SJohannes Berg 2679011ad0e9SJohannes Berg TP_fast_assign( 2680011ad0e9SJohannes Berg VIF_ASSIGN; 2681011ad0e9SJohannes Berg ), 2682011ad0e9SJohannes Berg 2683011ad0e9SJohannes Berg TP_printk( 2684011ad0e9SJohannes Berg VIF_PR_FMT, 2685011ad0e9SJohannes Berg VIF_PR_ARG 2686011ad0e9SJohannes Berg ) 2687011ad0e9SJohannes Berg ); 2688011ad0e9SJohannes Berg 2689011ad0e9SJohannes Berg TRACE_EVENT(api_connection_loss, 2690011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata), 2691011ad0e9SJohannes Berg 2692011ad0e9SJohannes Berg TP_ARGS(sdata), 2693011ad0e9SJohannes Berg 2694011ad0e9SJohannes Berg TP_STRUCT__entry( 2695011ad0e9SJohannes Berg VIF_ENTRY 2696011ad0e9SJohannes Berg ), 2697011ad0e9SJohannes Berg 2698011ad0e9SJohannes Berg TP_fast_assign( 2699011ad0e9SJohannes Berg VIF_ASSIGN; 2700011ad0e9SJohannes Berg ), 2701011ad0e9SJohannes Berg 2702011ad0e9SJohannes Berg TP_printk( 2703011ad0e9SJohannes Berg VIF_PR_FMT, 2704011ad0e9SJohannes Berg VIF_PR_ARG 2705011ad0e9SJohannes Berg ) 27063f8a39ffSJohannes Berg ); 27073f8a39ffSJohannes Berg 27083f8a39ffSJohannes Berg TRACE_EVENT(api_disconnect, 27093f8a39ffSJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, bool reconnect), 27103f8a39ffSJohannes Berg 27113f8a39ffSJohannes Berg TP_ARGS(sdata, reconnect), 27123f8a39ffSJohannes Berg 27133f8a39ffSJohannes Berg TP_STRUCT__entry( 27143f8a39ffSJohannes Berg VIF_ENTRY 27153f8a39ffSJohannes Berg __field(int, reconnect) 27163f8a39ffSJohannes Berg ), 27173f8a39ffSJohannes Berg 27183f8a39ffSJohannes Berg TP_fast_assign( 27193f8a39ffSJohannes Berg VIF_ASSIGN; 27203f8a39ffSJohannes Berg __entry->reconnect = reconnect; 27213f8a39ffSJohannes Berg ), 27223f8a39ffSJohannes Berg 27233f8a39ffSJohannes Berg TP_printk( 27243f8a39ffSJohannes Berg VIF_PR_FMT " reconnect:%d", 27253f8a39ffSJohannes Berg VIF_PR_ARG, __entry->reconnect 27263f8a39ffSJohannes Berg ) 2727011ad0e9SJohannes Berg ); 2728011ad0e9SJohannes Berg 2729769f07d8SAndrzej Zaborowski TRACE_EVENT(api_cqm_rssi_notify, 2730769f07d8SAndrzej Zaborowski TP_PROTO(struct ieee80211_sub_if_data *sdata, 2731011ad0e9SJohannes Berg enum nl80211_cqm_rssi_threshold_event rssi_event, 2732769f07d8SAndrzej Zaborowski s32 rssi_level), 2733011ad0e9SJohannes Berg 2734011ad0e9SJohannes Berg TP_ARGS(sdata, rssi_event, rssi_level), 2735011ad0e9SJohannes Berg 2736011ad0e9SJohannes Berg TP_STRUCT__entry( 2737769f07d8SAndrzej Zaborowski VIF_ENTRY 2738011ad0e9SJohannes Berg __field(u32, rssi_event) 2739011ad0e9SJohannes Berg __field(s32, rssi_level) 2740011ad0e9SJohannes Berg ), 2741011ad0e9SJohannes Berg 2742011ad0e9SJohannes Berg TP_fast_assign( 2743769f07d8SAndrzej Zaborowski VIF_ASSIGN; 2744011ad0e9SJohannes Berg __entry->rssi_event = rssi_event; 2745011ad0e9SJohannes Berg __entry->rssi_level = rssi_level; 2746011ad0e9SJohannes Berg ), 2747769f07d8SAndrzej Zaborowski 2748769f07d8SAndrzej Zaborowski TP_printk( 2749011ad0e9SJohannes Berg VIF_PR_FMT " event:%d rssi:%d", 2750011ad0e9SJohannes Berg VIF_PR_ARG, __entry->rssi_event, __entry->rssi_level 2751011ad0e9SJohannes Berg ) 275298f03342SJohannes Berg ); 275398f03342SJohannes Berg 275498f03342SJohannes Berg DEFINE_EVENT(local_sdata_evt, api_cqm_beacon_loss_notify, 275598f03342SJohannes Berg TP_PROTO(struct ieee80211_local *local, 275698f03342SJohannes Berg struct ieee80211_sub_if_data *sdata), 275798f03342SJohannes Berg TP_ARGS(local, sdata) 2758011ad0e9SJohannes Berg ); 2759011ad0e9SJohannes Berg 2760011ad0e9SJohannes Berg TRACE_EVENT(api_scan_completed, 2761011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, bool aborted), 2762011ad0e9SJohannes Berg 2763011ad0e9SJohannes Berg TP_ARGS(local, aborted), 2764011ad0e9SJohannes Berg 2765011ad0e9SJohannes Berg TP_STRUCT__entry( 2766011ad0e9SJohannes Berg LOCAL_ENTRY 2767011ad0e9SJohannes Berg __field(bool, aborted) 2768011ad0e9SJohannes Berg ), 2769011ad0e9SJohannes Berg 2770011ad0e9SJohannes Berg TP_fast_assign( 2771011ad0e9SJohannes Berg LOCAL_ASSIGN; 2772011ad0e9SJohannes Berg __entry->aborted = aborted; 2773011ad0e9SJohannes Berg ), 2774011ad0e9SJohannes Berg 2775011ad0e9SJohannes Berg TP_printk( 2776011ad0e9SJohannes Berg LOCAL_PR_FMT " aborted:%d", 2777011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->aborted 2778011ad0e9SJohannes Berg ) 2779011ad0e9SJohannes Berg ); 2780011ad0e9SJohannes Berg 2781011ad0e9SJohannes Berg TRACE_EVENT(api_sched_scan_results, 2782011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 2783011ad0e9SJohannes Berg 2784011ad0e9SJohannes Berg TP_ARGS(local), 2785011ad0e9SJohannes Berg 2786011ad0e9SJohannes Berg TP_STRUCT__entry( 2787011ad0e9SJohannes Berg LOCAL_ENTRY 2788011ad0e9SJohannes Berg ), 2789011ad0e9SJohannes Berg 2790011ad0e9SJohannes Berg TP_fast_assign( 2791011ad0e9SJohannes Berg LOCAL_ASSIGN; 2792011ad0e9SJohannes Berg ), 2793011ad0e9SJohannes Berg 2794011ad0e9SJohannes Berg TP_printk( 2795011ad0e9SJohannes Berg LOCAL_PR_FMT, LOCAL_PR_ARG 2796011ad0e9SJohannes Berg ) 2797011ad0e9SJohannes Berg ); 2798011ad0e9SJohannes Berg 2799011ad0e9SJohannes Berg TRACE_EVENT(api_sched_scan_stopped, 2800011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 2801011ad0e9SJohannes Berg 2802011ad0e9SJohannes Berg TP_ARGS(local), 2803011ad0e9SJohannes Berg 2804011ad0e9SJohannes Berg TP_STRUCT__entry( 2805011ad0e9SJohannes Berg LOCAL_ENTRY 2806011ad0e9SJohannes Berg ), 2807011ad0e9SJohannes Berg 2808011ad0e9SJohannes Berg TP_fast_assign( 2809011ad0e9SJohannes Berg LOCAL_ASSIGN; 2810011ad0e9SJohannes Berg ), 2811011ad0e9SJohannes Berg 2812011ad0e9SJohannes Berg TP_printk( 2813011ad0e9SJohannes Berg LOCAL_PR_FMT, LOCAL_PR_ARG 2814011ad0e9SJohannes Berg ) 2815011ad0e9SJohannes Berg ); 2816011ad0e9SJohannes Berg 2817011ad0e9SJohannes Berg TRACE_EVENT(api_sta_block_awake, 2818011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 2819011ad0e9SJohannes Berg struct ieee80211_sta *sta, bool block), 2820011ad0e9SJohannes Berg 2821011ad0e9SJohannes Berg TP_ARGS(local, sta, block), 2822011ad0e9SJohannes Berg 2823011ad0e9SJohannes Berg TP_STRUCT__entry( 2824011ad0e9SJohannes Berg LOCAL_ENTRY 2825011ad0e9SJohannes Berg STA_ENTRY 2826011ad0e9SJohannes Berg __field(bool, block) 2827011ad0e9SJohannes Berg ), 2828011ad0e9SJohannes Berg 2829011ad0e9SJohannes Berg TP_fast_assign( 2830011ad0e9SJohannes Berg LOCAL_ASSIGN; 2831011ad0e9SJohannes Berg STA_ASSIGN; 2832011ad0e9SJohannes Berg __entry->block = block; 2833011ad0e9SJohannes Berg ), 2834011ad0e9SJohannes Berg 283515ac7c47SSeth Forshee TP_printk( 2836011ad0e9SJohannes Berg LOCAL_PR_FMT STA_PR_FMT " block:%d", 2837011ad0e9SJohannes Berg LOCAL_PR_ARG, STA_PR_ARG, __entry->block 2838011ad0e9SJohannes Berg ) 2839011ad0e9SJohannes Berg ); 2840011ad0e9SJohannes Berg 2841011ad0e9SJohannes Berg TRACE_EVENT(api_chswitch_done, 2842011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success), 2843011ad0e9SJohannes Berg 2844011ad0e9SJohannes Berg TP_ARGS(sdata, success), 2845011ad0e9SJohannes Berg 2846011ad0e9SJohannes Berg TP_STRUCT__entry( 2847011ad0e9SJohannes Berg VIF_ENTRY 2848011ad0e9SJohannes Berg __field(bool, success) 2849011ad0e9SJohannes Berg ), 2850011ad0e9SJohannes Berg 2851011ad0e9SJohannes Berg TP_fast_assign( 2852011ad0e9SJohannes Berg VIF_ASSIGN; 2853011ad0e9SJohannes Berg __entry->success = success; 2854011ad0e9SJohannes Berg ), 2855011ad0e9SJohannes Berg 2856011ad0e9SJohannes Berg TP_printk( 2857011ad0e9SJohannes Berg VIF_PR_FMT " success=%d", 2858011ad0e9SJohannes Berg VIF_PR_ARG, __entry->success 2859011ad0e9SJohannes Berg ) 2860011ad0e9SJohannes Berg ); 2861011ad0e9SJohannes Berg 2862011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, api_ready_on_channel, 2863011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 2864011ad0e9SJohannes Berg TP_ARGS(local) 2865011ad0e9SJohannes Berg ); 2866011ad0e9SJohannes Berg 2867011ad0e9SJohannes Berg DEFINE_EVENT(local_only_evt, api_remain_on_channel_expired, 2868011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local), 2869011ad0e9SJohannes Berg TP_ARGS(local) 2870011ad0e9SJohannes Berg ); 2871011ad0e9SJohannes Berg 2872011ad0e9SJohannes Berg TRACE_EVENT(api_gtk_rekey_notify, 2873011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, 2874011ad0e9SJohannes Berg const u8 *bssid, const u8 *replay_ctr), 2875011ad0e9SJohannes Berg 2876011ad0e9SJohannes Berg TP_ARGS(sdata, bssid, replay_ctr), 2877011ad0e9SJohannes Berg 2878011ad0e9SJohannes Berg TP_STRUCT__entry( 2879011ad0e9SJohannes Berg VIF_ENTRY 2880011ad0e9SJohannes Berg __array(u8, bssid, ETH_ALEN) 2881011ad0e9SJohannes Berg __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) 2882011ad0e9SJohannes Berg ), 2883011ad0e9SJohannes Berg 2884011ad0e9SJohannes Berg TP_fast_assign( 2885011ad0e9SJohannes Berg VIF_ASSIGN; 2886011ad0e9SJohannes Berg memcpy(__entry->bssid, bssid, ETH_ALEN); 2887011ad0e9SJohannes Berg memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN); 2888011ad0e9SJohannes Berg ), 2889011ad0e9SJohannes Berg 2890011ad0e9SJohannes Berg TP_printk(VIF_PR_FMT, VIF_PR_ARG) 2891011ad0e9SJohannes Berg ); 2892011ad0e9SJohannes Berg 2893011ad0e9SJohannes Berg TRACE_EVENT(api_enable_rssi_reports, 2894011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_sub_if_data *sdata, 2895011ad0e9SJohannes Berg int rssi_min_thold, int rssi_max_thold), 2896011ad0e9SJohannes Berg 2897011ad0e9SJohannes Berg TP_ARGS(sdata, rssi_min_thold, rssi_max_thold), 2898011ad0e9SJohannes Berg 2899011ad0e9SJohannes Berg TP_STRUCT__entry( 2900011ad0e9SJohannes Berg VIF_ENTRY 2901011ad0e9SJohannes Berg __field(int, rssi_min_thold) 2902011ad0e9SJohannes Berg __field(int, rssi_max_thold) 2903011ad0e9SJohannes Berg ), 2904011ad0e9SJohannes Berg 2905011ad0e9SJohannes Berg TP_fast_assign( 2906011ad0e9SJohannes Berg VIF_ASSIGN; 2907011ad0e9SJohannes Berg __entry->rssi_min_thold = rssi_min_thold; 2908011ad0e9SJohannes Berg __entry->rssi_max_thold = rssi_max_thold; 2909011ad0e9SJohannes Berg ), 2910011ad0e9SJohannes Berg 2911011ad0e9SJohannes Berg TP_printk( 2912011ad0e9SJohannes Berg VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d", 2913011ad0e9SJohannes Berg VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold 2914011ad0e9SJohannes Berg ) 2915011ad0e9SJohannes Berg ); 2916011ad0e9SJohannes Berg 2917011ad0e9SJohannes Berg TRACE_EVENT(api_eosp, 2918011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, 2919011ad0e9SJohannes Berg struct ieee80211_sta *sta), 2920011ad0e9SJohannes Berg 2921011ad0e9SJohannes Berg TP_ARGS(local, sta), 2922011ad0e9SJohannes Berg 2923011ad0e9SJohannes Berg TP_STRUCT__entry( 2924011ad0e9SJohannes Berg LOCAL_ENTRY 2925011ad0e9SJohannes Berg STA_ENTRY 2926011ad0e9SJohannes Berg ), 2927011ad0e9SJohannes Berg 2928011ad0e9SJohannes Berg TP_fast_assign( 2929011ad0e9SJohannes Berg LOCAL_ASSIGN; 2930011ad0e9SJohannes Berg STA_ASSIGN; 2931011ad0e9SJohannes Berg ), 2932011ad0e9SJohannes Berg 293315ac7c47SSeth Forshee TP_printk( 2934011ad0e9SJohannes Berg LOCAL_PR_FMT STA_PR_FMT, 2935011ad0e9SJohannes Berg LOCAL_PR_ARG, STA_PR_ARG 2936011ad0e9SJohannes Berg ) 29370ead2510SEmmanuel Grumbach ); 29380ead2510SEmmanuel Grumbach 29390ead2510SEmmanuel Grumbach TRACE_EVENT(api_send_eosp_nullfunc, 29400ead2510SEmmanuel Grumbach TP_PROTO(struct ieee80211_local *local, 29410ead2510SEmmanuel Grumbach struct ieee80211_sta *sta, 29420ead2510SEmmanuel Grumbach u8 tid), 29430ead2510SEmmanuel Grumbach 29440ead2510SEmmanuel Grumbach TP_ARGS(local, sta, tid), 29450ead2510SEmmanuel Grumbach 29460ead2510SEmmanuel Grumbach TP_STRUCT__entry( 29470ead2510SEmmanuel Grumbach LOCAL_ENTRY 29480ead2510SEmmanuel Grumbach STA_ENTRY 29490ead2510SEmmanuel Grumbach __field(u8, tid) 29500ead2510SEmmanuel Grumbach ), 29510ead2510SEmmanuel Grumbach 29520ead2510SEmmanuel Grumbach TP_fast_assign( 29530ead2510SEmmanuel Grumbach LOCAL_ASSIGN; 29540ead2510SEmmanuel Grumbach STA_ASSIGN; 29550ead2510SEmmanuel Grumbach __entry->tid = tid; 29560ead2510SEmmanuel Grumbach ), 29570ead2510SEmmanuel Grumbach 29580ead2510SEmmanuel Grumbach TP_printk( 29590ead2510SEmmanuel Grumbach LOCAL_PR_FMT STA_PR_FMT " tid:%d", 29600ead2510SEmmanuel Grumbach LOCAL_PR_ARG, STA_PR_ARG, __entry->tid 29610ead2510SEmmanuel Grumbach ) 29621b000789SJohannes Berg ); 29631b000789SJohannes Berg 29641b000789SJohannes Berg TRACE_EVENT(api_sta_set_buffered, 29651b000789SJohannes Berg TP_PROTO(struct ieee80211_local *local, 29661b000789SJohannes Berg struct ieee80211_sta *sta, 29671b000789SJohannes Berg u8 tid, bool buffered), 29681b000789SJohannes Berg 29691b000789SJohannes Berg TP_ARGS(local, sta, tid, buffered), 29701b000789SJohannes Berg 29711b000789SJohannes Berg TP_STRUCT__entry( 29721b000789SJohannes Berg LOCAL_ENTRY 29731b000789SJohannes Berg STA_ENTRY 29741b000789SJohannes Berg __field(u8, tid) 29751b000789SJohannes Berg __field(bool, buffered) 29761b000789SJohannes Berg ), 29771b000789SJohannes Berg 29781b000789SJohannes Berg TP_fast_assign( 29791b000789SJohannes Berg LOCAL_ASSIGN; 29801b000789SJohannes Berg STA_ASSIGN; 29811b000789SJohannes Berg __entry->tid = tid; 29821b000789SJohannes Berg __entry->buffered = buffered; 29831b000789SJohannes Berg ), 29841b000789SJohannes Berg 29851b000789SJohannes Berg TP_printk( 29861b000789SJohannes Berg LOCAL_PR_FMT STA_PR_FMT " tid:%d buffered:%d", 29871b000789SJohannes Berg LOCAL_PR_ARG, STA_PR_ARG, __entry->tid, __entry->buffered 29881b000789SJohannes Berg ) 298937a7d0daSJohannes Berg ); 299037a7d0daSJohannes Berg 299137a7d0daSJohannes Berg TRACE_EVENT(api_radar_detected, 299237a7d0daSJohannes Berg TP_PROTO(struct ieee80211_local *local), 299337a7d0daSJohannes Berg 299437a7d0daSJohannes Berg TP_ARGS(local), 299537a7d0daSJohannes Berg 299637a7d0daSJohannes Berg TP_STRUCT__entry( 299737a7d0daSJohannes Berg LOCAL_ENTRY 299837a7d0daSJohannes Berg ), 299937a7d0daSJohannes Berg 300037a7d0daSJohannes Berg TP_fast_assign( 300137a7d0daSJohannes Berg LOCAL_ASSIGN; 300237a7d0daSJohannes Berg ), 300337a7d0daSJohannes Berg 300437a7d0daSJohannes Berg TP_printk( 300537a7d0daSJohannes Berg LOCAL_PR_FMT " radar detected", 300637a7d0daSJohannes Berg LOCAL_PR_ARG 300737a7d0daSJohannes Berg ) 3008011ad0e9SJohannes Berg ); 3009011ad0e9SJohannes Berg 3010011ad0e9SJohannes Berg /* 3011011ad0e9SJohannes Berg * Tracing for internal functions 3012011ad0e9SJohannes Berg * (which may also be called in response to driver calls) 3013011ad0e9SJohannes Berg */ 3014011ad0e9SJohannes Berg 3015011ad0e9SJohannes Berg TRACE_EVENT(wake_queue, 3016011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u16 queue, 3017011ad0e9SJohannes Berg enum queue_stop_reason reason), 3018011ad0e9SJohannes Berg 3019011ad0e9SJohannes Berg TP_ARGS(local, queue, reason), 3020011ad0e9SJohannes Berg 3021011ad0e9SJohannes Berg TP_STRUCT__entry( 3022011ad0e9SJohannes Berg LOCAL_ENTRY 3023011ad0e9SJohannes Berg __field(u16, queue) 3024011ad0e9SJohannes Berg __field(u32, reason) 3025011ad0e9SJohannes Berg ), 3026011ad0e9SJohannes Berg 3027011ad0e9SJohannes Berg TP_fast_assign( 3028011ad0e9SJohannes Berg LOCAL_ASSIGN; 3029011ad0e9SJohannes Berg __entry->queue = queue; 3030011ad0e9SJohannes Berg __entry->reason = reason; 3031011ad0e9SJohannes Berg ), 3032011ad0e9SJohannes Berg 3033011ad0e9SJohannes Berg TP_printk( 3034011ad0e9SJohannes Berg LOCAL_PR_FMT " queue:%d, reason:%d", 3035011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->queue, __entry->reason 3036011ad0e9SJohannes Berg ) 3037011ad0e9SJohannes Berg ); 3038011ad0e9SJohannes Berg 3039011ad0e9SJohannes Berg TRACE_EVENT(stop_queue, 3040011ad0e9SJohannes Berg TP_PROTO(struct ieee80211_local *local, u16 queue, 3041011ad0e9SJohannes Berg enum queue_stop_reason reason), 3042011ad0e9SJohannes Berg 3043011ad0e9SJohannes Berg TP_ARGS(local, queue, reason), 3044011ad0e9SJohannes Berg 3045011ad0e9SJohannes Berg TP_STRUCT__entry( 3046011ad0e9SJohannes Berg LOCAL_ENTRY 3047011ad0e9SJohannes Berg __field(u16, queue) 3048011ad0e9SJohannes Berg __field(u32, reason) 3049011ad0e9SJohannes Berg ), 3050011ad0e9SJohannes Berg 3051011ad0e9SJohannes Berg TP_fast_assign( 3052011ad0e9SJohannes Berg LOCAL_ASSIGN; 3053011ad0e9SJohannes Berg __entry->queue = queue; 3054011ad0e9SJohannes Berg __entry->reason = reason; 3055011ad0e9SJohannes Berg ), 3056011ad0e9SJohannes Berg 3057011ad0e9SJohannes Berg TP_printk( 3058011ad0e9SJohannes Berg LOCAL_PR_FMT " queue:%d, reason:%d", 3059011ad0e9SJohannes Berg LOCAL_PR_ARG, __entry->queue, __entry->reason 30603fae0273SJohannes Berg ) 3061011ad0e9SJohannes Berg ); 3062011ad0e9SJohannes Berg 3063011ad0e9SJohannes Berg #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */ 3064011ad0e9SJohannes Berg 3065011ad0e9SJohannes Berg #undef TRACE_INCLUDE_PATH 3066011ad0e9SJohannes Berg #define TRACE_INCLUDE_PATH . 3067011ad0e9SJohannes Berg #undef TRACE_INCLUDE_FILE 3068 #define TRACE_INCLUDE_FILE trace 3069 #include <trace/define_trace.h> 3070