wlan-ap-Telecominfraproject/feeds/qca/hostapd/patches/r02-009-hostapd-handle-AWGN-event-for-MLO-case.patch
John Crispin 008ca9618d
Some checks failed
Build OpenWrt/uCentral images / build (cig_wf186h) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf186w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf188n) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf189) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf196) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-a1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-b1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap102) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap104) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap105) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap111) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap112) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_3) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xe) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (indio_um-305ax) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sercomm_ap72tip) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630c-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-211g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-id2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-od2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr5018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018-v4) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax820) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax840) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap640) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap650) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap655) (push) Has been cancelled
Build OpenWrt/uCentral images / trigger-testing (push) Has been cancelled
Build OpenWrt/uCentral images / create-x64_vm-ami (push) Has been cancelled
ipq95xx: import ath12.4-cs kernel and drivers
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-20 09:25:13 +02:00

84 lines
2.7 KiB
Diff

From 29ecaab5b17d7bd32dfdf37d97fe95cc5b1a6b2e Mon Sep 17 00:00:00 2001
From: Aditya Kumar Singh <quic_adisi@quicinc.com>
Date: Wed, 25 Oct 2023 22:29:40 +0530
Subject: [PATCH] hostapd: handle AWGN event for MLO case
During MLO operation, appropriate link BSS needs to be identified
based on the frequency info present in AWGN event and then the
event should be further processed.
Add changes to identify link BSS based on freq info in the AWGN
event.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
---
src/drivers/driver_nl80211_event.c | 41 +++++++++++++++++++++++++++---
1 file changed, 37 insertions(+), 4 deletions(-)
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -2510,10 +2510,12 @@ process_radar_event:
}
}
-static void nl80211_awgn_event(struct wpa_driver_nl80211_data *drv,
- struct nlattr **tb)
+static void nl80211_awgn_event(struct i802_bss *bss, struct nlattr **tb)
{
+ struct wpa_driver_nl80211_data *drv = bss->drv;
union wpa_event_data data;
+ struct i802_link *mld_link = bss->flink;
+ void *ctx = bss->ctx;
os_memset(&data, 0, sizeof(data));
@@ -2534,7 +2536,38 @@ static void nl80211_awgn_event(struct wp
data.awgn_event.chan_bw_interference_bitmap =
nla_get_u32(tb[NL80211_ATTR_AWGN_INTERFERENCE_BITMAP]);
- wpa_supplicant_event(drv->ctx, EVENT_AWGN_DETECTED, &data);
+ mld_link = nl80211_get_mld_link_by_freq(bss, data.awgn_event.freq);
+ if (!mld_link) {
+ /* For non-ML case also, %NULL would be returned. Hence check if
+ * its for non-ML case, then proceed with first link.
+ * Non-ML link should have link ID as -1 and freq should be set.
+ */
+ if (bss->n_links == 1 && bss->links[0].link_id == -1 &&
+ bss->links[0].freq) {
+ mld_link = bss->flink;
+ goto process_awgn_event;
+ }
+
+ wpa_printf(MSG_DEBUG,
+ "nl80211: AWGN event on unknown freq %d",
+ data.awgn_event.freq);
+ return;
+ }
+
+process_awgn_event:
+ if (mld_link->link_id != NL80211_DRV_LINK_ID_NA) {
+ wpa_printf(MSG_DEBUG, "nl80211: AWGN event for link %d",
+ mld_link->link_id);
+ ctx = mld_link->ctx;
+ }
+
+ if (!is_6ghz_freq(mld_link->freq)) {
+ wpa_printf(MSG_DEBUG,
+ "nl80211: Ignoring AWGN event on non 6 GHz BSS");
+ return;
+ }
+
+ wpa_supplicant_event(ctx, EVENT_AWGN_DETECTED, &data);
}
static void nl80211_spurious_frame(struct i802_bss *bss, struct nlattr **tb,
@@ -4179,7 +4212,7 @@ static void do_process_drv_event(struct
nl80211_update_muedca_params_event(drv, tb);
break;
case NL80211_CMD_AWGN_DETECT:
- nl80211_awgn_event(drv, tb);
+ nl80211_awgn_event(bss, tb);
break;
default:
wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Ignored unknown event "