wifi: iwlwifi: Don't mark DFS channels as NO-IR
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Tue, 19 Dec 2023 19:58:51 +0000 (21:58 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 21 Dec 2023 19:35:16 +0000 (20:35 +0100)
The NVM_CHANNEL_ACTIVE bit means that active scanning/beaconing is
allowed, however it's not an exact opposite of IEEE80211_CHAN_NO_IR.
For example, NVM_CHANNEL_ACTIVE bit is not set on DFS channels, while
cfg80211 doesn't really expect NO-IR on DFS channels.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20231219215605.94cd9b96a532.Ifb0e8d8a6a6384493758f26b811d58432536101a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

index 1bccbbe9a5eae2e7637f3a6f39bda0bb69c6ee9a..402896988686990fdd7ea9410f8e01819a7a1bc4 100644 (file)
@@ -1612,8 +1612,13 @@ static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan,
        if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT)) {
                if (flags & NL80211_RRF_NO_IR)
                        flags |= NL80211_RRF_GO_CONCURRENT;
-               if (flags & NL80211_RRF_DFS)
+               if (flags & NL80211_RRF_DFS) {
                        flags |= NL80211_RRF_DFS_CONCURRENT;
+                       /* Our device doesn't set active bit for DFS channels
+                        * however, once marked as DFS no-ir is not needed.
+                        */
+                       flags &= ~NL80211_RRF_NO_IR;
+               }
        }
        /*
         * reg_capa is per regulatory domain so apply it for every channel