From: Johannes Berg Date: Tue, 28 Apr 2026 09:25:42 +0000 (+0200) Subject: wifi: mac80211: check AP using NPCA has NPCA capability X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=d2ffdadd4aca41d120e25f6a675dd6a4d77ce360;p=thirdparty%2Flinux.git wifi: mac80211: check AP using NPCA has NPCA capability If an AP advertises NPCA, it should also advertise NPCA capability. Validate this. Link: https://patch.msgid.link/20260428112708.5c354a838ba5.I8e957767cdbc1b224a22dde0a9c343c3a5851783@changeid Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index b09c82082d30..2b2ab3d458ad 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -397,8 +397,19 @@ check_uhr: const struct ieee80211_sta_uhr_cap *uhr_cap; const struct ieee80211_uhr_npca_info *npca; + /* frames other than beacons carry UHR capability too */ + if (!elems->uhr_cap) + return IEEE80211_CONN_MODE_EHT; + npca = ieee80211_uhr_npca_info(uhr_oper); + if (npca && !(elems->uhr_cap->mac.mac_cap[0] & + IEEE80211_UHR_MAC_CAP0_NPCA_SUPP)) { + sdata_info(sdata, + "AP without UHR NPCA capability uses it, disabling UHR\n"); + return IEEE80211_CONN_MODE_EHT; + } + /* DBE is not considered yet, so this works */ if (!cfg80211_chandef_npca_valid(sdata->local->hw.wiphy, &npca_chandef, npca) ||