18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci* Portions of this file
48c2ecf20Sopenharmony_ci* Copyright(c) 2016-2017 Intel Deutschland GmbH
58c2ecf20Sopenharmony_ci* Copyright (C) 2018 - 2019 Intel Corporation
68c2ecf20Sopenharmony_ci*/
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
98c2ecf20Sopenharmony_ci#define __MAC80211_DRIVER_TRACE
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/tracepoint.h>
128c2ecf20Sopenharmony_ci#include <net/mac80211.h>
138c2ecf20Sopenharmony_ci#include "ieee80211_i.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM
168c2ecf20Sopenharmony_ci#define TRACE_SYSTEM mac80211
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci#define MAXNAME		32
198c2ecf20Sopenharmony_ci#define LOCAL_ENTRY	__array(char, wiphy_name, 32)
208c2ecf20Sopenharmony_ci#define LOCAL_ASSIGN	strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
218c2ecf20Sopenharmony_ci#define LOCAL_PR_FMT	"%s"
228c2ecf20Sopenharmony_ci#define LOCAL_PR_ARG	__entry->wiphy_name
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci#define STA_ENTRY	__array(char, sta_addr, ETH_ALEN)
258c2ecf20Sopenharmony_ci#define STA_ASSIGN	(sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \
268c2ecf20Sopenharmony_ci				eth_zero_addr(__entry->sta_addr))
278c2ecf20Sopenharmony_ci#define STA_NAMED_ASSIGN(s)	memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN)
288c2ecf20Sopenharmony_ci#define STA_PR_FMT	" sta:%pM"
298c2ecf20Sopenharmony_ci#define STA_PR_ARG	__entry->sta_addr
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci#define VIF_ENTRY	__field(enum nl80211_iftype, vif_type) __field(void *, sdata)	\
328c2ecf20Sopenharmony_ci			__field(bool, p2p)						\
338c2ecf20Sopenharmony_ci			__string(vif_name, sdata->name)
348c2ecf20Sopenharmony_ci#define VIF_ASSIGN	__entry->vif_type = sdata->vif.type; __entry->sdata = sdata;	\
358c2ecf20Sopenharmony_ci			__entry->p2p = sdata->vif.p2p;					\
368c2ecf20Sopenharmony_ci			__assign_str(vif_name, sdata->name)
378c2ecf20Sopenharmony_ci#define VIF_PR_FMT	" vif:%s(%d%s)"
388c2ecf20Sopenharmony_ci#define VIF_PR_ARG	__get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : ""
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci#define CHANDEF_ENTRY	__field(u32, control_freq)					\
418c2ecf20Sopenharmony_ci			__field(u32, freq_offset)					\
428c2ecf20Sopenharmony_ci			__field(u32, chan_width)					\
438c2ecf20Sopenharmony_ci			__field(u32, center_freq1)					\
448c2ecf20Sopenharmony_ci			__field(u32, freq1_offset)					\
458c2ecf20Sopenharmony_ci			__field(u32, center_freq2)
468c2ecf20Sopenharmony_ci#define CHANDEF_ASSIGN(c)							\
478c2ecf20Sopenharmony_ci			__entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0;	\
488c2ecf20Sopenharmony_ci			__entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0;	\
498c2ecf20Sopenharmony_ci			__entry->chan_width = (c) ? (c)->width : 0;			\
508c2ecf20Sopenharmony_ci			__entry->center_freq1 = (c) ? (c)->center_freq1 : 0;		\
518c2ecf20Sopenharmony_ci			__entry->freq1_offset = (c) ? (c)->freq1_offset : 0;		\
528c2ecf20Sopenharmony_ci			__entry->center_freq2 = (c) ? (c)->center_freq2 : 0;
538c2ecf20Sopenharmony_ci#define CHANDEF_PR_FMT	" control:%d.%03d MHz width:%d center: %d.%03d/%d MHz"
548c2ecf20Sopenharmony_ci#define CHANDEF_PR_ARG	__entry->control_freq, __entry->freq_offset, __entry->chan_width, \
558c2ecf20Sopenharmony_ci			__entry->center_freq1, __entry->freq1_offset, __entry->center_freq2
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci#define MIN_CHANDEF_ENTRY								\
588c2ecf20Sopenharmony_ci			__field(u32, min_control_freq)					\
598c2ecf20Sopenharmony_ci			__field(u32, min_freq_offset)					\
608c2ecf20Sopenharmony_ci			__field(u32, min_chan_width)					\
618c2ecf20Sopenharmony_ci			__field(u32, min_center_freq1)					\
628c2ecf20Sopenharmony_ci			__field(u32, min_freq1_offset)					\
638c2ecf20Sopenharmony_ci			__field(u32, min_center_freq2)
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci#define MIN_CHANDEF_ASSIGN(c)								\
668c2ecf20Sopenharmony_ci			__entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0;	\
678c2ecf20Sopenharmony_ci			__entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0;	\
688c2ecf20Sopenharmony_ci			__entry->min_chan_width = (c)->width;				\
698c2ecf20Sopenharmony_ci			__entry->min_center_freq1 = (c)->center_freq1;			\
708c2ecf20Sopenharmony_ci			__entry->min_freq1_offset = (c)->freq1_offset;			\
718c2ecf20Sopenharmony_ci			__entry->min_center_freq2 = (c)->center_freq2;
728c2ecf20Sopenharmony_ci#define MIN_CHANDEF_PR_FMT	" min_control:%d.%03d MHz min_width:%d min_center: %d.%03d/%d MHz"
738c2ecf20Sopenharmony_ci#define MIN_CHANDEF_PR_ARG	__entry->min_control_freq, __entry->min_freq_offset,	\
748c2ecf20Sopenharmony_ci			__entry->min_chan_width,					\
758c2ecf20Sopenharmony_ci			__entry->min_center_freq1, __entry->min_freq1_offset,		\
768c2ecf20Sopenharmony_ci			__entry->min_center_freq2
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci#define CHANCTX_ENTRY	CHANDEF_ENTRY							\
798c2ecf20Sopenharmony_ci			MIN_CHANDEF_ENTRY						\
808c2ecf20Sopenharmony_ci			__field(u8, rx_chains_static)					\
818c2ecf20Sopenharmony_ci			__field(u8, rx_chains_dynamic)
828c2ecf20Sopenharmony_ci#define CHANCTX_ASSIGN	CHANDEF_ASSIGN(&ctx->conf.def)					\
838c2ecf20Sopenharmony_ci			MIN_CHANDEF_ASSIGN(&ctx->conf.min_def)				\
848c2ecf20Sopenharmony_ci			__entry->rx_chains_static = ctx->conf.rx_chains_static;		\
858c2ecf20Sopenharmony_ci			__entry->rx_chains_dynamic = ctx->conf.rx_chains_dynamic
868c2ecf20Sopenharmony_ci#define CHANCTX_PR_FMT	CHANDEF_PR_FMT MIN_CHANDEF_PR_FMT " chains:%d/%d"
878c2ecf20Sopenharmony_ci#define CHANCTX_PR_ARG	CHANDEF_PR_ARG,	MIN_CHANDEF_PR_ARG,				\
888c2ecf20Sopenharmony_ci			__entry->rx_chains_static, __entry->rx_chains_dynamic
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci#define KEY_ENTRY	__field(u32, cipher)						\
918c2ecf20Sopenharmony_ci			__field(u8, hw_key_idx)						\
928c2ecf20Sopenharmony_ci			__field(u8, flags)						\
938c2ecf20Sopenharmony_ci			__field(s8, keyidx)
948c2ecf20Sopenharmony_ci#define KEY_ASSIGN(k)	__entry->cipher = (k)->cipher;					\
958c2ecf20Sopenharmony_ci			__entry->flags = (k)->flags;					\
968c2ecf20Sopenharmony_ci			__entry->keyidx = (k)->keyidx;					\
978c2ecf20Sopenharmony_ci			__entry->hw_key_idx = (k)->hw_key_idx;
988c2ecf20Sopenharmony_ci#define KEY_PR_FMT	" cipher:0x%x, flags=%#x, keyidx=%d, hw_key_idx=%d"
998c2ecf20Sopenharmony_ci#define KEY_PR_ARG	__entry->cipher, __entry->flags, __entry->keyidx, __entry->hw_key_idx
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci#define AMPDU_ACTION_ENTRY	__field(enum ieee80211_ampdu_mlme_action,		\
1028c2ecf20Sopenharmony_ci					ieee80211_ampdu_mlme_action)			\
1038c2ecf20Sopenharmony_ci				STA_ENTRY						\
1048c2ecf20Sopenharmony_ci				__field(u16, tid)					\
1058c2ecf20Sopenharmony_ci				__field(u16, ssn)					\
1068c2ecf20Sopenharmony_ci				__field(u16, buf_size)					\
1078c2ecf20Sopenharmony_ci				__field(bool, amsdu)					\
1088c2ecf20Sopenharmony_ci				__field(u16, timeout)					\
1098c2ecf20Sopenharmony_ci				__field(u16, action)
1108c2ecf20Sopenharmony_ci#define AMPDU_ACTION_ASSIGN	STA_NAMED_ASSIGN(params->sta);				\
1118c2ecf20Sopenharmony_ci				__entry->tid = params->tid;				\
1128c2ecf20Sopenharmony_ci				__entry->ssn = params->ssn;				\
1138c2ecf20Sopenharmony_ci				__entry->buf_size = params->buf_size;			\
1148c2ecf20Sopenharmony_ci				__entry->amsdu = params->amsdu;				\
1158c2ecf20Sopenharmony_ci				__entry->timeout = params->timeout;			\
1168c2ecf20Sopenharmony_ci				__entry->action = params->action;
1178c2ecf20Sopenharmony_ci#define AMPDU_ACTION_PR_FMT	STA_PR_FMT " tid %d, ssn %d, buf_size %u, amsdu %d, timeout %d action %d"
1188c2ecf20Sopenharmony_ci#define AMPDU_ACTION_PR_ARG	STA_PR_ARG, __entry->tid, __entry->ssn,			\
1198c2ecf20Sopenharmony_ci				__entry->buf_size, __entry->amsdu, __entry->timeout,	\
1208c2ecf20Sopenharmony_ci				__entry->action
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci/*
1238c2ecf20Sopenharmony_ci * Tracing for driver callbacks.
1248c2ecf20Sopenharmony_ci */
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_only_evt,
1278c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
1288c2ecf20Sopenharmony_ci	TP_ARGS(local),
1298c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1308c2ecf20Sopenharmony_ci		LOCAL_ENTRY
1318c2ecf20Sopenharmony_ci	),
1328c2ecf20Sopenharmony_ci	TP_fast_assign(
1338c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
1348c2ecf20Sopenharmony_ci	),
1358c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
1368c2ecf20Sopenharmony_ci);
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_addr_evt,
1398c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
1408c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
1418c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata),
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1448c2ecf20Sopenharmony_ci		LOCAL_ENTRY
1458c2ecf20Sopenharmony_ci		VIF_ENTRY
1468c2ecf20Sopenharmony_ci		__array(char, addr, ETH_ALEN)
1478c2ecf20Sopenharmony_ci	),
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci	TP_fast_assign(
1508c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
1518c2ecf20Sopenharmony_ci		VIF_ASSIGN;
1528c2ecf20Sopenharmony_ci		memcpy(__entry->addr, sdata->vif.addr, ETH_ALEN);
1538c2ecf20Sopenharmony_ci	),
1548c2ecf20Sopenharmony_ci
1558c2ecf20Sopenharmony_ci	TP_printk(
1568c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " addr:%pM",
1578c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
1588c2ecf20Sopenharmony_ci	)
1598c2ecf20Sopenharmony_ci);
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_u32_evt,
1628c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
1638c2ecf20Sopenharmony_ci	TP_ARGS(local, value),
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1668c2ecf20Sopenharmony_ci		LOCAL_ENTRY
1678c2ecf20Sopenharmony_ci		__field(u32, value)
1688c2ecf20Sopenharmony_ci	),
1698c2ecf20Sopenharmony_ci
1708c2ecf20Sopenharmony_ci	TP_fast_assign(
1718c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
1728c2ecf20Sopenharmony_ci		__entry->value = value;
1738c2ecf20Sopenharmony_ci	),
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci	TP_printk(
1768c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " value:%d",
1778c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->value
1788c2ecf20Sopenharmony_ci	)
1798c2ecf20Sopenharmony_ci);
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_evt,
1828c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
1838c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
1848c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata),
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1878c2ecf20Sopenharmony_ci		LOCAL_ENTRY
1888c2ecf20Sopenharmony_ci		VIF_ENTRY
1898c2ecf20Sopenharmony_ci	),
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci	TP_fast_assign(
1928c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
1938c2ecf20Sopenharmony_ci		VIF_ASSIGN;
1948c2ecf20Sopenharmony_ci	),
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ci	TP_printk(
1978c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT,
1988c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
1998c2ecf20Sopenharmony_ci	)
2008c2ecf20Sopenharmony_ci);
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_return_void,
2038c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
2048c2ecf20Sopenharmony_ci	TP_ARGS(local)
2058c2ecf20Sopenharmony_ci);
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_ciTRACE_EVENT(drv_return_int,
2088c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int ret),
2098c2ecf20Sopenharmony_ci	TP_ARGS(local, ret),
2108c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2118c2ecf20Sopenharmony_ci		LOCAL_ENTRY
2128c2ecf20Sopenharmony_ci		__field(int, ret)
2138c2ecf20Sopenharmony_ci	),
2148c2ecf20Sopenharmony_ci	TP_fast_assign(
2158c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
2168c2ecf20Sopenharmony_ci		__entry->ret = ret;
2178c2ecf20Sopenharmony_ci	),
2188c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret)
2198c2ecf20Sopenharmony_ci);
2208c2ecf20Sopenharmony_ci
2218c2ecf20Sopenharmony_ciTRACE_EVENT(drv_return_bool,
2228c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool ret),
2238c2ecf20Sopenharmony_ci	TP_ARGS(local, ret),
2248c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2258c2ecf20Sopenharmony_ci		LOCAL_ENTRY
2268c2ecf20Sopenharmony_ci		__field(bool, ret)
2278c2ecf20Sopenharmony_ci	),
2288c2ecf20Sopenharmony_ci	TP_fast_assign(
2298c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
2308c2ecf20Sopenharmony_ci		__entry->ret = ret;
2318c2ecf20Sopenharmony_ci	),
2328c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ?
2338c2ecf20Sopenharmony_ci		  "true" : "false")
2348c2ecf20Sopenharmony_ci);
2358c2ecf20Sopenharmony_ci
2368c2ecf20Sopenharmony_ciTRACE_EVENT(drv_return_u32,
2378c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 ret),
2388c2ecf20Sopenharmony_ci	TP_ARGS(local, ret),
2398c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2408c2ecf20Sopenharmony_ci		LOCAL_ENTRY
2418c2ecf20Sopenharmony_ci		__field(u32, ret)
2428c2ecf20Sopenharmony_ci	),
2438c2ecf20Sopenharmony_ci	TP_fast_assign(
2448c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
2458c2ecf20Sopenharmony_ci		__entry->ret = ret;
2468c2ecf20Sopenharmony_ci	),
2478c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %u", LOCAL_PR_ARG, __entry->ret)
2488c2ecf20Sopenharmony_ci);
2498c2ecf20Sopenharmony_ci
2508c2ecf20Sopenharmony_ciTRACE_EVENT(drv_return_u64,
2518c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u64 ret),
2528c2ecf20Sopenharmony_ci	TP_ARGS(local, ret),
2538c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2548c2ecf20Sopenharmony_ci		LOCAL_ENTRY
2558c2ecf20Sopenharmony_ci		__field(u64, ret)
2568c2ecf20Sopenharmony_ci	),
2578c2ecf20Sopenharmony_ci	TP_fast_assign(
2588c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
2598c2ecf20Sopenharmony_ci		__entry->ret = ret;
2608c2ecf20Sopenharmony_ci	),
2618c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret)
2628c2ecf20Sopenharmony_ci);
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_start,
2658c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
2668c2ecf20Sopenharmony_ci	TP_ARGS(local)
2678c2ecf20Sopenharmony_ci);
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_get_et_strings,
2708c2ecf20Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local, u32 sset),
2718c2ecf20Sopenharmony_ci	     TP_ARGS(local, sset)
2728c2ecf20Sopenharmony_ci);
2738c2ecf20Sopenharmony_ci
2748c2ecf20Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_get_et_sset_count,
2758c2ecf20Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local, u32 sset),
2768c2ecf20Sopenharmony_ci	     TP_ARGS(local, sset)
2778c2ecf20Sopenharmony_ci);
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_get_et_stats,
2808c2ecf20Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local),
2818c2ecf20Sopenharmony_ci	     TP_ARGS(local)
2828c2ecf20Sopenharmony_ci);
2838c2ecf20Sopenharmony_ci
2848c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_suspend,
2858c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
2868c2ecf20Sopenharmony_ci	TP_ARGS(local)
2878c2ecf20Sopenharmony_ci);
2888c2ecf20Sopenharmony_ci
2898c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_resume,
2908c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
2918c2ecf20Sopenharmony_ci	TP_ARGS(local)
2928c2ecf20Sopenharmony_ci);
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_wakeup,
2958c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool enabled),
2968c2ecf20Sopenharmony_ci	TP_ARGS(local, enabled),
2978c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2988c2ecf20Sopenharmony_ci		LOCAL_ENTRY
2998c2ecf20Sopenharmony_ci		__field(bool, enabled)
3008c2ecf20Sopenharmony_ci	),
3018c2ecf20Sopenharmony_ci	TP_fast_assign(
3028c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
3038c2ecf20Sopenharmony_ci		__entry->enabled = enabled;
3048c2ecf20Sopenharmony_ci	),
3058c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled)
3068c2ecf20Sopenharmony_ci);
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_stop,
3098c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
3108c2ecf20Sopenharmony_ci	TP_ARGS(local)
3118c2ecf20Sopenharmony_ci);
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_add_interface,
3148c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
3158c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
3168c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
3178c2ecf20Sopenharmony_ci);
3188c2ecf20Sopenharmony_ci
3198c2ecf20Sopenharmony_ciTRACE_EVENT(drv_change_interface,
3208c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
3218c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
3228c2ecf20Sopenharmony_ci		 enum nl80211_iftype type, bool p2p),
3238c2ecf20Sopenharmony_ci
3248c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, type, p2p),
3258c2ecf20Sopenharmony_ci
3268c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3278c2ecf20Sopenharmony_ci		LOCAL_ENTRY
3288c2ecf20Sopenharmony_ci		VIF_ENTRY
3298c2ecf20Sopenharmony_ci		__field(u32, new_type)
3308c2ecf20Sopenharmony_ci		__field(bool, new_p2p)
3318c2ecf20Sopenharmony_ci	),
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_ci	TP_fast_assign(
3348c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
3358c2ecf20Sopenharmony_ci		VIF_ASSIGN;
3368c2ecf20Sopenharmony_ci		__entry->new_type = type;
3378c2ecf20Sopenharmony_ci		__entry->new_p2p = p2p;
3388c2ecf20Sopenharmony_ci	),
3398c2ecf20Sopenharmony_ci
3408c2ecf20Sopenharmony_ci	TP_printk(
3418c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " new type:%d%s",
3428c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type,
3438c2ecf20Sopenharmony_ci		__entry->new_p2p ? "/p2p" : ""
3448c2ecf20Sopenharmony_ci	)
3458c2ecf20Sopenharmony_ci);
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface,
3488c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
3498c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
3508c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
3518c2ecf20Sopenharmony_ci);
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ciTRACE_EVENT(drv_config,
3548c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
3558c2ecf20Sopenharmony_ci		 u32 changed),
3568c2ecf20Sopenharmony_ci
3578c2ecf20Sopenharmony_ci	TP_ARGS(local, changed),
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3608c2ecf20Sopenharmony_ci		LOCAL_ENTRY
3618c2ecf20Sopenharmony_ci		__field(u32, changed)
3628c2ecf20Sopenharmony_ci		__field(u32, flags)
3638c2ecf20Sopenharmony_ci		__field(int, power_level)
3648c2ecf20Sopenharmony_ci		__field(int, dynamic_ps_timeout)
3658c2ecf20Sopenharmony_ci		__field(u16, listen_interval)
3668c2ecf20Sopenharmony_ci		__field(u8, long_frame_max_tx_count)
3678c2ecf20Sopenharmony_ci		__field(u8, short_frame_max_tx_count)
3688c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
3698c2ecf20Sopenharmony_ci		__field(int, smps)
3708c2ecf20Sopenharmony_ci	),
3718c2ecf20Sopenharmony_ci
3728c2ecf20Sopenharmony_ci	TP_fast_assign(
3738c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
3748c2ecf20Sopenharmony_ci		__entry->changed = changed;
3758c2ecf20Sopenharmony_ci		__entry->flags = local->hw.conf.flags;
3768c2ecf20Sopenharmony_ci		__entry->power_level = local->hw.conf.power_level;
3778c2ecf20Sopenharmony_ci		__entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
3788c2ecf20Sopenharmony_ci		__entry->listen_interval = local->hw.conf.listen_interval;
3798c2ecf20Sopenharmony_ci		__entry->long_frame_max_tx_count =
3808c2ecf20Sopenharmony_ci			local->hw.conf.long_frame_max_tx_count;
3818c2ecf20Sopenharmony_ci		__entry->short_frame_max_tx_count =
3828c2ecf20Sopenharmony_ci			local->hw.conf.short_frame_max_tx_count;
3838c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(&local->hw.conf.chandef)
3848c2ecf20Sopenharmony_ci		__entry->smps = local->hw.conf.smps_mode;
3858c2ecf20Sopenharmony_ci	),
3868c2ecf20Sopenharmony_ci
3878c2ecf20Sopenharmony_ci	TP_printk(
3888c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " ch:%#x" CHANDEF_PR_FMT,
3898c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG
3908c2ecf20Sopenharmony_ci	)
3918c2ecf20Sopenharmony_ci);
3928c2ecf20Sopenharmony_ci
3938c2ecf20Sopenharmony_ciTRACE_EVENT(drv_bss_info_changed,
3948c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
3958c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
3968c2ecf20Sopenharmony_ci		 struct ieee80211_bss_conf *info,
3978c2ecf20Sopenharmony_ci		 u32 changed),
3988c2ecf20Sopenharmony_ci
3998c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, info, changed),
4008c2ecf20Sopenharmony_ci
4018c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
4028c2ecf20Sopenharmony_ci		LOCAL_ENTRY
4038c2ecf20Sopenharmony_ci		VIF_ENTRY
4048c2ecf20Sopenharmony_ci		__field(u32, changed)
4058c2ecf20Sopenharmony_ci		__field(bool, assoc)
4068c2ecf20Sopenharmony_ci		__field(bool, ibss_joined)
4078c2ecf20Sopenharmony_ci		__field(bool, ibss_creator)
4088c2ecf20Sopenharmony_ci		__field(u16, aid)
4098c2ecf20Sopenharmony_ci		__field(bool, cts)
4108c2ecf20Sopenharmony_ci		__field(bool, shortpre)
4118c2ecf20Sopenharmony_ci		__field(bool, shortslot)
4128c2ecf20Sopenharmony_ci		__field(bool, enable_beacon)
4138c2ecf20Sopenharmony_ci		__field(u8, dtimper)
4148c2ecf20Sopenharmony_ci		__field(u16, bcnint)
4158c2ecf20Sopenharmony_ci		__field(u16, assoc_cap)
4168c2ecf20Sopenharmony_ci		__field(u64, sync_tsf)
4178c2ecf20Sopenharmony_ci		__field(u32, sync_device_ts)
4188c2ecf20Sopenharmony_ci		__field(u8, sync_dtim_count)
4198c2ecf20Sopenharmony_ci		__field(u32, basic_rates)
4208c2ecf20Sopenharmony_ci		__array(int, mcast_rate, NUM_NL80211_BANDS)
4218c2ecf20Sopenharmony_ci		__field(u16, ht_operation_mode)
4228c2ecf20Sopenharmony_ci		__field(s32, cqm_rssi_thold)
4238c2ecf20Sopenharmony_ci		__field(s32, cqm_rssi_hyst)
4248c2ecf20Sopenharmony_ci		__field(u32, channel_width)
4258c2ecf20Sopenharmony_ci		__field(u32, channel_cfreq1)
4268c2ecf20Sopenharmony_ci		__field(u32, channel_cfreq1_offset)
4278c2ecf20Sopenharmony_ci		__dynamic_array(u32, arp_addr_list,
4288c2ecf20Sopenharmony_ci				info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
4298c2ecf20Sopenharmony_ci					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
4308c2ecf20Sopenharmony_ci					info->arp_addr_cnt)
4318c2ecf20Sopenharmony_ci		__field(int, arp_addr_cnt)
4328c2ecf20Sopenharmony_ci		__field(bool, qos)
4338c2ecf20Sopenharmony_ci		__field(bool, idle)
4348c2ecf20Sopenharmony_ci		__field(bool, ps)
4358c2ecf20Sopenharmony_ci		__dynamic_array(u8, ssid, info->ssid_len)
4368c2ecf20Sopenharmony_ci		__field(bool, hidden_ssid)
4378c2ecf20Sopenharmony_ci		__field(int, txpower)
4388c2ecf20Sopenharmony_ci		__field(u8, p2p_oppps_ctwindow)
4398c2ecf20Sopenharmony_ci	),
4408c2ecf20Sopenharmony_ci
4418c2ecf20Sopenharmony_ci	TP_fast_assign(
4428c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
4438c2ecf20Sopenharmony_ci		VIF_ASSIGN;
4448c2ecf20Sopenharmony_ci		__entry->changed = changed;
4458c2ecf20Sopenharmony_ci		__entry->aid = info->aid;
4468c2ecf20Sopenharmony_ci		__entry->assoc = info->assoc;
4478c2ecf20Sopenharmony_ci		__entry->ibss_joined = info->ibss_joined;
4488c2ecf20Sopenharmony_ci		__entry->ibss_creator = info->ibss_creator;
4498c2ecf20Sopenharmony_ci		__entry->shortpre = info->use_short_preamble;
4508c2ecf20Sopenharmony_ci		__entry->cts = info->use_cts_prot;
4518c2ecf20Sopenharmony_ci		__entry->shortslot = info->use_short_slot;
4528c2ecf20Sopenharmony_ci		__entry->enable_beacon = info->enable_beacon;
4538c2ecf20Sopenharmony_ci		__entry->dtimper = info->dtim_period;
4548c2ecf20Sopenharmony_ci		__entry->bcnint = info->beacon_int;
4558c2ecf20Sopenharmony_ci		__entry->assoc_cap = info->assoc_capability;
4568c2ecf20Sopenharmony_ci		__entry->sync_tsf = info->sync_tsf;
4578c2ecf20Sopenharmony_ci		__entry->sync_device_ts = info->sync_device_ts;
4588c2ecf20Sopenharmony_ci		__entry->sync_dtim_count = info->sync_dtim_count;
4598c2ecf20Sopenharmony_ci		__entry->basic_rates = info->basic_rates;
4608c2ecf20Sopenharmony_ci		memcpy(__entry->mcast_rate, info->mcast_rate,
4618c2ecf20Sopenharmony_ci		       sizeof(__entry->mcast_rate));
4628c2ecf20Sopenharmony_ci		__entry->ht_operation_mode = info->ht_operation_mode;
4638c2ecf20Sopenharmony_ci		__entry->cqm_rssi_thold = info->cqm_rssi_thold;
4648c2ecf20Sopenharmony_ci		__entry->cqm_rssi_hyst = info->cqm_rssi_hyst;
4658c2ecf20Sopenharmony_ci		__entry->channel_width = info->chandef.width;
4668c2ecf20Sopenharmony_ci		__entry->channel_cfreq1 = info->chandef.center_freq1;
4678c2ecf20Sopenharmony_ci		__entry->channel_cfreq1_offset = info->chandef.freq1_offset;
4688c2ecf20Sopenharmony_ci		__entry->arp_addr_cnt = info->arp_addr_cnt;
4698c2ecf20Sopenharmony_ci		memcpy(__get_dynamic_array(arp_addr_list), info->arp_addr_list,
4708c2ecf20Sopenharmony_ci		       sizeof(u32) * (info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
4718c2ecf20Sopenharmony_ci					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
4728c2ecf20Sopenharmony_ci					info->arp_addr_cnt));
4738c2ecf20Sopenharmony_ci		__entry->qos = info->qos;
4748c2ecf20Sopenharmony_ci		__entry->idle = info->idle;
4758c2ecf20Sopenharmony_ci		__entry->ps = info->ps;
4768c2ecf20Sopenharmony_ci		memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len);
4778c2ecf20Sopenharmony_ci		__entry->hidden_ssid = info->hidden_ssid;
4788c2ecf20Sopenharmony_ci		__entry->txpower = info->txpower;
4798c2ecf20Sopenharmony_ci		__entry->p2p_oppps_ctwindow = info->p2p_noa_attr.oppps_ctwindow;
4808c2ecf20Sopenharmony_ci	),
4818c2ecf20Sopenharmony_ci
4828c2ecf20Sopenharmony_ci	TP_printk(
4838c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " changed:%#x",
4848c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
4858c2ecf20Sopenharmony_ci	)
4868c2ecf20Sopenharmony_ci);
4878c2ecf20Sopenharmony_ci
4888c2ecf20Sopenharmony_ciTRACE_EVENT(drv_prepare_multicast,
4898c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int mc_count),
4908c2ecf20Sopenharmony_ci
4918c2ecf20Sopenharmony_ci	TP_ARGS(local, mc_count),
4928c2ecf20Sopenharmony_ci
4938c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
4948c2ecf20Sopenharmony_ci		LOCAL_ENTRY
4958c2ecf20Sopenharmony_ci		__field(int, mc_count)
4968c2ecf20Sopenharmony_ci	),
4978c2ecf20Sopenharmony_ci
4988c2ecf20Sopenharmony_ci	TP_fast_assign(
4998c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
5008c2ecf20Sopenharmony_ci		__entry->mc_count = mc_count;
5018c2ecf20Sopenharmony_ci	),
5028c2ecf20Sopenharmony_ci
5038c2ecf20Sopenharmony_ci	TP_printk(
5048c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " prepare mc (%d)",
5058c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->mc_count
5068c2ecf20Sopenharmony_ci	)
5078c2ecf20Sopenharmony_ci);
5088c2ecf20Sopenharmony_ci
5098c2ecf20Sopenharmony_ciTRACE_EVENT(drv_configure_filter,
5108c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
5118c2ecf20Sopenharmony_ci		 unsigned int changed_flags,
5128c2ecf20Sopenharmony_ci		 unsigned int *total_flags,
5138c2ecf20Sopenharmony_ci		 u64 multicast),
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_ci	TP_ARGS(local, changed_flags, total_flags, multicast),
5168c2ecf20Sopenharmony_ci
5178c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
5188c2ecf20Sopenharmony_ci		LOCAL_ENTRY
5198c2ecf20Sopenharmony_ci		__field(unsigned int, changed)
5208c2ecf20Sopenharmony_ci		__field(unsigned int, total)
5218c2ecf20Sopenharmony_ci		__field(u64, multicast)
5228c2ecf20Sopenharmony_ci	),
5238c2ecf20Sopenharmony_ci
5248c2ecf20Sopenharmony_ci	TP_fast_assign(
5258c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
5268c2ecf20Sopenharmony_ci		__entry->changed = changed_flags;
5278c2ecf20Sopenharmony_ci		__entry->total = *total_flags;
5288c2ecf20Sopenharmony_ci		__entry->multicast = multicast;
5298c2ecf20Sopenharmony_ci	),
5308c2ecf20Sopenharmony_ci
5318c2ecf20Sopenharmony_ci	TP_printk(
5328c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " changed:%#x total:%#x",
5338c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->changed, __entry->total
5348c2ecf20Sopenharmony_ci	)
5358c2ecf20Sopenharmony_ci);
5368c2ecf20Sopenharmony_ci
5378c2ecf20Sopenharmony_ciTRACE_EVENT(drv_config_iface_filter,
5388c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
5398c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
5408c2ecf20Sopenharmony_ci		 unsigned int filter_flags,
5418c2ecf20Sopenharmony_ci		 unsigned int changed_flags),
5428c2ecf20Sopenharmony_ci
5438c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, filter_flags, changed_flags),
5448c2ecf20Sopenharmony_ci
5458c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
5468c2ecf20Sopenharmony_ci		LOCAL_ENTRY
5478c2ecf20Sopenharmony_ci		VIF_ENTRY
5488c2ecf20Sopenharmony_ci		__field(unsigned int, filter_flags)
5498c2ecf20Sopenharmony_ci		__field(unsigned int, changed_flags)
5508c2ecf20Sopenharmony_ci	),
5518c2ecf20Sopenharmony_ci
5528c2ecf20Sopenharmony_ci	TP_fast_assign(
5538c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
5548c2ecf20Sopenharmony_ci		VIF_ASSIGN;
5558c2ecf20Sopenharmony_ci		__entry->filter_flags = filter_flags;
5568c2ecf20Sopenharmony_ci		__entry->changed_flags = changed_flags;
5578c2ecf20Sopenharmony_ci	),
5588c2ecf20Sopenharmony_ci
5598c2ecf20Sopenharmony_ci	TP_printk(
5608c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
5618c2ecf20Sopenharmony_ci		" filter_flags: %#x changed_flags: %#x",
5628c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->filter_flags,
5638c2ecf20Sopenharmony_ci		__entry->changed_flags
5648c2ecf20Sopenharmony_ci	)
5658c2ecf20Sopenharmony_ci);
5668c2ecf20Sopenharmony_ci
5678c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_tim,
5688c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
5698c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta, bool set),
5708c2ecf20Sopenharmony_ci
5718c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, set),
5728c2ecf20Sopenharmony_ci
5738c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
5748c2ecf20Sopenharmony_ci		LOCAL_ENTRY
5758c2ecf20Sopenharmony_ci		STA_ENTRY
5768c2ecf20Sopenharmony_ci		__field(bool, set)
5778c2ecf20Sopenharmony_ci	),
5788c2ecf20Sopenharmony_ci
5798c2ecf20Sopenharmony_ci	TP_fast_assign(
5808c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
5818c2ecf20Sopenharmony_ci		STA_ASSIGN;
5828c2ecf20Sopenharmony_ci		__entry->set = set;
5838c2ecf20Sopenharmony_ci	),
5848c2ecf20Sopenharmony_ci
5858c2ecf20Sopenharmony_ci	TP_printk(
5868c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " set:%d",
5878c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->set
5888c2ecf20Sopenharmony_ci	)
5898c2ecf20Sopenharmony_ci);
5908c2ecf20Sopenharmony_ci
5918c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_key,
5928c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
5938c2ecf20Sopenharmony_ci		 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
5948c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
5958c2ecf20Sopenharmony_ci		 struct ieee80211_key_conf *key),
5968c2ecf20Sopenharmony_ci
5978c2ecf20Sopenharmony_ci	TP_ARGS(local, cmd, sdata, sta, key),
5988c2ecf20Sopenharmony_ci
5998c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6008c2ecf20Sopenharmony_ci		LOCAL_ENTRY
6018c2ecf20Sopenharmony_ci		VIF_ENTRY
6028c2ecf20Sopenharmony_ci		STA_ENTRY
6038c2ecf20Sopenharmony_ci		KEY_ENTRY
6048c2ecf20Sopenharmony_ci	),
6058c2ecf20Sopenharmony_ci
6068c2ecf20Sopenharmony_ci	TP_fast_assign(
6078c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
6088c2ecf20Sopenharmony_ci		VIF_ASSIGN;
6098c2ecf20Sopenharmony_ci		STA_ASSIGN;
6108c2ecf20Sopenharmony_ci		KEY_ASSIGN(key);
6118c2ecf20Sopenharmony_ci	),
6128c2ecf20Sopenharmony_ci
6138c2ecf20Sopenharmony_ci	TP_printk(
6148c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT KEY_PR_FMT,
6158c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, KEY_PR_ARG
6168c2ecf20Sopenharmony_ci	)
6178c2ecf20Sopenharmony_ci);
6188c2ecf20Sopenharmony_ci
6198c2ecf20Sopenharmony_ciTRACE_EVENT(drv_update_tkip_key,
6208c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6218c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
6228c2ecf20Sopenharmony_ci		 struct ieee80211_key_conf *conf,
6238c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta, u32 iv32),
6248c2ecf20Sopenharmony_ci
6258c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, conf, sta, iv32),
6268c2ecf20Sopenharmony_ci
6278c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6288c2ecf20Sopenharmony_ci		LOCAL_ENTRY
6298c2ecf20Sopenharmony_ci		VIF_ENTRY
6308c2ecf20Sopenharmony_ci		STA_ENTRY
6318c2ecf20Sopenharmony_ci		__field(u32, iv32)
6328c2ecf20Sopenharmony_ci	),
6338c2ecf20Sopenharmony_ci
6348c2ecf20Sopenharmony_ci	TP_fast_assign(
6358c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
6368c2ecf20Sopenharmony_ci		VIF_ASSIGN;
6378c2ecf20Sopenharmony_ci		STA_ASSIGN;
6388c2ecf20Sopenharmony_ci		__entry->iv32 = iv32;
6398c2ecf20Sopenharmony_ci	),
6408c2ecf20Sopenharmony_ci
6418c2ecf20Sopenharmony_ci	TP_printk(
6428c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x",
6438c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->iv32
6448c2ecf20Sopenharmony_ci	)
6458c2ecf20Sopenharmony_ci);
6468c2ecf20Sopenharmony_ci
6478c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_hw_scan,
6488c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6498c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
6508c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
6518c2ecf20Sopenharmony_ci);
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan,
6548c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6558c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
6568c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
6578c2ecf20Sopenharmony_ci);
6588c2ecf20Sopenharmony_ci
6598c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sched_scan_start,
6608c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6618c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
6628c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
6638c2ecf20Sopenharmony_ci);
6648c2ecf20Sopenharmony_ci
6658c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop,
6668c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6678c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
6688c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
6698c2ecf20Sopenharmony_ci);
6708c2ecf20Sopenharmony_ci
6718c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sw_scan_start,
6728c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6738c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
6748c2ecf20Sopenharmony_ci		 const u8 *mac_addr),
6758c2ecf20Sopenharmony_ci
6768c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, mac_addr),
6778c2ecf20Sopenharmony_ci
6788c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6798c2ecf20Sopenharmony_ci		LOCAL_ENTRY
6808c2ecf20Sopenharmony_ci		VIF_ENTRY
6818c2ecf20Sopenharmony_ci		__array(char, mac_addr, ETH_ALEN)
6828c2ecf20Sopenharmony_ci	),
6838c2ecf20Sopenharmony_ci
6848c2ecf20Sopenharmony_ci	TP_fast_assign(
6858c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
6868c2ecf20Sopenharmony_ci		VIF_ASSIGN;
6878c2ecf20Sopenharmony_ci		memcpy(__entry->mac_addr, mac_addr, ETH_ALEN);
6888c2ecf20Sopenharmony_ci	),
6898c2ecf20Sopenharmony_ci
6908c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT ", addr:%pM",
6918c2ecf20Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG, __entry->mac_addr)
6928c2ecf20Sopenharmony_ci);
6938c2ecf20Sopenharmony_ci
6948c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sw_scan_complete,
6958c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
6968c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
6978c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
6988c2ecf20Sopenharmony_ci);
6998c2ecf20Sopenharmony_ci
7008c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_stats,
7018c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
7028c2ecf20Sopenharmony_ci		 struct ieee80211_low_level_stats *stats,
7038c2ecf20Sopenharmony_ci		 int ret),
7048c2ecf20Sopenharmony_ci
7058c2ecf20Sopenharmony_ci	TP_ARGS(local, stats, ret),
7068c2ecf20Sopenharmony_ci
7078c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7088c2ecf20Sopenharmony_ci		LOCAL_ENTRY
7098c2ecf20Sopenharmony_ci		__field(int, ret)
7108c2ecf20Sopenharmony_ci		__field(unsigned int, ackfail)
7118c2ecf20Sopenharmony_ci		__field(unsigned int, rtsfail)
7128c2ecf20Sopenharmony_ci		__field(unsigned int, fcserr)
7138c2ecf20Sopenharmony_ci		__field(unsigned int, rtssucc)
7148c2ecf20Sopenharmony_ci	),
7158c2ecf20Sopenharmony_ci
7168c2ecf20Sopenharmony_ci	TP_fast_assign(
7178c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
7188c2ecf20Sopenharmony_ci		__entry->ret = ret;
7198c2ecf20Sopenharmony_ci		__entry->ackfail = stats->dot11ACKFailureCount;
7208c2ecf20Sopenharmony_ci		__entry->rtsfail = stats->dot11RTSFailureCount;
7218c2ecf20Sopenharmony_ci		__entry->fcserr = stats->dot11FCSErrorCount;
7228c2ecf20Sopenharmony_ci		__entry->rtssucc = stats->dot11RTSSuccessCount;
7238c2ecf20Sopenharmony_ci	),
7248c2ecf20Sopenharmony_ci
7258c2ecf20Sopenharmony_ci	TP_printk(
7268c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " ret:%d",
7278c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->ret
7288c2ecf20Sopenharmony_ci	)
7298c2ecf20Sopenharmony_ci);
7308c2ecf20Sopenharmony_ci
7318c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_key_seq,
7328c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
7338c2ecf20Sopenharmony_ci		 struct ieee80211_key_conf *key),
7348c2ecf20Sopenharmony_ci
7358c2ecf20Sopenharmony_ci	TP_ARGS(local, key),
7368c2ecf20Sopenharmony_ci
7378c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7388c2ecf20Sopenharmony_ci		LOCAL_ENTRY
7398c2ecf20Sopenharmony_ci		KEY_ENTRY
7408c2ecf20Sopenharmony_ci	),
7418c2ecf20Sopenharmony_ci
7428c2ecf20Sopenharmony_ci	TP_fast_assign(
7438c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
7448c2ecf20Sopenharmony_ci		KEY_ASSIGN(key);
7458c2ecf20Sopenharmony_ci	),
7468c2ecf20Sopenharmony_ci
7478c2ecf20Sopenharmony_ci	TP_printk(
7488c2ecf20Sopenharmony_ci		LOCAL_PR_FMT KEY_PR_FMT,
7498c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, KEY_PR_ARG
7508c2ecf20Sopenharmony_ci	)
7518c2ecf20Sopenharmony_ci);
7528c2ecf20Sopenharmony_ci
7538c2ecf20Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_set_frag_threshold,
7548c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
7558c2ecf20Sopenharmony_ci	TP_ARGS(local, value)
7568c2ecf20Sopenharmony_ci);
7578c2ecf20Sopenharmony_ci
7588c2ecf20Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_set_rts_threshold,
7598c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
7608c2ecf20Sopenharmony_ci	TP_ARGS(local, value)
7618c2ecf20Sopenharmony_ci);
7628c2ecf20Sopenharmony_ci
7638c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_coverage_class,
7648c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, s16 value),
7658c2ecf20Sopenharmony_ci
7668c2ecf20Sopenharmony_ci	TP_ARGS(local, value),
7678c2ecf20Sopenharmony_ci
7688c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7698c2ecf20Sopenharmony_ci		LOCAL_ENTRY
7708c2ecf20Sopenharmony_ci		__field(s16, value)
7718c2ecf20Sopenharmony_ci	),
7728c2ecf20Sopenharmony_ci
7738c2ecf20Sopenharmony_ci	TP_fast_assign(
7748c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
7758c2ecf20Sopenharmony_ci		__entry->value = value;
7768c2ecf20Sopenharmony_ci	),
7778c2ecf20Sopenharmony_ci
7788c2ecf20Sopenharmony_ci	TP_printk(
7798c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " value:%d",
7808c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->value
7818c2ecf20Sopenharmony_ci	)
7828c2ecf20Sopenharmony_ci);
7838c2ecf20Sopenharmony_ci
7848c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sta_notify,
7858c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
7868c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
7878c2ecf20Sopenharmony_ci		 enum sta_notify_cmd cmd,
7888c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
7898c2ecf20Sopenharmony_ci
7908c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, cmd, sta),
7918c2ecf20Sopenharmony_ci
7928c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7938c2ecf20Sopenharmony_ci		LOCAL_ENTRY
7948c2ecf20Sopenharmony_ci		VIF_ENTRY
7958c2ecf20Sopenharmony_ci		STA_ENTRY
7968c2ecf20Sopenharmony_ci		__field(u32, cmd)
7978c2ecf20Sopenharmony_ci	),
7988c2ecf20Sopenharmony_ci
7998c2ecf20Sopenharmony_ci	TP_fast_assign(
8008c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
8018c2ecf20Sopenharmony_ci		VIF_ASSIGN;
8028c2ecf20Sopenharmony_ci		STA_ASSIGN;
8038c2ecf20Sopenharmony_ci		__entry->cmd = cmd;
8048c2ecf20Sopenharmony_ci	),
8058c2ecf20Sopenharmony_ci
8068c2ecf20Sopenharmony_ci	TP_printk(
8078c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " cmd:%d",
8088c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd
8098c2ecf20Sopenharmony_ci	)
8108c2ecf20Sopenharmony_ci);
8118c2ecf20Sopenharmony_ci
8128c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sta_state,
8138c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
8148c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
8158c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
8168c2ecf20Sopenharmony_ci		 enum ieee80211_sta_state old_state,
8178c2ecf20Sopenharmony_ci		 enum ieee80211_sta_state new_state),
8188c2ecf20Sopenharmony_ci
8198c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta, old_state, new_state),
8208c2ecf20Sopenharmony_ci
8218c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8228c2ecf20Sopenharmony_ci		LOCAL_ENTRY
8238c2ecf20Sopenharmony_ci		VIF_ENTRY
8248c2ecf20Sopenharmony_ci		STA_ENTRY
8258c2ecf20Sopenharmony_ci		__field(u32, old_state)
8268c2ecf20Sopenharmony_ci		__field(u32, new_state)
8278c2ecf20Sopenharmony_ci	),
8288c2ecf20Sopenharmony_ci
8298c2ecf20Sopenharmony_ci	TP_fast_assign(
8308c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
8318c2ecf20Sopenharmony_ci		VIF_ASSIGN;
8328c2ecf20Sopenharmony_ci		STA_ASSIGN;
8338c2ecf20Sopenharmony_ci		__entry->old_state = old_state;
8348c2ecf20Sopenharmony_ci		__entry->new_state = new_state;
8358c2ecf20Sopenharmony_ci	),
8368c2ecf20Sopenharmony_ci
8378c2ecf20Sopenharmony_ci	TP_printk(
8388c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " state: %d->%d",
8398c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
8408c2ecf20Sopenharmony_ci		__entry->old_state, __entry->new_state
8418c2ecf20Sopenharmony_ci	)
8428c2ecf20Sopenharmony_ci);
8438c2ecf20Sopenharmony_ci
8448c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sta_set_txpwr,
8458c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
8468c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
8478c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
8488c2ecf20Sopenharmony_ci
8498c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta),
8508c2ecf20Sopenharmony_ci
8518c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8528c2ecf20Sopenharmony_ci		LOCAL_ENTRY
8538c2ecf20Sopenharmony_ci		VIF_ENTRY
8548c2ecf20Sopenharmony_ci		STA_ENTRY
8558c2ecf20Sopenharmony_ci		__field(s16, txpwr)
8568c2ecf20Sopenharmony_ci		__field(u8, type)
8578c2ecf20Sopenharmony_ci	),
8588c2ecf20Sopenharmony_ci
8598c2ecf20Sopenharmony_ci	TP_fast_assign(
8608c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
8618c2ecf20Sopenharmony_ci		VIF_ASSIGN;
8628c2ecf20Sopenharmony_ci		STA_ASSIGN;
8638c2ecf20Sopenharmony_ci		__entry->txpwr = sta->txpwr.power;
8648c2ecf20Sopenharmony_ci		__entry->type = sta->txpwr.type;
8658c2ecf20Sopenharmony_ci	),
8668c2ecf20Sopenharmony_ci
8678c2ecf20Sopenharmony_ci	TP_printk(
8688c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " txpwr: %d type %d",
8698c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
8708c2ecf20Sopenharmony_ci		__entry->txpwr,  __entry->type
8718c2ecf20Sopenharmony_ci	)
8728c2ecf20Sopenharmony_ci);
8738c2ecf20Sopenharmony_ci
8748c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sta_rc_update,
8758c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
8768c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
8778c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
8788c2ecf20Sopenharmony_ci		 u32 changed),
8798c2ecf20Sopenharmony_ci
8808c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta, changed),
8818c2ecf20Sopenharmony_ci
8828c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8838c2ecf20Sopenharmony_ci		LOCAL_ENTRY
8848c2ecf20Sopenharmony_ci		VIF_ENTRY
8858c2ecf20Sopenharmony_ci		STA_ENTRY
8868c2ecf20Sopenharmony_ci		__field(u32, changed)
8878c2ecf20Sopenharmony_ci	),
8888c2ecf20Sopenharmony_ci
8898c2ecf20Sopenharmony_ci	TP_fast_assign(
8908c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
8918c2ecf20Sopenharmony_ci		VIF_ASSIGN;
8928c2ecf20Sopenharmony_ci		STA_ASSIGN;
8938c2ecf20Sopenharmony_ci		__entry->changed = changed;
8948c2ecf20Sopenharmony_ci	),
8958c2ecf20Sopenharmony_ci
8968c2ecf20Sopenharmony_ci	TP_printk(
8978c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " changed: 0x%x",
8988c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed
8998c2ecf20Sopenharmony_ci	)
9008c2ecf20Sopenharmony_ci);
9018c2ecf20Sopenharmony_ci
9028c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(sta_event,
9038c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9048c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9058c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9068c2ecf20Sopenharmony_ci
9078c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta),
9088c2ecf20Sopenharmony_ci
9098c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
9108c2ecf20Sopenharmony_ci		LOCAL_ENTRY
9118c2ecf20Sopenharmony_ci		VIF_ENTRY
9128c2ecf20Sopenharmony_ci		STA_ENTRY
9138c2ecf20Sopenharmony_ci	),
9148c2ecf20Sopenharmony_ci
9158c2ecf20Sopenharmony_ci	TP_fast_assign(
9168c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
9178c2ecf20Sopenharmony_ci		VIF_ASSIGN;
9188c2ecf20Sopenharmony_ci		STA_ASSIGN;
9198c2ecf20Sopenharmony_ci	),
9208c2ecf20Sopenharmony_ci
9218c2ecf20Sopenharmony_ci	TP_printk(
9228c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
9238c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
9248c2ecf20Sopenharmony_ci	)
9258c2ecf20Sopenharmony_ci);
9268c2ecf20Sopenharmony_ci
9278c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_statistics,
9288c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9298c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9308c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9318c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9328c2ecf20Sopenharmony_ci);
9338c2ecf20Sopenharmony_ci
9348c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_add,
9358c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9368c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9378c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9388c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9398c2ecf20Sopenharmony_ci);
9408c2ecf20Sopenharmony_ci
9418c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_remove,
9428c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9438c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9448c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9458c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9468c2ecf20Sopenharmony_ci);
9478c2ecf20Sopenharmony_ci
9488c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_pre_rcu_remove,
9498c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9508c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9518c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9528c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9538c2ecf20Sopenharmony_ci);
9548c2ecf20Sopenharmony_ci
9558c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sync_rx_queues,
9568c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9578c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9588c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9598c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9608c2ecf20Sopenharmony_ci);
9618c2ecf20Sopenharmony_ci
9628c2ecf20Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_rate_tbl_update,
9638c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9648c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9658c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
9668c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta)
9678c2ecf20Sopenharmony_ci);
9688c2ecf20Sopenharmony_ci
9698c2ecf20Sopenharmony_ciTRACE_EVENT(drv_conf_tx,
9708c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
9718c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
9728c2ecf20Sopenharmony_ci		 u16 ac, const struct ieee80211_tx_queue_params *params),
9738c2ecf20Sopenharmony_ci
9748c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ac, params),
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
9778c2ecf20Sopenharmony_ci		LOCAL_ENTRY
9788c2ecf20Sopenharmony_ci		VIF_ENTRY
9798c2ecf20Sopenharmony_ci		__field(u16, ac)
9808c2ecf20Sopenharmony_ci		__field(u16, txop)
9818c2ecf20Sopenharmony_ci		__field(u16, cw_min)
9828c2ecf20Sopenharmony_ci		__field(u16, cw_max)
9838c2ecf20Sopenharmony_ci		__field(u8, aifs)
9848c2ecf20Sopenharmony_ci		__field(bool, uapsd)
9858c2ecf20Sopenharmony_ci	),
9868c2ecf20Sopenharmony_ci
9878c2ecf20Sopenharmony_ci	TP_fast_assign(
9888c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
9898c2ecf20Sopenharmony_ci		VIF_ASSIGN;
9908c2ecf20Sopenharmony_ci		__entry->ac = ac;
9918c2ecf20Sopenharmony_ci		__entry->txop = params->txop;
9928c2ecf20Sopenharmony_ci		__entry->cw_max = params->cw_max;
9938c2ecf20Sopenharmony_ci		__entry->cw_min = params->cw_min;
9948c2ecf20Sopenharmony_ci		__entry->aifs = params->aifs;
9958c2ecf20Sopenharmony_ci		__entry->uapsd = params->uapsd;
9968c2ecf20Sopenharmony_ci	),
9978c2ecf20Sopenharmony_ci
9988c2ecf20Sopenharmony_ci	TP_printk(
9998c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " AC:%d",
10008c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->ac
10018c2ecf20Sopenharmony_ci	)
10028c2ecf20Sopenharmony_ci);
10038c2ecf20Sopenharmony_ci
10048c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_get_tsf,
10058c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
10068c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
10078c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
10088c2ecf20Sopenharmony_ci);
10098c2ecf20Sopenharmony_ci
10108c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_tsf,
10118c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
10128c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
10138c2ecf20Sopenharmony_ci		 u64 tsf),
10148c2ecf20Sopenharmony_ci
10158c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, tsf),
10168c2ecf20Sopenharmony_ci
10178c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
10188c2ecf20Sopenharmony_ci		LOCAL_ENTRY
10198c2ecf20Sopenharmony_ci		VIF_ENTRY
10208c2ecf20Sopenharmony_ci		__field(u64, tsf)
10218c2ecf20Sopenharmony_ci	),
10228c2ecf20Sopenharmony_ci
10238c2ecf20Sopenharmony_ci	TP_fast_assign(
10248c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
10258c2ecf20Sopenharmony_ci		VIF_ASSIGN;
10268c2ecf20Sopenharmony_ci		__entry->tsf = tsf;
10278c2ecf20Sopenharmony_ci	),
10288c2ecf20Sopenharmony_ci
10298c2ecf20Sopenharmony_ci	TP_printk(
10308c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " tsf:%llu",
10318c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf
10328c2ecf20Sopenharmony_ci	)
10338c2ecf20Sopenharmony_ci);
10348c2ecf20Sopenharmony_ci
10358c2ecf20Sopenharmony_ciTRACE_EVENT(drv_offset_tsf,
10368c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
10378c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
10388c2ecf20Sopenharmony_ci		 s64 offset),
10398c2ecf20Sopenharmony_ci
10408c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, offset),
10418c2ecf20Sopenharmony_ci
10428c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
10438c2ecf20Sopenharmony_ci		LOCAL_ENTRY
10448c2ecf20Sopenharmony_ci		VIF_ENTRY
10458c2ecf20Sopenharmony_ci		__field(s64, tsf_offset)
10468c2ecf20Sopenharmony_ci	),
10478c2ecf20Sopenharmony_ci
10488c2ecf20Sopenharmony_ci	TP_fast_assign(
10498c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
10508c2ecf20Sopenharmony_ci		VIF_ASSIGN;
10518c2ecf20Sopenharmony_ci		__entry->tsf_offset = offset;
10528c2ecf20Sopenharmony_ci	),
10538c2ecf20Sopenharmony_ci
10548c2ecf20Sopenharmony_ci	TP_printk(
10558c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " tsf offset:%lld",
10568c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG,
10578c2ecf20Sopenharmony_ci		(unsigned long long)__entry->tsf_offset
10588c2ecf20Sopenharmony_ci	)
10598c2ecf20Sopenharmony_ci);
10608c2ecf20Sopenharmony_ci
10618c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_reset_tsf,
10628c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
10638c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
10648c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
10658c2ecf20Sopenharmony_ci);
10668c2ecf20Sopenharmony_ci
10678c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_tx_last_beacon,
10688c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
10698c2ecf20Sopenharmony_ci	TP_ARGS(local)
10708c2ecf20Sopenharmony_ci);
10718c2ecf20Sopenharmony_ci
10728c2ecf20Sopenharmony_ciTRACE_EVENT(drv_ampdu_action,
10738c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
10748c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
10758c2ecf20Sopenharmony_ci		 struct ieee80211_ampdu_params *params),
10768c2ecf20Sopenharmony_ci
10778c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, params),
10788c2ecf20Sopenharmony_ci
10798c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
10808c2ecf20Sopenharmony_ci		LOCAL_ENTRY
10818c2ecf20Sopenharmony_ci		VIF_ENTRY
10828c2ecf20Sopenharmony_ci		AMPDU_ACTION_ENTRY
10838c2ecf20Sopenharmony_ci	),
10848c2ecf20Sopenharmony_ci
10858c2ecf20Sopenharmony_ci	TP_fast_assign(
10868c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
10878c2ecf20Sopenharmony_ci		VIF_ASSIGN;
10888c2ecf20Sopenharmony_ci		AMPDU_ACTION_ASSIGN;
10898c2ecf20Sopenharmony_ci	),
10908c2ecf20Sopenharmony_ci
10918c2ecf20Sopenharmony_ci	TP_printk(
10928c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT AMPDU_ACTION_PR_FMT,
10938c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, AMPDU_ACTION_PR_ARG
10948c2ecf20Sopenharmony_ci	)
10958c2ecf20Sopenharmony_ci);
10968c2ecf20Sopenharmony_ci
10978c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_survey,
10988c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int _idx,
10998c2ecf20Sopenharmony_ci		 struct survey_info *survey),
11008c2ecf20Sopenharmony_ci
11018c2ecf20Sopenharmony_ci	TP_ARGS(local, _idx, survey),
11028c2ecf20Sopenharmony_ci
11038c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
11048c2ecf20Sopenharmony_ci		LOCAL_ENTRY
11058c2ecf20Sopenharmony_ci		__field(int, idx)
11068c2ecf20Sopenharmony_ci	),
11078c2ecf20Sopenharmony_ci
11088c2ecf20Sopenharmony_ci	TP_fast_assign(
11098c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
11108c2ecf20Sopenharmony_ci		__entry->idx = _idx;
11118c2ecf20Sopenharmony_ci	),
11128c2ecf20Sopenharmony_ci
11138c2ecf20Sopenharmony_ci	TP_printk(
11148c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " idx:%d",
11158c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->idx
11168c2ecf20Sopenharmony_ci	)
11178c2ecf20Sopenharmony_ci);
11188c2ecf20Sopenharmony_ci
11198c2ecf20Sopenharmony_ciTRACE_EVENT(drv_flush,
11208c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
11218c2ecf20Sopenharmony_ci		 u32 queues, bool drop),
11228c2ecf20Sopenharmony_ci
11238c2ecf20Sopenharmony_ci	TP_ARGS(local, queues, drop),
11248c2ecf20Sopenharmony_ci
11258c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
11268c2ecf20Sopenharmony_ci		LOCAL_ENTRY
11278c2ecf20Sopenharmony_ci		__field(bool, drop)
11288c2ecf20Sopenharmony_ci		__field(u32, queues)
11298c2ecf20Sopenharmony_ci	),
11308c2ecf20Sopenharmony_ci
11318c2ecf20Sopenharmony_ci	TP_fast_assign(
11328c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
11338c2ecf20Sopenharmony_ci		__entry->drop = drop;
11348c2ecf20Sopenharmony_ci		__entry->queues = queues;
11358c2ecf20Sopenharmony_ci	),
11368c2ecf20Sopenharmony_ci
11378c2ecf20Sopenharmony_ci	TP_printk(
11388c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " queues:0x%x drop:%d",
11398c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->queues, __entry->drop
11408c2ecf20Sopenharmony_ci	)
11418c2ecf20Sopenharmony_ci);
11428c2ecf20Sopenharmony_ci
11438c2ecf20Sopenharmony_ciTRACE_EVENT(drv_channel_switch,
11448c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
11458c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
11468c2ecf20Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
11478c2ecf20Sopenharmony_ci
11488c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
11498c2ecf20Sopenharmony_ci
11508c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
11518c2ecf20Sopenharmony_ci		LOCAL_ENTRY
11528c2ecf20Sopenharmony_ci		VIF_ENTRY
11538c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
11548c2ecf20Sopenharmony_ci		__field(u64, timestamp)
11558c2ecf20Sopenharmony_ci		__field(u32, device_timestamp)
11568c2ecf20Sopenharmony_ci		__field(bool, block_tx)
11578c2ecf20Sopenharmony_ci		__field(u8, count)
11588c2ecf20Sopenharmony_ci	),
11598c2ecf20Sopenharmony_ci
11608c2ecf20Sopenharmony_ci	TP_fast_assign(
11618c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
11628c2ecf20Sopenharmony_ci		VIF_ASSIGN;
11638c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
11648c2ecf20Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
11658c2ecf20Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
11668c2ecf20Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
11678c2ecf20Sopenharmony_ci		__entry->count = ch_switch->count;
11688c2ecf20Sopenharmony_ci	),
11698c2ecf20Sopenharmony_ci
11708c2ecf20Sopenharmony_ci	TP_printk(
11718c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " new " CHANDEF_PR_FMT " count:%d",
11728c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count
11738c2ecf20Sopenharmony_ci	)
11748c2ecf20Sopenharmony_ci);
11758c2ecf20Sopenharmony_ci
11768c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_antenna,
11778c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
11788c2ecf20Sopenharmony_ci
11798c2ecf20Sopenharmony_ci	TP_ARGS(local, tx_ant, rx_ant, ret),
11808c2ecf20Sopenharmony_ci
11818c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
11828c2ecf20Sopenharmony_ci		LOCAL_ENTRY
11838c2ecf20Sopenharmony_ci		__field(u32, tx_ant)
11848c2ecf20Sopenharmony_ci		__field(u32, rx_ant)
11858c2ecf20Sopenharmony_ci		__field(int, ret)
11868c2ecf20Sopenharmony_ci	),
11878c2ecf20Sopenharmony_ci
11888c2ecf20Sopenharmony_ci	TP_fast_assign(
11898c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
11908c2ecf20Sopenharmony_ci		__entry->tx_ant = tx_ant;
11918c2ecf20Sopenharmony_ci		__entry->rx_ant = rx_ant;
11928c2ecf20Sopenharmony_ci		__entry->ret = ret;
11938c2ecf20Sopenharmony_ci	),
11948c2ecf20Sopenharmony_ci
11958c2ecf20Sopenharmony_ci	TP_printk(
11968c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
11978c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
11988c2ecf20Sopenharmony_ci	)
11998c2ecf20Sopenharmony_ci);
12008c2ecf20Sopenharmony_ci
12018c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_antenna,
12028c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
12038c2ecf20Sopenharmony_ci
12048c2ecf20Sopenharmony_ci	TP_ARGS(local, tx_ant, rx_ant, ret),
12058c2ecf20Sopenharmony_ci
12068c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
12078c2ecf20Sopenharmony_ci		LOCAL_ENTRY
12088c2ecf20Sopenharmony_ci		__field(u32, tx_ant)
12098c2ecf20Sopenharmony_ci		__field(u32, rx_ant)
12108c2ecf20Sopenharmony_ci		__field(int, ret)
12118c2ecf20Sopenharmony_ci	),
12128c2ecf20Sopenharmony_ci
12138c2ecf20Sopenharmony_ci	TP_fast_assign(
12148c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
12158c2ecf20Sopenharmony_ci		__entry->tx_ant = tx_ant;
12168c2ecf20Sopenharmony_ci		__entry->rx_ant = rx_ant;
12178c2ecf20Sopenharmony_ci		__entry->ret = ret;
12188c2ecf20Sopenharmony_ci	),
12198c2ecf20Sopenharmony_ci
12208c2ecf20Sopenharmony_ci	TP_printk(
12218c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
12228c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
12238c2ecf20Sopenharmony_ci	)
12248c2ecf20Sopenharmony_ci);
12258c2ecf20Sopenharmony_ci
12268c2ecf20Sopenharmony_ciTRACE_EVENT(drv_remain_on_channel,
12278c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
12288c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
12298c2ecf20Sopenharmony_ci		 struct ieee80211_channel *chan,
12308c2ecf20Sopenharmony_ci		 unsigned int duration,
12318c2ecf20Sopenharmony_ci		 enum ieee80211_roc_type type),
12328c2ecf20Sopenharmony_ci
12338c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, chan, duration, type),
12348c2ecf20Sopenharmony_ci
12358c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
12368c2ecf20Sopenharmony_ci		LOCAL_ENTRY
12378c2ecf20Sopenharmony_ci		VIF_ENTRY
12388c2ecf20Sopenharmony_ci		__field(int, center_freq)
12398c2ecf20Sopenharmony_ci		__field(int, freq_offset)
12408c2ecf20Sopenharmony_ci		__field(unsigned int, duration)
12418c2ecf20Sopenharmony_ci		__field(u32, type)
12428c2ecf20Sopenharmony_ci	),
12438c2ecf20Sopenharmony_ci
12448c2ecf20Sopenharmony_ci	TP_fast_assign(
12458c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
12468c2ecf20Sopenharmony_ci		VIF_ASSIGN;
12478c2ecf20Sopenharmony_ci		__entry->center_freq = chan->center_freq;
12488c2ecf20Sopenharmony_ci		__entry->freq_offset = chan->freq_offset;
12498c2ecf20Sopenharmony_ci		__entry->duration = duration;
12508c2ecf20Sopenharmony_ci		__entry->type = type;
12518c2ecf20Sopenharmony_ci	),
12528c2ecf20Sopenharmony_ci
12538c2ecf20Sopenharmony_ci	TP_printk(
12548c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d",
12558c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG,
12568c2ecf20Sopenharmony_ci		__entry->center_freq, __entry->freq_offset,
12578c2ecf20Sopenharmony_ci		__entry->duration, __entry->type
12588c2ecf20Sopenharmony_ci	)
12598c2ecf20Sopenharmony_ci);
12608c2ecf20Sopenharmony_ci
12618c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel,
12628c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
12638c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
12648c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
12658c2ecf20Sopenharmony_ci);
12668c2ecf20Sopenharmony_ci
12678c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_ringparam,
12688c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx),
12698c2ecf20Sopenharmony_ci
12708c2ecf20Sopenharmony_ci	TP_ARGS(local, tx, rx),
12718c2ecf20Sopenharmony_ci
12728c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
12738c2ecf20Sopenharmony_ci		LOCAL_ENTRY
12748c2ecf20Sopenharmony_ci		__field(u32, tx)
12758c2ecf20Sopenharmony_ci		__field(u32, rx)
12768c2ecf20Sopenharmony_ci	),
12778c2ecf20Sopenharmony_ci
12788c2ecf20Sopenharmony_ci	TP_fast_assign(
12798c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
12808c2ecf20Sopenharmony_ci		__entry->tx = tx;
12818c2ecf20Sopenharmony_ci		__entry->rx = rx;
12828c2ecf20Sopenharmony_ci	),
12838c2ecf20Sopenharmony_ci
12848c2ecf20Sopenharmony_ci	TP_printk(
12858c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " tx:%d rx %d",
12868c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx, __entry->rx
12878c2ecf20Sopenharmony_ci	)
12888c2ecf20Sopenharmony_ci);
12898c2ecf20Sopenharmony_ci
12908c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_ringparam,
12918c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max,
12928c2ecf20Sopenharmony_ci		 u32 *rx, u32 *rx_max),
12938c2ecf20Sopenharmony_ci
12948c2ecf20Sopenharmony_ci	TP_ARGS(local, tx, tx_max, rx, rx_max),
12958c2ecf20Sopenharmony_ci
12968c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
12978c2ecf20Sopenharmony_ci		LOCAL_ENTRY
12988c2ecf20Sopenharmony_ci		__field(u32, tx)
12998c2ecf20Sopenharmony_ci		__field(u32, tx_max)
13008c2ecf20Sopenharmony_ci		__field(u32, rx)
13018c2ecf20Sopenharmony_ci		__field(u32, rx_max)
13028c2ecf20Sopenharmony_ci	),
13038c2ecf20Sopenharmony_ci
13048c2ecf20Sopenharmony_ci	TP_fast_assign(
13058c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
13068c2ecf20Sopenharmony_ci		__entry->tx = *tx;
13078c2ecf20Sopenharmony_ci		__entry->tx_max = *tx_max;
13088c2ecf20Sopenharmony_ci		__entry->rx = *rx;
13098c2ecf20Sopenharmony_ci		__entry->rx_max = *rx_max;
13108c2ecf20Sopenharmony_ci	),
13118c2ecf20Sopenharmony_ci
13128c2ecf20Sopenharmony_ci	TP_printk(
13138c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d",
13148c2ecf20Sopenharmony_ci		LOCAL_PR_ARG,
13158c2ecf20Sopenharmony_ci		__entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max
13168c2ecf20Sopenharmony_ci	)
13178c2ecf20Sopenharmony_ci);
13188c2ecf20Sopenharmony_ci
13198c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_tx_frames_pending,
13208c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
13218c2ecf20Sopenharmony_ci	TP_ARGS(local)
13228c2ecf20Sopenharmony_ci);
13238c2ecf20Sopenharmony_ci
13248c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait,
13258c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
13268c2ecf20Sopenharmony_ci	TP_ARGS(local)
13278c2ecf20Sopenharmony_ci);
13288c2ecf20Sopenharmony_ci
13298c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_bitrate_mask,
13308c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
13318c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
13328c2ecf20Sopenharmony_ci		 const struct cfg80211_bitrate_mask *mask),
13338c2ecf20Sopenharmony_ci
13348c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, mask),
13358c2ecf20Sopenharmony_ci
13368c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
13378c2ecf20Sopenharmony_ci		LOCAL_ENTRY
13388c2ecf20Sopenharmony_ci		VIF_ENTRY
13398c2ecf20Sopenharmony_ci		__field(u32, legacy_2g)
13408c2ecf20Sopenharmony_ci		__field(u32, legacy_5g)
13418c2ecf20Sopenharmony_ci	),
13428c2ecf20Sopenharmony_ci
13438c2ecf20Sopenharmony_ci	TP_fast_assign(
13448c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
13458c2ecf20Sopenharmony_ci		VIF_ASSIGN;
13468c2ecf20Sopenharmony_ci		__entry->legacy_2g = mask->control[NL80211_BAND_2GHZ].legacy;
13478c2ecf20Sopenharmony_ci		__entry->legacy_5g = mask->control[NL80211_BAND_5GHZ].legacy;
13488c2ecf20Sopenharmony_ci	),
13498c2ecf20Sopenharmony_ci
13508c2ecf20Sopenharmony_ci	TP_printk(
13518c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x",
13528c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g
13538c2ecf20Sopenharmony_ci	)
13548c2ecf20Sopenharmony_ci);
13558c2ecf20Sopenharmony_ci
13568c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_rekey_data,
13578c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
13588c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
13598c2ecf20Sopenharmony_ci		 struct cfg80211_gtk_rekey_data *data),
13608c2ecf20Sopenharmony_ci
13618c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, data),
13628c2ecf20Sopenharmony_ci
13638c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
13648c2ecf20Sopenharmony_ci		LOCAL_ENTRY
13658c2ecf20Sopenharmony_ci		VIF_ENTRY
13668c2ecf20Sopenharmony_ci		__array(u8, kek, NL80211_KEK_LEN)
13678c2ecf20Sopenharmony_ci		__array(u8, kck, NL80211_KCK_LEN)
13688c2ecf20Sopenharmony_ci		__array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
13698c2ecf20Sopenharmony_ci	),
13708c2ecf20Sopenharmony_ci
13718c2ecf20Sopenharmony_ci	TP_fast_assign(
13728c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
13738c2ecf20Sopenharmony_ci		VIF_ASSIGN;
13748c2ecf20Sopenharmony_ci		memcpy(__entry->kek, data->kek, NL80211_KEK_LEN);
13758c2ecf20Sopenharmony_ci		memcpy(__entry->kck, data->kck, NL80211_KCK_LEN);
13768c2ecf20Sopenharmony_ci		memcpy(__entry->replay_ctr, data->replay_ctr,
13778c2ecf20Sopenharmony_ci		       NL80211_REPLAY_CTR_LEN);
13788c2ecf20Sopenharmony_ci	),
13798c2ecf20Sopenharmony_ci
13808c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT VIF_PR_FMT,
13818c2ecf20Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG)
13828c2ecf20Sopenharmony_ci);
13838c2ecf20Sopenharmony_ci
13848c2ecf20Sopenharmony_ciTRACE_EVENT(drv_event_callback,
13858c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
13868c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
13878c2ecf20Sopenharmony_ci		 const struct ieee80211_event *_event),
13888c2ecf20Sopenharmony_ci
13898c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, _event),
13908c2ecf20Sopenharmony_ci
13918c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
13928c2ecf20Sopenharmony_ci		LOCAL_ENTRY
13938c2ecf20Sopenharmony_ci		VIF_ENTRY
13948c2ecf20Sopenharmony_ci		__field(u32, type)
13958c2ecf20Sopenharmony_ci	),
13968c2ecf20Sopenharmony_ci
13978c2ecf20Sopenharmony_ci	TP_fast_assign(
13988c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
13998c2ecf20Sopenharmony_ci		VIF_ASSIGN;
14008c2ecf20Sopenharmony_ci		__entry->type = _event->type;
14018c2ecf20Sopenharmony_ci	),
14028c2ecf20Sopenharmony_ci
14038c2ecf20Sopenharmony_ci	TP_printk(
14048c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " event:%d",
14058c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->type
14068c2ecf20Sopenharmony_ci	)
14078c2ecf20Sopenharmony_ci);
14088c2ecf20Sopenharmony_ci
14098c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(release_evt,
14108c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14118c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
14128c2ecf20Sopenharmony_ci		 u16 tids, int num_frames,
14138c2ecf20Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
14148c2ecf20Sopenharmony_ci		 bool more_data),
14158c2ecf20Sopenharmony_ci
14168c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data),
14178c2ecf20Sopenharmony_ci
14188c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
14198c2ecf20Sopenharmony_ci		LOCAL_ENTRY
14208c2ecf20Sopenharmony_ci		STA_ENTRY
14218c2ecf20Sopenharmony_ci		__field(u16, tids)
14228c2ecf20Sopenharmony_ci		__field(int, num_frames)
14238c2ecf20Sopenharmony_ci		__field(int, reason)
14248c2ecf20Sopenharmony_ci		__field(bool, more_data)
14258c2ecf20Sopenharmony_ci	),
14268c2ecf20Sopenharmony_ci
14278c2ecf20Sopenharmony_ci	TP_fast_assign(
14288c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
14298c2ecf20Sopenharmony_ci		STA_ASSIGN;
14308c2ecf20Sopenharmony_ci		__entry->tids = tids;
14318c2ecf20Sopenharmony_ci		__entry->num_frames = num_frames;
14328c2ecf20Sopenharmony_ci		__entry->reason = reason;
14338c2ecf20Sopenharmony_ci		__entry->more_data = more_data;
14348c2ecf20Sopenharmony_ci	),
14358c2ecf20Sopenharmony_ci
14368c2ecf20Sopenharmony_ci	TP_printk(
14378c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT
14388c2ecf20Sopenharmony_ci		" TIDs:0x%.4x frames:%d reason:%d more:%d",
14398c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames,
14408c2ecf20Sopenharmony_ci		__entry->reason, __entry->more_data
14418c2ecf20Sopenharmony_ci	)
14428c2ecf20Sopenharmony_ci);
14438c2ecf20Sopenharmony_ci
14448c2ecf20Sopenharmony_ciDEFINE_EVENT(release_evt, drv_release_buffered_frames,
14458c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14468c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
14478c2ecf20Sopenharmony_ci		 u16 tids, int num_frames,
14488c2ecf20Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
14498c2ecf20Sopenharmony_ci		 bool more_data),
14508c2ecf20Sopenharmony_ci
14518c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data)
14528c2ecf20Sopenharmony_ci);
14538c2ecf20Sopenharmony_ci
14548c2ecf20Sopenharmony_ciDEFINE_EVENT(release_evt, drv_allow_buffered_frames,
14558c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14568c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
14578c2ecf20Sopenharmony_ci		 u16 tids, int num_frames,
14588c2ecf20Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
14598c2ecf20Sopenharmony_ci		 bool more_data),
14608c2ecf20Sopenharmony_ci
14618c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data)
14628c2ecf20Sopenharmony_ci);
14638c2ecf20Sopenharmony_ci
14648c2ecf20Sopenharmony_ciTRACE_EVENT(drv_mgd_prepare_tx,
14658c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14668c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
14678c2ecf20Sopenharmony_ci		 u16 duration),
14688c2ecf20Sopenharmony_ci
14698c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, duration),
14708c2ecf20Sopenharmony_ci
14718c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
14728c2ecf20Sopenharmony_ci		LOCAL_ENTRY
14738c2ecf20Sopenharmony_ci		VIF_ENTRY
14748c2ecf20Sopenharmony_ci		__field(u32, duration)
14758c2ecf20Sopenharmony_ci	),
14768c2ecf20Sopenharmony_ci
14778c2ecf20Sopenharmony_ci	TP_fast_assign(
14788c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
14798c2ecf20Sopenharmony_ci		VIF_ASSIGN;
14808c2ecf20Sopenharmony_ci		__entry->duration = duration;
14818c2ecf20Sopenharmony_ci	),
14828c2ecf20Sopenharmony_ci
14838c2ecf20Sopenharmony_ci	TP_printk(
14848c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " duration: %u",
14858c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->duration
14868c2ecf20Sopenharmony_ci	)
14878c2ecf20Sopenharmony_ci);
14888c2ecf20Sopenharmony_ci
14898c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_mgd_protect_tdls_discover,
14908c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14918c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
14928c2ecf20Sopenharmony_ci
14938c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
14948c2ecf20Sopenharmony_ci);
14958c2ecf20Sopenharmony_ci
14968c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_chanctx,
14978c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14988c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
14998c2ecf20Sopenharmony_ci
15008c2ecf20Sopenharmony_ci	TP_ARGS(local, ctx),
15018c2ecf20Sopenharmony_ci
15028c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
15038c2ecf20Sopenharmony_ci		LOCAL_ENTRY
15048c2ecf20Sopenharmony_ci		CHANCTX_ENTRY
15058c2ecf20Sopenharmony_ci	),
15068c2ecf20Sopenharmony_ci
15078c2ecf20Sopenharmony_ci	TP_fast_assign(
15088c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
15098c2ecf20Sopenharmony_ci		CHANCTX_ASSIGN;
15108c2ecf20Sopenharmony_ci	),
15118c2ecf20Sopenharmony_ci
15128c2ecf20Sopenharmony_ci	TP_printk(
15138c2ecf20Sopenharmony_ci		LOCAL_PR_FMT CHANCTX_PR_FMT,
15148c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, CHANCTX_PR_ARG
15158c2ecf20Sopenharmony_ci	)
15168c2ecf20Sopenharmony_ci);
15178c2ecf20Sopenharmony_ci
15188c2ecf20Sopenharmony_ciDEFINE_EVENT(local_chanctx, drv_add_chanctx,
15198c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
15208c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
15218c2ecf20Sopenharmony_ci	TP_ARGS(local, ctx)
15228c2ecf20Sopenharmony_ci);
15238c2ecf20Sopenharmony_ci
15248c2ecf20Sopenharmony_ciDEFINE_EVENT(local_chanctx, drv_remove_chanctx,
15258c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
15268c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
15278c2ecf20Sopenharmony_ci	TP_ARGS(local, ctx)
15288c2ecf20Sopenharmony_ci);
15298c2ecf20Sopenharmony_ci
15308c2ecf20Sopenharmony_ciTRACE_EVENT(drv_change_chanctx,
15318c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
15328c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx,
15338c2ecf20Sopenharmony_ci		 u32 changed),
15348c2ecf20Sopenharmony_ci
15358c2ecf20Sopenharmony_ci	TP_ARGS(local, ctx, changed),
15368c2ecf20Sopenharmony_ci
15378c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
15388c2ecf20Sopenharmony_ci		LOCAL_ENTRY
15398c2ecf20Sopenharmony_ci		CHANCTX_ENTRY
15408c2ecf20Sopenharmony_ci		__field(u32, changed)
15418c2ecf20Sopenharmony_ci	),
15428c2ecf20Sopenharmony_ci
15438c2ecf20Sopenharmony_ci	TP_fast_assign(
15448c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
15458c2ecf20Sopenharmony_ci		CHANCTX_ASSIGN;
15468c2ecf20Sopenharmony_ci		__entry->changed = changed;
15478c2ecf20Sopenharmony_ci	),
15488c2ecf20Sopenharmony_ci
15498c2ecf20Sopenharmony_ci	TP_printk(
15508c2ecf20Sopenharmony_ci		LOCAL_PR_FMT CHANCTX_PR_FMT " changed:%#x",
15518c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, CHANCTX_PR_ARG, __entry->changed
15528c2ecf20Sopenharmony_ci	)
15538c2ecf20Sopenharmony_ci);
15548c2ecf20Sopenharmony_ci
15558c2ecf20Sopenharmony_ci#if !defined(__TRACE_VIF_ENTRY)
15568c2ecf20Sopenharmony_ci#define __TRACE_VIF_ENTRY
15578c2ecf20Sopenharmony_cistruct trace_vif_entry {
15588c2ecf20Sopenharmony_ci	enum nl80211_iftype vif_type;
15598c2ecf20Sopenharmony_ci	bool p2p;
15608c2ecf20Sopenharmony_ci	char vif_name[IFNAMSIZ];
15618c2ecf20Sopenharmony_ci} __packed;
15628c2ecf20Sopenharmony_ci
15638c2ecf20Sopenharmony_cistruct trace_chandef_entry {
15648c2ecf20Sopenharmony_ci	u32 control_freq;
15658c2ecf20Sopenharmony_ci	u32 freq_offset;
15668c2ecf20Sopenharmony_ci	u32 chan_width;
15678c2ecf20Sopenharmony_ci	u32 center_freq1;
15688c2ecf20Sopenharmony_ci	u32 freq1_offset;
15698c2ecf20Sopenharmony_ci	u32 center_freq2;
15708c2ecf20Sopenharmony_ci} __packed;
15718c2ecf20Sopenharmony_ci
15728c2ecf20Sopenharmony_cistruct trace_switch_entry {
15738c2ecf20Sopenharmony_ci	struct trace_vif_entry vif;
15748c2ecf20Sopenharmony_ci	struct trace_chandef_entry old_chandef;
15758c2ecf20Sopenharmony_ci	struct trace_chandef_entry new_chandef;
15768c2ecf20Sopenharmony_ci} __packed;
15778c2ecf20Sopenharmony_ci
15788c2ecf20Sopenharmony_ci#define SWITCH_ENTRY_ASSIGN(to, from) local_vifs[i].to = vifs[i].from
15798c2ecf20Sopenharmony_ci#endif
15808c2ecf20Sopenharmony_ci
15818c2ecf20Sopenharmony_ciTRACE_EVENT(drv_switch_vif_chanctx,
15828c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
15838c2ecf20Sopenharmony_ci		 struct ieee80211_vif_chanctx_switch *vifs,
15848c2ecf20Sopenharmony_ci		 int n_vifs, enum ieee80211_chanctx_switch_mode mode),
15858c2ecf20Sopenharmony_ci	    TP_ARGS(local, vifs, n_vifs, mode),
15868c2ecf20Sopenharmony_ci
15878c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
15888c2ecf20Sopenharmony_ci		LOCAL_ENTRY
15898c2ecf20Sopenharmony_ci		__field(int, n_vifs)
15908c2ecf20Sopenharmony_ci		__field(u32, mode)
15918c2ecf20Sopenharmony_ci		__dynamic_array(u8, vifs,
15928c2ecf20Sopenharmony_ci				sizeof(struct trace_switch_entry) * n_vifs)
15938c2ecf20Sopenharmony_ci	),
15948c2ecf20Sopenharmony_ci
15958c2ecf20Sopenharmony_ci	TP_fast_assign(
15968c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
15978c2ecf20Sopenharmony_ci		__entry->n_vifs = n_vifs;
15988c2ecf20Sopenharmony_ci		__entry->mode = mode;
15998c2ecf20Sopenharmony_ci		{
16008c2ecf20Sopenharmony_ci			struct trace_switch_entry *local_vifs =
16018c2ecf20Sopenharmony_ci				__get_dynamic_array(vifs);
16028c2ecf20Sopenharmony_ci			int i;
16038c2ecf20Sopenharmony_ci
16048c2ecf20Sopenharmony_ci			for (i = 0; i < n_vifs; i++) {
16058c2ecf20Sopenharmony_ci				struct ieee80211_sub_if_data *sdata;
16068c2ecf20Sopenharmony_ci
16078c2ecf20Sopenharmony_ci				sdata = container_of(vifs[i].vif,
16088c2ecf20Sopenharmony_ci						struct ieee80211_sub_if_data,
16098c2ecf20Sopenharmony_ci						vif);
16108c2ecf20Sopenharmony_ci
16118c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(vif.vif_type, vif->type);
16128c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(vif.p2p, vif->p2p);
16138c2ecf20Sopenharmony_ci				strncpy(local_vifs[i].vif.vif_name,
16148c2ecf20Sopenharmony_ci					sdata->name,
16158c2ecf20Sopenharmony_ci					sizeof(local_vifs[i].vif.vif_name));
16168c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.control_freq,
16178c2ecf20Sopenharmony_ci						old_ctx->def.chan->center_freq);
16188c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset,
16198c2ecf20Sopenharmony_ci						old_ctx->def.chan->freq_offset);
16208c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.chan_width,
16218c2ecf20Sopenharmony_ci						    old_ctx->def.width);
16228c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1,
16238c2ecf20Sopenharmony_ci						    old_ctx->def.center_freq1);
16248c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset,
16258c2ecf20Sopenharmony_ci						    old_ctx->def.freq1_offset);
16268c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2,
16278c2ecf20Sopenharmony_ci						    old_ctx->def.center_freq2);
16288c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.control_freq,
16298c2ecf20Sopenharmony_ci						new_ctx->def.chan->center_freq);
16308c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset,
16318c2ecf20Sopenharmony_ci						new_ctx->def.chan->freq_offset);
16328c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.chan_width,
16338c2ecf20Sopenharmony_ci						    new_ctx->def.width);
16348c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1,
16358c2ecf20Sopenharmony_ci						    new_ctx->def.center_freq1);
16368c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset,
16378c2ecf20Sopenharmony_ci						    new_ctx->def.freq1_offset);
16388c2ecf20Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2,
16398c2ecf20Sopenharmony_ci						    new_ctx->def.center_freq2);
16408c2ecf20Sopenharmony_ci			}
16418c2ecf20Sopenharmony_ci		}
16428c2ecf20Sopenharmony_ci	),
16438c2ecf20Sopenharmony_ci
16448c2ecf20Sopenharmony_ci	TP_printk(
16458c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " n_vifs:%d mode:%d",
16468c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->n_vifs, __entry->mode
16478c2ecf20Sopenharmony_ci	)
16488c2ecf20Sopenharmony_ci);
16498c2ecf20Sopenharmony_ci
16508c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_chanctx,
16518c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
16528c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
16538c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
16548c2ecf20Sopenharmony_ci
16558c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ctx),
16568c2ecf20Sopenharmony_ci
16578c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
16588c2ecf20Sopenharmony_ci		LOCAL_ENTRY
16598c2ecf20Sopenharmony_ci		VIF_ENTRY
16608c2ecf20Sopenharmony_ci		CHANCTX_ENTRY
16618c2ecf20Sopenharmony_ci	),
16628c2ecf20Sopenharmony_ci
16638c2ecf20Sopenharmony_ci	TP_fast_assign(
16648c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
16658c2ecf20Sopenharmony_ci		VIF_ASSIGN;
16668c2ecf20Sopenharmony_ci		CHANCTX_ASSIGN;
16678c2ecf20Sopenharmony_ci	),
16688c2ecf20Sopenharmony_ci
16698c2ecf20Sopenharmony_ci	TP_printk(
16708c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT CHANCTX_PR_FMT,
16718c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANCTX_PR_ARG
16728c2ecf20Sopenharmony_ci	)
16738c2ecf20Sopenharmony_ci);
16748c2ecf20Sopenharmony_ci
16758c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_chanctx, drv_assign_vif_chanctx,
16768c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
16778c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
16788c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
16798c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ctx)
16808c2ecf20Sopenharmony_ci);
16818c2ecf20Sopenharmony_ci
16828c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_chanctx, drv_unassign_vif_chanctx,
16838c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
16848c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
16858c2ecf20Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
16868c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ctx)
16878c2ecf20Sopenharmony_ci);
16888c2ecf20Sopenharmony_ci
16898c2ecf20Sopenharmony_ciTRACE_EVENT(drv_start_ap,
16908c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
16918c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
16928c2ecf20Sopenharmony_ci		 struct ieee80211_bss_conf *info),
16938c2ecf20Sopenharmony_ci
16948c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, info),
16958c2ecf20Sopenharmony_ci
16968c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
16978c2ecf20Sopenharmony_ci		LOCAL_ENTRY
16988c2ecf20Sopenharmony_ci		VIF_ENTRY
16998c2ecf20Sopenharmony_ci		__field(u8, dtimper)
17008c2ecf20Sopenharmony_ci		__field(u16, bcnint)
17018c2ecf20Sopenharmony_ci		__dynamic_array(u8, ssid, info->ssid_len)
17028c2ecf20Sopenharmony_ci		__field(bool, hidden_ssid)
17038c2ecf20Sopenharmony_ci	),
17048c2ecf20Sopenharmony_ci
17058c2ecf20Sopenharmony_ci	TP_fast_assign(
17068c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
17078c2ecf20Sopenharmony_ci		VIF_ASSIGN;
17088c2ecf20Sopenharmony_ci		__entry->dtimper = info->dtim_period;
17098c2ecf20Sopenharmony_ci		__entry->bcnint = info->beacon_int;
17108c2ecf20Sopenharmony_ci		memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len);
17118c2ecf20Sopenharmony_ci		__entry->hidden_ssid = info->hidden_ssid;
17128c2ecf20Sopenharmony_ci	),
17138c2ecf20Sopenharmony_ci
17148c2ecf20Sopenharmony_ci	TP_printk(
17158c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT,
17168c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
17178c2ecf20Sopenharmony_ci	)
17188c2ecf20Sopenharmony_ci);
17198c2ecf20Sopenharmony_ci
17208c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_stop_ap,
17218c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
17228c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
17238c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
17248c2ecf20Sopenharmony_ci);
17258c2ecf20Sopenharmony_ci
17268c2ecf20Sopenharmony_ciTRACE_EVENT(drv_reconfig_complete,
17278c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
17288c2ecf20Sopenharmony_ci		 enum ieee80211_reconfig_type reconfig_type),
17298c2ecf20Sopenharmony_ci	TP_ARGS(local, reconfig_type),
17308c2ecf20Sopenharmony_ci
17318c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
17328c2ecf20Sopenharmony_ci		LOCAL_ENTRY
17338c2ecf20Sopenharmony_ci		__field(u8, reconfig_type)
17348c2ecf20Sopenharmony_ci	),
17358c2ecf20Sopenharmony_ci
17368c2ecf20Sopenharmony_ci	TP_fast_assign(
17378c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
17388c2ecf20Sopenharmony_ci		__entry->reconfig_type = reconfig_type;
17398c2ecf20Sopenharmony_ci	),
17408c2ecf20Sopenharmony_ci
17418c2ecf20Sopenharmony_ci	TP_printk(
17428c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  " reconfig_type:%d",
17438c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->reconfig_type
17448c2ecf20Sopenharmony_ci	)
17458c2ecf20Sopenharmony_ci
17468c2ecf20Sopenharmony_ci);
17478c2ecf20Sopenharmony_ci
17488c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_IPV6)
17498c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_ipv6_addr_change,
17508c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
17518c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
17528c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
17538c2ecf20Sopenharmony_ci);
17548c2ecf20Sopenharmony_ci#endif
17558c2ecf20Sopenharmony_ci
17568c2ecf20Sopenharmony_ciTRACE_EVENT(drv_join_ibss,
17578c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
17588c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
17598c2ecf20Sopenharmony_ci		 struct ieee80211_bss_conf *info),
17608c2ecf20Sopenharmony_ci
17618c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, info),
17628c2ecf20Sopenharmony_ci
17638c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
17648c2ecf20Sopenharmony_ci		LOCAL_ENTRY
17658c2ecf20Sopenharmony_ci		VIF_ENTRY
17668c2ecf20Sopenharmony_ci		__field(u8, dtimper)
17678c2ecf20Sopenharmony_ci		__field(u16, bcnint)
17688c2ecf20Sopenharmony_ci		__dynamic_array(u8, ssid, info->ssid_len)
17698c2ecf20Sopenharmony_ci	),
17708c2ecf20Sopenharmony_ci
17718c2ecf20Sopenharmony_ci	TP_fast_assign(
17728c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
17738c2ecf20Sopenharmony_ci		VIF_ASSIGN;
17748c2ecf20Sopenharmony_ci		__entry->dtimper = info->dtim_period;
17758c2ecf20Sopenharmony_ci		__entry->bcnint = info->beacon_int;
17768c2ecf20Sopenharmony_ci		memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len);
17778c2ecf20Sopenharmony_ci	),
17788c2ecf20Sopenharmony_ci
17798c2ecf20Sopenharmony_ci	TP_printk(
17808c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT,
17818c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
17828c2ecf20Sopenharmony_ci	)
17838c2ecf20Sopenharmony_ci);
17848c2ecf20Sopenharmony_ci
17858c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_leave_ibss,
17868c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
17878c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
17888c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
17898c2ecf20Sopenharmony_ci);
17908c2ecf20Sopenharmony_ci
17918c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_expected_throughput,
17928c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta),
17938c2ecf20Sopenharmony_ci
17948c2ecf20Sopenharmony_ci	TP_ARGS(sta),
17958c2ecf20Sopenharmony_ci
17968c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
17978c2ecf20Sopenharmony_ci		STA_ENTRY
17988c2ecf20Sopenharmony_ci	),
17998c2ecf20Sopenharmony_ci
18008c2ecf20Sopenharmony_ci	TP_fast_assign(
18018c2ecf20Sopenharmony_ci		STA_ASSIGN;
18028c2ecf20Sopenharmony_ci	),
18038c2ecf20Sopenharmony_ci
18048c2ecf20Sopenharmony_ci	TP_printk(
18058c2ecf20Sopenharmony_ci		STA_PR_FMT, STA_PR_ARG
18068c2ecf20Sopenharmony_ci	)
18078c2ecf20Sopenharmony_ci);
18088c2ecf20Sopenharmony_ci
18098c2ecf20Sopenharmony_ciTRACE_EVENT(drv_start_nan,
18108c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
18118c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
18128c2ecf20Sopenharmony_ci		 struct cfg80211_nan_conf *conf),
18138c2ecf20Sopenharmony_ci
18148c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, conf),
18158c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
18168c2ecf20Sopenharmony_ci		LOCAL_ENTRY
18178c2ecf20Sopenharmony_ci		VIF_ENTRY
18188c2ecf20Sopenharmony_ci		__field(u8, master_pref)
18198c2ecf20Sopenharmony_ci		__field(u8, bands)
18208c2ecf20Sopenharmony_ci	),
18218c2ecf20Sopenharmony_ci
18228c2ecf20Sopenharmony_ci	TP_fast_assign(
18238c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
18248c2ecf20Sopenharmony_ci		VIF_ASSIGN;
18258c2ecf20Sopenharmony_ci		__entry->master_pref = conf->master_pref;
18268c2ecf20Sopenharmony_ci		__entry->bands = conf->bands;
18278c2ecf20Sopenharmony_ci	),
18288c2ecf20Sopenharmony_ci
18298c2ecf20Sopenharmony_ci	TP_printk(
18308c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
18318c2ecf20Sopenharmony_ci		", master preference: %u, bands: 0x%0x",
18328c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref,
18338c2ecf20Sopenharmony_ci		__entry->bands
18348c2ecf20Sopenharmony_ci	)
18358c2ecf20Sopenharmony_ci);
18368c2ecf20Sopenharmony_ci
18378c2ecf20Sopenharmony_ciTRACE_EVENT(drv_stop_nan,
18388c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
18398c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
18408c2ecf20Sopenharmony_ci
18418c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata),
18428c2ecf20Sopenharmony_ci
18438c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
18448c2ecf20Sopenharmony_ci		LOCAL_ENTRY
18458c2ecf20Sopenharmony_ci		VIF_ENTRY
18468c2ecf20Sopenharmony_ci	),
18478c2ecf20Sopenharmony_ci
18488c2ecf20Sopenharmony_ci	TP_fast_assign(
18498c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
18508c2ecf20Sopenharmony_ci		VIF_ASSIGN;
18518c2ecf20Sopenharmony_ci	),
18528c2ecf20Sopenharmony_ci
18538c2ecf20Sopenharmony_ci	TP_printk(
18548c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT,
18558c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
18568c2ecf20Sopenharmony_ci	)
18578c2ecf20Sopenharmony_ci);
18588c2ecf20Sopenharmony_ci
18598c2ecf20Sopenharmony_ciTRACE_EVENT(drv_nan_change_conf,
18608c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
18618c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
18628c2ecf20Sopenharmony_ci		 struct cfg80211_nan_conf *conf,
18638c2ecf20Sopenharmony_ci		 u32 changes),
18648c2ecf20Sopenharmony_ci
18658c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, conf, changes),
18668c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
18678c2ecf20Sopenharmony_ci		LOCAL_ENTRY
18688c2ecf20Sopenharmony_ci		VIF_ENTRY
18698c2ecf20Sopenharmony_ci		__field(u8, master_pref)
18708c2ecf20Sopenharmony_ci		__field(u8, bands)
18718c2ecf20Sopenharmony_ci		__field(u32, changes)
18728c2ecf20Sopenharmony_ci	),
18738c2ecf20Sopenharmony_ci
18748c2ecf20Sopenharmony_ci	TP_fast_assign(
18758c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
18768c2ecf20Sopenharmony_ci		VIF_ASSIGN;
18778c2ecf20Sopenharmony_ci		__entry->master_pref = conf->master_pref;
18788c2ecf20Sopenharmony_ci		__entry->bands = conf->bands;
18798c2ecf20Sopenharmony_ci		__entry->changes = changes;
18808c2ecf20Sopenharmony_ci	),
18818c2ecf20Sopenharmony_ci
18828c2ecf20Sopenharmony_ci	TP_printk(
18838c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
18848c2ecf20Sopenharmony_ci		", master preference: %u, bands: 0x%0x, changes: 0x%x",
18858c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref,
18868c2ecf20Sopenharmony_ci		__entry->bands, __entry->changes
18878c2ecf20Sopenharmony_ci	)
18888c2ecf20Sopenharmony_ci);
18898c2ecf20Sopenharmony_ci
18908c2ecf20Sopenharmony_ciTRACE_EVENT(drv_add_nan_func,
18918c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
18928c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
18938c2ecf20Sopenharmony_ci		 const struct cfg80211_nan_func *func),
18948c2ecf20Sopenharmony_ci
18958c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, func),
18968c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
18978c2ecf20Sopenharmony_ci		LOCAL_ENTRY
18988c2ecf20Sopenharmony_ci		VIF_ENTRY
18998c2ecf20Sopenharmony_ci		__field(u8, type)
19008c2ecf20Sopenharmony_ci		__field(u8, inst_id)
19018c2ecf20Sopenharmony_ci	),
19028c2ecf20Sopenharmony_ci
19038c2ecf20Sopenharmony_ci	TP_fast_assign(
19048c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
19058c2ecf20Sopenharmony_ci		VIF_ASSIGN;
19068c2ecf20Sopenharmony_ci		__entry->type = func->type;
19078c2ecf20Sopenharmony_ci		__entry->inst_id = func->instance_id;
19088c2ecf20Sopenharmony_ci	),
19098c2ecf20Sopenharmony_ci
19108c2ecf20Sopenharmony_ci	TP_printk(
19118c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
19128c2ecf20Sopenharmony_ci		", type: %u, inst_id: %u",
19138c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->type, __entry->inst_id
19148c2ecf20Sopenharmony_ci	)
19158c2ecf20Sopenharmony_ci);
19168c2ecf20Sopenharmony_ci
19178c2ecf20Sopenharmony_ciTRACE_EVENT(drv_del_nan_func,
19188c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
19198c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
19208c2ecf20Sopenharmony_ci		 u8 instance_id),
19218c2ecf20Sopenharmony_ci
19228c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, instance_id),
19238c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
19248c2ecf20Sopenharmony_ci		LOCAL_ENTRY
19258c2ecf20Sopenharmony_ci		VIF_ENTRY
19268c2ecf20Sopenharmony_ci		__field(u8, instance_id)
19278c2ecf20Sopenharmony_ci	),
19288c2ecf20Sopenharmony_ci
19298c2ecf20Sopenharmony_ci	TP_fast_assign(
19308c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
19318c2ecf20Sopenharmony_ci		VIF_ASSIGN;
19328c2ecf20Sopenharmony_ci		__entry->instance_id = instance_id;
19338c2ecf20Sopenharmony_ci	),
19348c2ecf20Sopenharmony_ci
19358c2ecf20Sopenharmony_ci	TP_printk(
19368c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
19378c2ecf20Sopenharmony_ci		", instance_id: %u",
19388c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id
19398c2ecf20Sopenharmony_ci	)
19408c2ecf20Sopenharmony_ci);
19418c2ecf20Sopenharmony_ci
19428c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_start_pmsr,
19438c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
19448c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
19458c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
19468c2ecf20Sopenharmony_ci);
19478c2ecf20Sopenharmony_ci
19488c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_abort_pmsr,
19498c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
19508c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
19518c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
19528c2ecf20Sopenharmony_ci);
19538c2ecf20Sopenharmony_ci
19548c2ecf20Sopenharmony_ci/*
19558c2ecf20Sopenharmony_ci * Tracing for API calls that drivers call.
19568c2ecf20Sopenharmony_ci */
19578c2ecf20Sopenharmony_ci
19588c2ecf20Sopenharmony_ciTRACE_EVENT(api_start_tx_ba_session,
19598c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta, u16 tid),
19608c2ecf20Sopenharmony_ci
19618c2ecf20Sopenharmony_ci	TP_ARGS(sta, tid),
19628c2ecf20Sopenharmony_ci
19638c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
19648c2ecf20Sopenharmony_ci		STA_ENTRY
19658c2ecf20Sopenharmony_ci		__field(u16, tid)
19668c2ecf20Sopenharmony_ci	),
19678c2ecf20Sopenharmony_ci
19688c2ecf20Sopenharmony_ci	TP_fast_assign(
19698c2ecf20Sopenharmony_ci		STA_ASSIGN;
19708c2ecf20Sopenharmony_ci		__entry->tid = tid;
19718c2ecf20Sopenharmony_ci	),
19728c2ecf20Sopenharmony_ci
19738c2ecf20Sopenharmony_ci	TP_printk(
19748c2ecf20Sopenharmony_ci		STA_PR_FMT " tid:%d",
19758c2ecf20Sopenharmony_ci		STA_PR_ARG, __entry->tid
19768c2ecf20Sopenharmony_ci	)
19778c2ecf20Sopenharmony_ci);
19788c2ecf20Sopenharmony_ci
19798c2ecf20Sopenharmony_ciTRACE_EVENT(api_start_tx_ba_cb,
19808c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
19818c2ecf20Sopenharmony_ci
19828c2ecf20Sopenharmony_ci	TP_ARGS(sdata, ra, tid),
19838c2ecf20Sopenharmony_ci
19848c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
19858c2ecf20Sopenharmony_ci		VIF_ENTRY
19868c2ecf20Sopenharmony_ci		__array(u8, ra, ETH_ALEN)
19878c2ecf20Sopenharmony_ci		__field(u16, tid)
19888c2ecf20Sopenharmony_ci	),
19898c2ecf20Sopenharmony_ci
19908c2ecf20Sopenharmony_ci	TP_fast_assign(
19918c2ecf20Sopenharmony_ci		VIF_ASSIGN;
19928c2ecf20Sopenharmony_ci		memcpy(__entry->ra, ra, ETH_ALEN);
19938c2ecf20Sopenharmony_ci		__entry->tid = tid;
19948c2ecf20Sopenharmony_ci	),
19958c2ecf20Sopenharmony_ci
19968c2ecf20Sopenharmony_ci	TP_printk(
19978c2ecf20Sopenharmony_ci		VIF_PR_FMT " ra:%pM tid:%d",
19988c2ecf20Sopenharmony_ci		VIF_PR_ARG, __entry->ra, __entry->tid
19998c2ecf20Sopenharmony_ci	)
20008c2ecf20Sopenharmony_ci);
20018c2ecf20Sopenharmony_ci
20028c2ecf20Sopenharmony_ciTRACE_EVENT(api_stop_tx_ba_session,
20038c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta, u16 tid),
20048c2ecf20Sopenharmony_ci
20058c2ecf20Sopenharmony_ci	TP_ARGS(sta, tid),
20068c2ecf20Sopenharmony_ci
20078c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
20088c2ecf20Sopenharmony_ci		STA_ENTRY
20098c2ecf20Sopenharmony_ci		__field(u16, tid)
20108c2ecf20Sopenharmony_ci	),
20118c2ecf20Sopenharmony_ci
20128c2ecf20Sopenharmony_ci	TP_fast_assign(
20138c2ecf20Sopenharmony_ci		STA_ASSIGN;
20148c2ecf20Sopenharmony_ci		__entry->tid = tid;
20158c2ecf20Sopenharmony_ci	),
20168c2ecf20Sopenharmony_ci
20178c2ecf20Sopenharmony_ci	TP_printk(
20188c2ecf20Sopenharmony_ci		STA_PR_FMT " tid:%d",
20198c2ecf20Sopenharmony_ci		STA_PR_ARG, __entry->tid
20208c2ecf20Sopenharmony_ci	)
20218c2ecf20Sopenharmony_ci);
20228c2ecf20Sopenharmony_ci
20238c2ecf20Sopenharmony_ciTRACE_EVENT(api_stop_tx_ba_cb,
20248c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
20258c2ecf20Sopenharmony_ci
20268c2ecf20Sopenharmony_ci	TP_ARGS(sdata, ra, tid),
20278c2ecf20Sopenharmony_ci
20288c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
20298c2ecf20Sopenharmony_ci		VIF_ENTRY
20308c2ecf20Sopenharmony_ci		__array(u8, ra, ETH_ALEN)
20318c2ecf20Sopenharmony_ci		__field(u16, tid)
20328c2ecf20Sopenharmony_ci	),
20338c2ecf20Sopenharmony_ci
20348c2ecf20Sopenharmony_ci	TP_fast_assign(
20358c2ecf20Sopenharmony_ci		VIF_ASSIGN;
20368c2ecf20Sopenharmony_ci		memcpy(__entry->ra, ra, ETH_ALEN);
20378c2ecf20Sopenharmony_ci		__entry->tid = tid;
20388c2ecf20Sopenharmony_ci	),
20398c2ecf20Sopenharmony_ci
20408c2ecf20Sopenharmony_ci	TP_printk(
20418c2ecf20Sopenharmony_ci		VIF_PR_FMT " ra:%pM tid:%d",
20428c2ecf20Sopenharmony_ci		VIF_PR_ARG, __entry->ra, __entry->tid
20438c2ecf20Sopenharmony_ci	)
20448c2ecf20Sopenharmony_ci);
20458c2ecf20Sopenharmony_ci
20468c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_restart_hw,
20478c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
20488c2ecf20Sopenharmony_ci	TP_ARGS(local)
20498c2ecf20Sopenharmony_ci);
20508c2ecf20Sopenharmony_ci
20518c2ecf20Sopenharmony_ciTRACE_EVENT(api_beacon_loss,
20528c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata),
20538c2ecf20Sopenharmony_ci
20548c2ecf20Sopenharmony_ci	TP_ARGS(sdata),
20558c2ecf20Sopenharmony_ci
20568c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
20578c2ecf20Sopenharmony_ci		VIF_ENTRY
20588c2ecf20Sopenharmony_ci	),
20598c2ecf20Sopenharmony_ci
20608c2ecf20Sopenharmony_ci	TP_fast_assign(
20618c2ecf20Sopenharmony_ci		VIF_ASSIGN;
20628c2ecf20Sopenharmony_ci	),
20638c2ecf20Sopenharmony_ci
20648c2ecf20Sopenharmony_ci	TP_printk(
20658c2ecf20Sopenharmony_ci		VIF_PR_FMT,
20668c2ecf20Sopenharmony_ci		VIF_PR_ARG
20678c2ecf20Sopenharmony_ci	)
20688c2ecf20Sopenharmony_ci);
20698c2ecf20Sopenharmony_ci
20708c2ecf20Sopenharmony_ciTRACE_EVENT(api_connection_loss,
20718c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata),
20728c2ecf20Sopenharmony_ci
20738c2ecf20Sopenharmony_ci	TP_ARGS(sdata),
20748c2ecf20Sopenharmony_ci
20758c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
20768c2ecf20Sopenharmony_ci		VIF_ENTRY
20778c2ecf20Sopenharmony_ci	),
20788c2ecf20Sopenharmony_ci
20798c2ecf20Sopenharmony_ci	TP_fast_assign(
20808c2ecf20Sopenharmony_ci		VIF_ASSIGN;
20818c2ecf20Sopenharmony_ci	),
20828c2ecf20Sopenharmony_ci
20838c2ecf20Sopenharmony_ci	TP_printk(
20848c2ecf20Sopenharmony_ci		VIF_PR_FMT,
20858c2ecf20Sopenharmony_ci		VIF_PR_ARG
20868c2ecf20Sopenharmony_ci	)
20878c2ecf20Sopenharmony_ci);
20888c2ecf20Sopenharmony_ci
20898c2ecf20Sopenharmony_ciTRACE_EVENT(api_cqm_rssi_notify,
20908c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
20918c2ecf20Sopenharmony_ci		 enum nl80211_cqm_rssi_threshold_event rssi_event,
20928c2ecf20Sopenharmony_ci		 s32 rssi_level),
20938c2ecf20Sopenharmony_ci
20948c2ecf20Sopenharmony_ci	TP_ARGS(sdata, rssi_event, rssi_level),
20958c2ecf20Sopenharmony_ci
20968c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
20978c2ecf20Sopenharmony_ci		VIF_ENTRY
20988c2ecf20Sopenharmony_ci		__field(u32, rssi_event)
20998c2ecf20Sopenharmony_ci		__field(s32, rssi_level)
21008c2ecf20Sopenharmony_ci	),
21018c2ecf20Sopenharmony_ci
21028c2ecf20Sopenharmony_ci	TP_fast_assign(
21038c2ecf20Sopenharmony_ci		VIF_ASSIGN;
21048c2ecf20Sopenharmony_ci		__entry->rssi_event = rssi_event;
21058c2ecf20Sopenharmony_ci		__entry->rssi_level = rssi_level;
21068c2ecf20Sopenharmony_ci	),
21078c2ecf20Sopenharmony_ci
21088c2ecf20Sopenharmony_ci	TP_printk(
21098c2ecf20Sopenharmony_ci		VIF_PR_FMT " event:%d rssi:%d",
21108c2ecf20Sopenharmony_ci		VIF_PR_ARG, __entry->rssi_event, __entry->rssi_level
21118c2ecf20Sopenharmony_ci	)
21128c2ecf20Sopenharmony_ci);
21138c2ecf20Sopenharmony_ci
21148c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, api_cqm_beacon_loss_notify,
21158c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
21168c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
21178c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
21188c2ecf20Sopenharmony_ci);
21198c2ecf20Sopenharmony_ci
21208c2ecf20Sopenharmony_ciTRACE_EVENT(api_scan_completed,
21218c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool aborted),
21228c2ecf20Sopenharmony_ci
21238c2ecf20Sopenharmony_ci	TP_ARGS(local, aborted),
21248c2ecf20Sopenharmony_ci
21258c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
21268c2ecf20Sopenharmony_ci		LOCAL_ENTRY
21278c2ecf20Sopenharmony_ci		__field(bool, aborted)
21288c2ecf20Sopenharmony_ci	),
21298c2ecf20Sopenharmony_ci
21308c2ecf20Sopenharmony_ci	TP_fast_assign(
21318c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
21328c2ecf20Sopenharmony_ci		__entry->aborted = aborted;
21338c2ecf20Sopenharmony_ci	),
21348c2ecf20Sopenharmony_ci
21358c2ecf20Sopenharmony_ci	TP_printk(
21368c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " aborted:%d",
21378c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->aborted
21388c2ecf20Sopenharmony_ci	)
21398c2ecf20Sopenharmony_ci);
21408c2ecf20Sopenharmony_ci
21418c2ecf20Sopenharmony_ciTRACE_EVENT(api_sched_scan_results,
21428c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
21438c2ecf20Sopenharmony_ci
21448c2ecf20Sopenharmony_ci	TP_ARGS(local),
21458c2ecf20Sopenharmony_ci
21468c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
21478c2ecf20Sopenharmony_ci		LOCAL_ENTRY
21488c2ecf20Sopenharmony_ci	),
21498c2ecf20Sopenharmony_ci
21508c2ecf20Sopenharmony_ci	TP_fast_assign(
21518c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
21528c2ecf20Sopenharmony_ci	),
21538c2ecf20Sopenharmony_ci
21548c2ecf20Sopenharmony_ci	TP_printk(
21558c2ecf20Sopenharmony_ci		LOCAL_PR_FMT, LOCAL_PR_ARG
21568c2ecf20Sopenharmony_ci	)
21578c2ecf20Sopenharmony_ci);
21588c2ecf20Sopenharmony_ci
21598c2ecf20Sopenharmony_ciTRACE_EVENT(api_sched_scan_stopped,
21608c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
21618c2ecf20Sopenharmony_ci
21628c2ecf20Sopenharmony_ci	TP_ARGS(local),
21638c2ecf20Sopenharmony_ci
21648c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
21658c2ecf20Sopenharmony_ci		LOCAL_ENTRY
21668c2ecf20Sopenharmony_ci	),
21678c2ecf20Sopenharmony_ci
21688c2ecf20Sopenharmony_ci	TP_fast_assign(
21698c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
21708c2ecf20Sopenharmony_ci	),
21718c2ecf20Sopenharmony_ci
21728c2ecf20Sopenharmony_ci	TP_printk(
21738c2ecf20Sopenharmony_ci		LOCAL_PR_FMT, LOCAL_PR_ARG
21748c2ecf20Sopenharmony_ci	)
21758c2ecf20Sopenharmony_ci);
21768c2ecf20Sopenharmony_ci
21778c2ecf20Sopenharmony_ciTRACE_EVENT(api_sta_block_awake,
21788c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
21798c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta, bool block),
21808c2ecf20Sopenharmony_ci
21818c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, block),
21828c2ecf20Sopenharmony_ci
21838c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
21848c2ecf20Sopenharmony_ci		LOCAL_ENTRY
21858c2ecf20Sopenharmony_ci		STA_ENTRY
21868c2ecf20Sopenharmony_ci		__field(bool, block)
21878c2ecf20Sopenharmony_ci	),
21888c2ecf20Sopenharmony_ci
21898c2ecf20Sopenharmony_ci	TP_fast_assign(
21908c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
21918c2ecf20Sopenharmony_ci		STA_ASSIGN;
21928c2ecf20Sopenharmony_ci		__entry->block = block;
21938c2ecf20Sopenharmony_ci	),
21948c2ecf20Sopenharmony_ci
21958c2ecf20Sopenharmony_ci	TP_printk(
21968c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " block:%d",
21978c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->block
21988c2ecf20Sopenharmony_ci	)
21998c2ecf20Sopenharmony_ci);
22008c2ecf20Sopenharmony_ci
22018c2ecf20Sopenharmony_ciTRACE_EVENT(api_chswitch_done,
22028c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success),
22038c2ecf20Sopenharmony_ci
22048c2ecf20Sopenharmony_ci	TP_ARGS(sdata, success),
22058c2ecf20Sopenharmony_ci
22068c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
22078c2ecf20Sopenharmony_ci		VIF_ENTRY
22088c2ecf20Sopenharmony_ci		__field(bool, success)
22098c2ecf20Sopenharmony_ci	),
22108c2ecf20Sopenharmony_ci
22118c2ecf20Sopenharmony_ci	TP_fast_assign(
22128c2ecf20Sopenharmony_ci		VIF_ASSIGN;
22138c2ecf20Sopenharmony_ci		__entry->success = success;
22148c2ecf20Sopenharmony_ci	),
22158c2ecf20Sopenharmony_ci
22168c2ecf20Sopenharmony_ci	TP_printk(
22178c2ecf20Sopenharmony_ci		VIF_PR_FMT " success=%d",
22188c2ecf20Sopenharmony_ci		VIF_PR_ARG, __entry->success
22198c2ecf20Sopenharmony_ci	)
22208c2ecf20Sopenharmony_ci);
22218c2ecf20Sopenharmony_ci
22228c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_ready_on_channel,
22238c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
22248c2ecf20Sopenharmony_ci	TP_ARGS(local)
22258c2ecf20Sopenharmony_ci);
22268c2ecf20Sopenharmony_ci
22278c2ecf20Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_remain_on_channel_expired,
22288c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
22298c2ecf20Sopenharmony_ci	TP_ARGS(local)
22308c2ecf20Sopenharmony_ci);
22318c2ecf20Sopenharmony_ci
22328c2ecf20Sopenharmony_ciTRACE_EVENT(api_gtk_rekey_notify,
22338c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
22348c2ecf20Sopenharmony_ci		 const u8 *bssid, const u8 *replay_ctr),
22358c2ecf20Sopenharmony_ci
22368c2ecf20Sopenharmony_ci	TP_ARGS(sdata, bssid, replay_ctr),
22378c2ecf20Sopenharmony_ci
22388c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
22398c2ecf20Sopenharmony_ci		VIF_ENTRY
22408c2ecf20Sopenharmony_ci		__array(u8, bssid, ETH_ALEN)
22418c2ecf20Sopenharmony_ci		__array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
22428c2ecf20Sopenharmony_ci	),
22438c2ecf20Sopenharmony_ci
22448c2ecf20Sopenharmony_ci	TP_fast_assign(
22458c2ecf20Sopenharmony_ci		VIF_ASSIGN;
22468c2ecf20Sopenharmony_ci		memcpy(__entry->bssid, bssid, ETH_ALEN);
22478c2ecf20Sopenharmony_ci		memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN);
22488c2ecf20Sopenharmony_ci	),
22498c2ecf20Sopenharmony_ci
22508c2ecf20Sopenharmony_ci	TP_printk(VIF_PR_FMT, VIF_PR_ARG)
22518c2ecf20Sopenharmony_ci);
22528c2ecf20Sopenharmony_ci
22538c2ecf20Sopenharmony_ciTRACE_EVENT(api_enable_rssi_reports,
22548c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
22558c2ecf20Sopenharmony_ci		 int rssi_min_thold, int rssi_max_thold),
22568c2ecf20Sopenharmony_ci
22578c2ecf20Sopenharmony_ci	TP_ARGS(sdata, rssi_min_thold, rssi_max_thold),
22588c2ecf20Sopenharmony_ci
22598c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
22608c2ecf20Sopenharmony_ci		VIF_ENTRY
22618c2ecf20Sopenharmony_ci		__field(int, rssi_min_thold)
22628c2ecf20Sopenharmony_ci		__field(int, rssi_max_thold)
22638c2ecf20Sopenharmony_ci	),
22648c2ecf20Sopenharmony_ci
22658c2ecf20Sopenharmony_ci	TP_fast_assign(
22668c2ecf20Sopenharmony_ci		VIF_ASSIGN;
22678c2ecf20Sopenharmony_ci		__entry->rssi_min_thold = rssi_min_thold;
22688c2ecf20Sopenharmony_ci		__entry->rssi_max_thold = rssi_max_thold;
22698c2ecf20Sopenharmony_ci	),
22708c2ecf20Sopenharmony_ci
22718c2ecf20Sopenharmony_ci	TP_printk(
22728c2ecf20Sopenharmony_ci		VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d",
22738c2ecf20Sopenharmony_ci		VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold
22748c2ecf20Sopenharmony_ci	)
22758c2ecf20Sopenharmony_ci);
22768c2ecf20Sopenharmony_ci
22778c2ecf20Sopenharmony_ciTRACE_EVENT(api_eosp,
22788c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
22798c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
22808c2ecf20Sopenharmony_ci
22818c2ecf20Sopenharmony_ci	TP_ARGS(local, sta),
22828c2ecf20Sopenharmony_ci
22838c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
22848c2ecf20Sopenharmony_ci		LOCAL_ENTRY
22858c2ecf20Sopenharmony_ci		STA_ENTRY
22868c2ecf20Sopenharmony_ci	),
22878c2ecf20Sopenharmony_ci
22888c2ecf20Sopenharmony_ci	TP_fast_assign(
22898c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
22908c2ecf20Sopenharmony_ci		STA_ASSIGN;
22918c2ecf20Sopenharmony_ci	),
22928c2ecf20Sopenharmony_ci
22938c2ecf20Sopenharmony_ci	TP_printk(
22948c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT,
22958c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG
22968c2ecf20Sopenharmony_ci	)
22978c2ecf20Sopenharmony_ci);
22988c2ecf20Sopenharmony_ci
22998c2ecf20Sopenharmony_ciTRACE_EVENT(api_send_eosp_nullfunc,
23008c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
23018c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
23028c2ecf20Sopenharmony_ci		 u8 tid),
23038c2ecf20Sopenharmony_ci
23048c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, tid),
23058c2ecf20Sopenharmony_ci
23068c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
23078c2ecf20Sopenharmony_ci		LOCAL_ENTRY
23088c2ecf20Sopenharmony_ci		STA_ENTRY
23098c2ecf20Sopenharmony_ci		__field(u8, tid)
23108c2ecf20Sopenharmony_ci	),
23118c2ecf20Sopenharmony_ci
23128c2ecf20Sopenharmony_ci	TP_fast_assign(
23138c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
23148c2ecf20Sopenharmony_ci		STA_ASSIGN;
23158c2ecf20Sopenharmony_ci		__entry->tid = tid;
23168c2ecf20Sopenharmony_ci	),
23178c2ecf20Sopenharmony_ci
23188c2ecf20Sopenharmony_ci	TP_printk(
23198c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " tid:%d",
23208c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tid
23218c2ecf20Sopenharmony_ci	)
23228c2ecf20Sopenharmony_ci);
23238c2ecf20Sopenharmony_ci
23248c2ecf20Sopenharmony_ciTRACE_EVENT(api_sta_set_buffered,
23258c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
23268c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta,
23278c2ecf20Sopenharmony_ci		 u8 tid, bool buffered),
23288c2ecf20Sopenharmony_ci
23298c2ecf20Sopenharmony_ci	TP_ARGS(local, sta, tid, buffered),
23308c2ecf20Sopenharmony_ci
23318c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
23328c2ecf20Sopenharmony_ci		LOCAL_ENTRY
23338c2ecf20Sopenharmony_ci		STA_ENTRY
23348c2ecf20Sopenharmony_ci		__field(u8, tid)
23358c2ecf20Sopenharmony_ci		__field(bool, buffered)
23368c2ecf20Sopenharmony_ci	),
23378c2ecf20Sopenharmony_ci
23388c2ecf20Sopenharmony_ci	TP_fast_assign(
23398c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
23408c2ecf20Sopenharmony_ci		STA_ASSIGN;
23418c2ecf20Sopenharmony_ci		__entry->tid = tid;
23428c2ecf20Sopenharmony_ci		__entry->buffered = buffered;
23438c2ecf20Sopenharmony_ci	),
23448c2ecf20Sopenharmony_ci
23458c2ecf20Sopenharmony_ci	TP_printk(
23468c2ecf20Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " tid:%d buffered:%d",
23478c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tid, __entry->buffered
23488c2ecf20Sopenharmony_ci	)
23498c2ecf20Sopenharmony_ci);
23508c2ecf20Sopenharmony_ci
23518c2ecf20Sopenharmony_ci/*
23528c2ecf20Sopenharmony_ci * Tracing for internal functions
23538c2ecf20Sopenharmony_ci * (which may also be called in response to driver calls)
23548c2ecf20Sopenharmony_ci */
23558c2ecf20Sopenharmony_ci
23568c2ecf20Sopenharmony_ciTRACE_EVENT(wake_queue,
23578c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u16 queue,
23588c2ecf20Sopenharmony_ci		 enum queue_stop_reason reason),
23598c2ecf20Sopenharmony_ci
23608c2ecf20Sopenharmony_ci	TP_ARGS(local, queue, reason),
23618c2ecf20Sopenharmony_ci
23628c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
23638c2ecf20Sopenharmony_ci		LOCAL_ENTRY
23648c2ecf20Sopenharmony_ci		__field(u16, queue)
23658c2ecf20Sopenharmony_ci		__field(u32, reason)
23668c2ecf20Sopenharmony_ci	),
23678c2ecf20Sopenharmony_ci
23688c2ecf20Sopenharmony_ci	TP_fast_assign(
23698c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
23708c2ecf20Sopenharmony_ci		__entry->queue = queue;
23718c2ecf20Sopenharmony_ci		__entry->reason = reason;
23728c2ecf20Sopenharmony_ci	),
23738c2ecf20Sopenharmony_ci
23748c2ecf20Sopenharmony_ci	TP_printk(
23758c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " queue:%d, reason:%d",
23768c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->queue, __entry->reason
23778c2ecf20Sopenharmony_ci	)
23788c2ecf20Sopenharmony_ci);
23798c2ecf20Sopenharmony_ci
23808c2ecf20Sopenharmony_ciTRACE_EVENT(stop_queue,
23818c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u16 queue,
23828c2ecf20Sopenharmony_ci		 enum queue_stop_reason reason),
23838c2ecf20Sopenharmony_ci
23848c2ecf20Sopenharmony_ci	TP_ARGS(local, queue, reason),
23858c2ecf20Sopenharmony_ci
23868c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
23878c2ecf20Sopenharmony_ci		LOCAL_ENTRY
23888c2ecf20Sopenharmony_ci		__field(u16, queue)
23898c2ecf20Sopenharmony_ci		__field(u32, reason)
23908c2ecf20Sopenharmony_ci	),
23918c2ecf20Sopenharmony_ci
23928c2ecf20Sopenharmony_ci	TP_fast_assign(
23938c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
23948c2ecf20Sopenharmony_ci		__entry->queue = queue;
23958c2ecf20Sopenharmony_ci		__entry->reason = reason;
23968c2ecf20Sopenharmony_ci	),
23978c2ecf20Sopenharmony_ci
23988c2ecf20Sopenharmony_ci	TP_printk(
23998c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " queue:%d, reason:%d",
24008c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, __entry->queue, __entry->reason
24018c2ecf20Sopenharmony_ci	)
24028c2ecf20Sopenharmony_ci);
24038c2ecf20Sopenharmony_ci
24048c2ecf20Sopenharmony_ciTRACE_EVENT(drv_set_default_unicast_key,
24058c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
24068c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
24078c2ecf20Sopenharmony_ci		 int key_idx),
24088c2ecf20Sopenharmony_ci
24098c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, key_idx),
24108c2ecf20Sopenharmony_ci
24118c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
24128c2ecf20Sopenharmony_ci		LOCAL_ENTRY
24138c2ecf20Sopenharmony_ci		VIF_ENTRY
24148c2ecf20Sopenharmony_ci		__field(int, key_idx)
24158c2ecf20Sopenharmony_ci	),
24168c2ecf20Sopenharmony_ci
24178c2ecf20Sopenharmony_ci	TP_fast_assign(
24188c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
24198c2ecf20Sopenharmony_ci		VIF_ASSIGN;
24208c2ecf20Sopenharmony_ci		__entry->key_idx = key_idx;
24218c2ecf20Sopenharmony_ci	),
24228c2ecf20Sopenharmony_ci
24238c2ecf20Sopenharmony_ci	TP_printk(LOCAL_PR_FMT VIF_PR_FMT " key_idx:%d",
24248c2ecf20Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG, __entry->key_idx)
24258c2ecf20Sopenharmony_ci);
24268c2ecf20Sopenharmony_ci
24278c2ecf20Sopenharmony_ciTRACE_EVENT(api_radar_detected,
24288c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
24298c2ecf20Sopenharmony_ci
24308c2ecf20Sopenharmony_ci	TP_ARGS(local),
24318c2ecf20Sopenharmony_ci
24328c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
24338c2ecf20Sopenharmony_ci		LOCAL_ENTRY
24348c2ecf20Sopenharmony_ci	),
24358c2ecf20Sopenharmony_ci
24368c2ecf20Sopenharmony_ci	TP_fast_assign(
24378c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
24388c2ecf20Sopenharmony_ci	),
24398c2ecf20Sopenharmony_ci
24408c2ecf20Sopenharmony_ci	TP_printk(
24418c2ecf20Sopenharmony_ci		LOCAL_PR_FMT " radar detected",
24428c2ecf20Sopenharmony_ci		LOCAL_PR_ARG
24438c2ecf20Sopenharmony_ci	)
24448c2ecf20Sopenharmony_ci);
24458c2ecf20Sopenharmony_ci
24468c2ecf20Sopenharmony_ciTRACE_EVENT(drv_channel_switch_beacon,
24478c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
24488c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
24498c2ecf20Sopenharmony_ci		 struct cfg80211_chan_def *chandef),
24508c2ecf20Sopenharmony_ci
24518c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, chandef),
24528c2ecf20Sopenharmony_ci
24538c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
24548c2ecf20Sopenharmony_ci		LOCAL_ENTRY
24558c2ecf20Sopenharmony_ci		VIF_ENTRY
24568c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
24578c2ecf20Sopenharmony_ci	),
24588c2ecf20Sopenharmony_ci
24598c2ecf20Sopenharmony_ci	TP_fast_assign(
24608c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
24618c2ecf20Sopenharmony_ci		VIF_ASSIGN;
24628c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(chandef);
24638c2ecf20Sopenharmony_ci	),
24648c2ecf20Sopenharmony_ci
24658c2ecf20Sopenharmony_ci	TP_printk(
24668c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " channel switch to " CHANDEF_PR_FMT,
24678c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG
24688c2ecf20Sopenharmony_ci	)
24698c2ecf20Sopenharmony_ci);
24708c2ecf20Sopenharmony_ci
24718c2ecf20Sopenharmony_ciTRACE_EVENT(drv_pre_channel_switch,
24728c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
24738c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
24748c2ecf20Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
24758c2ecf20Sopenharmony_ci
24768c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
24778c2ecf20Sopenharmony_ci
24788c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
24798c2ecf20Sopenharmony_ci		LOCAL_ENTRY
24808c2ecf20Sopenharmony_ci		VIF_ENTRY
24818c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
24828c2ecf20Sopenharmony_ci		__field(u64, timestamp)
24838c2ecf20Sopenharmony_ci		__field(u32, device_timestamp)
24848c2ecf20Sopenharmony_ci		__field(bool, block_tx)
24858c2ecf20Sopenharmony_ci		__field(u8, count)
24868c2ecf20Sopenharmony_ci	),
24878c2ecf20Sopenharmony_ci
24888c2ecf20Sopenharmony_ci	TP_fast_assign(
24898c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
24908c2ecf20Sopenharmony_ci		VIF_ASSIGN;
24918c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
24928c2ecf20Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
24938c2ecf20Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
24948c2ecf20Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
24958c2ecf20Sopenharmony_ci		__entry->count = ch_switch->count;
24968c2ecf20Sopenharmony_ci	),
24978c2ecf20Sopenharmony_ci
24988c2ecf20Sopenharmony_ci	TP_printk(
24998c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " prepare channel switch to "
25008c2ecf20Sopenharmony_ci		CHANDEF_PR_FMT  " count:%d block_tx:%d timestamp:%llu",
25018c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count,
25028c2ecf20Sopenharmony_ci		__entry->block_tx, __entry->timestamp
25038c2ecf20Sopenharmony_ci	)
25048c2ecf20Sopenharmony_ci);
25058c2ecf20Sopenharmony_ci
25068c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_post_channel_switch,
25078c2ecf20Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local,
25088c2ecf20Sopenharmony_ci		      struct ieee80211_sub_if_data *sdata),
25098c2ecf20Sopenharmony_ci	     TP_ARGS(local, sdata)
25108c2ecf20Sopenharmony_ci);
25118c2ecf20Sopenharmony_ci
25128c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch,
25138c2ecf20Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local,
25148c2ecf20Sopenharmony_ci		      struct ieee80211_sub_if_data *sdata),
25158c2ecf20Sopenharmony_ci	     TP_ARGS(local, sdata)
25168c2ecf20Sopenharmony_ci);
25178c2ecf20Sopenharmony_ci
25188c2ecf20Sopenharmony_ciTRACE_EVENT(drv_channel_switch_rx_beacon,
25198c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
25208c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
25218c2ecf20Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
25228c2ecf20Sopenharmony_ci
25238c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
25248c2ecf20Sopenharmony_ci
25258c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
25268c2ecf20Sopenharmony_ci		LOCAL_ENTRY
25278c2ecf20Sopenharmony_ci		VIF_ENTRY
25288c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
25298c2ecf20Sopenharmony_ci		__field(u64, timestamp)
25308c2ecf20Sopenharmony_ci		__field(u32, device_timestamp)
25318c2ecf20Sopenharmony_ci		__field(bool, block_tx)
25328c2ecf20Sopenharmony_ci		__field(u8, count)
25338c2ecf20Sopenharmony_ci	),
25348c2ecf20Sopenharmony_ci
25358c2ecf20Sopenharmony_ci	TP_fast_assign(
25368c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
25378c2ecf20Sopenharmony_ci		VIF_ASSIGN;
25388c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
25398c2ecf20Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
25408c2ecf20Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
25418c2ecf20Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
25428c2ecf20Sopenharmony_ci		__entry->count = ch_switch->count;
25438c2ecf20Sopenharmony_ci	),
25448c2ecf20Sopenharmony_ci
25458c2ecf20Sopenharmony_ci	TP_printk(
25468c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
25478c2ecf20Sopenharmony_ci		" received a channel switch beacon to "
25488c2ecf20Sopenharmony_ci		CHANDEF_PR_FMT  " count:%d block_tx:%d timestamp:%llu",
25498c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count,
25508c2ecf20Sopenharmony_ci		__entry->block_tx, __entry->timestamp
25518c2ecf20Sopenharmony_ci	)
25528c2ecf20Sopenharmony_ci);
25538c2ecf20Sopenharmony_ci
25548c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_txpower,
25558c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
25568c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
25578c2ecf20Sopenharmony_ci		 int dbm, int ret),
25588c2ecf20Sopenharmony_ci
25598c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, dbm, ret),
25608c2ecf20Sopenharmony_ci
25618c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
25628c2ecf20Sopenharmony_ci		LOCAL_ENTRY
25638c2ecf20Sopenharmony_ci		VIF_ENTRY
25648c2ecf20Sopenharmony_ci		__field(int, dbm)
25658c2ecf20Sopenharmony_ci		__field(int, ret)
25668c2ecf20Sopenharmony_ci	),
25678c2ecf20Sopenharmony_ci
25688c2ecf20Sopenharmony_ci	TP_fast_assign(
25698c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
25708c2ecf20Sopenharmony_ci		VIF_ASSIGN;
25718c2ecf20Sopenharmony_ci		__entry->dbm = dbm;
25728c2ecf20Sopenharmony_ci		__entry->ret = ret;
25738c2ecf20Sopenharmony_ci	),
25748c2ecf20Sopenharmony_ci
25758c2ecf20Sopenharmony_ci	TP_printk(
25768c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " dbm:%d ret:%d",
25778c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->dbm, __entry->ret
25788c2ecf20Sopenharmony_ci	)
25798c2ecf20Sopenharmony_ci);
25808c2ecf20Sopenharmony_ci
25818c2ecf20Sopenharmony_ciTRACE_EVENT(drv_tdls_channel_switch,
25828c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
25838c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
25848c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta, u8 oper_class,
25858c2ecf20Sopenharmony_ci		 struct cfg80211_chan_def *chandef),
25868c2ecf20Sopenharmony_ci
25878c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta, oper_class, chandef),
25888c2ecf20Sopenharmony_ci
25898c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
25908c2ecf20Sopenharmony_ci		LOCAL_ENTRY
25918c2ecf20Sopenharmony_ci		VIF_ENTRY
25928c2ecf20Sopenharmony_ci		STA_ENTRY
25938c2ecf20Sopenharmony_ci		__field(u8, oper_class)
25948c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
25958c2ecf20Sopenharmony_ci	),
25968c2ecf20Sopenharmony_ci
25978c2ecf20Sopenharmony_ci	TP_fast_assign(
25988c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
25998c2ecf20Sopenharmony_ci		VIF_ASSIGN;
26008c2ecf20Sopenharmony_ci		STA_ASSIGN;
26018c2ecf20Sopenharmony_ci		__entry->oper_class = oper_class;
26028c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(chandef)
26038c2ecf20Sopenharmony_ci	),
26048c2ecf20Sopenharmony_ci
26058c2ecf20Sopenharmony_ci	TP_printk(
26068c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " tdls channel switch to"
26078c2ecf20Sopenharmony_ci		CHANDEF_PR_FMT  " oper_class:%d " STA_PR_FMT,
26088c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->oper_class,
26098c2ecf20Sopenharmony_ci		STA_PR_ARG
26108c2ecf20Sopenharmony_ci	)
26118c2ecf20Sopenharmony_ci);
26128c2ecf20Sopenharmony_ci
26138c2ecf20Sopenharmony_ciTRACE_EVENT(drv_tdls_cancel_channel_switch,
26148c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
26158c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
26168c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta),
26178c2ecf20Sopenharmony_ci
26188c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta),
26198c2ecf20Sopenharmony_ci
26208c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
26218c2ecf20Sopenharmony_ci		LOCAL_ENTRY
26228c2ecf20Sopenharmony_ci		VIF_ENTRY
26238c2ecf20Sopenharmony_ci		STA_ENTRY
26248c2ecf20Sopenharmony_ci	),
26258c2ecf20Sopenharmony_ci
26268c2ecf20Sopenharmony_ci	TP_fast_assign(
26278c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
26288c2ecf20Sopenharmony_ci		VIF_ASSIGN;
26298c2ecf20Sopenharmony_ci		STA_ASSIGN;
26308c2ecf20Sopenharmony_ci	),
26318c2ecf20Sopenharmony_ci
26328c2ecf20Sopenharmony_ci	TP_printk(
26338c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
26348c2ecf20Sopenharmony_ci		" tdls cancel channel switch with " STA_PR_FMT,
26358c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
26368c2ecf20Sopenharmony_ci	)
26378c2ecf20Sopenharmony_ci);
26388c2ecf20Sopenharmony_ci
26398c2ecf20Sopenharmony_ciTRACE_EVENT(drv_tdls_recv_channel_switch,
26408c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
26418c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
26428c2ecf20Sopenharmony_ci		 struct ieee80211_tdls_ch_sw_params *params),
26438c2ecf20Sopenharmony_ci
26448c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, params),
26458c2ecf20Sopenharmony_ci
26468c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
26478c2ecf20Sopenharmony_ci		LOCAL_ENTRY
26488c2ecf20Sopenharmony_ci		VIF_ENTRY
26498c2ecf20Sopenharmony_ci		__field(u8, action_code)
26508c2ecf20Sopenharmony_ci		STA_ENTRY
26518c2ecf20Sopenharmony_ci		CHANDEF_ENTRY
26528c2ecf20Sopenharmony_ci		__field(u32, status)
26538c2ecf20Sopenharmony_ci		__field(bool, peer_initiator)
26548c2ecf20Sopenharmony_ci		__field(u32, timestamp)
26558c2ecf20Sopenharmony_ci		__field(u16, switch_time)
26568c2ecf20Sopenharmony_ci		__field(u16, switch_timeout)
26578c2ecf20Sopenharmony_ci	),
26588c2ecf20Sopenharmony_ci
26598c2ecf20Sopenharmony_ci	TP_fast_assign(
26608c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
26618c2ecf20Sopenharmony_ci		VIF_ASSIGN;
26628c2ecf20Sopenharmony_ci		STA_NAMED_ASSIGN(params->sta);
26638c2ecf20Sopenharmony_ci		CHANDEF_ASSIGN(params->chandef)
26648c2ecf20Sopenharmony_ci		__entry->peer_initiator = params->sta->tdls_initiator;
26658c2ecf20Sopenharmony_ci		__entry->action_code = params->action_code;
26668c2ecf20Sopenharmony_ci		__entry->status = params->status;
26678c2ecf20Sopenharmony_ci		__entry->timestamp = params->timestamp;
26688c2ecf20Sopenharmony_ci		__entry->switch_time = params->switch_time;
26698c2ecf20Sopenharmony_ci		__entry->switch_timeout = params->switch_timeout;
26708c2ecf20Sopenharmony_ci	),
26718c2ecf20Sopenharmony_ci
26728c2ecf20Sopenharmony_ci	TP_printk(
26738c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " received tdls channel switch packet"
26748c2ecf20Sopenharmony_ci		" action:%d status:%d time:%d switch time:%d switch"
26758c2ecf20Sopenharmony_ci		" timeout:%d initiator: %d chan:" CHANDEF_PR_FMT STA_PR_FMT,
26768c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->action_code, __entry->status,
26778c2ecf20Sopenharmony_ci		__entry->timestamp, __entry->switch_time,
26788c2ecf20Sopenharmony_ci		__entry->switch_timeout, __entry->peer_initiator,
26798c2ecf20Sopenharmony_ci		CHANDEF_PR_ARG, STA_PR_ARG
26808c2ecf20Sopenharmony_ci	)
26818c2ecf20Sopenharmony_ci);
26828c2ecf20Sopenharmony_ci
26838c2ecf20Sopenharmony_ciTRACE_EVENT(drv_wake_tx_queue,
26848c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
26858c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
26868c2ecf20Sopenharmony_ci		 struct txq_info *txq),
26878c2ecf20Sopenharmony_ci
26888c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, txq),
26898c2ecf20Sopenharmony_ci
26908c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
26918c2ecf20Sopenharmony_ci		LOCAL_ENTRY
26928c2ecf20Sopenharmony_ci		VIF_ENTRY
26938c2ecf20Sopenharmony_ci		STA_ENTRY
26948c2ecf20Sopenharmony_ci		__field(u8, ac)
26958c2ecf20Sopenharmony_ci		__field(u8, tid)
26968c2ecf20Sopenharmony_ci	),
26978c2ecf20Sopenharmony_ci
26988c2ecf20Sopenharmony_ci	TP_fast_assign(
26998c2ecf20Sopenharmony_ci		struct ieee80211_sta *sta = txq->txq.sta;
27008c2ecf20Sopenharmony_ci
27018c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
27028c2ecf20Sopenharmony_ci		VIF_ASSIGN;
27038c2ecf20Sopenharmony_ci		STA_ASSIGN;
27048c2ecf20Sopenharmony_ci		__entry->ac = txq->txq.ac;
27058c2ecf20Sopenharmony_ci		__entry->tid = txq->txq.tid;
27068c2ecf20Sopenharmony_ci	),
27078c2ecf20Sopenharmony_ci
27088c2ecf20Sopenharmony_ci	TP_printk(
27098c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " ac:%d tid:%d",
27108c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid
27118c2ecf20Sopenharmony_ci	)
27128c2ecf20Sopenharmony_ci);
27138c2ecf20Sopenharmony_ci
27148c2ecf20Sopenharmony_ciTRACE_EVENT(drv_get_ftm_responder_stats,
27158c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
27168c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
27178c2ecf20Sopenharmony_ci		 struct cfg80211_ftm_responder_stats *ftm_stats),
27188c2ecf20Sopenharmony_ci
27198c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, ftm_stats),
27208c2ecf20Sopenharmony_ci
27218c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
27228c2ecf20Sopenharmony_ci		LOCAL_ENTRY
27238c2ecf20Sopenharmony_ci		VIF_ENTRY
27248c2ecf20Sopenharmony_ci	),
27258c2ecf20Sopenharmony_ci
27268c2ecf20Sopenharmony_ci	TP_fast_assign(
27278c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
27288c2ecf20Sopenharmony_ci		VIF_ASSIGN;
27298c2ecf20Sopenharmony_ci	),
27308c2ecf20Sopenharmony_ci
27318c2ecf20Sopenharmony_ci	TP_printk(
27328c2ecf20Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT,
27338c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
27348c2ecf20Sopenharmony_ci	)
27358c2ecf20Sopenharmony_ci);
27368c2ecf20Sopenharmony_ci
27378c2ecf20Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_update_vif_offload,
27388c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
27398c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
27408c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata)
27418c2ecf20Sopenharmony_ci);
27428c2ecf20Sopenharmony_ci
27438c2ecf20Sopenharmony_ciTRACE_EVENT(drv_sta_set_4addr,
27448c2ecf20Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
27458c2ecf20Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
27468c2ecf20Sopenharmony_ci		 struct ieee80211_sta *sta, bool enabled),
27478c2ecf20Sopenharmony_ci
27488c2ecf20Sopenharmony_ci	TP_ARGS(local, sdata, sta, enabled),
27498c2ecf20Sopenharmony_ci
27508c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
27518c2ecf20Sopenharmony_ci		LOCAL_ENTRY
27528c2ecf20Sopenharmony_ci		VIF_ENTRY
27538c2ecf20Sopenharmony_ci		STA_ENTRY
27548c2ecf20Sopenharmony_ci		__field(bool, enabled)
27558c2ecf20Sopenharmony_ci	),
27568c2ecf20Sopenharmony_ci
27578c2ecf20Sopenharmony_ci	TP_fast_assign(
27588c2ecf20Sopenharmony_ci		LOCAL_ASSIGN;
27598c2ecf20Sopenharmony_ci		VIF_ASSIGN;
27608c2ecf20Sopenharmony_ci		STA_ASSIGN;
27618c2ecf20Sopenharmony_ci		__entry->enabled = enabled;
27628c2ecf20Sopenharmony_ci	),
27638c2ecf20Sopenharmony_ci
27648c2ecf20Sopenharmony_ci	TP_printk(
27658c2ecf20Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " enabled:%d",
27668c2ecf20Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->enabled
27678c2ecf20Sopenharmony_ci	)
27688c2ecf20Sopenharmony_ci);
27698c2ecf20Sopenharmony_ci
27708c2ecf20Sopenharmony_ci#endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
27718c2ecf20Sopenharmony_ci
27728c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH
27738c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH .
27748c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE
27758c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
27768c2ecf20Sopenharmony_ci#include <trace/define_trace.h>
2777