mirror of https://gitee.com/openkylin/linux.git
nl80211: add scan width to bss and scan request structs
To allow scanning and working with 5 MHz and 10 MHz BSS, extend the inform bss commands and add wrappers to take 5 and 10 MHz bss into account. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
This commit is contained in:
parent
be29b99a9b
commit
dcd6eac1f3
|
@ -1285,6 +1285,7 @@ struct cfg80211_ssid {
|
||||||
* @n_ssids: number of SSIDs
|
* @n_ssids: number of SSIDs
|
||||||
* @channels: channels to scan on.
|
* @channels: channels to scan on.
|
||||||
* @n_channels: total number of channels to scan
|
* @n_channels: total number of channels to scan
|
||||||
|
* @scan_width: channel width for scanning
|
||||||
* @ie: optional information element(s) to add into Probe Request or %NULL
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
||||||
* @ie_len: length of ie in octets
|
* @ie_len: length of ie in octets
|
||||||
* @flags: bit field of flags controlling operation
|
* @flags: bit field of flags controlling operation
|
||||||
|
@ -1300,6 +1301,7 @@ struct cfg80211_scan_request {
|
||||||
struct cfg80211_ssid *ssids;
|
struct cfg80211_ssid *ssids;
|
||||||
int n_ssids;
|
int n_ssids;
|
||||||
u32 n_channels;
|
u32 n_channels;
|
||||||
|
enum nl80211_bss_scan_width scan_width;
|
||||||
const u8 *ie;
|
const u8 *ie;
|
||||||
size_t ie_len;
|
size_t ie_len;
|
||||||
u32 flags;
|
u32 flags;
|
||||||
|
@ -1333,6 +1335,7 @@ struct cfg80211_match_set {
|
||||||
* @ssids: SSIDs to scan for (passed in the probe_reqs in active scans)
|
* @ssids: SSIDs to scan for (passed in the probe_reqs in active scans)
|
||||||
* @n_ssids: number of SSIDs
|
* @n_ssids: number of SSIDs
|
||||||
* @n_channels: total number of channels to scan
|
* @n_channels: total number of channels to scan
|
||||||
|
* @scan_width: channel width for scanning
|
||||||
* @interval: interval between each scheduled scan cycle
|
* @interval: interval between each scheduled scan cycle
|
||||||
* @ie: optional information element(s) to add into Probe Request or %NULL
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
||||||
* @ie_len: length of ie in octets
|
* @ie_len: length of ie in octets
|
||||||
|
@ -1352,6 +1355,7 @@ struct cfg80211_sched_scan_request {
|
||||||
struct cfg80211_ssid *ssids;
|
struct cfg80211_ssid *ssids;
|
||||||
int n_ssids;
|
int n_ssids;
|
||||||
u32 n_channels;
|
u32 n_channels;
|
||||||
|
enum nl80211_bss_scan_width scan_width;
|
||||||
u32 interval;
|
u32 interval;
|
||||||
const u8 *ie;
|
const u8 *ie;
|
||||||
size_t ie_len;
|
size_t ie_len;
|
||||||
|
@ -1403,6 +1407,7 @@ struct cfg80211_bss_ies {
|
||||||
* for use in scan results and similar.
|
* for use in scan results and similar.
|
||||||
*
|
*
|
||||||
* @channel: channel this BSS is on
|
* @channel: channel this BSS is on
|
||||||
|
* @scan_width: width of the control channel
|
||||||
* @bssid: BSSID of the BSS
|
* @bssid: BSSID of the BSS
|
||||||
* @beacon_interval: the beacon interval as from the frame
|
* @beacon_interval: the beacon interval as from the frame
|
||||||
* @capability: the capability field in host byte order
|
* @capability: the capability field in host byte order
|
||||||
|
@ -1424,6 +1429,7 @@ struct cfg80211_bss_ies {
|
||||||
*/
|
*/
|
||||||
struct cfg80211_bss {
|
struct cfg80211_bss {
|
||||||
struct ieee80211_channel *channel;
|
struct ieee80211_channel *channel;
|
||||||
|
enum nl80211_bss_scan_width scan_width;
|
||||||
|
|
||||||
const struct cfg80211_bss_ies __rcu *ies;
|
const struct cfg80211_bss_ies __rcu *ies;
|
||||||
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
||||||
|
@ -3438,10 +3444,11 @@ void cfg80211_sched_scan_results(struct wiphy *wiphy);
|
||||||
void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
|
* cfg80211_inform_bss_width_frame - inform cfg80211 of a received BSS frame
|
||||||
*
|
*
|
||||||
* @wiphy: the wiphy reporting the BSS
|
* @wiphy: the wiphy reporting the BSS
|
||||||
* @channel: The channel the frame was received on
|
* @channel: The channel the frame was received on
|
||||||
|
* @scan_width: width of the control channel
|
||||||
* @mgmt: the management frame (probe response or beacon)
|
* @mgmt: the management frame (probe response or beacon)
|
||||||
* @len: length of the management frame
|
* @len: length of the management frame
|
||||||
* @signal: the signal strength, type depends on the wiphy's signal_type
|
* @signal: the signal strength, type depends on the wiphy's signal_type
|
||||||
|
@ -3454,16 +3461,29 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
||||||
* Or %NULL on error.
|
* Or %NULL on error.
|
||||||
*/
|
*/
|
||||||
struct cfg80211_bss * __must_check
|
struct cfg80211_bss * __must_check
|
||||||
|
cfg80211_inform_bss_width_frame(struct wiphy *wiphy,
|
||||||
|
struct ieee80211_channel *channel,
|
||||||
|
enum nl80211_bss_scan_width scan_width,
|
||||||
|
struct ieee80211_mgmt *mgmt, size_t len,
|
||||||
|
s32 signal, gfp_t gfp);
|
||||||
|
|
||||||
|
static inline struct cfg80211_bss * __must_check
|
||||||
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||||
struct ieee80211_channel *channel,
|
struct ieee80211_channel *channel,
|
||||||
struct ieee80211_mgmt *mgmt, size_t len,
|
struct ieee80211_mgmt *mgmt, size_t len,
|
||||||
s32 signal, gfp_t gfp);
|
s32 signal, gfp_t gfp)
|
||||||
|
{
|
||||||
|
return cfg80211_inform_bss_width_frame(wiphy, channel,
|
||||||
|
NL80211_BSS_CHAN_WIDTH_20,
|
||||||
|
mgmt, len, signal, gfp);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cfg80211_inform_bss - inform cfg80211 of a new BSS
|
* cfg80211_inform_bss - inform cfg80211 of a new BSS
|
||||||
*
|
*
|
||||||
* @wiphy: the wiphy reporting the BSS
|
* @wiphy: the wiphy reporting the BSS
|
||||||
* @channel: The channel the frame was received on
|
* @channel: The channel the frame was received on
|
||||||
|
* @scan_width: width of the control channel
|
||||||
* @bssid: the BSSID of the BSS
|
* @bssid: the BSSID of the BSS
|
||||||
* @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
|
* @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
|
||||||
* @capability: the capability field sent by the peer
|
* @capability: the capability field sent by the peer
|
||||||
|
@ -3480,11 +3500,26 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||||
* Or %NULL on error.
|
* Or %NULL on error.
|
||||||
*/
|
*/
|
||||||
struct cfg80211_bss * __must_check
|
struct cfg80211_bss * __must_check
|
||||||
|
cfg80211_inform_bss_width(struct wiphy *wiphy,
|
||||||
|
struct ieee80211_channel *channel,
|
||||||
|
enum nl80211_bss_scan_width scan_width,
|
||||||
|
const u8 *bssid, u64 tsf, u16 capability,
|
||||||
|
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||||
|
s32 signal, gfp_t gfp);
|
||||||
|
|
||||||
|
static inline struct cfg80211_bss * __must_check
|
||||||
cfg80211_inform_bss(struct wiphy *wiphy,
|
cfg80211_inform_bss(struct wiphy *wiphy,
|
||||||
struct ieee80211_channel *channel,
|
struct ieee80211_channel *channel,
|
||||||
const u8 *bssid, u64 tsf, u16 capability,
|
const u8 *bssid, u64 tsf, u16 capability,
|
||||||
u16 beacon_interval, const u8 *ie, size_t ielen,
|
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||||
s32 signal, gfp_t gfp);
|
s32 signal, gfp_t gfp)
|
||||||
|
{
|
||||||
|
return cfg80211_inform_bss_width(wiphy, channel,
|
||||||
|
NL80211_BSS_CHAN_WIDTH_20,
|
||||||
|
bssid, tsf, capability,
|
||||||
|
beacon_interval, ie, ielen, signal,
|
||||||
|
gfp);
|
||||||
|
}
|
||||||
|
|
||||||
struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
|
struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
|
||||||
struct ieee80211_channel *channel,
|
struct ieee80211_channel *channel,
|
||||||
|
@ -3530,6 +3565,19 @@ void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
||||||
*/
|
*/
|
||||||
void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
||||||
|
|
||||||
|
static inline enum nl80211_bss_scan_width
|
||||||
|
cfg80211_chandef_to_scan_width(const struct cfg80211_chan_def *chandef)
|
||||||
|
{
|
||||||
|
switch (chandef->width) {
|
||||||
|
case NL80211_CHAN_WIDTH_5:
|
||||||
|
return NL80211_BSS_CHAN_WIDTH_5;
|
||||||
|
case NL80211_CHAN_WIDTH_10:
|
||||||
|
return NL80211_BSS_CHAN_WIDTH_10;
|
||||||
|
default:
|
||||||
|
return NL80211_BSS_CHAN_WIDTH_20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cfg80211_rx_mlme_mgmt - notification of processed MLME management frame
|
* cfg80211_rx_mlme_mgmt - notification of processed MLME management frame
|
||||||
* @dev: network device
|
* @dev: network device
|
||||||
|
|
|
@ -2807,6 +2807,21 @@ enum nl80211_chan_width {
|
||||||
NL80211_CHAN_WIDTH_10,
|
NL80211_CHAN_WIDTH_10,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum nl80211_bss_scan_width - control channel width for a BSS
|
||||||
|
*
|
||||||
|
* These values are used with the %NL80211_BSS_CHAN_WIDTH attribute.
|
||||||
|
*
|
||||||
|
* @NL80211_BSS_CHAN_WIDTH_20: control channel is 20 MHz wide or compatible
|
||||||
|
* @NL80211_BSS_CHAN_WIDTH_10: control channel is 10 MHz wide
|
||||||
|
* @NL80211_BSS_CHAN_WIDTH_5: control channel is 5 MHz wide
|
||||||
|
*/
|
||||||
|
enum nl80211_bss_scan_width {
|
||||||
|
NL80211_BSS_CHAN_WIDTH_20,
|
||||||
|
NL80211_BSS_CHAN_WIDTH_10,
|
||||||
|
NL80211_BSS_CHAN_WIDTH_5,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum nl80211_bss - netlink attributes for a BSS
|
* enum nl80211_bss - netlink attributes for a BSS
|
||||||
*
|
*
|
||||||
|
@ -2831,6 +2846,8 @@ enum nl80211_chan_width {
|
||||||
* @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
|
* @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
|
||||||
* elements from a Beacon frame (bin); not present if no Beacon frame has
|
* elements from a Beacon frame (bin); not present if no Beacon frame has
|
||||||
* yet been received
|
* yet been received
|
||||||
|
* @NL80211_BSS_CHAN_WIDTH: channel width of the control channel
|
||||||
|
* (u32, enum nl80211_bss_scan_width)
|
||||||
* @__NL80211_BSS_AFTER_LAST: internal
|
* @__NL80211_BSS_AFTER_LAST: internal
|
||||||
* @NL80211_BSS_MAX: highest BSS attribute
|
* @NL80211_BSS_MAX: highest BSS attribute
|
||||||
*/
|
*/
|
||||||
|
@ -2847,6 +2864,7 @@ enum nl80211_bss {
|
||||||
NL80211_BSS_STATUS,
|
NL80211_BSS_STATUS,
|
||||||
NL80211_BSS_SEEN_MS_AGO,
|
NL80211_BSS_SEEN_MS_AGO,
|
||||||
NL80211_BSS_BEACON_IES,
|
NL80211_BSS_BEACON_IES,
|
||||||
|
NL80211_BSS_CHAN_WIDTH,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_BSS_AFTER_LAST,
|
__NL80211_BSS_AFTER_LAST,
|
||||||
|
|
|
@ -5674,6 +5674,7 @@ static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
if (nla_put_u16(msg, NL80211_BSS_CAPABILITY, res->capability) ||
|
if (nla_put_u16(msg, NL80211_BSS_CAPABILITY, res->capability) ||
|
||||||
nla_put_u32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq) ||
|
nla_put_u32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq) ||
|
||||||
|
nla_put_u32(msg, NL80211_BSS_CHAN_WIDTH, res->scan_width) ||
|
||||||
nla_put_u32(msg, NL80211_BSS_SEEN_MS_AGO,
|
nla_put_u32(msg, NL80211_BSS_SEEN_MS_AGO,
|
||||||
jiffies_to_msecs(jiffies - intbss->ts)))
|
jiffies_to_msecs(jiffies - intbss->ts)))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
|
@ -651,6 +651,8 @@ static bool cfg80211_combine_bsses(struct cfg80211_registered_device *dev,
|
||||||
continue;
|
continue;
|
||||||
if (bss->pub.channel != new->pub.channel)
|
if (bss->pub.channel != new->pub.channel)
|
||||||
continue;
|
continue;
|
||||||
|
if (bss->pub.scan_width != new->pub.scan_width)
|
||||||
|
continue;
|
||||||
if (rcu_access_pointer(bss->pub.beacon_ies))
|
if (rcu_access_pointer(bss->pub.beacon_ies))
|
||||||
continue;
|
continue;
|
||||||
ies = rcu_access_pointer(bss->pub.ies);
|
ies = rcu_access_pointer(bss->pub.ies);
|
||||||
|
@ -870,11 +872,12 @@ cfg80211_get_bss_channel(struct wiphy *wiphy, const u8 *ie, size_t ielen,
|
||||||
|
|
||||||
/* Returned bss is reference counted and must be cleaned up appropriately. */
|
/* Returned bss is reference counted and must be cleaned up appropriately. */
|
||||||
struct cfg80211_bss*
|
struct cfg80211_bss*
|
||||||
cfg80211_inform_bss(struct wiphy *wiphy,
|
cfg80211_inform_bss_width(struct wiphy *wiphy,
|
||||||
struct ieee80211_channel *channel,
|
struct ieee80211_channel *channel,
|
||||||
const u8 *bssid, u64 tsf, u16 capability,
|
enum nl80211_bss_scan_width scan_width,
|
||||||
u16 beacon_interval, const u8 *ie, size_t ielen,
|
const u8 *bssid, u64 tsf, u16 capability,
|
||||||
s32 signal, gfp_t gfp)
|
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||||
|
s32 signal, gfp_t gfp)
|
||||||
{
|
{
|
||||||
struct cfg80211_bss_ies *ies;
|
struct cfg80211_bss_ies *ies;
|
||||||
struct cfg80211_internal_bss tmp = {}, *res;
|
struct cfg80211_internal_bss tmp = {}, *res;
|
||||||
|
@ -892,6 +895,7 @@ cfg80211_inform_bss(struct wiphy *wiphy,
|
||||||
|
|
||||||
memcpy(tmp.pub.bssid, bssid, ETH_ALEN);
|
memcpy(tmp.pub.bssid, bssid, ETH_ALEN);
|
||||||
tmp.pub.channel = channel;
|
tmp.pub.channel = channel;
|
||||||
|
tmp.pub.scan_width = scan_width;
|
||||||
tmp.pub.signal = signal;
|
tmp.pub.signal = signal;
|
||||||
tmp.pub.beacon_interval = beacon_interval;
|
tmp.pub.beacon_interval = beacon_interval;
|
||||||
tmp.pub.capability = capability;
|
tmp.pub.capability = capability;
|
||||||
|
@ -924,14 +928,15 @@ cfg80211_inform_bss(struct wiphy *wiphy,
|
||||||
/* cfg80211_bss_update gives us a referenced result */
|
/* cfg80211_bss_update gives us a referenced result */
|
||||||
return &res->pub;
|
return &res->pub;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(cfg80211_inform_bss);
|
EXPORT_SYMBOL(cfg80211_inform_bss_width);
|
||||||
|
|
||||||
/* Returned bss is reference counted and must be cleaned up appropriately. */
|
/* Returned bss is reference counted and must be cleaned up appropriately. */
|
||||||
struct cfg80211_bss *
|
struct cfg80211_bss *
|
||||||
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
cfg80211_inform_bss_width_frame(struct wiphy *wiphy,
|
||||||
struct ieee80211_channel *channel,
|
struct ieee80211_channel *channel,
|
||||||
struct ieee80211_mgmt *mgmt, size_t len,
|
enum nl80211_bss_scan_width scan_width,
|
||||||
s32 signal, gfp_t gfp)
|
struct ieee80211_mgmt *mgmt, size_t len,
|
||||||
|
s32 signal, gfp_t gfp)
|
||||||
{
|
{
|
||||||
struct cfg80211_internal_bss tmp = {}, *res;
|
struct cfg80211_internal_bss tmp = {}, *res;
|
||||||
struct cfg80211_bss_ies *ies;
|
struct cfg80211_bss_ies *ies;
|
||||||
|
@ -941,7 +946,8 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||||
BUILD_BUG_ON(offsetof(struct ieee80211_mgmt, u.probe_resp.variable) !=
|
BUILD_BUG_ON(offsetof(struct ieee80211_mgmt, u.probe_resp.variable) !=
|
||||||
offsetof(struct ieee80211_mgmt, u.beacon.variable));
|
offsetof(struct ieee80211_mgmt, u.beacon.variable));
|
||||||
|
|
||||||
trace_cfg80211_inform_bss_frame(wiphy, channel, mgmt, len, signal);
|
trace_cfg80211_inform_bss_width_frame(wiphy, channel, scan_width, mgmt,
|
||||||
|
len, signal);
|
||||||
|
|
||||||
if (WARN_ON(!mgmt))
|
if (WARN_ON(!mgmt))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -976,6 +982,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||||
|
|
||||||
memcpy(tmp.pub.bssid, mgmt->bssid, ETH_ALEN);
|
memcpy(tmp.pub.bssid, mgmt->bssid, ETH_ALEN);
|
||||||
tmp.pub.channel = channel;
|
tmp.pub.channel = channel;
|
||||||
|
tmp.pub.scan_width = scan_width;
|
||||||
tmp.pub.signal = signal;
|
tmp.pub.signal = signal;
|
||||||
tmp.pub.beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int);
|
tmp.pub.beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int);
|
||||||
tmp.pub.capability = le16_to_cpu(mgmt->u.probe_resp.capab_info);
|
tmp.pub.capability = le16_to_cpu(mgmt->u.probe_resp.capab_info);
|
||||||
|
@ -991,7 +998,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||||
/* cfg80211_bss_update gives us a referenced result */
|
/* cfg80211_bss_update gives us a referenced result */
|
||||||
return &res->pub;
|
return &res->pub;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(cfg80211_inform_bss_frame);
|
EXPORT_SYMBOL(cfg80211_inform_bss_width_frame);
|
||||||
|
|
||||||
void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
|
void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2391,26 +2391,30 @@ TRACE_EVENT(cfg80211_get_bss,
|
||||||
__entry->capa_mask, __entry->capa_val)
|
__entry->capa_mask, __entry->capa_val)
|
||||||
);
|
);
|
||||||
|
|
||||||
TRACE_EVENT(cfg80211_inform_bss_frame,
|
TRACE_EVENT(cfg80211_inform_bss_width_frame,
|
||||||
TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel,
|
TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel,
|
||||||
|
enum nl80211_bss_scan_width scan_width,
|
||||||
struct ieee80211_mgmt *mgmt, size_t len,
|
struct ieee80211_mgmt *mgmt, size_t len,
|
||||||
s32 signal),
|
s32 signal),
|
||||||
TP_ARGS(wiphy, channel, mgmt, len, signal),
|
TP_ARGS(wiphy, channel, scan_width, mgmt, len, signal),
|
||||||
TP_STRUCT__entry(
|
TP_STRUCT__entry(
|
||||||
WIPHY_ENTRY
|
WIPHY_ENTRY
|
||||||
CHAN_ENTRY
|
CHAN_ENTRY
|
||||||
|
__field(enum nl80211_bss_scan_width, scan_width)
|
||||||
__dynamic_array(u8, mgmt, len)
|
__dynamic_array(u8, mgmt, len)
|
||||||
__field(s32, signal)
|
__field(s32, signal)
|
||||||
),
|
),
|
||||||
TP_fast_assign(
|
TP_fast_assign(
|
||||||
WIPHY_ASSIGN;
|
WIPHY_ASSIGN;
|
||||||
CHAN_ASSIGN(channel);
|
CHAN_ASSIGN(channel);
|
||||||
|
__entry->scan_width = scan_width;
|
||||||
if (mgmt)
|
if (mgmt)
|
||||||
memcpy(__get_dynamic_array(mgmt), mgmt, len);
|
memcpy(__get_dynamic_array(mgmt), mgmt, len);
|
||||||
__entry->signal = signal;
|
__entry->signal = signal;
|
||||||
),
|
),
|
||||||
TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT "signal: %d",
|
TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT "(scan_width: %d) signal: %d",
|
||||||
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->signal)
|
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width,
|
||||||
|
__entry->signal)
|
||||||
);
|
);
|
||||||
|
|
||||||
DECLARE_EVENT_CLASS(cfg80211_bss_evt,
|
DECLARE_EVENT_CLASS(cfg80211_bss_evt,
|
||||||
|
|
Loading…
Reference in New Issue