wifi: wireless: return primary channel regardless of DUP
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Wed, 1 Mar 2023 10:09:18 +0000 (12:09 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 7 Mar 2023 09:32:44 +0000 (10:32 +0100)
Currently in case DUP bit is not set we don't return the primary
channel for 6 GHz Band, but the spec says that the DUP bit has
no effect on this field:

9.4.2.249 HE Operation element:
The Duplicate Beacon subfield is set to 1 if the AP transmits
Beacon frames in non-HT duplicate PPDU with a TXVECTOR parameter
CH_BANDWIDTH value that is up to the BSS bandwidth and is set to
0 otherwise.

So remove the condition for returning primary channel based on DUP.

Since the caller code already marks the signal as invalid in case
the indicated frequency is not the tuned frequency, there's no need
to additionally handle this case here since that's already true for
duplicated beacons on the non-primary channel(s).

Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230301115906.66d7f05f7d11.I5e0add054f72ede95611391b99804c61c40cc959@changeid
[clarify commit message]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/scan.c

index 790bc31..72e9af6 100644 (file)
@@ -1830,9 +1830,7 @@ int cfg80211_get_ies_channel_number(const u8 *ie, size_t ielen,
                        if (!he_6ghz_oper)
                                return -1;
 
-                       if (ftype != CFG80211_BSS_FTYPE_BEACON ||
-                           he_6ghz_oper->control & IEEE80211_HE_6GHZ_OPER_CTRL_DUP_BEACON)
-                               return he_6ghz_oper->primary;
+                       return he_6ghz_oper->primary;
                }
        } else if (band == NL80211_BAND_S1GHZ) {
                tmp = cfg80211_find_elem(WLAN_EID_S1G_OPERATION, ie, ielen);