summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2026-07-15 21:08:34 +0300
committerJohannes Berg <johannes.berg@intel.com>2026-07-21 19:18:52 +0200
commit410d70acf9ca73fdf370e1eb7e1da64e486dcbb5 (patch)
tree481e447fa21b3d624fdb978db7ef0854e9344cfe /net
parenta3262f61d102eaae81048d10eb0aadcc623ea026 (diff)
downloadlinux-410d70acf9ca73fdf370e1eb7e1da64e486dcbb5.tar.gz
linux-410d70acf9ca73fdf370e1eb7e1da64e486dcbb5.zip
wifi: use UHR operation field presence bits
The spec originally had the idea that the fact that it's a beacon frame determines the (non-)presence of the values, but added presence bits in D1.4. Use those presence bits in addition to the enable bits. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20260715210407.3b1a79b0d002.Iaa762c55b4b6dc63d55f2d7b8b42acd47e640d50@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/mlme.c3
-rw-r--r--net/mac80211/parse.c4
-rw-r--r--net/wireless/nl80211.c2
3 files changed, 3 insertions, 6 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 1afdb610dff2..c4590c4a56b0 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1701,8 +1701,7 @@ static int ieee80211_config_bw(struct ieee80211_link_data *link,
if (stype != IEEE80211_STYPE_BEACON &&
chanreq.oper.npca_chan && elems->uhr_operation &&
ieee80211_uhr_oper_size_ok((const void *)elems->uhr_operation,
- elems->uhr_operation_len,
- false)) {
+ elems->uhr_operation_len)) {
const struct ieee80211_uhr_npca_info *npca;
struct ieee80211_bss_npca_params params = {};
diff --git a/net/mac80211/parse.c b/net/mac80211/parse.c
index c2f2f78f2b4f..cb2be167cde7 100644
--- a/net/mac80211/parse.c
+++ b/net/mac80211/parse.c
@@ -209,9 +209,7 @@ ieee80211_parse_extension_element(u32 *crc,
if (params->mode < IEEE80211_CONN_MODE_UHR)
break;
calc_crc = true;
- if (ieee80211_uhr_oper_size_ok(data, len,
- params->type == (IEEE80211_FTYPE_MGMT |
- IEEE80211_STYPE_BEACON))) {
+ if (ieee80211_uhr_oper_size_ok(data, len)) {
elems->uhr_operation = data;
elems->uhr_operation_len = len;
}
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 242071ad10d6..5fa70974d57c 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -441,7 +441,7 @@ static int validate_uhr_operation(const struct nlattr *attr,
const u8 *data = nla_data(attr);
unsigned int len = nla_len(attr);
- if (!ieee80211_uhr_oper_size_ok(data, len, false))
+ if (!ieee80211_uhr_oper_size_ok(data, len))
return -EINVAL;
return 0;
}