162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Portions of this file
462306a36Sopenharmony_ci * Copyright(c) 2016-2017 Intel Deutschland GmbH
562306a36Sopenharmony_ci * Copyright (C) 2018 - 2023 Intel Corporation
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
962306a36Sopenharmony_ci#define __MAC80211_DRIVER_TRACE
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/tracepoint.h>
1262306a36Sopenharmony_ci#include <net/mac80211.h>
1362306a36Sopenharmony_ci#include "ieee80211_i.h"
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#undef TRACE_SYSTEM
1662306a36Sopenharmony_ci#define TRACE_SYSTEM mac80211
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define MAXNAME		32
1962306a36Sopenharmony_ci#define LOCAL_ENTRY	__array(char, wiphy_name, 32)
2062306a36Sopenharmony_ci#define LOCAL_ASSIGN	strscpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
2162306a36Sopenharmony_ci#define LOCAL_PR_FMT	"%s"
2262306a36Sopenharmony_ci#define LOCAL_PR_ARG	__entry->wiphy_name
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define STA_ENTRY	__array(char, sta_addr, ETH_ALEN)
2562306a36Sopenharmony_ci#define STA_ASSIGN	(sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \
2662306a36Sopenharmony_ci				eth_zero_addr(__entry->sta_addr))
2762306a36Sopenharmony_ci#define STA_NAMED_ASSIGN(s)	memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN)
2862306a36Sopenharmony_ci#define STA_PR_FMT	" sta:%pM"
2962306a36Sopenharmony_ci#define STA_PR_ARG	__entry->sta_addr
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define VIF_ENTRY	__field(enum nl80211_iftype, vif_type) __field(void *, sdata)	\
3262306a36Sopenharmony_ci			__field(bool, p2p)						\
3362306a36Sopenharmony_ci			__string(vif_name, sdata->name)
3462306a36Sopenharmony_ci#define VIF_ASSIGN	__entry->vif_type = sdata->vif.type; __entry->sdata = sdata;	\
3562306a36Sopenharmony_ci			__entry->p2p = sdata->vif.p2p;					\
3662306a36Sopenharmony_ci			__assign_str(vif_name, sdata->name)
3762306a36Sopenharmony_ci#define VIF_PR_FMT	" vif:%s(%d%s)"
3862306a36Sopenharmony_ci#define VIF_PR_ARG	__get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : ""
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci#define CHANDEF_ENTRY	__field(u32, control_freq)					\
4162306a36Sopenharmony_ci			__field(u32, freq_offset)					\
4262306a36Sopenharmony_ci			__field(u32, chan_width)					\
4362306a36Sopenharmony_ci			__field(u32, center_freq1)					\
4462306a36Sopenharmony_ci			__field(u32, freq1_offset)					\
4562306a36Sopenharmony_ci			__field(u32, center_freq2)
4662306a36Sopenharmony_ci#define CHANDEF_ASSIGN(c)							\
4762306a36Sopenharmony_ci			__entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0;	\
4862306a36Sopenharmony_ci			__entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0;	\
4962306a36Sopenharmony_ci			__entry->chan_width = (c) ? (c)->width : 0;			\
5062306a36Sopenharmony_ci			__entry->center_freq1 = (c) ? (c)->center_freq1 : 0;		\
5162306a36Sopenharmony_ci			__entry->freq1_offset = (c) ? (c)->freq1_offset : 0;		\
5262306a36Sopenharmony_ci			__entry->center_freq2 = (c) ? (c)->center_freq2 : 0;
5362306a36Sopenharmony_ci#define CHANDEF_PR_FMT	" control:%d.%03d MHz width:%d center: %d.%03d/%d MHz"
5462306a36Sopenharmony_ci#define CHANDEF_PR_ARG	__entry->control_freq, __entry->freq_offset, __entry->chan_width, \
5562306a36Sopenharmony_ci			__entry->center_freq1, __entry->freq1_offset, __entry->center_freq2
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define MIN_CHANDEF_ENTRY								\
5862306a36Sopenharmony_ci			__field(u32, min_control_freq)					\
5962306a36Sopenharmony_ci			__field(u32, min_freq_offset)					\
6062306a36Sopenharmony_ci			__field(u32, min_chan_width)					\
6162306a36Sopenharmony_ci			__field(u32, min_center_freq1)					\
6262306a36Sopenharmony_ci			__field(u32, min_freq1_offset)					\
6362306a36Sopenharmony_ci			__field(u32, min_center_freq2)
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci#define MIN_CHANDEF_ASSIGN(c)								\
6662306a36Sopenharmony_ci			__entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0;	\
6762306a36Sopenharmony_ci			__entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0;	\
6862306a36Sopenharmony_ci			__entry->min_chan_width = (c)->width;				\
6962306a36Sopenharmony_ci			__entry->min_center_freq1 = (c)->center_freq1;			\
7062306a36Sopenharmony_ci			__entry->min_freq1_offset = (c)->freq1_offset;			\
7162306a36Sopenharmony_ci			__entry->min_center_freq2 = (c)->center_freq2;
7262306a36Sopenharmony_ci#define MIN_CHANDEF_PR_FMT	" min_control:%d.%03d MHz min_width:%d min_center: %d.%03d/%d MHz"
7362306a36Sopenharmony_ci#define MIN_CHANDEF_PR_ARG	__entry->min_control_freq, __entry->min_freq_offset,	\
7462306a36Sopenharmony_ci			__entry->min_chan_width,					\
7562306a36Sopenharmony_ci			__entry->min_center_freq1, __entry->min_freq1_offset,		\
7662306a36Sopenharmony_ci			__entry->min_center_freq2
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci#define CHANCTX_ENTRY	CHANDEF_ENTRY							\
7962306a36Sopenharmony_ci			MIN_CHANDEF_ENTRY						\
8062306a36Sopenharmony_ci			__field(u8, rx_chains_static)					\
8162306a36Sopenharmony_ci			__field(u8, rx_chains_dynamic)
8262306a36Sopenharmony_ci#define CHANCTX_ASSIGN	CHANDEF_ASSIGN(&ctx->conf.def)					\
8362306a36Sopenharmony_ci			MIN_CHANDEF_ASSIGN(&ctx->conf.min_def)				\
8462306a36Sopenharmony_ci			__entry->rx_chains_static = ctx->conf.rx_chains_static;		\
8562306a36Sopenharmony_ci			__entry->rx_chains_dynamic = ctx->conf.rx_chains_dynamic
8662306a36Sopenharmony_ci#define CHANCTX_PR_FMT	CHANDEF_PR_FMT MIN_CHANDEF_PR_FMT " chains:%d/%d"
8762306a36Sopenharmony_ci#define CHANCTX_PR_ARG	CHANDEF_PR_ARG,	MIN_CHANDEF_PR_ARG,				\
8862306a36Sopenharmony_ci			__entry->rx_chains_static, __entry->rx_chains_dynamic
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci#define KEY_ENTRY	__field(u32, cipher)						\
9162306a36Sopenharmony_ci			__field(u8, hw_key_idx)						\
9262306a36Sopenharmony_ci			__field(u8, flags)						\
9362306a36Sopenharmony_ci			__field(s8, keyidx)
9462306a36Sopenharmony_ci#define KEY_ASSIGN(k)	__entry->cipher = (k)->cipher;					\
9562306a36Sopenharmony_ci			__entry->flags = (k)->flags;					\
9662306a36Sopenharmony_ci			__entry->keyidx = (k)->keyidx;					\
9762306a36Sopenharmony_ci			__entry->hw_key_idx = (k)->hw_key_idx;
9862306a36Sopenharmony_ci#define KEY_PR_FMT	" cipher:0x%x, flags=%#x, keyidx=%d, hw_key_idx=%d"
9962306a36Sopenharmony_ci#define KEY_PR_ARG	__entry->cipher, __entry->flags, __entry->keyidx, __entry->hw_key_idx
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci#define AMPDU_ACTION_ENTRY	__field(enum ieee80211_ampdu_mlme_action,		\
10262306a36Sopenharmony_ci					ieee80211_ampdu_mlme_action)			\
10362306a36Sopenharmony_ci				STA_ENTRY						\
10462306a36Sopenharmony_ci				__field(u16, tid)					\
10562306a36Sopenharmony_ci				__field(u16, ssn)					\
10662306a36Sopenharmony_ci				__field(u16, buf_size)					\
10762306a36Sopenharmony_ci				__field(bool, amsdu)					\
10862306a36Sopenharmony_ci				__field(u16, timeout)					\
10962306a36Sopenharmony_ci				__field(u16, action)
11062306a36Sopenharmony_ci#define AMPDU_ACTION_ASSIGN	STA_NAMED_ASSIGN(params->sta);				\
11162306a36Sopenharmony_ci				__entry->tid = params->tid;				\
11262306a36Sopenharmony_ci				__entry->ssn = params->ssn;				\
11362306a36Sopenharmony_ci				__entry->buf_size = params->buf_size;			\
11462306a36Sopenharmony_ci				__entry->amsdu = params->amsdu;				\
11562306a36Sopenharmony_ci				__entry->timeout = params->timeout;			\
11662306a36Sopenharmony_ci				__entry->action = params->action;
11762306a36Sopenharmony_ci#define AMPDU_ACTION_PR_FMT	STA_PR_FMT " tid %d, ssn %d, buf_size %u, amsdu %d, timeout %d action %d"
11862306a36Sopenharmony_ci#define AMPDU_ACTION_PR_ARG	STA_PR_ARG, __entry->tid, __entry->ssn,			\
11962306a36Sopenharmony_ci				__entry->buf_size, __entry->amsdu, __entry->timeout,	\
12062306a36Sopenharmony_ci				__entry->action
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci/*
12362306a36Sopenharmony_ci * Tracing for driver callbacks.
12462306a36Sopenharmony_ci */
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_only_evt,
12762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
12862306a36Sopenharmony_ci	TP_ARGS(local),
12962306a36Sopenharmony_ci	TP_STRUCT__entry(
13062306a36Sopenharmony_ci		LOCAL_ENTRY
13162306a36Sopenharmony_ci	),
13262306a36Sopenharmony_ci	TP_fast_assign(
13362306a36Sopenharmony_ci		LOCAL_ASSIGN;
13462306a36Sopenharmony_ci	),
13562306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
13662306a36Sopenharmony_ci);
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_addr_evt,
13962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
14062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
14162306a36Sopenharmony_ci	TP_ARGS(local, sdata),
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	TP_STRUCT__entry(
14462306a36Sopenharmony_ci		LOCAL_ENTRY
14562306a36Sopenharmony_ci		VIF_ENTRY
14662306a36Sopenharmony_ci		__array(char, addr, ETH_ALEN)
14762306a36Sopenharmony_ci	),
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	TP_fast_assign(
15062306a36Sopenharmony_ci		LOCAL_ASSIGN;
15162306a36Sopenharmony_ci		VIF_ASSIGN;
15262306a36Sopenharmony_ci		memcpy(__entry->addr, sdata->vif.addr, ETH_ALEN);
15362306a36Sopenharmony_ci	),
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	TP_printk(
15662306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " addr:%pM",
15762306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
15862306a36Sopenharmony_ci	)
15962306a36Sopenharmony_ci);
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_u32_evt,
16262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
16362306a36Sopenharmony_ci	TP_ARGS(local, value),
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	TP_STRUCT__entry(
16662306a36Sopenharmony_ci		LOCAL_ENTRY
16762306a36Sopenharmony_ci		__field(u32, value)
16862306a36Sopenharmony_ci	),
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	TP_fast_assign(
17162306a36Sopenharmony_ci		LOCAL_ASSIGN;
17262306a36Sopenharmony_ci		__entry->value = value;
17362306a36Sopenharmony_ci	),
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci	TP_printk(
17662306a36Sopenharmony_ci		LOCAL_PR_FMT " value:%d",
17762306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->value
17862306a36Sopenharmony_ci	)
17962306a36Sopenharmony_ci);
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_evt,
18262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
18362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
18462306a36Sopenharmony_ci	TP_ARGS(local, sdata),
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	TP_STRUCT__entry(
18762306a36Sopenharmony_ci		LOCAL_ENTRY
18862306a36Sopenharmony_ci		VIF_ENTRY
18962306a36Sopenharmony_ci	),
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci	TP_fast_assign(
19262306a36Sopenharmony_ci		LOCAL_ASSIGN;
19362306a36Sopenharmony_ci		VIF_ASSIGN;
19462306a36Sopenharmony_ci	),
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci	TP_printk(
19762306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT,
19862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
19962306a36Sopenharmony_ci	)
20062306a36Sopenharmony_ci);
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_return_void,
20362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
20462306a36Sopenharmony_ci	TP_ARGS(local)
20562306a36Sopenharmony_ci);
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ciTRACE_EVENT(drv_return_int,
20862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int ret),
20962306a36Sopenharmony_ci	TP_ARGS(local, ret),
21062306a36Sopenharmony_ci	TP_STRUCT__entry(
21162306a36Sopenharmony_ci		LOCAL_ENTRY
21262306a36Sopenharmony_ci		__field(int, ret)
21362306a36Sopenharmony_ci	),
21462306a36Sopenharmony_ci	TP_fast_assign(
21562306a36Sopenharmony_ci		LOCAL_ASSIGN;
21662306a36Sopenharmony_ci		__entry->ret = ret;
21762306a36Sopenharmony_ci	),
21862306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret)
21962306a36Sopenharmony_ci);
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ciTRACE_EVENT(drv_return_bool,
22262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool ret),
22362306a36Sopenharmony_ci	TP_ARGS(local, ret),
22462306a36Sopenharmony_ci	TP_STRUCT__entry(
22562306a36Sopenharmony_ci		LOCAL_ENTRY
22662306a36Sopenharmony_ci		__field(bool, ret)
22762306a36Sopenharmony_ci	),
22862306a36Sopenharmony_ci	TP_fast_assign(
22962306a36Sopenharmony_ci		LOCAL_ASSIGN;
23062306a36Sopenharmony_ci		__entry->ret = ret;
23162306a36Sopenharmony_ci	),
23262306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ?
23362306a36Sopenharmony_ci		  "true" : "false")
23462306a36Sopenharmony_ci);
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciTRACE_EVENT(drv_return_u32,
23762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 ret),
23862306a36Sopenharmony_ci	TP_ARGS(local, ret),
23962306a36Sopenharmony_ci	TP_STRUCT__entry(
24062306a36Sopenharmony_ci		LOCAL_ENTRY
24162306a36Sopenharmony_ci		__field(u32, ret)
24262306a36Sopenharmony_ci	),
24362306a36Sopenharmony_ci	TP_fast_assign(
24462306a36Sopenharmony_ci		LOCAL_ASSIGN;
24562306a36Sopenharmony_ci		__entry->ret = ret;
24662306a36Sopenharmony_ci	),
24762306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %u", LOCAL_PR_ARG, __entry->ret)
24862306a36Sopenharmony_ci);
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ciTRACE_EVENT(drv_return_u64,
25162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u64 ret),
25262306a36Sopenharmony_ci	TP_ARGS(local, ret),
25362306a36Sopenharmony_ci	TP_STRUCT__entry(
25462306a36Sopenharmony_ci		LOCAL_ENTRY
25562306a36Sopenharmony_ci		__field(u64, ret)
25662306a36Sopenharmony_ci	),
25762306a36Sopenharmony_ci	TP_fast_assign(
25862306a36Sopenharmony_ci		LOCAL_ASSIGN;
25962306a36Sopenharmony_ci		__entry->ret = ret;
26062306a36Sopenharmony_ci	),
26162306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret)
26262306a36Sopenharmony_ci);
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_start,
26562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
26662306a36Sopenharmony_ci	TP_ARGS(local)
26762306a36Sopenharmony_ci);
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_get_et_strings,
27062306a36Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local, u32 sset),
27162306a36Sopenharmony_ci	     TP_ARGS(local, sset)
27262306a36Sopenharmony_ci);
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_get_et_sset_count,
27562306a36Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local, u32 sset),
27662306a36Sopenharmony_ci	     TP_ARGS(local, sset)
27762306a36Sopenharmony_ci);
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_get_et_stats,
28062306a36Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local),
28162306a36Sopenharmony_ci	     TP_ARGS(local)
28262306a36Sopenharmony_ci);
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_suspend,
28562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
28662306a36Sopenharmony_ci	TP_ARGS(local)
28762306a36Sopenharmony_ci);
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_resume,
29062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
29162306a36Sopenharmony_ci	TP_ARGS(local)
29262306a36Sopenharmony_ci);
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciTRACE_EVENT(drv_set_wakeup,
29562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool enabled),
29662306a36Sopenharmony_ci	TP_ARGS(local, enabled),
29762306a36Sopenharmony_ci	TP_STRUCT__entry(
29862306a36Sopenharmony_ci		LOCAL_ENTRY
29962306a36Sopenharmony_ci		__field(bool, enabled)
30062306a36Sopenharmony_ci	),
30162306a36Sopenharmony_ci	TP_fast_assign(
30262306a36Sopenharmony_ci		LOCAL_ASSIGN;
30362306a36Sopenharmony_ci		__entry->enabled = enabled;
30462306a36Sopenharmony_ci	),
30562306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled)
30662306a36Sopenharmony_ci);
30762306a36Sopenharmony_ci
30862306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_stop,
30962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
31062306a36Sopenharmony_ci	TP_ARGS(local)
31162306a36Sopenharmony_ci);
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_add_interface,
31462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
31562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
31662306a36Sopenharmony_ci	TP_ARGS(local, sdata)
31762306a36Sopenharmony_ci);
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ciTRACE_EVENT(drv_change_interface,
32062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
32162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
32262306a36Sopenharmony_ci		 enum nl80211_iftype type, bool p2p),
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci	TP_ARGS(local, sdata, type, p2p),
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ci	TP_STRUCT__entry(
32762306a36Sopenharmony_ci		LOCAL_ENTRY
32862306a36Sopenharmony_ci		VIF_ENTRY
32962306a36Sopenharmony_ci		__field(u32, new_type)
33062306a36Sopenharmony_ci		__field(bool, new_p2p)
33162306a36Sopenharmony_ci	),
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ci	TP_fast_assign(
33462306a36Sopenharmony_ci		LOCAL_ASSIGN;
33562306a36Sopenharmony_ci		VIF_ASSIGN;
33662306a36Sopenharmony_ci		__entry->new_type = type;
33762306a36Sopenharmony_ci		__entry->new_p2p = p2p;
33862306a36Sopenharmony_ci	),
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci	TP_printk(
34162306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " new type:%d%s",
34262306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type,
34362306a36Sopenharmony_ci		__entry->new_p2p ? "/p2p" : ""
34462306a36Sopenharmony_ci	)
34562306a36Sopenharmony_ci);
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface,
34862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
34962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
35062306a36Sopenharmony_ci	TP_ARGS(local, sdata)
35162306a36Sopenharmony_ci);
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ciTRACE_EVENT(drv_config,
35462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
35562306a36Sopenharmony_ci		 u32 changed),
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci	TP_ARGS(local, changed),
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ci	TP_STRUCT__entry(
36062306a36Sopenharmony_ci		LOCAL_ENTRY
36162306a36Sopenharmony_ci		__field(u32, changed)
36262306a36Sopenharmony_ci		__field(u32, flags)
36362306a36Sopenharmony_ci		__field(int, power_level)
36462306a36Sopenharmony_ci		__field(int, dynamic_ps_timeout)
36562306a36Sopenharmony_ci		__field(u16, listen_interval)
36662306a36Sopenharmony_ci		__field(u8, long_frame_max_tx_count)
36762306a36Sopenharmony_ci		__field(u8, short_frame_max_tx_count)
36862306a36Sopenharmony_ci		CHANDEF_ENTRY
36962306a36Sopenharmony_ci		__field(int, smps)
37062306a36Sopenharmony_ci	),
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci	TP_fast_assign(
37362306a36Sopenharmony_ci		LOCAL_ASSIGN;
37462306a36Sopenharmony_ci		__entry->changed = changed;
37562306a36Sopenharmony_ci		__entry->flags = local->hw.conf.flags;
37662306a36Sopenharmony_ci		__entry->power_level = local->hw.conf.power_level;
37762306a36Sopenharmony_ci		__entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
37862306a36Sopenharmony_ci		__entry->listen_interval = local->hw.conf.listen_interval;
37962306a36Sopenharmony_ci		__entry->long_frame_max_tx_count =
38062306a36Sopenharmony_ci			local->hw.conf.long_frame_max_tx_count;
38162306a36Sopenharmony_ci		__entry->short_frame_max_tx_count =
38262306a36Sopenharmony_ci			local->hw.conf.short_frame_max_tx_count;
38362306a36Sopenharmony_ci		CHANDEF_ASSIGN(&local->hw.conf.chandef)
38462306a36Sopenharmony_ci		__entry->smps = local->hw.conf.smps_mode;
38562306a36Sopenharmony_ci	),
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ci	TP_printk(
38862306a36Sopenharmony_ci		LOCAL_PR_FMT " ch:%#x" CHANDEF_PR_FMT,
38962306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG
39062306a36Sopenharmony_ci	)
39162306a36Sopenharmony_ci);
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ciTRACE_EVENT(drv_vif_cfg_changed,
39462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
39562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
39662306a36Sopenharmony_ci		 u64 changed),
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci	TP_ARGS(local, sdata, changed),
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci	TP_STRUCT__entry(
40162306a36Sopenharmony_ci		LOCAL_ENTRY
40262306a36Sopenharmony_ci		VIF_ENTRY
40362306a36Sopenharmony_ci		__field(u64, changed)
40462306a36Sopenharmony_ci		__field(bool, assoc)
40562306a36Sopenharmony_ci		__field(bool, ibss_joined)
40662306a36Sopenharmony_ci		__field(bool, ibss_creator)
40762306a36Sopenharmony_ci		__field(u16, aid)
40862306a36Sopenharmony_ci		__dynamic_array(u32, arp_addr_list,
40962306a36Sopenharmony_ci				sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
41062306a36Sopenharmony_ci					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
41162306a36Sopenharmony_ci					sdata->vif.cfg.arp_addr_cnt)
41262306a36Sopenharmony_ci		__field(int, arp_addr_cnt)
41362306a36Sopenharmony_ci		__dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len)
41462306a36Sopenharmony_ci		__field(int, s1g)
41562306a36Sopenharmony_ci		__field(bool, idle)
41662306a36Sopenharmony_ci		__field(bool, ps)
41762306a36Sopenharmony_ci	),
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci	TP_fast_assign(
42062306a36Sopenharmony_ci		LOCAL_ASSIGN;
42162306a36Sopenharmony_ci		VIF_ASSIGN;
42262306a36Sopenharmony_ci		__entry->changed = changed;
42362306a36Sopenharmony_ci		__entry->aid = sdata->vif.cfg.aid;
42462306a36Sopenharmony_ci		__entry->assoc = sdata->vif.cfg.assoc;
42562306a36Sopenharmony_ci		__entry->ibss_joined = sdata->vif.cfg.ibss_joined;
42662306a36Sopenharmony_ci		__entry->ibss_creator = sdata->vif.cfg.ibss_creator;
42762306a36Sopenharmony_ci		__entry->ps = sdata->vif.cfg.ps;
42862306a36Sopenharmony_ci
42962306a36Sopenharmony_ci		__entry->arp_addr_cnt = sdata->vif.cfg.arp_addr_cnt;
43062306a36Sopenharmony_ci		memcpy(__get_dynamic_array(arp_addr_list),
43162306a36Sopenharmony_ci		       sdata->vif.cfg.arp_addr_list,
43262306a36Sopenharmony_ci		       sizeof(u32) * (sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
43362306a36Sopenharmony_ci					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
43462306a36Sopenharmony_ci					sdata->vif.cfg.arp_addr_cnt));
43562306a36Sopenharmony_ci		memcpy(__get_dynamic_array(ssid),
43662306a36Sopenharmony_ci		       sdata->vif.cfg.ssid,
43762306a36Sopenharmony_ci		       sdata->vif.cfg.ssid_len);
43862306a36Sopenharmony_ci		__entry->s1g = sdata->vif.cfg.s1g;
43962306a36Sopenharmony_ci		__entry->idle = sdata->vif.cfg.idle;
44062306a36Sopenharmony_ci	),
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci	TP_printk(
44362306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " changed:%#llx",
44462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
44562306a36Sopenharmony_ci	)
44662306a36Sopenharmony_ci);
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ciTRACE_EVENT(drv_link_info_changed,
44962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
45062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
45162306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf,
45262306a36Sopenharmony_ci		 u64 changed),
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf, changed),
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci	TP_STRUCT__entry(
45762306a36Sopenharmony_ci		LOCAL_ENTRY
45862306a36Sopenharmony_ci		VIF_ENTRY
45962306a36Sopenharmony_ci		__field(u64, changed)
46062306a36Sopenharmony_ci		__field(int, link_id)
46162306a36Sopenharmony_ci		__field(bool, cts)
46262306a36Sopenharmony_ci		__field(bool, shortpre)
46362306a36Sopenharmony_ci		__field(bool, shortslot)
46462306a36Sopenharmony_ci		__field(bool, enable_beacon)
46562306a36Sopenharmony_ci		__field(u8, dtimper)
46662306a36Sopenharmony_ci		__field(u16, bcnint)
46762306a36Sopenharmony_ci		__field(u16, assoc_cap)
46862306a36Sopenharmony_ci		__field(u64, sync_tsf)
46962306a36Sopenharmony_ci		__field(u32, sync_device_ts)
47062306a36Sopenharmony_ci		__field(u8, sync_dtim_count)
47162306a36Sopenharmony_ci		__field(u32, basic_rates)
47262306a36Sopenharmony_ci		__array(int, mcast_rate, NUM_NL80211_BANDS)
47362306a36Sopenharmony_ci		__field(u16, ht_operation_mode)
47462306a36Sopenharmony_ci		__field(s32, cqm_rssi_thold)
47562306a36Sopenharmony_ci		__field(s32, cqm_rssi_hyst)
47662306a36Sopenharmony_ci		__field(u32, channel_width)
47762306a36Sopenharmony_ci		__field(u32, channel_cfreq1)
47862306a36Sopenharmony_ci		__field(u32, channel_cfreq1_offset)
47962306a36Sopenharmony_ci		__field(bool, qos)
48062306a36Sopenharmony_ci		__field(bool, hidden_ssid)
48162306a36Sopenharmony_ci		__field(int, txpower)
48262306a36Sopenharmony_ci		__field(u8, p2p_oppps_ctwindow)
48362306a36Sopenharmony_ci	),
48462306a36Sopenharmony_ci
48562306a36Sopenharmony_ci	TP_fast_assign(
48662306a36Sopenharmony_ci		LOCAL_ASSIGN;
48762306a36Sopenharmony_ci		VIF_ASSIGN;
48862306a36Sopenharmony_ci		__entry->changed = changed;
48962306a36Sopenharmony_ci		__entry->link_id = link_conf->link_id;
49062306a36Sopenharmony_ci		__entry->shortpre = link_conf->use_short_preamble;
49162306a36Sopenharmony_ci		__entry->cts = link_conf->use_cts_prot;
49262306a36Sopenharmony_ci		__entry->shortslot = link_conf->use_short_slot;
49362306a36Sopenharmony_ci		__entry->enable_beacon = link_conf->enable_beacon;
49462306a36Sopenharmony_ci		__entry->dtimper = link_conf->dtim_period;
49562306a36Sopenharmony_ci		__entry->bcnint = link_conf->beacon_int;
49662306a36Sopenharmony_ci		__entry->assoc_cap = link_conf->assoc_capability;
49762306a36Sopenharmony_ci		__entry->sync_tsf = link_conf->sync_tsf;
49862306a36Sopenharmony_ci		__entry->sync_device_ts = link_conf->sync_device_ts;
49962306a36Sopenharmony_ci		__entry->sync_dtim_count = link_conf->sync_dtim_count;
50062306a36Sopenharmony_ci		__entry->basic_rates = link_conf->basic_rates;
50162306a36Sopenharmony_ci		memcpy(__entry->mcast_rate, link_conf->mcast_rate,
50262306a36Sopenharmony_ci		       sizeof(__entry->mcast_rate));
50362306a36Sopenharmony_ci		__entry->ht_operation_mode = link_conf->ht_operation_mode;
50462306a36Sopenharmony_ci		__entry->cqm_rssi_thold = link_conf->cqm_rssi_thold;
50562306a36Sopenharmony_ci		__entry->cqm_rssi_hyst = link_conf->cqm_rssi_hyst;
50662306a36Sopenharmony_ci		__entry->channel_width = link_conf->chandef.width;
50762306a36Sopenharmony_ci		__entry->channel_cfreq1 = link_conf->chandef.center_freq1;
50862306a36Sopenharmony_ci		__entry->channel_cfreq1_offset = link_conf->chandef.freq1_offset;
50962306a36Sopenharmony_ci		__entry->qos = link_conf->qos;
51062306a36Sopenharmony_ci		__entry->hidden_ssid = link_conf->hidden_ssid;
51162306a36Sopenharmony_ci		__entry->txpower = link_conf->txpower;
51262306a36Sopenharmony_ci		__entry->p2p_oppps_ctwindow = link_conf->p2p_noa_attr.oppps_ctwindow;
51362306a36Sopenharmony_ci	),
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_ci	TP_printk(
51662306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " link_id:%d, changed:%#llx",
51762306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id,
51862306a36Sopenharmony_ci		__entry->changed
51962306a36Sopenharmony_ci	)
52062306a36Sopenharmony_ci);
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ciTRACE_EVENT(drv_prepare_multicast,
52362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int mc_count),
52462306a36Sopenharmony_ci
52562306a36Sopenharmony_ci	TP_ARGS(local, mc_count),
52662306a36Sopenharmony_ci
52762306a36Sopenharmony_ci	TP_STRUCT__entry(
52862306a36Sopenharmony_ci		LOCAL_ENTRY
52962306a36Sopenharmony_ci		__field(int, mc_count)
53062306a36Sopenharmony_ci	),
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_ci	TP_fast_assign(
53362306a36Sopenharmony_ci		LOCAL_ASSIGN;
53462306a36Sopenharmony_ci		__entry->mc_count = mc_count;
53562306a36Sopenharmony_ci	),
53662306a36Sopenharmony_ci
53762306a36Sopenharmony_ci	TP_printk(
53862306a36Sopenharmony_ci		LOCAL_PR_FMT " prepare mc (%d)",
53962306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->mc_count
54062306a36Sopenharmony_ci	)
54162306a36Sopenharmony_ci);
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ciTRACE_EVENT(drv_configure_filter,
54462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
54562306a36Sopenharmony_ci		 unsigned int changed_flags,
54662306a36Sopenharmony_ci		 unsigned int *total_flags,
54762306a36Sopenharmony_ci		 u64 multicast),
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_ci	TP_ARGS(local, changed_flags, total_flags, multicast),
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_ci	TP_STRUCT__entry(
55262306a36Sopenharmony_ci		LOCAL_ENTRY
55362306a36Sopenharmony_ci		__field(unsigned int, changed)
55462306a36Sopenharmony_ci		__field(unsigned int, total)
55562306a36Sopenharmony_ci		__field(u64, multicast)
55662306a36Sopenharmony_ci	),
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci	TP_fast_assign(
55962306a36Sopenharmony_ci		LOCAL_ASSIGN;
56062306a36Sopenharmony_ci		__entry->changed = changed_flags;
56162306a36Sopenharmony_ci		__entry->total = *total_flags;
56262306a36Sopenharmony_ci		__entry->multicast = multicast;
56362306a36Sopenharmony_ci	),
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci	TP_printk(
56662306a36Sopenharmony_ci		LOCAL_PR_FMT " changed:%#x total:%#x",
56762306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->changed, __entry->total
56862306a36Sopenharmony_ci	)
56962306a36Sopenharmony_ci);
57062306a36Sopenharmony_ci
57162306a36Sopenharmony_ciTRACE_EVENT(drv_config_iface_filter,
57262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
57362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
57462306a36Sopenharmony_ci		 unsigned int filter_flags,
57562306a36Sopenharmony_ci		 unsigned int changed_flags),
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ci	TP_ARGS(local, sdata, filter_flags, changed_flags),
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_ci	TP_STRUCT__entry(
58062306a36Sopenharmony_ci		LOCAL_ENTRY
58162306a36Sopenharmony_ci		VIF_ENTRY
58262306a36Sopenharmony_ci		__field(unsigned int, filter_flags)
58362306a36Sopenharmony_ci		__field(unsigned int, changed_flags)
58462306a36Sopenharmony_ci	),
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_ci	TP_fast_assign(
58762306a36Sopenharmony_ci		LOCAL_ASSIGN;
58862306a36Sopenharmony_ci		VIF_ASSIGN;
58962306a36Sopenharmony_ci		__entry->filter_flags = filter_flags;
59062306a36Sopenharmony_ci		__entry->changed_flags = changed_flags;
59162306a36Sopenharmony_ci	),
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci	TP_printk(
59462306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
59562306a36Sopenharmony_ci		" filter_flags: %#x changed_flags: %#x",
59662306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->filter_flags,
59762306a36Sopenharmony_ci		__entry->changed_flags
59862306a36Sopenharmony_ci	)
59962306a36Sopenharmony_ci);
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_ciTRACE_EVENT(drv_set_tim,
60262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
60362306a36Sopenharmony_ci		 struct ieee80211_sta *sta, bool set),
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_ci	TP_ARGS(local, sta, set),
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_ci	TP_STRUCT__entry(
60862306a36Sopenharmony_ci		LOCAL_ENTRY
60962306a36Sopenharmony_ci		STA_ENTRY
61062306a36Sopenharmony_ci		__field(bool, set)
61162306a36Sopenharmony_ci	),
61262306a36Sopenharmony_ci
61362306a36Sopenharmony_ci	TP_fast_assign(
61462306a36Sopenharmony_ci		LOCAL_ASSIGN;
61562306a36Sopenharmony_ci		STA_ASSIGN;
61662306a36Sopenharmony_ci		__entry->set = set;
61762306a36Sopenharmony_ci	),
61862306a36Sopenharmony_ci
61962306a36Sopenharmony_ci	TP_printk(
62062306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " set:%d",
62162306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->set
62262306a36Sopenharmony_ci	)
62362306a36Sopenharmony_ci);
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_ciTRACE_EVENT(drv_set_key,
62662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
62762306a36Sopenharmony_ci		 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
62862306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
62962306a36Sopenharmony_ci		 struct ieee80211_key_conf *key),
63062306a36Sopenharmony_ci
63162306a36Sopenharmony_ci	TP_ARGS(local, cmd, sdata, sta, key),
63262306a36Sopenharmony_ci
63362306a36Sopenharmony_ci	TP_STRUCT__entry(
63462306a36Sopenharmony_ci		LOCAL_ENTRY
63562306a36Sopenharmony_ci		VIF_ENTRY
63662306a36Sopenharmony_ci		STA_ENTRY
63762306a36Sopenharmony_ci		__field(u32, cmd)
63862306a36Sopenharmony_ci		KEY_ENTRY
63962306a36Sopenharmony_ci	),
64062306a36Sopenharmony_ci
64162306a36Sopenharmony_ci	TP_fast_assign(
64262306a36Sopenharmony_ci		LOCAL_ASSIGN;
64362306a36Sopenharmony_ci		VIF_ASSIGN;
64462306a36Sopenharmony_ci		STA_ASSIGN;
64562306a36Sopenharmony_ci		__entry->cmd = cmd;
64662306a36Sopenharmony_ci		KEY_ASSIGN(key);
64762306a36Sopenharmony_ci	),
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_ci	TP_printk(
65062306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " cmd: %d" KEY_PR_FMT,
65162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd, KEY_PR_ARG
65262306a36Sopenharmony_ci	)
65362306a36Sopenharmony_ci);
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ciTRACE_EVENT(drv_update_tkip_key,
65662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
65762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
65862306a36Sopenharmony_ci		 struct ieee80211_key_conf *conf,
65962306a36Sopenharmony_ci		 struct ieee80211_sta *sta, u32 iv32),
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_ci	TP_ARGS(local, sdata, conf, sta, iv32),
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_ci	TP_STRUCT__entry(
66462306a36Sopenharmony_ci		LOCAL_ENTRY
66562306a36Sopenharmony_ci		VIF_ENTRY
66662306a36Sopenharmony_ci		STA_ENTRY
66762306a36Sopenharmony_ci		__field(u32, iv32)
66862306a36Sopenharmony_ci	),
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ci	TP_fast_assign(
67162306a36Sopenharmony_ci		LOCAL_ASSIGN;
67262306a36Sopenharmony_ci		VIF_ASSIGN;
67362306a36Sopenharmony_ci		STA_ASSIGN;
67462306a36Sopenharmony_ci		__entry->iv32 = iv32;
67562306a36Sopenharmony_ci	),
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_ci	TP_printk(
67862306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x",
67962306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->iv32
68062306a36Sopenharmony_ci	)
68162306a36Sopenharmony_ci);
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_hw_scan,
68462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
68562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
68662306a36Sopenharmony_ci	TP_ARGS(local, sdata)
68762306a36Sopenharmony_ci);
68862306a36Sopenharmony_ci
68962306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan,
69062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
69162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
69262306a36Sopenharmony_ci	TP_ARGS(local, sdata)
69362306a36Sopenharmony_ci);
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sched_scan_start,
69662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
69762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
69862306a36Sopenharmony_ci	TP_ARGS(local, sdata)
69962306a36Sopenharmony_ci);
70062306a36Sopenharmony_ci
70162306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop,
70262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
70362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
70462306a36Sopenharmony_ci	TP_ARGS(local, sdata)
70562306a36Sopenharmony_ci);
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ciTRACE_EVENT(drv_sw_scan_start,
70862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
70962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
71062306a36Sopenharmony_ci		 const u8 *mac_addr),
71162306a36Sopenharmony_ci
71262306a36Sopenharmony_ci	TP_ARGS(local, sdata, mac_addr),
71362306a36Sopenharmony_ci
71462306a36Sopenharmony_ci	TP_STRUCT__entry(
71562306a36Sopenharmony_ci		LOCAL_ENTRY
71662306a36Sopenharmony_ci		VIF_ENTRY
71762306a36Sopenharmony_ci		__array(char, mac_addr, ETH_ALEN)
71862306a36Sopenharmony_ci	),
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_ci	TP_fast_assign(
72162306a36Sopenharmony_ci		LOCAL_ASSIGN;
72262306a36Sopenharmony_ci		VIF_ASSIGN;
72362306a36Sopenharmony_ci		memcpy(__entry->mac_addr, mac_addr, ETH_ALEN);
72462306a36Sopenharmony_ci	),
72562306a36Sopenharmony_ci
72662306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT ", addr:%pM",
72762306a36Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG, __entry->mac_addr)
72862306a36Sopenharmony_ci);
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_sw_scan_complete,
73162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
73262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
73362306a36Sopenharmony_ci	TP_ARGS(local, sdata)
73462306a36Sopenharmony_ci);
73562306a36Sopenharmony_ci
73662306a36Sopenharmony_ciTRACE_EVENT(drv_get_stats,
73762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
73862306a36Sopenharmony_ci		 struct ieee80211_low_level_stats *stats,
73962306a36Sopenharmony_ci		 int ret),
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_ci	TP_ARGS(local, stats, ret),
74262306a36Sopenharmony_ci
74362306a36Sopenharmony_ci	TP_STRUCT__entry(
74462306a36Sopenharmony_ci		LOCAL_ENTRY
74562306a36Sopenharmony_ci		__field(int, ret)
74662306a36Sopenharmony_ci		__field(unsigned int, ackfail)
74762306a36Sopenharmony_ci		__field(unsigned int, rtsfail)
74862306a36Sopenharmony_ci		__field(unsigned int, fcserr)
74962306a36Sopenharmony_ci		__field(unsigned int, rtssucc)
75062306a36Sopenharmony_ci	),
75162306a36Sopenharmony_ci
75262306a36Sopenharmony_ci	TP_fast_assign(
75362306a36Sopenharmony_ci		LOCAL_ASSIGN;
75462306a36Sopenharmony_ci		__entry->ret = ret;
75562306a36Sopenharmony_ci		__entry->ackfail = stats->dot11ACKFailureCount;
75662306a36Sopenharmony_ci		__entry->rtsfail = stats->dot11RTSFailureCount;
75762306a36Sopenharmony_ci		__entry->fcserr = stats->dot11FCSErrorCount;
75862306a36Sopenharmony_ci		__entry->rtssucc = stats->dot11RTSSuccessCount;
75962306a36Sopenharmony_ci	),
76062306a36Sopenharmony_ci
76162306a36Sopenharmony_ci	TP_printk(
76262306a36Sopenharmony_ci		LOCAL_PR_FMT " ret:%d",
76362306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->ret
76462306a36Sopenharmony_ci	)
76562306a36Sopenharmony_ci);
76662306a36Sopenharmony_ci
76762306a36Sopenharmony_ciTRACE_EVENT(drv_get_key_seq,
76862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
76962306a36Sopenharmony_ci		 struct ieee80211_key_conf *key),
77062306a36Sopenharmony_ci
77162306a36Sopenharmony_ci	TP_ARGS(local, key),
77262306a36Sopenharmony_ci
77362306a36Sopenharmony_ci	TP_STRUCT__entry(
77462306a36Sopenharmony_ci		LOCAL_ENTRY
77562306a36Sopenharmony_ci		KEY_ENTRY
77662306a36Sopenharmony_ci	),
77762306a36Sopenharmony_ci
77862306a36Sopenharmony_ci	TP_fast_assign(
77962306a36Sopenharmony_ci		LOCAL_ASSIGN;
78062306a36Sopenharmony_ci		KEY_ASSIGN(key);
78162306a36Sopenharmony_ci	),
78262306a36Sopenharmony_ci
78362306a36Sopenharmony_ci	TP_printk(
78462306a36Sopenharmony_ci		LOCAL_PR_FMT KEY_PR_FMT,
78562306a36Sopenharmony_ci		LOCAL_PR_ARG, KEY_PR_ARG
78662306a36Sopenharmony_ci	)
78762306a36Sopenharmony_ci);
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_set_frag_threshold,
79062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
79162306a36Sopenharmony_ci	TP_ARGS(local, value)
79262306a36Sopenharmony_ci);
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ciDEFINE_EVENT(local_u32_evt, drv_set_rts_threshold,
79562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 value),
79662306a36Sopenharmony_ci	TP_ARGS(local, value)
79762306a36Sopenharmony_ci);
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_ciTRACE_EVENT(drv_set_coverage_class,
80062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, s16 value),
80162306a36Sopenharmony_ci
80262306a36Sopenharmony_ci	TP_ARGS(local, value),
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_ci	TP_STRUCT__entry(
80562306a36Sopenharmony_ci		LOCAL_ENTRY
80662306a36Sopenharmony_ci		__field(s16, value)
80762306a36Sopenharmony_ci	),
80862306a36Sopenharmony_ci
80962306a36Sopenharmony_ci	TP_fast_assign(
81062306a36Sopenharmony_ci		LOCAL_ASSIGN;
81162306a36Sopenharmony_ci		__entry->value = value;
81262306a36Sopenharmony_ci	),
81362306a36Sopenharmony_ci
81462306a36Sopenharmony_ci	TP_printk(
81562306a36Sopenharmony_ci		LOCAL_PR_FMT " value:%d",
81662306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->value
81762306a36Sopenharmony_ci	)
81862306a36Sopenharmony_ci);
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_ciTRACE_EVENT(drv_sta_notify,
82162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
82262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
82362306a36Sopenharmony_ci		 enum sta_notify_cmd cmd,
82462306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
82562306a36Sopenharmony_ci
82662306a36Sopenharmony_ci	TP_ARGS(local, sdata, cmd, sta),
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ci	TP_STRUCT__entry(
82962306a36Sopenharmony_ci		LOCAL_ENTRY
83062306a36Sopenharmony_ci		VIF_ENTRY
83162306a36Sopenharmony_ci		STA_ENTRY
83262306a36Sopenharmony_ci		__field(u32, cmd)
83362306a36Sopenharmony_ci	),
83462306a36Sopenharmony_ci
83562306a36Sopenharmony_ci	TP_fast_assign(
83662306a36Sopenharmony_ci		LOCAL_ASSIGN;
83762306a36Sopenharmony_ci		VIF_ASSIGN;
83862306a36Sopenharmony_ci		STA_ASSIGN;
83962306a36Sopenharmony_ci		__entry->cmd = cmd;
84062306a36Sopenharmony_ci	),
84162306a36Sopenharmony_ci
84262306a36Sopenharmony_ci	TP_printk(
84362306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " cmd:%d",
84462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd
84562306a36Sopenharmony_ci	)
84662306a36Sopenharmony_ci);
84762306a36Sopenharmony_ci
84862306a36Sopenharmony_ciTRACE_EVENT(drv_sta_state,
84962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
85062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
85162306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
85262306a36Sopenharmony_ci		 enum ieee80211_sta_state old_state,
85362306a36Sopenharmony_ci		 enum ieee80211_sta_state new_state),
85462306a36Sopenharmony_ci
85562306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, old_state, new_state),
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci	TP_STRUCT__entry(
85862306a36Sopenharmony_ci		LOCAL_ENTRY
85962306a36Sopenharmony_ci		VIF_ENTRY
86062306a36Sopenharmony_ci		STA_ENTRY
86162306a36Sopenharmony_ci		__field(u32, old_state)
86262306a36Sopenharmony_ci		__field(u32, new_state)
86362306a36Sopenharmony_ci	),
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci	TP_fast_assign(
86662306a36Sopenharmony_ci		LOCAL_ASSIGN;
86762306a36Sopenharmony_ci		VIF_ASSIGN;
86862306a36Sopenharmony_ci		STA_ASSIGN;
86962306a36Sopenharmony_ci		__entry->old_state = old_state;
87062306a36Sopenharmony_ci		__entry->new_state = new_state;
87162306a36Sopenharmony_ci	),
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ci	TP_printk(
87462306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " state: %d->%d",
87562306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
87662306a36Sopenharmony_ci		__entry->old_state, __entry->new_state
87762306a36Sopenharmony_ci	)
87862306a36Sopenharmony_ci);
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_ciTRACE_EVENT(drv_sta_set_txpwr,
88162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
88262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
88362306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
88462306a36Sopenharmony_ci
88562306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta),
88662306a36Sopenharmony_ci
88762306a36Sopenharmony_ci	TP_STRUCT__entry(
88862306a36Sopenharmony_ci		LOCAL_ENTRY
88962306a36Sopenharmony_ci		VIF_ENTRY
89062306a36Sopenharmony_ci		STA_ENTRY
89162306a36Sopenharmony_ci		__field(s16, txpwr)
89262306a36Sopenharmony_ci		__field(u8, type)
89362306a36Sopenharmony_ci	),
89462306a36Sopenharmony_ci
89562306a36Sopenharmony_ci	TP_fast_assign(
89662306a36Sopenharmony_ci		LOCAL_ASSIGN;
89762306a36Sopenharmony_ci		VIF_ASSIGN;
89862306a36Sopenharmony_ci		STA_ASSIGN;
89962306a36Sopenharmony_ci		__entry->txpwr = sta->deflink.txpwr.power;
90062306a36Sopenharmony_ci		__entry->type = sta->deflink.txpwr.type;
90162306a36Sopenharmony_ci	),
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_ci	TP_printk(
90462306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " txpwr: %d type %d",
90562306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
90662306a36Sopenharmony_ci		__entry->txpwr,  __entry->type
90762306a36Sopenharmony_ci	)
90862306a36Sopenharmony_ci);
90962306a36Sopenharmony_ci
91062306a36Sopenharmony_ciTRACE_EVENT(drv_sta_rc_update,
91162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
91262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
91362306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
91462306a36Sopenharmony_ci		 u32 changed),
91562306a36Sopenharmony_ci
91662306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, changed),
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_ci	TP_STRUCT__entry(
91962306a36Sopenharmony_ci		LOCAL_ENTRY
92062306a36Sopenharmony_ci		VIF_ENTRY
92162306a36Sopenharmony_ci		STA_ENTRY
92262306a36Sopenharmony_ci		__field(u32, changed)
92362306a36Sopenharmony_ci	),
92462306a36Sopenharmony_ci
92562306a36Sopenharmony_ci	TP_fast_assign(
92662306a36Sopenharmony_ci		LOCAL_ASSIGN;
92762306a36Sopenharmony_ci		VIF_ASSIGN;
92862306a36Sopenharmony_ci		STA_ASSIGN;
92962306a36Sopenharmony_ci		__entry->changed = changed;
93062306a36Sopenharmony_ci	),
93162306a36Sopenharmony_ci
93262306a36Sopenharmony_ci	TP_printk(
93362306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " changed: 0x%x",
93462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed
93562306a36Sopenharmony_ci	)
93662306a36Sopenharmony_ci);
93762306a36Sopenharmony_ci
93862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(sta_event,
93962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
94062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
94162306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
94262306a36Sopenharmony_ci
94362306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta),
94462306a36Sopenharmony_ci
94562306a36Sopenharmony_ci	TP_STRUCT__entry(
94662306a36Sopenharmony_ci		LOCAL_ENTRY
94762306a36Sopenharmony_ci		VIF_ENTRY
94862306a36Sopenharmony_ci		STA_ENTRY
94962306a36Sopenharmony_ci	),
95062306a36Sopenharmony_ci
95162306a36Sopenharmony_ci	TP_fast_assign(
95262306a36Sopenharmony_ci		LOCAL_ASSIGN;
95362306a36Sopenharmony_ci		VIF_ASSIGN;
95462306a36Sopenharmony_ci		STA_ASSIGN;
95562306a36Sopenharmony_ci	),
95662306a36Sopenharmony_ci
95762306a36Sopenharmony_ci	TP_printk(
95862306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
95962306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
96062306a36Sopenharmony_ci	)
96162306a36Sopenharmony_ci);
96262306a36Sopenharmony_ci
96362306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_statistics,
96462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
96562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
96662306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
96762306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
96862306a36Sopenharmony_ci);
96962306a36Sopenharmony_ci
97062306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_add,
97162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
97262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
97362306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
97462306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
97562306a36Sopenharmony_ci);
97662306a36Sopenharmony_ci
97762306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_remove,
97862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
97962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
98062306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
98162306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
98262306a36Sopenharmony_ci);
98362306a36Sopenharmony_ci
98462306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_pre_rcu_remove,
98562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
98662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
98762306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
98862306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
98962306a36Sopenharmony_ci);
99062306a36Sopenharmony_ci
99162306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sync_rx_queues,
99262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
99362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
99462306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
99562306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
99662306a36Sopenharmony_ci);
99762306a36Sopenharmony_ci
99862306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_sta_rate_tbl_update,
99962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
100062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
100162306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
100262306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
100362306a36Sopenharmony_ci);
100462306a36Sopenharmony_ci
100562306a36Sopenharmony_ciTRACE_EVENT(drv_conf_tx,
100662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
100762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
100862306a36Sopenharmony_ci		 unsigned int link_id,
100962306a36Sopenharmony_ci		 u16 ac, const struct ieee80211_tx_queue_params *params),
101062306a36Sopenharmony_ci
101162306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_id, ac, params),
101262306a36Sopenharmony_ci
101362306a36Sopenharmony_ci	TP_STRUCT__entry(
101462306a36Sopenharmony_ci		LOCAL_ENTRY
101562306a36Sopenharmony_ci		VIF_ENTRY
101662306a36Sopenharmony_ci		__field(unsigned int, link_id)
101762306a36Sopenharmony_ci		__field(u16, ac)
101862306a36Sopenharmony_ci		__field(u16, txop)
101962306a36Sopenharmony_ci		__field(u16, cw_min)
102062306a36Sopenharmony_ci		__field(u16, cw_max)
102162306a36Sopenharmony_ci		__field(u8, aifs)
102262306a36Sopenharmony_ci		__field(bool, uapsd)
102362306a36Sopenharmony_ci	),
102462306a36Sopenharmony_ci
102562306a36Sopenharmony_ci	TP_fast_assign(
102662306a36Sopenharmony_ci		LOCAL_ASSIGN;
102762306a36Sopenharmony_ci		VIF_ASSIGN;
102862306a36Sopenharmony_ci		__entry->link_id = link_id;
102962306a36Sopenharmony_ci		__entry->ac = ac;
103062306a36Sopenharmony_ci		__entry->txop = params->txop;
103162306a36Sopenharmony_ci		__entry->cw_max = params->cw_max;
103262306a36Sopenharmony_ci		__entry->cw_min = params->cw_min;
103362306a36Sopenharmony_ci		__entry->aifs = params->aifs;
103462306a36Sopenharmony_ci		__entry->uapsd = params->uapsd;
103562306a36Sopenharmony_ci	),
103662306a36Sopenharmony_ci
103762306a36Sopenharmony_ci	TP_printk(
103862306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " link_id: %d, AC:%d",
103962306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, __entry->ac
104062306a36Sopenharmony_ci	)
104162306a36Sopenharmony_ci);
104262306a36Sopenharmony_ci
104362306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_get_tsf,
104462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
104562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
104662306a36Sopenharmony_ci	TP_ARGS(local, sdata)
104762306a36Sopenharmony_ci);
104862306a36Sopenharmony_ci
104962306a36Sopenharmony_ciTRACE_EVENT(drv_set_tsf,
105062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
105162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
105262306a36Sopenharmony_ci		 u64 tsf),
105362306a36Sopenharmony_ci
105462306a36Sopenharmony_ci	TP_ARGS(local, sdata, tsf),
105562306a36Sopenharmony_ci
105662306a36Sopenharmony_ci	TP_STRUCT__entry(
105762306a36Sopenharmony_ci		LOCAL_ENTRY
105862306a36Sopenharmony_ci		VIF_ENTRY
105962306a36Sopenharmony_ci		__field(u64, tsf)
106062306a36Sopenharmony_ci	),
106162306a36Sopenharmony_ci
106262306a36Sopenharmony_ci	TP_fast_assign(
106362306a36Sopenharmony_ci		LOCAL_ASSIGN;
106462306a36Sopenharmony_ci		VIF_ASSIGN;
106562306a36Sopenharmony_ci		__entry->tsf = tsf;
106662306a36Sopenharmony_ci	),
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_ci	TP_printk(
106962306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " tsf:%llu",
107062306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf
107162306a36Sopenharmony_ci	)
107262306a36Sopenharmony_ci);
107362306a36Sopenharmony_ci
107462306a36Sopenharmony_ciTRACE_EVENT(drv_offset_tsf,
107562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
107662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
107762306a36Sopenharmony_ci		 s64 offset),
107862306a36Sopenharmony_ci
107962306a36Sopenharmony_ci	TP_ARGS(local, sdata, offset),
108062306a36Sopenharmony_ci
108162306a36Sopenharmony_ci	TP_STRUCT__entry(
108262306a36Sopenharmony_ci		LOCAL_ENTRY
108362306a36Sopenharmony_ci		VIF_ENTRY
108462306a36Sopenharmony_ci		__field(s64, tsf_offset)
108562306a36Sopenharmony_ci	),
108662306a36Sopenharmony_ci
108762306a36Sopenharmony_ci	TP_fast_assign(
108862306a36Sopenharmony_ci		LOCAL_ASSIGN;
108962306a36Sopenharmony_ci		VIF_ASSIGN;
109062306a36Sopenharmony_ci		__entry->tsf_offset = offset;
109162306a36Sopenharmony_ci	),
109262306a36Sopenharmony_ci
109362306a36Sopenharmony_ci	TP_printk(
109462306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  " tsf offset:%lld",
109562306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG,
109662306a36Sopenharmony_ci		(unsigned long long)__entry->tsf_offset
109762306a36Sopenharmony_ci	)
109862306a36Sopenharmony_ci);
109962306a36Sopenharmony_ci
110062306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_reset_tsf,
110162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
110262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
110362306a36Sopenharmony_ci	TP_ARGS(local, sdata)
110462306a36Sopenharmony_ci);
110562306a36Sopenharmony_ci
110662306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_tx_last_beacon,
110762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
110862306a36Sopenharmony_ci	TP_ARGS(local)
110962306a36Sopenharmony_ci);
111062306a36Sopenharmony_ci
111162306a36Sopenharmony_ciTRACE_EVENT(drv_ampdu_action,
111262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
111362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
111462306a36Sopenharmony_ci		 struct ieee80211_ampdu_params *params),
111562306a36Sopenharmony_ci
111662306a36Sopenharmony_ci	TP_ARGS(local, sdata, params),
111762306a36Sopenharmony_ci
111862306a36Sopenharmony_ci	TP_STRUCT__entry(
111962306a36Sopenharmony_ci		LOCAL_ENTRY
112062306a36Sopenharmony_ci		VIF_ENTRY
112162306a36Sopenharmony_ci		AMPDU_ACTION_ENTRY
112262306a36Sopenharmony_ci	),
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_ci	TP_fast_assign(
112562306a36Sopenharmony_ci		LOCAL_ASSIGN;
112662306a36Sopenharmony_ci		VIF_ASSIGN;
112762306a36Sopenharmony_ci		AMPDU_ACTION_ASSIGN;
112862306a36Sopenharmony_ci	),
112962306a36Sopenharmony_ci
113062306a36Sopenharmony_ci	TP_printk(
113162306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT AMPDU_ACTION_PR_FMT,
113262306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, AMPDU_ACTION_PR_ARG
113362306a36Sopenharmony_ci	)
113462306a36Sopenharmony_ci);
113562306a36Sopenharmony_ci
113662306a36Sopenharmony_ciTRACE_EVENT(drv_get_survey,
113762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, int _idx,
113862306a36Sopenharmony_ci		 struct survey_info *survey),
113962306a36Sopenharmony_ci
114062306a36Sopenharmony_ci	TP_ARGS(local, _idx, survey),
114162306a36Sopenharmony_ci
114262306a36Sopenharmony_ci	TP_STRUCT__entry(
114362306a36Sopenharmony_ci		LOCAL_ENTRY
114462306a36Sopenharmony_ci		__field(int, idx)
114562306a36Sopenharmony_ci	),
114662306a36Sopenharmony_ci
114762306a36Sopenharmony_ci	TP_fast_assign(
114862306a36Sopenharmony_ci		LOCAL_ASSIGN;
114962306a36Sopenharmony_ci		__entry->idx = _idx;
115062306a36Sopenharmony_ci	),
115162306a36Sopenharmony_ci
115262306a36Sopenharmony_ci	TP_printk(
115362306a36Sopenharmony_ci		LOCAL_PR_FMT " idx:%d",
115462306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->idx
115562306a36Sopenharmony_ci	)
115662306a36Sopenharmony_ci);
115762306a36Sopenharmony_ci
115862306a36Sopenharmony_ciTRACE_EVENT(drv_flush,
115962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
116062306a36Sopenharmony_ci		 u32 queues, bool drop),
116162306a36Sopenharmony_ci
116262306a36Sopenharmony_ci	TP_ARGS(local, queues, drop),
116362306a36Sopenharmony_ci
116462306a36Sopenharmony_ci	TP_STRUCT__entry(
116562306a36Sopenharmony_ci		LOCAL_ENTRY
116662306a36Sopenharmony_ci		__field(bool, drop)
116762306a36Sopenharmony_ci		__field(u32, queues)
116862306a36Sopenharmony_ci	),
116962306a36Sopenharmony_ci
117062306a36Sopenharmony_ci	TP_fast_assign(
117162306a36Sopenharmony_ci		LOCAL_ASSIGN;
117262306a36Sopenharmony_ci		__entry->drop = drop;
117362306a36Sopenharmony_ci		__entry->queues = queues;
117462306a36Sopenharmony_ci	),
117562306a36Sopenharmony_ci
117662306a36Sopenharmony_ci	TP_printk(
117762306a36Sopenharmony_ci		LOCAL_PR_FMT " queues:0x%x drop:%d",
117862306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->queues, __entry->drop
117962306a36Sopenharmony_ci	)
118062306a36Sopenharmony_ci);
118162306a36Sopenharmony_ci
118262306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_flush_sta,
118362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
118462306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
118562306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
118662306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
118762306a36Sopenharmony_ci);
118862306a36Sopenharmony_ci
118962306a36Sopenharmony_ciTRACE_EVENT(drv_channel_switch,
119062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
119162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
119262306a36Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
119362306a36Sopenharmony_ci
119462306a36Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
119562306a36Sopenharmony_ci
119662306a36Sopenharmony_ci	TP_STRUCT__entry(
119762306a36Sopenharmony_ci		LOCAL_ENTRY
119862306a36Sopenharmony_ci		VIF_ENTRY
119962306a36Sopenharmony_ci		CHANDEF_ENTRY
120062306a36Sopenharmony_ci		__field(u64, timestamp)
120162306a36Sopenharmony_ci		__field(u32, device_timestamp)
120262306a36Sopenharmony_ci		__field(bool, block_tx)
120362306a36Sopenharmony_ci		__field(u8, count)
120462306a36Sopenharmony_ci	),
120562306a36Sopenharmony_ci
120662306a36Sopenharmony_ci	TP_fast_assign(
120762306a36Sopenharmony_ci		LOCAL_ASSIGN;
120862306a36Sopenharmony_ci		VIF_ASSIGN;
120962306a36Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
121062306a36Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
121162306a36Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
121262306a36Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
121362306a36Sopenharmony_ci		__entry->count = ch_switch->count;
121462306a36Sopenharmony_ci	),
121562306a36Sopenharmony_ci
121662306a36Sopenharmony_ci	TP_printk(
121762306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " new " CHANDEF_PR_FMT " count:%d",
121862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count
121962306a36Sopenharmony_ci	)
122062306a36Sopenharmony_ci);
122162306a36Sopenharmony_ci
122262306a36Sopenharmony_ciTRACE_EVENT(drv_set_antenna,
122362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_ci	TP_ARGS(local, tx_ant, rx_ant, ret),
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_ci	TP_STRUCT__entry(
122862306a36Sopenharmony_ci		LOCAL_ENTRY
122962306a36Sopenharmony_ci		__field(u32, tx_ant)
123062306a36Sopenharmony_ci		__field(u32, rx_ant)
123162306a36Sopenharmony_ci		__field(int, ret)
123262306a36Sopenharmony_ci	),
123362306a36Sopenharmony_ci
123462306a36Sopenharmony_ci	TP_fast_assign(
123562306a36Sopenharmony_ci		LOCAL_ASSIGN;
123662306a36Sopenharmony_ci		__entry->tx_ant = tx_ant;
123762306a36Sopenharmony_ci		__entry->rx_ant = rx_ant;
123862306a36Sopenharmony_ci		__entry->ret = ret;
123962306a36Sopenharmony_ci	),
124062306a36Sopenharmony_ci
124162306a36Sopenharmony_ci	TP_printk(
124262306a36Sopenharmony_ci		LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
124362306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
124462306a36Sopenharmony_ci	)
124562306a36Sopenharmony_ci);
124662306a36Sopenharmony_ci
124762306a36Sopenharmony_ciTRACE_EVENT(drv_get_antenna,
124862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
124962306a36Sopenharmony_ci
125062306a36Sopenharmony_ci	TP_ARGS(local, tx_ant, rx_ant, ret),
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_ci	TP_STRUCT__entry(
125362306a36Sopenharmony_ci		LOCAL_ENTRY
125462306a36Sopenharmony_ci		__field(u32, tx_ant)
125562306a36Sopenharmony_ci		__field(u32, rx_ant)
125662306a36Sopenharmony_ci		__field(int, ret)
125762306a36Sopenharmony_ci	),
125862306a36Sopenharmony_ci
125962306a36Sopenharmony_ci	TP_fast_assign(
126062306a36Sopenharmony_ci		LOCAL_ASSIGN;
126162306a36Sopenharmony_ci		__entry->tx_ant = tx_ant;
126262306a36Sopenharmony_ci		__entry->rx_ant = rx_ant;
126362306a36Sopenharmony_ci		__entry->ret = ret;
126462306a36Sopenharmony_ci	),
126562306a36Sopenharmony_ci
126662306a36Sopenharmony_ci	TP_printk(
126762306a36Sopenharmony_ci		LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
126862306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
126962306a36Sopenharmony_ci	)
127062306a36Sopenharmony_ci);
127162306a36Sopenharmony_ci
127262306a36Sopenharmony_ciTRACE_EVENT(drv_remain_on_channel,
127362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
127462306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
127562306a36Sopenharmony_ci		 struct ieee80211_channel *chan,
127662306a36Sopenharmony_ci		 unsigned int duration,
127762306a36Sopenharmony_ci		 enum ieee80211_roc_type type),
127862306a36Sopenharmony_ci
127962306a36Sopenharmony_ci	TP_ARGS(local, sdata, chan, duration, type),
128062306a36Sopenharmony_ci
128162306a36Sopenharmony_ci	TP_STRUCT__entry(
128262306a36Sopenharmony_ci		LOCAL_ENTRY
128362306a36Sopenharmony_ci		VIF_ENTRY
128462306a36Sopenharmony_ci		__field(int, center_freq)
128562306a36Sopenharmony_ci		__field(int, freq_offset)
128662306a36Sopenharmony_ci		__field(unsigned int, duration)
128762306a36Sopenharmony_ci		__field(u32, type)
128862306a36Sopenharmony_ci	),
128962306a36Sopenharmony_ci
129062306a36Sopenharmony_ci	TP_fast_assign(
129162306a36Sopenharmony_ci		LOCAL_ASSIGN;
129262306a36Sopenharmony_ci		VIF_ASSIGN;
129362306a36Sopenharmony_ci		__entry->center_freq = chan->center_freq;
129462306a36Sopenharmony_ci		__entry->freq_offset = chan->freq_offset;
129562306a36Sopenharmony_ci		__entry->duration = duration;
129662306a36Sopenharmony_ci		__entry->type = type;
129762306a36Sopenharmony_ci	),
129862306a36Sopenharmony_ci
129962306a36Sopenharmony_ci	TP_printk(
130062306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d",
130162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG,
130262306a36Sopenharmony_ci		__entry->center_freq, __entry->freq_offset,
130362306a36Sopenharmony_ci		__entry->duration, __entry->type
130462306a36Sopenharmony_ci	)
130562306a36Sopenharmony_ci);
130662306a36Sopenharmony_ci
130762306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel,
130862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
130962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
131062306a36Sopenharmony_ci	TP_ARGS(local, sdata)
131162306a36Sopenharmony_ci);
131262306a36Sopenharmony_ci
131362306a36Sopenharmony_ciTRACE_EVENT(drv_set_ringparam,
131462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx),
131562306a36Sopenharmony_ci
131662306a36Sopenharmony_ci	TP_ARGS(local, tx, rx),
131762306a36Sopenharmony_ci
131862306a36Sopenharmony_ci	TP_STRUCT__entry(
131962306a36Sopenharmony_ci		LOCAL_ENTRY
132062306a36Sopenharmony_ci		__field(u32, tx)
132162306a36Sopenharmony_ci		__field(u32, rx)
132262306a36Sopenharmony_ci	),
132362306a36Sopenharmony_ci
132462306a36Sopenharmony_ci	TP_fast_assign(
132562306a36Sopenharmony_ci		LOCAL_ASSIGN;
132662306a36Sopenharmony_ci		__entry->tx = tx;
132762306a36Sopenharmony_ci		__entry->rx = rx;
132862306a36Sopenharmony_ci	),
132962306a36Sopenharmony_ci
133062306a36Sopenharmony_ci	TP_printk(
133162306a36Sopenharmony_ci		LOCAL_PR_FMT " tx:%d rx %d",
133262306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->tx, __entry->rx
133362306a36Sopenharmony_ci	)
133462306a36Sopenharmony_ci);
133562306a36Sopenharmony_ci
133662306a36Sopenharmony_ciTRACE_EVENT(drv_get_ringparam,
133762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max,
133862306a36Sopenharmony_ci		 u32 *rx, u32 *rx_max),
133962306a36Sopenharmony_ci
134062306a36Sopenharmony_ci	TP_ARGS(local, tx, tx_max, rx, rx_max),
134162306a36Sopenharmony_ci
134262306a36Sopenharmony_ci	TP_STRUCT__entry(
134362306a36Sopenharmony_ci		LOCAL_ENTRY
134462306a36Sopenharmony_ci		__field(u32, tx)
134562306a36Sopenharmony_ci		__field(u32, tx_max)
134662306a36Sopenharmony_ci		__field(u32, rx)
134762306a36Sopenharmony_ci		__field(u32, rx_max)
134862306a36Sopenharmony_ci	),
134962306a36Sopenharmony_ci
135062306a36Sopenharmony_ci	TP_fast_assign(
135162306a36Sopenharmony_ci		LOCAL_ASSIGN;
135262306a36Sopenharmony_ci		__entry->tx = *tx;
135362306a36Sopenharmony_ci		__entry->tx_max = *tx_max;
135462306a36Sopenharmony_ci		__entry->rx = *rx;
135562306a36Sopenharmony_ci		__entry->rx_max = *rx_max;
135662306a36Sopenharmony_ci	),
135762306a36Sopenharmony_ci
135862306a36Sopenharmony_ci	TP_printk(
135962306a36Sopenharmony_ci		LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d",
136062306a36Sopenharmony_ci		LOCAL_PR_ARG,
136162306a36Sopenharmony_ci		__entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max
136262306a36Sopenharmony_ci	)
136362306a36Sopenharmony_ci);
136462306a36Sopenharmony_ci
136562306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_tx_frames_pending,
136662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
136762306a36Sopenharmony_ci	TP_ARGS(local)
136862306a36Sopenharmony_ci);
136962306a36Sopenharmony_ci
137062306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait,
137162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
137262306a36Sopenharmony_ci	TP_ARGS(local)
137362306a36Sopenharmony_ci);
137462306a36Sopenharmony_ci
137562306a36Sopenharmony_ciTRACE_EVENT(drv_set_bitrate_mask,
137662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
137762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
137862306a36Sopenharmony_ci		 const struct cfg80211_bitrate_mask *mask),
137962306a36Sopenharmony_ci
138062306a36Sopenharmony_ci	TP_ARGS(local, sdata, mask),
138162306a36Sopenharmony_ci
138262306a36Sopenharmony_ci	TP_STRUCT__entry(
138362306a36Sopenharmony_ci		LOCAL_ENTRY
138462306a36Sopenharmony_ci		VIF_ENTRY
138562306a36Sopenharmony_ci		__field(u32, legacy_2g)
138662306a36Sopenharmony_ci		__field(u32, legacy_5g)
138762306a36Sopenharmony_ci	),
138862306a36Sopenharmony_ci
138962306a36Sopenharmony_ci	TP_fast_assign(
139062306a36Sopenharmony_ci		LOCAL_ASSIGN;
139162306a36Sopenharmony_ci		VIF_ASSIGN;
139262306a36Sopenharmony_ci		__entry->legacy_2g = mask->control[NL80211_BAND_2GHZ].legacy;
139362306a36Sopenharmony_ci		__entry->legacy_5g = mask->control[NL80211_BAND_5GHZ].legacy;
139462306a36Sopenharmony_ci	),
139562306a36Sopenharmony_ci
139662306a36Sopenharmony_ci	TP_printk(
139762306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x",
139862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g
139962306a36Sopenharmony_ci	)
140062306a36Sopenharmony_ci);
140162306a36Sopenharmony_ci
140262306a36Sopenharmony_ciTRACE_EVENT(drv_set_rekey_data,
140362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
140462306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
140562306a36Sopenharmony_ci		 struct cfg80211_gtk_rekey_data *data),
140662306a36Sopenharmony_ci
140762306a36Sopenharmony_ci	TP_ARGS(local, sdata, data),
140862306a36Sopenharmony_ci
140962306a36Sopenharmony_ci	TP_STRUCT__entry(
141062306a36Sopenharmony_ci		LOCAL_ENTRY
141162306a36Sopenharmony_ci		VIF_ENTRY
141262306a36Sopenharmony_ci		__array(u8, kek, NL80211_KEK_LEN)
141362306a36Sopenharmony_ci		__array(u8, kck, NL80211_KCK_LEN)
141462306a36Sopenharmony_ci		__array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
141562306a36Sopenharmony_ci	),
141662306a36Sopenharmony_ci
141762306a36Sopenharmony_ci	TP_fast_assign(
141862306a36Sopenharmony_ci		LOCAL_ASSIGN;
141962306a36Sopenharmony_ci		VIF_ASSIGN;
142062306a36Sopenharmony_ci		memcpy(__entry->kek, data->kek, NL80211_KEK_LEN);
142162306a36Sopenharmony_ci		memcpy(__entry->kck, data->kck, NL80211_KCK_LEN);
142262306a36Sopenharmony_ci		memcpy(__entry->replay_ctr, data->replay_ctr,
142362306a36Sopenharmony_ci		       NL80211_REPLAY_CTR_LEN);
142462306a36Sopenharmony_ci	),
142562306a36Sopenharmony_ci
142662306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT VIF_PR_FMT,
142762306a36Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG)
142862306a36Sopenharmony_ci);
142962306a36Sopenharmony_ci
143062306a36Sopenharmony_ciTRACE_EVENT(drv_event_callback,
143162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
143262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
143362306a36Sopenharmony_ci		 const struct ieee80211_event *_event),
143462306a36Sopenharmony_ci
143562306a36Sopenharmony_ci	TP_ARGS(local, sdata, _event),
143662306a36Sopenharmony_ci
143762306a36Sopenharmony_ci	TP_STRUCT__entry(
143862306a36Sopenharmony_ci		LOCAL_ENTRY
143962306a36Sopenharmony_ci		VIF_ENTRY
144062306a36Sopenharmony_ci		__field(u32, type)
144162306a36Sopenharmony_ci	),
144262306a36Sopenharmony_ci
144362306a36Sopenharmony_ci	TP_fast_assign(
144462306a36Sopenharmony_ci		LOCAL_ASSIGN;
144562306a36Sopenharmony_ci		VIF_ASSIGN;
144662306a36Sopenharmony_ci		__entry->type = _event->type;
144762306a36Sopenharmony_ci	),
144862306a36Sopenharmony_ci
144962306a36Sopenharmony_ci	TP_printk(
145062306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " event:%d",
145162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->type
145262306a36Sopenharmony_ci	)
145362306a36Sopenharmony_ci);
145462306a36Sopenharmony_ci
145562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(release_evt,
145662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
145762306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
145862306a36Sopenharmony_ci		 u16 tids, int num_frames,
145962306a36Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
146062306a36Sopenharmony_ci		 bool more_data),
146162306a36Sopenharmony_ci
146262306a36Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data),
146362306a36Sopenharmony_ci
146462306a36Sopenharmony_ci	TP_STRUCT__entry(
146562306a36Sopenharmony_ci		LOCAL_ENTRY
146662306a36Sopenharmony_ci		STA_ENTRY
146762306a36Sopenharmony_ci		__field(u16, tids)
146862306a36Sopenharmony_ci		__field(int, num_frames)
146962306a36Sopenharmony_ci		__field(int, reason)
147062306a36Sopenharmony_ci		__field(bool, more_data)
147162306a36Sopenharmony_ci	),
147262306a36Sopenharmony_ci
147362306a36Sopenharmony_ci	TP_fast_assign(
147462306a36Sopenharmony_ci		LOCAL_ASSIGN;
147562306a36Sopenharmony_ci		STA_ASSIGN;
147662306a36Sopenharmony_ci		__entry->tids = tids;
147762306a36Sopenharmony_ci		__entry->num_frames = num_frames;
147862306a36Sopenharmony_ci		__entry->reason = reason;
147962306a36Sopenharmony_ci		__entry->more_data = more_data;
148062306a36Sopenharmony_ci	),
148162306a36Sopenharmony_ci
148262306a36Sopenharmony_ci	TP_printk(
148362306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT
148462306a36Sopenharmony_ci		" TIDs:0x%.4x frames:%d reason:%d more:%d",
148562306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames,
148662306a36Sopenharmony_ci		__entry->reason, __entry->more_data
148762306a36Sopenharmony_ci	)
148862306a36Sopenharmony_ci);
148962306a36Sopenharmony_ci
149062306a36Sopenharmony_ciDEFINE_EVENT(release_evt, drv_release_buffered_frames,
149162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
149262306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
149362306a36Sopenharmony_ci		 u16 tids, int num_frames,
149462306a36Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
149562306a36Sopenharmony_ci		 bool more_data),
149662306a36Sopenharmony_ci
149762306a36Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data)
149862306a36Sopenharmony_ci);
149962306a36Sopenharmony_ci
150062306a36Sopenharmony_ciDEFINE_EVENT(release_evt, drv_allow_buffered_frames,
150162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
150262306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
150362306a36Sopenharmony_ci		 u16 tids, int num_frames,
150462306a36Sopenharmony_ci		 enum ieee80211_frame_release_type reason,
150562306a36Sopenharmony_ci		 bool more_data),
150662306a36Sopenharmony_ci
150762306a36Sopenharmony_ci	TP_ARGS(local, sta, tids, num_frames, reason, more_data)
150862306a36Sopenharmony_ci);
150962306a36Sopenharmony_ci
151062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(mgd_prepare_complete_tx_evt,
151162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
151262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
151362306a36Sopenharmony_ci		 u16 duration, u16 subtype, bool success),
151462306a36Sopenharmony_ci
151562306a36Sopenharmony_ci	TP_ARGS(local, sdata, duration, subtype, success),
151662306a36Sopenharmony_ci
151762306a36Sopenharmony_ci	TP_STRUCT__entry(
151862306a36Sopenharmony_ci		LOCAL_ENTRY
151962306a36Sopenharmony_ci		VIF_ENTRY
152062306a36Sopenharmony_ci		__field(u32, duration)
152162306a36Sopenharmony_ci		__field(u16, subtype)
152262306a36Sopenharmony_ci		__field(u8, success)
152362306a36Sopenharmony_ci	),
152462306a36Sopenharmony_ci
152562306a36Sopenharmony_ci	TP_fast_assign(
152662306a36Sopenharmony_ci		LOCAL_ASSIGN;
152762306a36Sopenharmony_ci		VIF_ASSIGN;
152862306a36Sopenharmony_ci		__entry->duration = duration;
152962306a36Sopenharmony_ci		__entry->subtype = subtype;
153062306a36Sopenharmony_ci		__entry->success = success;
153162306a36Sopenharmony_ci	),
153262306a36Sopenharmony_ci
153362306a36Sopenharmony_ci	TP_printk(
153462306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " duration: %u, subtype:0x%x, success:%d",
153562306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->duration,
153662306a36Sopenharmony_ci		__entry->subtype, __entry->success
153762306a36Sopenharmony_ci	)
153862306a36Sopenharmony_ci);
153962306a36Sopenharmony_ci
154062306a36Sopenharmony_ciDEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_prepare_tx,
154162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
154262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
154362306a36Sopenharmony_ci		 u16 duration, u16 subtype, bool success),
154462306a36Sopenharmony_ci
154562306a36Sopenharmony_ci	TP_ARGS(local, sdata, duration, subtype, success)
154662306a36Sopenharmony_ci);
154762306a36Sopenharmony_ci
154862306a36Sopenharmony_ciDEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_complete_tx,
154962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
155062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
155162306a36Sopenharmony_ci		 u16 duration, u16 subtype, bool success),
155262306a36Sopenharmony_ci
155362306a36Sopenharmony_ci	TP_ARGS(local, sdata, duration, subtype, success)
155462306a36Sopenharmony_ci);
155562306a36Sopenharmony_ci
155662306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_mgd_protect_tdls_discover,
155762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
155862306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
155962306a36Sopenharmony_ci
156062306a36Sopenharmony_ci	TP_ARGS(local, sdata)
156162306a36Sopenharmony_ci);
156262306a36Sopenharmony_ci
156362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_chanctx,
156462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
156562306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
156662306a36Sopenharmony_ci
156762306a36Sopenharmony_ci	TP_ARGS(local, ctx),
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci	TP_STRUCT__entry(
157062306a36Sopenharmony_ci		LOCAL_ENTRY
157162306a36Sopenharmony_ci		CHANCTX_ENTRY
157262306a36Sopenharmony_ci	),
157362306a36Sopenharmony_ci
157462306a36Sopenharmony_ci	TP_fast_assign(
157562306a36Sopenharmony_ci		LOCAL_ASSIGN;
157662306a36Sopenharmony_ci		CHANCTX_ASSIGN;
157762306a36Sopenharmony_ci	),
157862306a36Sopenharmony_ci
157962306a36Sopenharmony_ci	TP_printk(
158062306a36Sopenharmony_ci		LOCAL_PR_FMT CHANCTX_PR_FMT,
158162306a36Sopenharmony_ci		LOCAL_PR_ARG, CHANCTX_PR_ARG
158262306a36Sopenharmony_ci	)
158362306a36Sopenharmony_ci);
158462306a36Sopenharmony_ci
158562306a36Sopenharmony_ciDEFINE_EVENT(local_chanctx, drv_add_chanctx,
158662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
158762306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
158862306a36Sopenharmony_ci	TP_ARGS(local, ctx)
158962306a36Sopenharmony_ci);
159062306a36Sopenharmony_ci
159162306a36Sopenharmony_ciDEFINE_EVENT(local_chanctx, drv_remove_chanctx,
159262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
159362306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
159462306a36Sopenharmony_ci	TP_ARGS(local, ctx)
159562306a36Sopenharmony_ci);
159662306a36Sopenharmony_ci
159762306a36Sopenharmony_ciTRACE_EVENT(drv_change_chanctx,
159862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
159962306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx,
160062306a36Sopenharmony_ci		 u32 changed),
160162306a36Sopenharmony_ci
160262306a36Sopenharmony_ci	TP_ARGS(local, ctx, changed),
160362306a36Sopenharmony_ci
160462306a36Sopenharmony_ci	TP_STRUCT__entry(
160562306a36Sopenharmony_ci		LOCAL_ENTRY
160662306a36Sopenharmony_ci		CHANCTX_ENTRY
160762306a36Sopenharmony_ci		__field(u32, changed)
160862306a36Sopenharmony_ci	),
160962306a36Sopenharmony_ci
161062306a36Sopenharmony_ci	TP_fast_assign(
161162306a36Sopenharmony_ci		LOCAL_ASSIGN;
161262306a36Sopenharmony_ci		CHANCTX_ASSIGN;
161362306a36Sopenharmony_ci		__entry->changed = changed;
161462306a36Sopenharmony_ci	),
161562306a36Sopenharmony_ci
161662306a36Sopenharmony_ci	TP_printk(
161762306a36Sopenharmony_ci		LOCAL_PR_FMT CHANCTX_PR_FMT " changed:%#x",
161862306a36Sopenharmony_ci		LOCAL_PR_ARG, CHANCTX_PR_ARG, __entry->changed
161962306a36Sopenharmony_ci	)
162062306a36Sopenharmony_ci);
162162306a36Sopenharmony_ci
162262306a36Sopenharmony_ci#if !defined(__TRACE_VIF_ENTRY)
162362306a36Sopenharmony_ci#define __TRACE_VIF_ENTRY
162462306a36Sopenharmony_cistruct trace_vif_entry {
162562306a36Sopenharmony_ci	enum nl80211_iftype vif_type;
162662306a36Sopenharmony_ci	bool p2p;
162762306a36Sopenharmony_ci	char vif_name[IFNAMSIZ];
162862306a36Sopenharmony_ci} __packed;
162962306a36Sopenharmony_ci
163062306a36Sopenharmony_cistruct trace_chandef_entry {
163162306a36Sopenharmony_ci	u32 control_freq;
163262306a36Sopenharmony_ci	u32 freq_offset;
163362306a36Sopenharmony_ci	u32 chan_width;
163462306a36Sopenharmony_ci	u32 center_freq1;
163562306a36Sopenharmony_ci	u32 freq1_offset;
163662306a36Sopenharmony_ci	u32 center_freq2;
163762306a36Sopenharmony_ci} __packed;
163862306a36Sopenharmony_ci
163962306a36Sopenharmony_cistruct trace_switch_entry {
164062306a36Sopenharmony_ci	struct trace_vif_entry vif;
164162306a36Sopenharmony_ci	unsigned int link_id;
164262306a36Sopenharmony_ci	struct trace_chandef_entry old_chandef;
164362306a36Sopenharmony_ci	struct trace_chandef_entry new_chandef;
164462306a36Sopenharmony_ci} __packed;
164562306a36Sopenharmony_ci
164662306a36Sopenharmony_ci#define SWITCH_ENTRY_ASSIGN(to, from) local_vifs[i].to = vifs[i].from
164762306a36Sopenharmony_ci#endif
164862306a36Sopenharmony_ci
164962306a36Sopenharmony_ciTRACE_EVENT(drv_switch_vif_chanctx,
165062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
165162306a36Sopenharmony_ci		 struct ieee80211_vif_chanctx_switch *vifs,
165262306a36Sopenharmony_ci		 int n_vifs, enum ieee80211_chanctx_switch_mode mode),
165362306a36Sopenharmony_ci	    TP_ARGS(local, vifs, n_vifs, mode),
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_ci	TP_STRUCT__entry(
165662306a36Sopenharmony_ci		LOCAL_ENTRY
165762306a36Sopenharmony_ci		__field(int, n_vifs)
165862306a36Sopenharmony_ci		__field(u32, mode)
165962306a36Sopenharmony_ci		__dynamic_array(u8, vifs,
166062306a36Sopenharmony_ci				sizeof(struct trace_switch_entry) * n_vifs)
166162306a36Sopenharmony_ci	),
166262306a36Sopenharmony_ci
166362306a36Sopenharmony_ci	TP_fast_assign(
166462306a36Sopenharmony_ci		LOCAL_ASSIGN;
166562306a36Sopenharmony_ci		__entry->n_vifs = n_vifs;
166662306a36Sopenharmony_ci		__entry->mode = mode;
166762306a36Sopenharmony_ci		{
166862306a36Sopenharmony_ci			struct trace_switch_entry *local_vifs =
166962306a36Sopenharmony_ci				__get_dynamic_array(vifs);
167062306a36Sopenharmony_ci			int i;
167162306a36Sopenharmony_ci
167262306a36Sopenharmony_ci			for (i = 0; i < n_vifs; i++) {
167362306a36Sopenharmony_ci				struct ieee80211_sub_if_data *sdata;
167462306a36Sopenharmony_ci
167562306a36Sopenharmony_ci				sdata = container_of(vifs[i].vif,
167662306a36Sopenharmony_ci						struct ieee80211_sub_if_data,
167762306a36Sopenharmony_ci						vif);
167862306a36Sopenharmony_ci
167962306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(vif.vif_type, vif->type);
168062306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(vif.p2p, vif->p2p);
168162306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(link_id, link_conf->link_id);
168262306a36Sopenharmony_ci				strncpy(local_vifs[i].vif.vif_name,
168362306a36Sopenharmony_ci					sdata->name,
168462306a36Sopenharmony_ci					sizeof(local_vifs[i].vif.vif_name));
168562306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.control_freq,
168662306a36Sopenharmony_ci						old_ctx->def.chan->center_freq);
168762306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset,
168862306a36Sopenharmony_ci						old_ctx->def.chan->freq_offset);
168962306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.chan_width,
169062306a36Sopenharmony_ci						    old_ctx->def.width);
169162306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1,
169262306a36Sopenharmony_ci						    old_ctx->def.center_freq1);
169362306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset,
169462306a36Sopenharmony_ci						    old_ctx->def.freq1_offset);
169562306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2,
169662306a36Sopenharmony_ci						    old_ctx->def.center_freq2);
169762306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.control_freq,
169862306a36Sopenharmony_ci						new_ctx->def.chan->center_freq);
169962306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset,
170062306a36Sopenharmony_ci						new_ctx->def.chan->freq_offset);
170162306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.chan_width,
170262306a36Sopenharmony_ci						    new_ctx->def.width);
170362306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1,
170462306a36Sopenharmony_ci						    new_ctx->def.center_freq1);
170562306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset,
170662306a36Sopenharmony_ci						    new_ctx->def.freq1_offset);
170762306a36Sopenharmony_ci				SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2,
170862306a36Sopenharmony_ci						    new_ctx->def.center_freq2);
170962306a36Sopenharmony_ci			}
171062306a36Sopenharmony_ci		}
171162306a36Sopenharmony_ci	),
171262306a36Sopenharmony_ci
171362306a36Sopenharmony_ci	TP_printk(
171462306a36Sopenharmony_ci		LOCAL_PR_FMT " n_vifs:%d mode:%d",
171562306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->n_vifs, __entry->mode
171662306a36Sopenharmony_ci	)
171762306a36Sopenharmony_ci);
171862306a36Sopenharmony_ci
171962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(local_sdata_chanctx,
172062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
172162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
172262306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf,
172362306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
172462306a36Sopenharmony_ci
172562306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf, ctx),
172662306a36Sopenharmony_ci
172762306a36Sopenharmony_ci	TP_STRUCT__entry(
172862306a36Sopenharmony_ci		LOCAL_ENTRY
172962306a36Sopenharmony_ci		VIF_ENTRY
173062306a36Sopenharmony_ci		CHANCTX_ENTRY
173162306a36Sopenharmony_ci		__field(unsigned int, link_id)
173262306a36Sopenharmony_ci	),
173362306a36Sopenharmony_ci
173462306a36Sopenharmony_ci	TP_fast_assign(
173562306a36Sopenharmony_ci		LOCAL_ASSIGN;
173662306a36Sopenharmony_ci		VIF_ASSIGN;
173762306a36Sopenharmony_ci		CHANCTX_ASSIGN;
173862306a36Sopenharmony_ci		__entry->link_id = link_conf->link_id;
173962306a36Sopenharmony_ci	),
174062306a36Sopenharmony_ci
174162306a36Sopenharmony_ci	TP_printk(
174262306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " link_id:%d" CHANCTX_PR_FMT,
174362306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, CHANCTX_PR_ARG
174462306a36Sopenharmony_ci	)
174562306a36Sopenharmony_ci);
174662306a36Sopenharmony_ci
174762306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_chanctx, drv_assign_vif_chanctx,
174862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
174962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
175062306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf,
175162306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
175262306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf, ctx)
175362306a36Sopenharmony_ci);
175462306a36Sopenharmony_ci
175562306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_chanctx, drv_unassign_vif_chanctx,
175662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
175762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
175862306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf,
175962306a36Sopenharmony_ci		 struct ieee80211_chanctx *ctx),
176062306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf, ctx)
176162306a36Sopenharmony_ci);
176262306a36Sopenharmony_ci
176362306a36Sopenharmony_ciTRACE_EVENT(drv_start_ap,
176462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
176562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
176662306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf),
176762306a36Sopenharmony_ci
176862306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf),
176962306a36Sopenharmony_ci
177062306a36Sopenharmony_ci	TP_STRUCT__entry(
177162306a36Sopenharmony_ci		LOCAL_ENTRY
177262306a36Sopenharmony_ci		VIF_ENTRY
177362306a36Sopenharmony_ci		__field(u32, link_id)
177462306a36Sopenharmony_ci		__field(u8, dtimper)
177562306a36Sopenharmony_ci		__field(u16, bcnint)
177662306a36Sopenharmony_ci		__dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len)
177762306a36Sopenharmony_ci		__field(bool, hidden_ssid)
177862306a36Sopenharmony_ci	),
177962306a36Sopenharmony_ci
178062306a36Sopenharmony_ci	TP_fast_assign(
178162306a36Sopenharmony_ci		LOCAL_ASSIGN;
178262306a36Sopenharmony_ci		VIF_ASSIGN;
178362306a36Sopenharmony_ci		__entry->link_id = link_conf->link_id;
178462306a36Sopenharmony_ci		__entry->dtimper = link_conf->dtim_period;
178562306a36Sopenharmony_ci		__entry->bcnint = link_conf->beacon_int;
178662306a36Sopenharmony_ci		__entry->hidden_ssid = link_conf->hidden_ssid;
178762306a36Sopenharmony_ci		memcpy(__get_dynamic_array(ssid),
178862306a36Sopenharmony_ci		       sdata->vif.cfg.ssid,
178962306a36Sopenharmony_ci		       sdata->vif.cfg.ssid_len);
179062306a36Sopenharmony_ci	),
179162306a36Sopenharmony_ci
179262306a36Sopenharmony_ci	TP_printk(
179362306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " link id %u",
179462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id
179562306a36Sopenharmony_ci	)
179662306a36Sopenharmony_ci);
179762306a36Sopenharmony_ci
179862306a36Sopenharmony_ciTRACE_EVENT(drv_stop_ap,
179962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
180062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
180162306a36Sopenharmony_ci		 struct ieee80211_bss_conf *link_conf),
180262306a36Sopenharmony_ci
180362306a36Sopenharmony_ci	TP_ARGS(local, sdata, link_conf),
180462306a36Sopenharmony_ci
180562306a36Sopenharmony_ci	TP_STRUCT__entry(
180662306a36Sopenharmony_ci		LOCAL_ENTRY
180762306a36Sopenharmony_ci		VIF_ENTRY
180862306a36Sopenharmony_ci		__field(u32, link_id)
180962306a36Sopenharmony_ci	),
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_ci	TP_fast_assign(
181262306a36Sopenharmony_ci		LOCAL_ASSIGN;
181362306a36Sopenharmony_ci		VIF_ASSIGN;
181462306a36Sopenharmony_ci		__entry->link_id = link_conf->link_id;
181562306a36Sopenharmony_ci	),
181662306a36Sopenharmony_ci
181762306a36Sopenharmony_ci	TP_printk(
181862306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT " link id %u",
181962306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id
182062306a36Sopenharmony_ci	)
182162306a36Sopenharmony_ci);
182262306a36Sopenharmony_ci
182362306a36Sopenharmony_ciTRACE_EVENT(drv_reconfig_complete,
182462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
182562306a36Sopenharmony_ci		 enum ieee80211_reconfig_type reconfig_type),
182662306a36Sopenharmony_ci	TP_ARGS(local, reconfig_type),
182762306a36Sopenharmony_ci
182862306a36Sopenharmony_ci	TP_STRUCT__entry(
182962306a36Sopenharmony_ci		LOCAL_ENTRY
183062306a36Sopenharmony_ci		__field(u8, reconfig_type)
183162306a36Sopenharmony_ci	),
183262306a36Sopenharmony_ci
183362306a36Sopenharmony_ci	TP_fast_assign(
183462306a36Sopenharmony_ci		LOCAL_ASSIGN;
183562306a36Sopenharmony_ci		__entry->reconfig_type = reconfig_type;
183662306a36Sopenharmony_ci	),
183762306a36Sopenharmony_ci
183862306a36Sopenharmony_ci	TP_printk(
183962306a36Sopenharmony_ci		LOCAL_PR_FMT  " reconfig_type:%d",
184062306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->reconfig_type
184162306a36Sopenharmony_ci	)
184262306a36Sopenharmony_ci
184362306a36Sopenharmony_ci);
184462306a36Sopenharmony_ci
184562306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_IPV6)
184662306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_ipv6_addr_change,
184762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
184862306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
184962306a36Sopenharmony_ci	TP_ARGS(local, sdata)
185062306a36Sopenharmony_ci);
185162306a36Sopenharmony_ci#endif
185262306a36Sopenharmony_ci
185362306a36Sopenharmony_ciTRACE_EVENT(drv_join_ibss,
185462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
185562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
185662306a36Sopenharmony_ci		 struct ieee80211_bss_conf *info),
185762306a36Sopenharmony_ci
185862306a36Sopenharmony_ci	TP_ARGS(local, sdata, info),
185962306a36Sopenharmony_ci
186062306a36Sopenharmony_ci	TP_STRUCT__entry(
186162306a36Sopenharmony_ci		LOCAL_ENTRY
186262306a36Sopenharmony_ci		VIF_ENTRY
186362306a36Sopenharmony_ci		__field(u8, dtimper)
186462306a36Sopenharmony_ci		__field(u16, bcnint)
186562306a36Sopenharmony_ci		__dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len)
186662306a36Sopenharmony_ci	),
186762306a36Sopenharmony_ci
186862306a36Sopenharmony_ci	TP_fast_assign(
186962306a36Sopenharmony_ci		LOCAL_ASSIGN;
187062306a36Sopenharmony_ci		VIF_ASSIGN;
187162306a36Sopenharmony_ci		__entry->dtimper = info->dtim_period;
187262306a36Sopenharmony_ci		__entry->bcnint = info->beacon_int;
187362306a36Sopenharmony_ci		memcpy(__get_dynamic_array(ssid),
187462306a36Sopenharmony_ci		       sdata->vif.cfg.ssid,
187562306a36Sopenharmony_ci		       sdata->vif.cfg.ssid_len);
187662306a36Sopenharmony_ci	),
187762306a36Sopenharmony_ci
187862306a36Sopenharmony_ci	TP_printk(
187962306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT,
188062306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
188162306a36Sopenharmony_ci	)
188262306a36Sopenharmony_ci);
188362306a36Sopenharmony_ci
188462306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_leave_ibss,
188562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
188662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
188762306a36Sopenharmony_ci	TP_ARGS(local, sdata)
188862306a36Sopenharmony_ci);
188962306a36Sopenharmony_ci
189062306a36Sopenharmony_ciTRACE_EVENT(drv_get_expected_throughput,
189162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta),
189262306a36Sopenharmony_ci
189362306a36Sopenharmony_ci	TP_ARGS(sta),
189462306a36Sopenharmony_ci
189562306a36Sopenharmony_ci	TP_STRUCT__entry(
189662306a36Sopenharmony_ci		STA_ENTRY
189762306a36Sopenharmony_ci	),
189862306a36Sopenharmony_ci
189962306a36Sopenharmony_ci	TP_fast_assign(
190062306a36Sopenharmony_ci		STA_ASSIGN;
190162306a36Sopenharmony_ci	),
190262306a36Sopenharmony_ci
190362306a36Sopenharmony_ci	TP_printk(
190462306a36Sopenharmony_ci		STA_PR_FMT, STA_PR_ARG
190562306a36Sopenharmony_ci	)
190662306a36Sopenharmony_ci);
190762306a36Sopenharmony_ci
190862306a36Sopenharmony_ciTRACE_EVENT(drv_start_nan,
190962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
191062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
191162306a36Sopenharmony_ci		 struct cfg80211_nan_conf *conf),
191262306a36Sopenharmony_ci
191362306a36Sopenharmony_ci	TP_ARGS(local, sdata, conf),
191462306a36Sopenharmony_ci	TP_STRUCT__entry(
191562306a36Sopenharmony_ci		LOCAL_ENTRY
191662306a36Sopenharmony_ci		VIF_ENTRY
191762306a36Sopenharmony_ci		__field(u8, master_pref)
191862306a36Sopenharmony_ci		__field(u8, bands)
191962306a36Sopenharmony_ci	),
192062306a36Sopenharmony_ci
192162306a36Sopenharmony_ci	TP_fast_assign(
192262306a36Sopenharmony_ci		LOCAL_ASSIGN;
192362306a36Sopenharmony_ci		VIF_ASSIGN;
192462306a36Sopenharmony_ci		__entry->master_pref = conf->master_pref;
192562306a36Sopenharmony_ci		__entry->bands = conf->bands;
192662306a36Sopenharmony_ci	),
192762306a36Sopenharmony_ci
192862306a36Sopenharmony_ci	TP_printk(
192962306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
193062306a36Sopenharmony_ci		", master preference: %u, bands: 0x%0x",
193162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref,
193262306a36Sopenharmony_ci		__entry->bands
193362306a36Sopenharmony_ci	)
193462306a36Sopenharmony_ci);
193562306a36Sopenharmony_ci
193662306a36Sopenharmony_ciTRACE_EVENT(drv_stop_nan,
193762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
193862306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
193962306a36Sopenharmony_ci
194062306a36Sopenharmony_ci	TP_ARGS(local, sdata),
194162306a36Sopenharmony_ci
194262306a36Sopenharmony_ci	TP_STRUCT__entry(
194362306a36Sopenharmony_ci		LOCAL_ENTRY
194462306a36Sopenharmony_ci		VIF_ENTRY
194562306a36Sopenharmony_ci	),
194662306a36Sopenharmony_ci
194762306a36Sopenharmony_ci	TP_fast_assign(
194862306a36Sopenharmony_ci		LOCAL_ASSIGN;
194962306a36Sopenharmony_ci		VIF_ASSIGN;
195062306a36Sopenharmony_ci	),
195162306a36Sopenharmony_ci
195262306a36Sopenharmony_ci	TP_printk(
195362306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT,
195462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
195562306a36Sopenharmony_ci	)
195662306a36Sopenharmony_ci);
195762306a36Sopenharmony_ci
195862306a36Sopenharmony_ciTRACE_EVENT(drv_nan_change_conf,
195962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
196062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
196162306a36Sopenharmony_ci		 struct cfg80211_nan_conf *conf,
196262306a36Sopenharmony_ci		 u32 changes),
196362306a36Sopenharmony_ci
196462306a36Sopenharmony_ci	TP_ARGS(local, sdata, conf, changes),
196562306a36Sopenharmony_ci	TP_STRUCT__entry(
196662306a36Sopenharmony_ci		LOCAL_ENTRY
196762306a36Sopenharmony_ci		VIF_ENTRY
196862306a36Sopenharmony_ci		__field(u8, master_pref)
196962306a36Sopenharmony_ci		__field(u8, bands)
197062306a36Sopenharmony_ci		__field(u32, changes)
197162306a36Sopenharmony_ci	),
197262306a36Sopenharmony_ci
197362306a36Sopenharmony_ci	TP_fast_assign(
197462306a36Sopenharmony_ci		LOCAL_ASSIGN;
197562306a36Sopenharmony_ci		VIF_ASSIGN;
197662306a36Sopenharmony_ci		__entry->master_pref = conf->master_pref;
197762306a36Sopenharmony_ci		__entry->bands = conf->bands;
197862306a36Sopenharmony_ci		__entry->changes = changes;
197962306a36Sopenharmony_ci	),
198062306a36Sopenharmony_ci
198162306a36Sopenharmony_ci	TP_printk(
198262306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
198362306a36Sopenharmony_ci		", master preference: %u, bands: 0x%0x, changes: 0x%x",
198462306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref,
198562306a36Sopenharmony_ci		__entry->bands, __entry->changes
198662306a36Sopenharmony_ci	)
198762306a36Sopenharmony_ci);
198862306a36Sopenharmony_ci
198962306a36Sopenharmony_ciTRACE_EVENT(drv_add_nan_func,
199062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
199162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
199262306a36Sopenharmony_ci		 const struct cfg80211_nan_func *func),
199362306a36Sopenharmony_ci
199462306a36Sopenharmony_ci	TP_ARGS(local, sdata, func),
199562306a36Sopenharmony_ci	TP_STRUCT__entry(
199662306a36Sopenharmony_ci		LOCAL_ENTRY
199762306a36Sopenharmony_ci		VIF_ENTRY
199862306a36Sopenharmony_ci		__field(u8, type)
199962306a36Sopenharmony_ci		__field(u8, inst_id)
200062306a36Sopenharmony_ci	),
200162306a36Sopenharmony_ci
200262306a36Sopenharmony_ci	TP_fast_assign(
200362306a36Sopenharmony_ci		LOCAL_ASSIGN;
200462306a36Sopenharmony_ci		VIF_ASSIGN;
200562306a36Sopenharmony_ci		__entry->type = func->type;
200662306a36Sopenharmony_ci		__entry->inst_id = func->instance_id;
200762306a36Sopenharmony_ci	),
200862306a36Sopenharmony_ci
200962306a36Sopenharmony_ci	TP_printk(
201062306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
201162306a36Sopenharmony_ci		", type: %u, inst_id: %u",
201262306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->type, __entry->inst_id
201362306a36Sopenharmony_ci	)
201462306a36Sopenharmony_ci);
201562306a36Sopenharmony_ci
201662306a36Sopenharmony_ciTRACE_EVENT(drv_del_nan_func,
201762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
201862306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
201962306a36Sopenharmony_ci		 u8 instance_id),
202062306a36Sopenharmony_ci
202162306a36Sopenharmony_ci	TP_ARGS(local, sdata, instance_id),
202262306a36Sopenharmony_ci	TP_STRUCT__entry(
202362306a36Sopenharmony_ci		LOCAL_ENTRY
202462306a36Sopenharmony_ci		VIF_ENTRY
202562306a36Sopenharmony_ci		__field(u8, instance_id)
202662306a36Sopenharmony_ci	),
202762306a36Sopenharmony_ci
202862306a36Sopenharmony_ci	TP_fast_assign(
202962306a36Sopenharmony_ci		LOCAL_ASSIGN;
203062306a36Sopenharmony_ci		VIF_ASSIGN;
203162306a36Sopenharmony_ci		__entry->instance_id = instance_id;
203262306a36Sopenharmony_ci	),
203362306a36Sopenharmony_ci
203462306a36Sopenharmony_ci	TP_printk(
203562306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT
203662306a36Sopenharmony_ci		", instance_id: %u",
203762306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id
203862306a36Sopenharmony_ci	)
203962306a36Sopenharmony_ci);
204062306a36Sopenharmony_ci
204162306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_start_pmsr,
204262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
204362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
204462306a36Sopenharmony_ci	TP_ARGS(local, sdata)
204562306a36Sopenharmony_ci);
204662306a36Sopenharmony_ci
204762306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_abort_pmsr,
204862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
204962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
205062306a36Sopenharmony_ci	TP_ARGS(local, sdata)
205162306a36Sopenharmony_ci);
205262306a36Sopenharmony_ci
205362306a36Sopenharmony_ciTRACE_EVENT(drv_set_default_unicast_key,
205462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
205562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
205662306a36Sopenharmony_ci		 int key_idx),
205762306a36Sopenharmony_ci
205862306a36Sopenharmony_ci	TP_ARGS(local, sdata, key_idx),
205962306a36Sopenharmony_ci
206062306a36Sopenharmony_ci	TP_STRUCT__entry(
206162306a36Sopenharmony_ci		LOCAL_ENTRY
206262306a36Sopenharmony_ci		VIF_ENTRY
206362306a36Sopenharmony_ci		__field(int, key_idx)
206462306a36Sopenharmony_ci	),
206562306a36Sopenharmony_ci
206662306a36Sopenharmony_ci	TP_fast_assign(
206762306a36Sopenharmony_ci		LOCAL_ASSIGN;
206862306a36Sopenharmony_ci		VIF_ASSIGN;
206962306a36Sopenharmony_ci		__entry->key_idx = key_idx;
207062306a36Sopenharmony_ci	),
207162306a36Sopenharmony_ci
207262306a36Sopenharmony_ci	TP_printk(LOCAL_PR_FMT VIF_PR_FMT " key_idx:%d",
207362306a36Sopenharmony_ci		  LOCAL_PR_ARG, VIF_PR_ARG, __entry->key_idx)
207462306a36Sopenharmony_ci);
207562306a36Sopenharmony_ci
207662306a36Sopenharmony_ciTRACE_EVENT(drv_channel_switch_beacon,
207762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
207862306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
207962306a36Sopenharmony_ci		 struct cfg80211_chan_def *chandef),
208062306a36Sopenharmony_ci
208162306a36Sopenharmony_ci	TP_ARGS(local, sdata, chandef),
208262306a36Sopenharmony_ci
208362306a36Sopenharmony_ci	TP_STRUCT__entry(
208462306a36Sopenharmony_ci		LOCAL_ENTRY
208562306a36Sopenharmony_ci		VIF_ENTRY
208662306a36Sopenharmony_ci		CHANDEF_ENTRY
208762306a36Sopenharmony_ci	),
208862306a36Sopenharmony_ci
208962306a36Sopenharmony_ci	TP_fast_assign(
209062306a36Sopenharmony_ci		LOCAL_ASSIGN;
209162306a36Sopenharmony_ci		VIF_ASSIGN;
209262306a36Sopenharmony_ci		CHANDEF_ASSIGN(chandef);
209362306a36Sopenharmony_ci	),
209462306a36Sopenharmony_ci
209562306a36Sopenharmony_ci	TP_printk(
209662306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " channel switch to " CHANDEF_PR_FMT,
209762306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG
209862306a36Sopenharmony_ci	)
209962306a36Sopenharmony_ci);
210062306a36Sopenharmony_ci
210162306a36Sopenharmony_ciTRACE_EVENT(drv_pre_channel_switch,
210262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
210362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
210462306a36Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
210562306a36Sopenharmony_ci
210662306a36Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
210762306a36Sopenharmony_ci
210862306a36Sopenharmony_ci	TP_STRUCT__entry(
210962306a36Sopenharmony_ci		LOCAL_ENTRY
211062306a36Sopenharmony_ci		VIF_ENTRY
211162306a36Sopenharmony_ci		CHANDEF_ENTRY
211262306a36Sopenharmony_ci		__field(u64, timestamp)
211362306a36Sopenharmony_ci		__field(u32, device_timestamp)
211462306a36Sopenharmony_ci		__field(bool, block_tx)
211562306a36Sopenharmony_ci		__field(u8, count)
211662306a36Sopenharmony_ci	),
211762306a36Sopenharmony_ci
211862306a36Sopenharmony_ci	TP_fast_assign(
211962306a36Sopenharmony_ci		LOCAL_ASSIGN;
212062306a36Sopenharmony_ci		VIF_ASSIGN;
212162306a36Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
212262306a36Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
212362306a36Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
212462306a36Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
212562306a36Sopenharmony_ci		__entry->count = ch_switch->count;
212662306a36Sopenharmony_ci	),
212762306a36Sopenharmony_ci
212862306a36Sopenharmony_ci	TP_printk(
212962306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " prepare channel switch to "
213062306a36Sopenharmony_ci		CHANDEF_PR_FMT  " count:%d block_tx:%d timestamp:%llu",
213162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count,
213262306a36Sopenharmony_ci		__entry->block_tx, __entry->timestamp
213362306a36Sopenharmony_ci	)
213462306a36Sopenharmony_ci);
213562306a36Sopenharmony_ci
213662306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_post_channel_switch,
213762306a36Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local,
213862306a36Sopenharmony_ci		      struct ieee80211_sub_if_data *sdata),
213962306a36Sopenharmony_ci	     TP_ARGS(local, sdata)
214062306a36Sopenharmony_ci);
214162306a36Sopenharmony_ci
214262306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch,
214362306a36Sopenharmony_ci	     TP_PROTO(struct ieee80211_local *local,
214462306a36Sopenharmony_ci		      struct ieee80211_sub_if_data *sdata),
214562306a36Sopenharmony_ci	     TP_ARGS(local, sdata)
214662306a36Sopenharmony_ci);
214762306a36Sopenharmony_ci
214862306a36Sopenharmony_ciTRACE_EVENT(drv_channel_switch_rx_beacon,
214962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
215062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
215162306a36Sopenharmony_ci		 struct ieee80211_channel_switch *ch_switch),
215262306a36Sopenharmony_ci
215362306a36Sopenharmony_ci	TP_ARGS(local, sdata, ch_switch),
215462306a36Sopenharmony_ci
215562306a36Sopenharmony_ci	TP_STRUCT__entry(
215662306a36Sopenharmony_ci		LOCAL_ENTRY
215762306a36Sopenharmony_ci		VIF_ENTRY
215862306a36Sopenharmony_ci		CHANDEF_ENTRY
215962306a36Sopenharmony_ci		__field(u64, timestamp)
216062306a36Sopenharmony_ci		__field(u32, device_timestamp)
216162306a36Sopenharmony_ci		__field(bool, block_tx)
216262306a36Sopenharmony_ci		__field(u8, count)
216362306a36Sopenharmony_ci	),
216462306a36Sopenharmony_ci
216562306a36Sopenharmony_ci	TP_fast_assign(
216662306a36Sopenharmony_ci		LOCAL_ASSIGN;
216762306a36Sopenharmony_ci		VIF_ASSIGN;
216862306a36Sopenharmony_ci		CHANDEF_ASSIGN(&ch_switch->chandef)
216962306a36Sopenharmony_ci		__entry->timestamp = ch_switch->timestamp;
217062306a36Sopenharmony_ci		__entry->device_timestamp = ch_switch->device_timestamp;
217162306a36Sopenharmony_ci		__entry->block_tx = ch_switch->block_tx;
217262306a36Sopenharmony_ci		__entry->count = ch_switch->count;
217362306a36Sopenharmony_ci	),
217462306a36Sopenharmony_ci
217562306a36Sopenharmony_ci	TP_printk(
217662306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
217762306a36Sopenharmony_ci		" received a channel switch beacon to "
217862306a36Sopenharmony_ci		CHANDEF_PR_FMT  " count:%d block_tx:%d timestamp:%llu",
217962306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count,
218062306a36Sopenharmony_ci		__entry->block_tx, __entry->timestamp
218162306a36Sopenharmony_ci	)
218262306a36Sopenharmony_ci);
218362306a36Sopenharmony_ci
218462306a36Sopenharmony_ciTRACE_EVENT(drv_get_txpower,
218562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
218662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
218762306a36Sopenharmony_ci		 int dbm, int ret),
218862306a36Sopenharmony_ci
218962306a36Sopenharmony_ci	TP_ARGS(local, sdata, dbm, ret),
219062306a36Sopenharmony_ci
219162306a36Sopenharmony_ci	TP_STRUCT__entry(
219262306a36Sopenharmony_ci		LOCAL_ENTRY
219362306a36Sopenharmony_ci		VIF_ENTRY
219462306a36Sopenharmony_ci		__field(int, dbm)
219562306a36Sopenharmony_ci		__field(int, ret)
219662306a36Sopenharmony_ci	),
219762306a36Sopenharmony_ci
219862306a36Sopenharmony_ci	TP_fast_assign(
219962306a36Sopenharmony_ci		LOCAL_ASSIGN;
220062306a36Sopenharmony_ci		VIF_ASSIGN;
220162306a36Sopenharmony_ci		__entry->dbm = dbm;
220262306a36Sopenharmony_ci		__entry->ret = ret;
220362306a36Sopenharmony_ci	),
220462306a36Sopenharmony_ci
220562306a36Sopenharmony_ci	TP_printk(
220662306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " dbm:%d ret:%d",
220762306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->dbm, __entry->ret
220862306a36Sopenharmony_ci	)
220962306a36Sopenharmony_ci);
221062306a36Sopenharmony_ci
221162306a36Sopenharmony_ciTRACE_EVENT(drv_tdls_channel_switch,
221262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
221362306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
221462306a36Sopenharmony_ci		 struct ieee80211_sta *sta, u8 oper_class,
221562306a36Sopenharmony_ci		 struct cfg80211_chan_def *chandef),
221662306a36Sopenharmony_ci
221762306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, oper_class, chandef),
221862306a36Sopenharmony_ci
221962306a36Sopenharmony_ci	TP_STRUCT__entry(
222062306a36Sopenharmony_ci		LOCAL_ENTRY
222162306a36Sopenharmony_ci		VIF_ENTRY
222262306a36Sopenharmony_ci		STA_ENTRY
222362306a36Sopenharmony_ci		__field(u8, oper_class)
222462306a36Sopenharmony_ci		CHANDEF_ENTRY
222562306a36Sopenharmony_ci	),
222662306a36Sopenharmony_ci
222762306a36Sopenharmony_ci	TP_fast_assign(
222862306a36Sopenharmony_ci		LOCAL_ASSIGN;
222962306a36Sopenharmony_ci		VIF_ASSIGN;
223062306a36Sopenharmony_ci		STA_ASSIGN;
223162306a36Sopenharmony_ci		__entry->oper_class = oper_class;
223262306a36Sopenharmony_ci		CHANDEF_ASSIGN(chandef)
223362306a36Sopenharmony_ci	),
223462306a36Sopenharmony_ci
223562306a36Sopenharmony_ci	TP_printk(
223662306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " tdls channel switch to"
223762306a36Sopenharmony_ci		CHANDEF_PR_FMT  " oper_class:%d " STA_PR_FMT,
223862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->oper_class,
223962306a36Sopenharmony_ci		STA_PR_ARG
224062306a36Sopenharmony_ci	)
224162306a36Sopenharmony_ci);
224262306a36Sopenharmony_ci
224362306a36Sopenharmony_ciTRACE_EVENT(drv_tdls_cancel_channel_switch,
224462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
224562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
224662306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
224762306a36Sopenharmony_ci
224862306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta),
224962306a36Sopenharmony_ci
225062306a36Sopenharmony_ci	TP_STRUCT__entry(
225162306a36Sopenharmony_ci		LOCAL_ENTRY
225262306a36Sopenharmony_ci		VIF_ENTRY
225362306a36Sopenharmony_ci		STA_ENTRY
225462306a36Sopenharmony_ci	),
225562306a36Sopenharmony_ci
225662306a36Sopenharmony_ci	TP_fast_assign(
225762306a36Sopenharmony_ci		LOCAL_ASSIGN;
225862306a36Sopenharmony_ci		VIF_ASSIGN;
225962306a36Sopenharmony_ci		STA_ASSIGN;
226062306a36Sopenharmony_ci	),
226162306a36Sopenharmony_ci
226262306a36Sopenharmony_ci	TP_printk(
226362306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT
226462306a36Sopenharmony_ci		" tdls cancel channel switch with " STA_PR_FMT,
226562306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
226662306a36Sopenharmony_ci	)
226762306a36Sopenharmony_ci);
226862306a36Sopenharmony_ci
226962306a36Sopenharmony_ciTRACE_EVENT(drv_tdls_recv_channel_switch,
227062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
227162306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
227262306a36Sopenharmony_ci		 struct ieee80211_tdls_ch_sw_params *params),
227362306a36Sopenharmony_ci
227462306a36Sopenharmony_ci	TP_ARGS(local, sdata, params),
227562306a36Sopenharmony_ci
227662306a36Sopenharmony_ci	TP_STRUCT__entry(
227762306a36Sopenharmony_ci		LOCAL_ENTRY
227862306a36Sopenharmony_ci		VIF_ENTRY
227962306a36Sopenharmony_ci		__field(u8, action_code)
228062306a36Sopenharmony_ci		STA_ENTRY
228162306a36Sopenharmony_ci		CHANDEF_ENTRY
228262306a36Sopenharmony_ci		__field(u32, status)
228362306a36Sopenharmony_ci		__field(bool, peer_initiator)
228462306a36Sopenharmony_ci		__field(u32, timestamp)
228562306a36Sopenharmony_ci		__field(u16, switch_time)
228662306a36Sopenharmony_ci		__field(u16, switch_timeout)
228762306a36Sopenharmony_ci	),
228862306a36Sopenharmony_ci
228962306a36Sopenharmony_ci	TP_fast_assign(
229062306a36Sopenharmony_ci		LOCAL_ASSIGN;
229162306a36Sopenharmony_ci		VIF_ASSIGN;
229262306a36Sopenharmony_ci		STA_NAMED_ASSIGN(params->sta);
229362306a36Sopenharmony_ci		CHANDEF_ASSIGN(params->chandef)
229462306a36Sopenharmony_ci		__entry->peer_initiator = params->sta->tdls_initiator;
229562306a36Sopenharmony_ci		__entry->action_code = params->action_code;
229662306a36Sopenharmony_ci		__entry->status = params->status;
229762306a36Sopenharmony_ci		__entry->timestamp = params->timestamp;
229862306a36Sopenharmony_ci		__entry->switch_time = params->switch_time;
229962306a36Sopenharmony_ci		__entry->switch_timeout = params->switch_timeout;
230062306a36Sopenharmony_ci	),
230162306a36Sopenharmony_ci
230262306a36Sopenharmony_ci	TP_printk(
230362306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " received tdls channel switch packet"
230462306a36Sopenharmony_ci		" action:%d status:%d time:%d switch time:%d switch"
230562306a36Sopenharmony_ci		" timeout:%d initiator: %d chan:" CHANDEF_PR_FMT STA_PR_FMT,
230662306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->action_code, __entry->status,
230762306a36Sopenharmony_ci		__entry->timestamp, __entry->switch_time,
230862306a36Sopenharmony_ci		__entry->switch_timeout, __entry->peer_initiator,
230962306a36Sopenharmony_ci		CHANDEF_PR_ARG, STA_PR_ARG
231062306a36Sopenharmony_ci	)
231162306a36Sopenharmony_ci);
231262306a36Sopenharmony_ci
231362306a36Sopenharmony_ciTRACE_EVENT(drv_wake_tx_queue,
231462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
231562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
231662306a36Sopenharmony_ci		 struct txq_info *txq),
231762306a36Sopenharmony_ci
231862306a36Sopenharmony_ci	TP_ARGS(local, sdata, txq),
231962306a36Sopenharmony_ci
232062306a36Sopenharmony_ci	TP_STRUCT__entry(
232162306a36Sopenharmony_ci		LOCAL_ENTRY
232262306a36Sopenharmony_ci		VIF_ENTRY
232362306a36Sopenharmony_ci		STA_ENTRY
232462306a36Sopenharmony_ci		__field(u8, ac)
232562306a36Sopenharmony_ci		__field(u8, tid)
232662306a36Sopenharmony_ci	),
232762306a36Sopenharmony_ci
232862306a36Sopenharmony_ci	TP_fast_assign(
232962306a36Sopenharmony_ci		struct ieee80211_sta *sta = txq->txq.sta;
233062306a36Sopenharmony_ci
233162306a36Sopenharmony_ci		LOCAL_ASSIGN;
233262306a36Sopenharmony_ci		VIF_ASSIGN;
233362306a36Sopenharmony_ci		STA_ASSIGN;
233462306a36Sopenharmony_ci		__entry->ac = txq->txq.ac;
233562306a36Sopenharmony_ci		__entry->tid = txq->txq.tid;
233662306a36Sopenharmony_ci	),
233762306a36Sopenharmony_ci
233862306a36Sopenharmony_ci	TP_printk(
233962306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " ac:%d tid:%d",
234062306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid
234162306a36Sopenharmony_ci	)
234262306a36Sopenharmony_ci);
234362306a36Sopenharmony_ci
234462306a36Sopenharmony_ciTRACE_EVENT(drv_get_ftm_responder_stats,
234562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
234662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
234762306a36Sopenharmony_ci		 struct cfg80211_ftm_responder_stats *ftm_stats),
234862306a36Sopenharmony_ci
234962306a36Sopenharmony_ci	TP_ARGS(local, sdata, ftm_stats),
235062306a36Sopenharmony_ci
235162306a36Sopenharmony_ci	TP_STRUCT__entry(
235262306a36Sopenharmony_ci		LOCAL_ENTRY
235362306a36Sopenharmony_ci		VIF_ENTRY
235462306a36Sopenharmony_ci	),
235562306a36Sopenharmony_ci
235662306a36Sopenharmony_ci	TP_fast_assign(
235762306a36Sopenharmony_ci		LOCAL_ASSIGN;
235862306a36Sopenharmony_ci		VIF_ASSIGN;
235962306a36Sopenharmony_ci	),
236062306a36Sopenharmony_ci
236162306a36Sopenharmony_ci	TP_printk(
236262306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT,
236362306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG
236462306a36Sopenharmony_ci	)
236562306a36Sopenharmony_ci);
236662306a36Sopenharmony_ci
236762306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_addr_evt, drv_update_vif_offload,
236862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
236962306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
237062306a36Sopenharmony_ci	TP_ARGS(local, sdata)
237162306a36Sopenharmony_ci);
237262306a36Sopenharmony_ci
237362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(sta_flag_evt,
237462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
237562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
237662306a36Sopenharmony_ci		 struct ieee80211_sta *sta, bool enabled),
237762306a36Sopenharmony_ci
237862306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, enabled),
237962306a36Sopenharmony_ci
238062306a36Sopenharmony_ci	TP_STRUCT__entry(
238162306a36Sopenharmony_ci		LOCAL_ENTRY
238262306a36Sopenharmony_ci		VIF_ENTRY
238362306a36Sopenharmony_ci		STA_ENTRY
238462306a36Sopenharmony_ci		__field(bool, enabled)
238562306a36Sopenharmony_ci	),
238662306a36Sopenharmony_ci
238762306a36Sopenharmony_ci	TP_fast_assign(
238862306a36Sopenharmony_ci		LOCAL_ASSIGN;
238962306a36Sopenharmony_ci		VIF_ASSIGN;
239062306a36Sopenharmony_ci		STA_ASSIGN;
239162306a36Sopenharmony_ci		__entry->enabled = enabled;
239262306a36Sopenharmony_ci	),
239362306a36Sopenharmony_ci
239462306a36Sopenharmony_ci	TP_printk(
239562306a36Sopenharmony_ci		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " enabled:%d",
239662306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->enabled
239762306a36Sopenharmony_ci	)
239862306a36Sopenharmony_ci);
239962306a36Sopenharmony_ci
240062306a36Sopenharmony_ciDEFINE_EVENT(sta_flag_evt, drv_sta_set_4addr,
240162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
240262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
240362306a36Sopenharmony_ci		 struct ieee80211_sta *sta, bool enabled),
240462306a36Sopenharmony_ci
240562306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, enabled)
240662306a36Sopenharmony_ci);
240762306a36Sopenharmony_ci
240862306a36Sopenharmony_ciDEFINE_EVENT(sta_flag_evt, drv_sta_set_decap_offload,
240962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
241062306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
241162306a36Sopenharmony_ci		 struct ieee80211_sta *sta, bool enabled),
241262306a36Sopenharmony_ci
241362306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, enabled)
241462306a36Sopenharmony_ci);
241562306a36Sopenharmony_ci
241662306a36Sopenharmony_ciTRACE_EVENT(drv_add_twt_setup,
241762306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
241862306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
241962306a36Sopenharmony_ci		 struct ieee80211_twt_setup *twt,
242062306a36Sopenharmony_ci		 struct ieee80211_twt_params *twt_agrt),
242162306a36Sopenharmony_ci
242262306a36Sopenharmony_ci	TP_ARGS(local, sta, twt, twt_agrt),
242362306a36Sopenharmony_ci
242462306a36Sopenharmony_ci	TP_STRUCT__entry(
242562306a36Sopenharmony_ci		LOCAL_ENTRY
242662306a36Sopenharmony_ci		STA_ENTRY
242762306a36Sopenharmony_ci		__field(u8, dialog_token)
242862306a36Sopenharmony_ci		__field(u8, control)
242962306a36Sopenharmony_ci		__field(__le16, req_type)
243062306a36Sopenharmony_ci		__field(__le64, twt)
243162306a36Sopenharmony_ci		__field(u8, duration)
243262306a36Sopenharmony_ci		__field(__le16, mantissa)
243362306a36Sopenharmony_ci		__field(u8, channel)
243462306a36Sopenharmony_ci	),
243562306a36Sopenharmony_ci
243662306a36Sopenharmony_ci	TP_fast_assign(
243762306a36Sopenharmony_ci		LOCAL_ASSIGN;
243862306a36Sopenharmony_ci		STA_ASSIGN;
243962306a36Sopenharmony_ci		__entry->dialog_token = twt->dialog_token;
244062306a36Sopenharmony_ci		__entry->control = twt->control;
244162306a36Sopenharmony_ci		__entry->req_type = twt_agrt->req_type;
244262306a36Sopenharmony_ci		__entry->twt = twt_agrt->twt;
244362306a36Sopenharmony_ci		__entry->duration = twt_agrt->min_twt_dur;
244462306a36Sopenharmony_ci		__entry->mantissa = twt_agrt->mantissa;
244562306a36Sopenharmony_ci		__entry->channel = twt_agrt->channel;
244662306a36Sopenharmony_ci	),
244762306a36Sopenharmony_ci
244862306a36Sopenharmony_ci	TP_printk(
244962306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT
245062306a36Sopenharmony_ci		" token:%d control:0x%02x req_type:0x%04x"
245162306a36Sopenharmony_ci		" twt:%llu duration:%d mantissa:%d channel:%d",
245262306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->dialog_token,
245362306a36Sopenharmony_ci		__entry->control, le16_to_cpu(__entry->req_type),
245462306a36Sopenharmony_ci		le64_to_cpu(__entry->twt), __entry->duration,
245562306a36Sopenharmony_ci		le16_to_cpu(__entry->mantissa), __entry->channel
245662306a36Sopenharmony_ci	)
245762306a36Sopenharmony_ci);
245862306a36Sopenharmony_ci
245962306a36Sopenharmony_ciTRACE_EVENT(drv_twt_teardown_request,
246062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
246162306a36Sopenharmony_ci		 struct ieee80211_sta *sta, u8 flowid),
246262306a36Sopenharmony_ci
246362306a36Sopenharmony_ci	TP_ARGS(local, sta, flowid),
246462306a36Sopenharmony_ci
246562306a36Sopenharmony_ci	TP_STRUCT__entry(
246662306a36Sopenharmony_ci		LOCAL_ENTRY
246762306a36Sopenharmony_ci		STA_ENTRY
246862306a36Sopenharmony_ci		__field(u8, flowid)
246962306a36Sopenharmony_ci	),
247062306a36Sopenharmony_ci
247162306a36Sopenharmony_ci	TP_fast_assign(
247262306a36Sopenharmony_ci		LOCAL_ASSIGN;
247362306a36Sopenharmony_ci		STA_ASSIGN;
247462306a36Sopenharmony_ci		__entry->flowid = flowid;
247562306a36Sopenharmony_ci	),
247662306a36Sopenharmony_ci
247762306a36Sopenharmony_ci	TP_printk(
247862306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " flowid:%d",
247962306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->flowid
248062306a36Sopenharmony_ci	)
248162306a36Sopenharmony_ci);
248262306a36Sopenharmony_ci
248362306a36Sopenharmony_ciDEFINE_EVENT(sta_event, drv_net_fill_forward_path,
248462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
248562306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
248662306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
248762306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta)
248862306a36Sopenharmony_ci);
248962306a36Sopenharmony_ci
249062306a36Sopenharmony_ciTRACE_EVENT(drv_net_setup_tc,
249162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
249262306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
249362306a36Sopenharmony_ci		 u8 type),
249462306a36Sopenharmony_ci
249562306a36Sopenharmony_ci	TP_ARGS(local, sdata, type),
249662306a36Sopenharmony_ci
249762306a36Sopenharmony_ci	TP_STRUCT__entry(
249862306a36Sopenharmony_ci		LOCAL_ENTRY
249962306a36Sopenharmony_ci		VIF_ENTRY
250062306a36Sopenharmony_ci		__field(u8, type)
250162306a36Sopenharmony_ci	),
250262306a36Sopenharmony_ci
250362306a36Sopenharmony_ci	TP_fast_assign(
250462306a36Sopenharmony_ci		LOCAL_ASSIGN;
250562306a36Sopenharmony_ci		VIF_ASSIGN;
250662306a36Sopenharmony_ci		__entry->type = type;
250762306a36Sopenharmony_ci	),
250862306a36Sopenharmony_ci
250962306a36Sopenharmony_ci	TP_printk(
251062306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " type:%d\n",
251162306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->type
251262306a36Sopenharmony_ci	)
251362306a36Sopenharmony_ci);
251462306a36Sopenharmony_ci
251562306a36Sopenharmony_ciTRACE_EVENT(drv_change_vif_links,
251662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
251762306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
251862306a36Sopenharmony_ci		 u16 old_links, u16 new_links),
251962306a36Sopenharmony_ci
252062306a36Sopenharmony_ci	TP_ARGS(local, sdata, old_links, new_links),
252162306a36Sopenharmony_ci
252262306a36Sopenharmony_ci	TP_STRUCT__entry(
252362306a36Sopenharmony_ci		LOCAL_ENTRY
252462306a36Sopenharmony_ci		VIF_ENTRY
252562306a36Sopenharmony_ci		__field(u16, old_links)
252662306a36Sopenharmony_ci		__field(u16, new_links)
252762306a36Sopenharmony_ci	),
252862306a36Sopenharmony_ci
252962306a36Sopenharmony_ci	TP_fast_assign(
253062306a36Sopenharmony_ci		LOCAL_ASSIGN;
253162306a36Sopenharmony_ci		VIF_ASSIGN;
253262306a36Sopenharmony_ci		__entry->old_links = old_links;
253362306a36Sopenharmony_ci		__entry->new_links = new_links;
253462306a36Sopenharmony_ci	),
253562306a36Sopenharmony_ci
253662306a36Sopenharmony_ci	TP_printk(
253762306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT " old_links:0x%04x, new_links:0x%04x\n",
253862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, __entry->old_links, __entry->new_links
253962306a36Sopenharmony_ci	)
254062306a36Sopenharmony_ci);
254162306a36Sopenharmony_ci
254262306a36Sopenharmony_ciTRACE_EVENT(drv_change_sta_links,
254362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
254462306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata,
254562306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
254662306a36Sopenharmony_ci		 u16 old_links, u16 new_links),
254762306a36Sopenharmony_ci
254862306a36Sopenharmony_ci	TP_ARGS(local, sdata, sta, old_links, new_links),
254962306a36Sopenharmony_ci
255062306a36Sopenharmony_ci	TP_STRUCT__entry(
255162306a36Sopenharmony_ci		LOCAL_ENTRY
255262306a36Sopenharmony_ci		VIF_ENTRY
255362306a36Sopenharmony_ci		STA_ENTRY
255462306a36Sopenharmony_ci		__field(u16, old_links)
255562306a36Sopenharmony_ci		__field(u16, new_links)
255662306a36Sopenharmony_ci	),
255762306a36Sopenharmony_ci
255862306a36Sopenharmony_ci	TP_fast_assign(
255962306a36Sopenharmony_ci		LOCAL_ASSIGN;
256062306a36Sopenharmony_ci		VIF_ASSIGN;
256162306a36Sopenharmony_ci		STA_ASSIGN;
256262306a36Sopenharmony_ci		__entry->old_links = old_links;
256362306a36Sopenharmony_ci		__entry->new_links = new_links;
256462306a36Sopenharmony_ci	),
256562306a36Sopenharmony_ci
256662306a36Sopenharmony_ci	TP_printk(
256762306a36Sopenharmony_ci		LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " old_links:0x%04x, new_links:0x%04x\n",
256862306a36Sopenharmony_ci		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
256962306a36Sopenharmony_ci		__entry->old_links, __entry->new_links
257062306a36Sopenharmony_ci	)
257162306a36Sopenharmony_ci);
257262306a36Sopenharmony_ci
257362306a36Sopenharmony_ci/*
257462306a36Sopenharmony_ci * Tracing for API calls that drivers call.
257562306a36Sopenharmony_ci */
257662306a36Sopenharmony_ci
257762306a36Sopenharmony_ciTRACE_EVENT(api_start_tx_ba_session,
257862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta, u16 tid),
257962306a36Sopenharmony_ci
258062306a36Sopenharmony_ci	TP_ARGS(sta, tid),
258162306a36Sopenharmony_ci
258262306a36Sopenharmony_ci	TP_STRUCT__entry(
258362306a36Sopenharmony_ci		STA_ENTRY
258462306a36Sopenharmony_ci		__field(u16, tid)
258562306a36Sopenharmony_ci	),
258662306a36Sopenharmony_ci
258762306a36Sopenharmony_ci	TP_fast_assign(
258862306a36Sopenharmony_ci		STA_ASSIGN;
258962306a36Sopenharmony_ci		__entry->tid = tid;
259062306a36Sopenharmony_ci	),
259162306a36Sopenharmony_ci
259262306a36Sopenharmony_ci	TP_printk(
259362306a36Sopenharmony_ci		STA_PR_FMT " tid:%d",
259462306a36Sopenharmony_ci		STA_PR_ARG, __entry->tid
259562306a36Sopenharmony_ci	)
259662306a36Sopenharmony_ci);
259762306a36Sopenharmony_ci
259862306a36Sopenharmony_ciTRACE_EVENT(api_start_tx_ba_cb,
259962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
260062306a36Sopenharmony_ci
260162306a36Sopenharmony_ci	TP_ARGS(sdata, ra, tid),
260262306a36Sopenharmony_ci
260362306a36Sopenharmony_ci	TP_STRUCT__entry(
260462306a36Sopenharmony_ci		VIF_ENTRY
260562306a36Sopenharmony_ci		__array(u8, ra, ETH_ALEN)
260662306a36Sopenharmony_ci		__field(u16, tid)
260762306a36Sopenharmony_ci	),
260862306a36Sopenharmony_ci
260962306a36Sopenharmony_ci	TP_fast_assign(
261062306a36Sopenharmony_ci		VIF_ASSIGN;
261162306a36Sopenharmony_ci		memcpy(__entry->ra, ra, ETH_ALEN);
261262306a36Sopenharmony_ci		__entry->tid = tid;
261362306a36Sopenharmony_ci	),
261462306a36Sopenharmony_ci
261562306a36Sopenharmony_ci	TP_printk(
261662306a36Sopenharmony_ci		VIF_PR_FMT " ra:%pM tid:%d",
261762306a36Sopenharmony_ci		VIF_PR_ARG, __entry->ra, __entry->tid
261862306a36Sopenharmony_ci	)
261962306a36Sopenharmony_ci);
262062306a36Sopenharmony_ci
262162306a36Sopenharmony_ciTRACE_EVENT(api_stop_tx_ba_session,
262262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sta *sta, u16 tid),
262362306a36Sopenharmony_ci
262462306a36Sopenharmony_ci	TP_ARGS(sta, tid),
262562306a36Sopenharmony_ci
262662306a36Sopenharmony_ci	TP_STRUCT__entry(
262762306a36Sopenharmony_ci		STA_ENTRY
262862306a36Sopenharmony_ci		__field(u16, tid)
262962306a36Sopenharmony_ci	),
263062306a36Sopenharmony_ci
263162306a36Sopenharmony_ci	TP_fast_assign(
263262306a36Sopenharmony_ci		STA_ASSIGN;
263362306a36Sopenharmony_ci		__entry->tid = tid;
263462306a36Sopenharmony_ci	),
263562306a36Sopenharmony_ci
263662306a36Sopenharmony_ci	TP_printk(
263762306a36Sopenharmony_ci		STA_PR_FMT " tid:%d",
263862306a36Sopenharmony_ci		STA_PR_ARG, __entry->tid
263962306a36Sopenharmony_ci	)
264062306a36Sopenharmony_ci);
264162306a36Sopenharmony_ci
264262306a36Sopenharmony_ciTRACE_EVENT(api_stop_tx_ba_cb,
264362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
264462306a36Sopenharmony_ci
264562306a36Sopenharmony_ci	TP_ARGS(sdata, ra, tid),
264662306a36Sopenharmony_ci
264762306a36Sopenharmony_ci	TP_STRUCT__entry(
264862306a36Sopenharmony_ci		VIF_ENTRY
264962306a36Sopenharmony_ci		__array(u8, ra, ETH_ALEN)
265062306a36Sopenharmony_ci		__field(u16, tid)
265162306a36Sopenharmony_ci	),
265262306a36Sopenharmony_ci
265362306a36Sopenharmony_ci	TP_fast_assign(
265462306a36Sopenharmony_ci		VIF_ASSIGN;
265562306a36Sopenharmony_ci		memcpy(__entry->ra, ra, ETH_ALEN);
265662306a36Sopenharmony_ci		__entry->tid = tid;
265762306a36Sopenharmony_ci	),
265862306a36Sopenharmony_ci
265962306a36Sopenharmony_ci	TP_printk(
266062306a36Sopenharmony_ci		VIF_PR_FMT " ra:%pM tid:%d",
266162306a36Sopenharmony_ci		VIF_PR_ARG, __entry->ra, __entry->tid
266262306a36Sopenharmony_ci	)
266362306a36Sopenharmony_ci);
266462306a36Sopenharmony_ci
266562306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_restart_hw,
266662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
266762306a36Sopenharmony_ci	TP_ARGS(local)
266862306a36Sopenharmony_ci);
266962306a36Sopenharmony_ci
267062306a36Sopenharmony_ciTRACE_EVENT(api_beacon_loss,
267162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata),
267262306a36Sopenharmony_ci
267362306a36Sopenharmony_ci	TP_ARGS(sdata),
267462306a36Sopenharmony_ci
267562306a36Sopenharmony_ci	TP_STRUCT__entry(
267662306a36Sopenharmony_ci		VIF_ENTRY
267762306a36Sopenharmony_ci	),
267862306a36Sopenharmony_ci
267962306a36Sopenharmony_ci	TP_fast_assign(
268062306a36Sopenharmony_ci		VIF_ASSIGN;
268162306a36Sopenharmony_ci	),
268262306a36Sopenharmony_ci
268362306a36Sopenharmony_ci	TP_printk(
268462306a36Sopenharmony_ci		VIF_PR_FMT,
268562306a36Sopenharmony_ci		VIF_PR_ARG
268662306a36Sopenharmony_ci	)
268762306a36Sopenharmony_ci);
268862306a36Sopenharmony_ci
268962306a36Sopenharmony_ciTRACE_EVENT(api_connection_loss,
269062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata),
269162306a36Sopenharmony_ci
269262306a36Sopenharmony_ci	TP_ARGS(sdata),
269362306a36Sopenharmony_ci
269462306a36Sopenharmony_ci	TP_STRUCT__entry(
269562306a36Sopenharmony_ci		VIF_ENTRY
269662306a36Sopenharmony_ci	),
269762306a36Sopenharmony_ci
269862306a36Sopenharmony_ci	TP_fast_assign(
269962306a36Sopenharmony_ci		VIF_ASSIGN;
270062306a36Sopenharmony_ci	),
270162306a36Sopenharmony_ci
270262306a36Sopenharmony_ci	TP_printk(
270362306a36Sopenharmony_ci		VIF_PR_FMT,
270462306a36Sopenharmony_ci		VIF_PR_ARG
270562306a36Sopenharmony_ci	)
270662306a36Sopenharmony_ci);
270762306a36Sopenharmony_ci
270862306a36Sopenharmony_ciTRACE_EVENT(api_disconnect,
270962306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, bool reconnect),
271062306a36Sopenharmony_ci
271162306a36Sopenharmony_ci	TP_ARGS(sdata, reconnect),
271262306a36Sopenharmony_ci
271362306a36Sopenharmony_ci	TP_STRUCT__entry(
271462306a36Sopenharmony_ci		VIF_ENTRY
271562306a36Sopenharmony_ci		__field(int, reconnect)
271662306a36Sopenharmony_ci	),
271762306a36Sopenharmony_ci
271862306a36Sopenharmony_ci	TP_fast_assign(
271962306a36Sopenharmony_ci		VIF_ASSIGN;
272062306a36Sopenharmony_ci		__entry->reconnect = reconnect;
272162306a36Sopenharmony_ci	),
272262306a36Sopenharmony_ci
272362306a36Sopenharmony_ci	TP_printk(
272462306a36Sopenharmony_ci		VIF_PR_FMT " reconnect:%d",
272562306a36Sopenharmony_ci		VIF_PR_ARG, __entry->reconnect
272662306a36Sopenharmony_ci	)
272762306a36Sopenharmony_ci);
272862306a36Sopenharmony_ci
272962306a36Sopenharmony_ciTRACE_EVENT(api_cqm_rssi_notify,
273062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
273162306a36Sopenharmony_ci		 enum nl80211_cqm_rssi_threshold_event rssi_event,
273262306a36Sopenharmony_ci		 s32 rssi_level),
273362306a36Sopenharmony_ci
273462306a36Sopenharmony_ci	TP_ARGS(sdata, rssi_event, rssi_level),
273562306a36Sopenharmony_ci
273662306a36Sopenharmony_ci	TP_STRUCT__entry(
273762306a36Sopenharmony_ci		VIF_ENTRY
273862306a36Sopenharmony_ci		__field(u32, rssi_event)
273962306a36Sopenharmony_ci		__field(s32, rssi_level)
274062306a36Sopenharmony_ci	),
274162306a36Sopenharmony_ci
274262306a36Sopenharmony_ci	TP_fast_assign(
274362306a36Sopenharmony_ci		VIF_ASSIGN;
274462306a36Sopenharmony_ci		__entry->rssi_event = rssi_event;
274562306a36Sopenharmony_ci		__entry->rssi_level = rssi_level;
274662306a36Sopenharmony_ci	),
274762306a36Sopenharmony_ci
274862306a36Sopenharmony_ci	TP_printk(
274962306a36Sopenharmony_ci		VIF_PR_FMT " event:%d rssi:%d",
275062306a36Sopenharmony_ci		VIF_PR_ARG, __entry->rssi_event, __entry->rssi_level
275162306a36Sopenharmony_ci	)
275262306a36Sopenharmony_ci);
275362306a36Sopenharmony_ci
275462306a36Sopenharmony_ciDEFINE_EVENT(local_sdata_evt, api_cqm_beacon_loss_notify,
275562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
275662306a36Sopenharmony_ci		 struct ieee80211_sub_if_data *sdata),
275762306a36Sopenharmony_ci	TP_ARGS(local, sdata)
275862306a36Sopenharmony_ci);
275962306a36Sopenharmony_ci
276062306a36Sopenharmony_ciTRACE_EVENT(api_scan_completed,
276162306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, bool aborted),
276262306a36Sopenharmony_ci
276362306a36Sopenharmony_ci	TP_ARGS(local, aborted),
276462306a36Sopenharmony_ci
276562306a36Sopenharmony_ci	TP_STRUCT__entry(
276662306a36Sopenharmony_ci		LOCAL_ENTRY
276762306a36Sopenharmony_ci		__field(bool, aborted)
276862306a36Sopenharmony_ci	),
276962306a36Sopenharmony_ci
277062306a36Sopenharmony_ci	TP_fast_assign(
277162306a36Sopenharmony_ci		LOCAL_ASSIGN;
277262306a36Sopenharmony_ci		__entry->aborted = aborted;
277362306a36Sopenharmony_ci	),
277462306a36Sopenharmony_ci
277562306a36Sopenharmony_ci	TP_printk(
277662306a36Sopenharmony_ci		LOCAL_PR_FMT " aborted:%d",
277762306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->aborted
277862306a36Sopenharmony_ci	)
277962306a36Sopenharmony_ci);
278062306a36Sopenharmony_ci
278162306a36Sopenharmony_ciTRACE_EVENT(api_sched_scan_results,
278262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
278362306a36Sopenharmony_ci
278462306a36Sopenharmony_ci	TP_ARGS(local),
278562306a36Sopenharmony_ci
278662306a36Sopenharmony_ci	TP_STRUCT__entry(
278762306a36Sopenharmony_ci		LOCAL_ENTRY
278862306a36Sopenharmony_ci	),
278962306a36Sopenharmony_ci
279062306a36Sopenharmony_ci	TP_fast_assign(
279162306a36Sopenharmony_ci		LOCAL_ASSIGN;
279262306a36Sopenharmony_ci	),
279362306a36Sopenharmony_ci
279462306a36Sopenharmony_ci	TP_printk(
279562306a36Sopenharmony_ci		LOCAL_PR_FMT, LOCAL_PR_ARG
279662306a36Sopenharmony_ci	)
279762306a36Sopenharmony_ci);
279862306a36Sopenharmony_ci
279962306a36Sopenharmony_ciTRACE_EVENT(api_sched_scan_stopped,
280062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
280162306a36Sopenharmony_ci
280262306a36Sopenharmony_ci	TP_ARGS(local),
280362306a36Sopenharmony_ci
280462306a36Sopenharmony_ci	TP_STRUCT__entry(
280562306a36Sopenharmony_ci		LOCAL_ENTRY
280662306a36Sopenharmony_ci	),
280762306a36Sopenharmony_ci
280862306a36Sopenharmony_ci	TP_fast_assign(
280962306a36Sopenharmony_ci		LOCAL_ASSIGN;
281062306a36Sopenharmony_ci	),
281162306a36Sopenharmony_ci
281262306a36Sopenharmony_ci	TP_printk(
281362306a36Sopenharmony_ci		LOCAL_PR_FMT, LOCAL_PR_ARG
281462306a36Sopenharmony_ci	)
281562306a36Sopenharmony_ci);
281662306a36Sopenharmony_ci
281762306a36Sopenharmony_ciTRACE_EVENT(api_sta_block_awake,
281862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
281962306a36Sopenharmony_ci		 struct ieee80211_sta *sta, bool block),
282062306a36Sopenharmony_ci
282162306a36Sopenharmony_ci	TP_ARGS(local, sta, block),
282262306a36Sopenharmony_ci
282362306a36Sopenharmony_ci	TP_STRUCT__entry(
282462306a36Sopenharmony_ci		LOCAL_ENTRY
282562306a36Sopenharmony_ci		STA_ENTRY
282662306a36Sopenharmony_ci		__field(bool, block)
282762306a36Sopenharmony_ci	),
282862306a36Sopenharmony_ci
282962306a36Sopenharmony_ci	TP_fast_assign(
283062306a36Sopenharmony_ci		LOCAL_ASSIGN;
283162306a36Sopenharmony_ci		STA_ASSIGN;
283262306a36Sopenharmony_ci		__entry->block = block;
283362306a36Sopenharmony_ci	),
283462306a36Sopenharmony_ci
283562306a36Sopenharmony_ci	TP_printk(
283662306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " block:%d",
283762306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->block
283862306a36Sopenharmony_ci	)
283962306a36Sopenharmony_ci);
284062306a36Sopenharmony_ci
284162306a36Sopenharmony_ciTRACE_EVENT(api_chswitch_done,
284262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success),
284362306a36Sopenharmony_ci
284462306a36Sopenharmony_ci	TP_ARGS(sdata, success),
284562306a36Sopenharmony_ci
284662306a36Sopenharmony_ci	TP_STRUCT__entry(
284762306a36Sopenharmony_ci		VIF_ENTRY
284862306a36Sopenharmony_ci		__field(bool, success)
284962306a36Sopenharmony_ci	),
285062306a36Sopenharmony_ci
285162306a36Sopenharmony_ci	TP_fast_assign(
285262306a36Sopenharmony_ci		VIF_ASSIGN;
285362306a36Sopenharmony_ci		__entry->success = success;
285462306a36Sopenharmony_ci	),
285562306a36Sopenharmony_ci
285662306a36Sopenharmony_ci	TP_printk(
285762306a36Sopenharmony_ci		VIF_PR_FMT " success=%d",
285862306a36Sopenharmony_ci		VIF_PR_ARG, __entry->success
285962306a36Sopenharmony_ci	)
286062306a36Sopenharmony_ci);
286162306a36Sopenharmony_ci
286262306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_ready_on_channel,
286362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
286462306a36Sopenharmony_ci	TP_ARGS(local)
286562306a36Sopenharmony_ci);
286662306a36Sopenharmony_ci
286762306a36Sopenharmony_ciDEFINE_EVENT(local_only_evt, api_remain_on_channel_expired,
286862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
286962306a36Sopenharmony_ci	TP_ARGS(local)
287062306a36Sopenharmony_ci);
287162306a36Sopenharmony_ci
287262306a36Sopenharmony_ciTRACE_EVENT(api_gtk_rekey_notify,
287362306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
287462306a36Sopenharmony_ci		 const u8 *bssid, const u8 *replay_ctr),
287562306a36Sopenharmony_ci
287662306a36Sopenharmony_ci	TP_ARGS(sdata, bssid, replay_ctr),
287762306a36Sopenharmony_ci
287862306a36Sopenharmony_ci	TP_STRUCT__entry(
287962306a36Sopenharmony_ci		VIF_ENTRY
288062306a36Sopenharmony_ci		__array(u8, bssid, ETH_ALEN)
288162306a36Sopenharmony_ci		__array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
288262306a36Sopenharmony_ci	),
288362306a36Sopenharmony_ci
288462306a36Sopenharmony_ci	TP_fast_assign(
288562306a36Sopenharmony_ci		VIF_ASSIGN;
288662306a36Sopenharmony_ci		memcpy(__entry->bssid, bssid, ETH_ALEN);
288762306a36Sopenharmony_ci		memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN);
288862306a36Sopenharmony_ci	),
288962306a36Sopenharmony_ci
289062306a36Sopenharmony_ci	TP_printk(VIF_PR_FMT, VIF_PR_ARG)
289162306a36Sopenharmony_ci);
289262306a36Sopenharmony_ci
289362306a36Sopenharmony_ciTRACE_EVENT(api_enable_rssi_reports,
289462306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_sub_if_data *sdata,
289562306a36Sopenharmony_ci		 int rssi_min_thold, int rssi_max_thold),
289662306a36Sopenharmony_ci
289762306a36Sopenharmony_ci	TP_ARGS(sdata, rssi_min_thold, rssi_max_thold),
289862306a36Sopenharmony_ci
289962306a36Sopenharmony_ci	TP_STRUCT__entry(
290062306a36Sopenharmony_ci		VIF_ENTRY
290162306a36Sopenharmony_ci		__field(int, rssi_min_thold)
290262306a36Sopenharmony_ci		__field(int, rssi_max_thold)
290362306a36Sopenharmony_ci	),
290462306a36Sopenharmony_ci
290562306a36Sopenharmony_ci	TP_fast_assign(
290662306a36Sopenharmony_ci		VIF_ASSIGN;
290762306a36Sopenharmony_ci		__entry->rssi_min_thold = rssi_min_thold;
290862306a36Sopenharmony_ci		__entry->rssi_max_thold = rssi_max_thold;
290962306a36Sopenharmony_ci	),
291062306a36Sopenharmony_ci
291162306a36Sopenharmony_ci	TP_printk(
291262306a36Sopenharmony_ci		VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d",
291362306a36Sopenharmony_ci		VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold
291462306a36Sopenharmony_ci	)
291562306a36Sopenharmony_ci);
291662306a36Sopenharmony_ci
291762306a36Sopenharmony_ciTRACE_EVENT(api_eosp,
291862306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
291962306a36Sopenharmony_ci		 struct ieee80211_sta *sta),
292062306a36Sopenharmony_ci
292162306a36Sopenharmony_ci	TP_ARGS(local, sta),
292262306a36Sopenharmony_ci
292362306a36Sopenharmony_ci	TP_STRUCT__entry(
292462306a36Sopenharmony_ci		LOCAL_ENTRY
292562306a36Sopenharmony_ci		STA_ENTRY
292662306a36Sopenharmony_ci	),
292762306a36Sopenharmony_ci
292862306a36Sopenharmony_ci	TP_fast_assign(
292962306a36Sopenharmony_ci		LOCAL_ASSIGN;
293062306a36Sopenharmony_ci		STA_ASSIGN;
293162306a36Sopenharmony_ci	),
293262306a36Sopenharmony_ci
293362306a36Sopenharmony_ci	TP_printk(
293462306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT,
293562306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG
293662306a36Sopenharmony_ci	)
293762306a36Sopenharmony_ci);
293862306a36Sopenharmony_ci
293962306a36Sopenharmony_ciTRACE_EVENT(api_send_eosp_nullfunc,
294062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
294162306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
294262306a36Sopenharmony_ci		 u8 tid),
294362306a36Sopenharmony_ci
294462306a36Sopenharmony_ci	TP_ARGS(local, sta, tid),
294562306a36Sopenharmony_ci
294662306a36Sopenharmony_ci	TP_STRUCT__entry(
294762306a36Sopenharmony_ci		LOCAL_ENTRY
294862306a36Sopenharmony_ci		STA_ENTRY
294962306a36Sopenharmony_ci		__field(u8, tid)
295062306a36Sopenharmony_ci	),
295162306a36Sopenharmony_ci
295262306a36Sopenharmony_ci	TP_fast_assign(
295362306a36Sopenharmony_ci		LOCAL_ASSIGN;
295462306a36Sopenharmony_ci		STA_ASSIGN;
295562306a36Sopenharmony_ci		__entry->tid = tid;
295662306a36Sopenharmony_ci	),
295762306a36Sopenharmony_ci
295862306a36Sopenharmony_ci	TP_printk(
295962306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " tid:%d",
296062306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tid
296162306a36Sopenharmony_ci	)
296262306a36Sopenharmony_ci);
296362306a36Sopenharmony_ci
296462306a36Sopenharmony_ciTRACE_EVENT(api_sta_set_buffered,
296562306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local,
296662306a36Sopenharmony_ci		 struct ieee80211_sta *sta,
296762306a36Sopenharmony_ci		 u8 tid, bool buffered),
296862306a36Sopenharmony_ci
296962306a36Sopenharmony_ci	TP_ARGS(local, sta, tid, buffered),
297062306a36Sopenharmony_ci
297162306a36Sopenharmony_ci	TP_STRUCT__entry(
297262306a36Sopenharmony_ci		LOCAL_ENTRY
297362306a36Sopenharmony_ci		STA_ENTRY
297462306a36Sopenharmony_ci		__field(u8, tid)
297562306a36Sopenharmony_ci		__field(bool, buffered)
297662306a36Sopenharmony_ci	),
297762306a36Sopenharmony_ci
297862306a36Sopenharmony_ci	TP_fast_assign(
297962306a36Sopenharmony_ci		LOCAL_ASSIGN;
298062306a36Sopenharmony_ci		STA_ASSIGN;
298162306a36Sopenharmony_ci		__entry->tid = tid;
298262306a36Sopenharmony_ci		__entry->buffered = buffered;
298362306a36Sopenharmony_ci	),
298462306a36Sopenharmony_ci
298562306a36Sopenharmony_ci	TP_printk(
298662306a36Sopenharmony_ci		LOCAL_PR_FMT STA_PR_FMT " tid:%d buffered:%d",
298762306a36Sopenharmony_ci		LOCAL_PR_ARG, STA_PR_ARG, __entry->tid, __entry->buffered
298862306a36Sopenharmony_ci	)
298962306a36Sopenharmony_ci);
299062306a36Sopenharmony_ci
299162306a36Sopenharmony_ciTRACE_EVENT(api_radar_detected,
299262306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local),
299362306a36Sopenharmony_ci
299462306a36Sopenharmony_ci	TP_ARGS(local),
299562306a36Sopenharmony_ci
299662306a36Sopenharmony_ci	TP_STRUCT__entry(
299762306a36Sopenharmony_ci		LOCAL_ENTRY
299862306a36Sopenharmony_ci	),
299962306a36Sopenharmony_ci
300062306a36Sopenharmony_ci	TP_fast_assign(
300162306a36Sopenharmony_ci		LOCAL_ASSIGN;
300262306a36Sopenharmony_ci	),
300362306a36Sopenharmony_ci
300462306a36Sopenharmony_ci	TP_printk(
300562306a36Sopenharmony_ci		LOCAL_PR_FMT " radar detected",
300662306a36Sopenharmony_ci		LOCAL_PR_ARG
300762306a36Sopenharmony_ci	)
300862306a36Sopenharmony_ci);
300962306a36Sopenharmony_ci
301062306a36Sopenharmony_ci/*
301162306a36Sopenharmony_ci * Tracing for internal functions
301262306a36Sopenharmony_ci * (which may also be called in response to driver calls)
301362306a36Sopenharmony_ci */
301462306a36Sopenharmony_ci
301562306a36Sopenharmony_ciTRACE_EVENT(wake_queue,
301662306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u16 queue,
301762306a36Sopenharmony_ci		 enum queue_stop_reason reason),
301862306a36Sopenharmony_ci
301962306a36Sopenharmony_ci	TP_ARGS(local, queue, reason),
302062306a36Sopenharmony_ci
302162306a36Sopenharmony_ci	TP_STRUCT__entry(
302262306a36Sopenharmony_ci		LOCAL_ENTRY
302362306a36Sopenharmony_ci		__field(u16, queue)
302462306a36Sopenharmony_ci		__field(u32, reason)
302562306a36Sopenharmony_ci	),
302662306a36Sopenharmony_ci
302762306a36Sopenharmony_ci	TP_fast_assign(
302862306a36Sopenharmony_ci		LOCAL_ASSIGN;
302962306a36Sopenharmony_ci		__entry->queue = queue;
303062306a36Sopenharmony_ci		__entry->reason = reason;
303162306a36Sopenharmony_ci	),
303262306a36Sopenharmony_ci
303362306a36Sopenharmony_ci	TP_printk(
303462306a36Sopenharmony_ci		LOCAL_PR_FMT " queue:%d, reason:%d",
303562306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->queue, __entry->reason
303662306a36Sopenharmony_ci	)
303762306a36Sopenharmony_ci);
303862306a36Sopenharmony_ci
303962306a36Sopenharmony_ciTRACE_EVENT(stop_queue,
304062306a36Sopenharmony_ci	TP_PROTO(struct ieee80211_local *local, u16 queue,
304162306a36Sopenharmony_ci		 enum queue_stop_reason reason),
304262306a36Sopenharmony_ci
304362306a36Sopenharmony_ci	TP_ARGS(local, queue, reason),
304462306a36Sopenharmony_ci
304562306a36Sopenharmony_ci	TP_STRUCT__entry(
304662306a36Sopenharmony_ci		LOCAL_ENTRY
304762306a36Sopenharmony_ci		__field(u16, queue)
304862306a36Sopenharmony_ci		__field(u32, reason)
304962306a36Sopenharmony_ci	),
305062306a36Sopenharmony_ci
305162306a36Sopenharmony_ci	TP_fast_assign(
305262306a36Sopenharmony_ci		LOCAL_ASSIGN;
305362306a36Sopenharmony_ci		__entry->queue = queue;
305462306a36Sopenharmony_ci		__entry->reason = reason;
305562306a36Sopenharmony_ci	),
305662306a36Sopenharmony_ci
305762306a36Sopenharmony_ci	TP_printk(
305862306a36Sopenharmony_ci		LOCAL_PR_FMT " queue:%d, reason:%d",
305962306a36Sopenharmony_ci		LOCAL_PR_ARG, __entry->queue, __entry->reason
306062306a36Sopenharmony_ci	)
306162306a36Sopenharmony_ci);
306262306a36Sopenharmony_ci
306362306a36Sopenharmony_ci#endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
306462306a36Sopenharmony_ci
306562306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
306662306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
306762306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
306862306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
306962306a36Sopenharmony_ci#include <trace/define_trace.h>
3070