mac80211: add HE 6 GHz capability only if supported
authorJohannes Berg <johannes.berg@intel.com>
Wed, 23 Jun 2021 11:05:47 +0000 (13:05 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Jun 2021 11:10:47 +0000 (13:10 +0200)
The HE 6 GHz capability should only be included if there
are actually available channels on 6 GHz, and if that's
the case we need to get it from the 6 GHz band data, not
whatever other band we're on now.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210618133832.290bf5c87030.I178aff1c3a6e32456d4ac9238e4a2eb47d209ccd@changeid
Link: https://lore.kernel.org/r/iwlwifi.20210618133832.05e935e8dd98.I83ff7eb2ae8ebdf2e30c4fa2461344d9e569f599@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/util.c

index d1ecac00bddb302519b9e3f81b800eca848b5c86..05e96212b1042df96b3ca773cfb9cf88d6b42e60 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright 2007      Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
  * Copyright (C) 2015-2017     Intel Deutschland GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
  *
  * utilities for mac80211
  */
@@ -2960,12 +2960,15 @@ void ieee80211_ie_build_he_6ghz_cap(struct ieee80211_sub_if_data *sdata,
        u8 *pos;
        u16 cap;
 
-       sband = ieee80211_get_sband(sdata);
-       if (!sband)
+       if (!cfg80211_any_usable_channels(sdata->local->hw.wiphy,
+                                         BIT(NL80211_BAND_6GHZ),
+                                         IEEE80211_CHAN_NO_HE))
                return;
 
+       sband = sdata->local->hw.wiphy->bands[NL80211_BAND_6GHZ];
+
        iftd = ieee80211_get_sband_iftype_data(sband, iftype);
-       if (WARN_ON(!iftd))
+       if (!iftd)
                return;
 
        /* Check for device HE 6 GHz capability before adding element */