Commit 66b0564d authored by Thomas Pedersen's avatar Thomas Pedersen Committed by Johannes Berg

cfg80211: parse S1G Operation element for BSS channel

Extract the BSS primary channel from the S1G Operation
element.
Signed-off-by: default avatarThomas Pedersen <thomas@adapt-ip.com>
Link: https://lore.kernel.org/r/20200922022818.15855-7-thomas@adapt-ip.com
[remove the goto bits]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 9eaffe50
......@@ -1802,6 +1802,14 @@ cfg80211_get_bss_channel(struct wiphy *wiphy, const u8 *ie, size_t ielen,
int channel_number = -1;
struct ieee80211_channel *alt_channel;
if (channel->band == NL80211_BAND_S1GHZ) {
tmp = cfg80211_find_ie(WLAN_EID_S1G_OPERATION, ie, ielen);
if (tmp && tmp[1] >= sizeof(struct ieee80211_s1g_oper_ie)) {
struct ieee80211_s1g_oper_ie *s1gop = (void *)(tmp + 2);
channel_number = s1gop->primary_ch;
}
} else {
tmp = cfg80211_find_ie(WLAN_EID_DS_PARAMS, ie, ielen);
if (tmp && tmp[1] == 1) {
channel_number = tmp[2];
......@@ -1813,6 +1821,7 @@ cfg80211_get_bss_channel(struct wiphy *wiphy, const u8 *ie, size_t ielen,
channel_number = htop->primary_chan;
}
}
}
if (channel_number < 0) {
/* No channel information in frame payload */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment