summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2026-03-03 17:08:33 +0300
committerJohannes Berg <johannes.berg@intel.com>2026-03-13 09:10:57 +0300
commitf2514ff78855c45fe93c82bdb45f7609dd70c637 (patch)
tree7f14a731a440729bdd9d8e43afb385c437c087bd
parente4b993f2bca78357b430170574f8de7bc7874088 (diff)
downloadlinux-f2514ff78855c45fe93c82bdb45f7609dd70c637.tar.xz
wifi: mac80211: validate HE 6 GHz operation when EHT is used
When in strict mode, validate that the HE 6 GHz operation is valid even when EHT operation is used instead. This checks that APs are advertising correct information for HE clients, without testing with such clients. Reviewed-by: Ilan Peer <ilan.peer@intel.com> Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20260303150832.74b934163b99.If4d1db3f39c37900cf0d0f4669cd5f8b677daaa0@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/mlme.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 5ecd3d1b172d..479bb76ec114 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -216,6 +216,24 @@ ieee80211_determine_ap_chan(struct ieee80211_sub_if_data *sdata,
return IEEE80211_CONN_MODE_LEGACY;
}
+ if (eht_oper && ieee80211_hw_check(&sdata->local->hw, STRICT)) {
+ struct cfg80211_chan_def he_chandef = *chandef;
+
+ if (!ieee80211_chandef_he_6ghz_oper(sdata->local,
+ he_oper, NULL,
+ &he_chandef)) {
+ sdata_info(sdata,
+ "bad HE operation in EHT AP\n");
+ return IEEE80211_CONN_MODE_LEGACY;
+ }
+
+ if (!cfg80211_chandef_compatible(chandef,
+ &he_chandef)) {
+ sdata_info(sdata, "HE/EHT incompatible\n");
+ return IEEE80211_CONN_MODE_LEGACY;
+ }
+ }
+
if (mode <= IEEE80211_CONN_MODE_EHT)
return mode;
goto check_uhr;