wifi: iwlwifi: mvm: Don't set NO_HT40+/- flags on 6 GHz band
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Fri, 10 May 2024 14:06:38 +0000 (17:06 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 23 May 2024 08:50:48 +0000 (10:50 +0200)
These flags are not needed on 6 GHz channels, and anyway they were set
incorrectly.
This in turn resulted in alternating channel flags, preventing reg domain
rules to be merged together, so cfg80211 couldn't even send them to the
user space, as the regulatory domain was too large.
Fix it.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240510170500.b0d51b2229f8.I092e21cde43320ffc2eff17f5748ff9c87c87fcf@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

index 149903f5256730f1644c9484f5beb0f6277936f9..cf5c9500af8c85d9db034679113e27caa1e39752 100644 (file)
@@ -1625,11 +1625,15 @@ static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan,
                        flags &= ~NL80211_RRF_NO_HT40PLUS;
                if (nvm_chan[ch_idx] >= FIRST_2GHZ_HT_MINUS)
                        flags &= ~NL80211_RRF_NO_HT40MINUS;
-       } else if (nvm_flags & NVM_CHANNEL_40MHZ) {
+       } else if (ch_idx < NUM_2GHZ_CHANNELS + NUM_5GHZ_CHANNELS &&
+                  nvm_flags & NVM_CHANNEL_40MHZ) {
                if ((ch_idx - NUM_2GHZ_CHANNELS) % 2 == 0)
                        flags &= ~NL80211_RRF_NO_HT40PLUS;
                else
                        flags &= ~NL80211_RRF_NO_HT40MINUS;
+       } else if (nvm_flags & NVM_CHANNEL_40MHZ) {
+               flags &= ~NL80211_RRF_NO_HT40PLUS;
+               flags &= ~NL80211_RRF_NO_HT40MINUS;
        }
 
        if (!(nvm_flags & NVM_CHANNEL_80MHZ))