wifi: iwlwifi: mvm: disallow puncturing in US/Canada
authorJohannes Berg <johannes.berg@intel.com>
Tue, 19 Dec 2023 19:59:00 +0000 (21:59 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 21 Dec 2023 19:35:16 +0000 (20:35 +0100)
For now, this isn't allowed. The API to mac80211 isn't great
for this, but we need to change the API to move puncturing
into the chanctx/chandef, and will do it better then.

Signed-off-by: Johannes Berg <johannes.berg@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.38955b68b429.I0c4ae99179b271648a747a51eb04853504c7952c@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 06de4dc2a9155df75abd908c40fc4cc6b40b28ae..5276df717ca117fce68bbc99805bf1dc5733058e 100644 (file)
@@ -152,6 +152,16 @@ struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy,
        mvm->lar_regdom_set = true;
        mvm->mcc_src = src_id;
 
+       /* Some kind of regulatory mess means we need to currently disallow
+        * puncturing in the US and Canada. Do that here, at least until we
+        * figure out the new chanctx APIs for puncturing.
+        */
+       if (resp->mcc == cpu_to_le16(IWL_MCC_US) ||
+           resp->mcc == cpu_to_le16(IWL_MCC_CANADA))
+               ieee80211_hw_set(mvm->hw, DISALLOW_PUNCTURING);
+       else
+               __clear_bit(IEEE80211_HW_DISALLOW_PUNCTURING, mvm->hw->flags);
+
        iwl_mei_set_country_code(__le16_to_cpu(resp->mcc));
 
 out: