summaryrefslogtreecommitdiff
path: root/net/mac80211/status.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2026-05-29 10:25:07 +0200
committerJohannes Berg <johannes.berg@intel.com>2026-06-03 14:11:58 +0200
commitd3ea22270d7c02fe08606f609545cbe583e53060 (patch)
tree0c91d704affbdac6019065d6a4fa049767317ff9 /net/mac80211/status.c
parentece981f88e930b2071ab045eb248b5e2292c9327 (diff)
downloadlinux-next-d3ea22270d7c02fe08606f609545cbe583e53060.tar.gz
linux-next-d3ea22270d7c02fe08606f609545cbe583e53060.zip
wifi: mac80211: parse and apply UHR DBE channel
When a UHR AP has DBE enabled, parse the channel and apply it to the chandef. Apply for TX only after the OMP response (or timeout) so that the AP doesn't receive frames with DBE width before the station completed transition to DBE. Link: https://patch.msgid.link/20260529102644.cb810f212128.Ife37c2673251346e84e4250b242b31f0895520ab@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r--net/mac80211/status.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c
index 8716eda8317d..dd1dbba06838 100644
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -731,6 +731,28 @@ ieee80211_handle_teardown_ttlm_status(struct ieee80211_sub_if_data *sdata,
&sdata->u.mgd.teardown_ttlm_work);
}
+static void
+ieee80211_handle_uhr_omp_status(struct ieee80211_sub_if_data *sdata, bool acked)
+{
+ if (!sdata || !ieee80211_sdata_running(sdata))
+ return;
+
+ if (sdata->vif.type != NL80211_IFTYPE_STATION)
+ return;
+
+ sdata->u.mgd.uhr_omp.acked = acked;
+
+ if (!acked) {
+ wiphy_hrtimer_work_queue(sdata->local->hw.wiphy,
+ &sdata->u.mgd.uhr_omp.status_work, 0);
+ return;
+ }
+
+ wiphy_hrtimer_work_queue(sdata->local->hw.wiphy,
+ &sdata->u.mgd.uhr_omp.status_work,
+ us_to_ktime(sdata->u.mgd.uhr_omp.timeout_us));
+}
+
static void ieee80211_report_used_skb(struct ieee80211_local *local,
struct sk_buff *skb, bool dropped,
ktime_t ack_hwtstamp)
@@ -811,6 +833,9 @@ static void ieee80211_report_used_skb(struct ieee80211_local *local,
case IEEE80211_STATUS_TYPE_NEG_TTLM:
ieee80211_handle_teardown_ttlm_status(sdata, acked);
break;
+ case IEEE80211_STATUS_TYPE_UHR_OMP:
+ ieee80211_handle_uhr_omp_status(sdata, acked);
+ break;
}
rcu_read_unlock();
}