[rdkb][common][bsp][Refactor and sync wifi from openwrt]
[Description]
3a2eef0b [MAC80211][Release][Update release note for Filogic 880/860 MLO Beta release]
cfbd2411 [MAC80211][Release][Filogic 880/860 MLO Beta release]
6c180e3f [MAC80211][WiFi7][misc][Add Eagle BE14000 efem default bin]
a55f34db [MAC80211][Release][Prepare for Filogic 880/860 release]
5b45ebca [MAC80211][WiFi7][hostapd][Add puncture bitmap to ucode]
95bbea73 [MAC80211][WiFi6][mt76][Add PID to only report data-frame TX rate]
b15ced26 [MAC80211][WiFi6][hostapd][Fix DFS channel selection issue]
d59133cb [MAC80211][WiFi6][mt76][Fix pse info not correct information]
3921b4b2 [MAC80211][WiFi6][mt76][Fix incomplete QoS-map setting to FW]
4e7690c7 [MAC80211][WiFi6/7][app][Change ATECHANNEL mapping cmd]
eb37af90 [MAC80211][WiFi7][app][Add support for per-packet bw & primary selection]
0ea82adf [MAC80211][WiFi6][core][Fix DFS CAC issue after CSA]
[Release-log]
Change-Id: I9bec97ec1b2e1c49ed43a812a07a5b21fcbb70a6
diff --git a/recipes-wifi/wpa-supplicant/files/patches-2.10.3/0090-mtk-hostapd-extend-MLO-information-getting.patch b/recipes-wifi/wpa-supplicant/files/patches-2.10.3/0090-mtk-hostapd-extend-MLO-information-getting.patch
new file mode 100644
index 0000000..a73671f
--- /dev/null
+++ b/recipes-wifi/wpa-supplicant/files/patches-2.10.3/0090-mtk-hostapd-extend-MLO-information-getting.patch
@@ -0,0 +1,105 @@
+From e3acb288c0e30eef9b734b62045f505c1392aab3 Mon Sep 17 00:00:00 2001
+From: Michael-CY Lee <michael-cy.lee@mediatek.com>
+Date: Fri, 17 May 2024 16:36:19 +0800
+Subject: [PATCH 090/126] mtk: hostapd: extend MLO information getting
+
+Extend MLO information getting, including center frequency & bandwidth,
+from the driver. These informations are helpful for Extender STA to
+synchronize channel informations to Extender AP.
+
+Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com>
+---
+ src/drivers/driver.h | 3 ++-
+ src/drivers/driver_nl80211.c | 24 ++++++++++++++++++++++--
+ wpa_supplicant/events.c | 3 +++
+ wpa_supplicant/wpa_supplicant_i.h | 3 ++-
+ 4 files changed, 29 insertions(+), 4 deletions(-)
+
+diff --git a/src/drivers/driver.h b/src/drivers/driver.h
+index e7e62c5ad..eed99dac8 100644
+--- a/src/drivers/driver.h
++++ b/src/drivers/driver.h
+@@ -3058,8 +3058,9 @@ struct driver_sta_mlo_info {
+ struct {
+ u8 addr[ETH_ALEN];
+ u8 bssid[ETH_ALEN];
+- unsigned int freq;
++ unsigned int freq, center_freq1, center_freq2;
+ struct t2lm_mapping t2lmap;
++ enum chan_width width;
+ } links[MAX_NUM_MLD_LINKS];
+ };
+
+diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
+index 9451714a7..b3ae50d15 100644
+--- a/src/drivers/driver_nl80211.c
++++ b/src/drivers/driver_nl80211.c
+@@ -1171,6 +1171,27 @@ static int wpa_driver_nl80211_get_ssid(void *priv, u8 *ssid)
+ }
+
+
++static void get_link_channel_info(struct nlattr **link_data, u8 link_id,
++ struct driver_sta_mlo_info *info)
++{
++ info->links[link_id].freq =
++ nla_get_u32(link_data[NL80211_ATTR_WIPHY_FREQ]);
++
++ if (link_data[NL80211_ATTR_CHANNEL_WIDTH]) {
++ info->links[link_id].width =
++ convert2width(nla_get_u32(link_data[NL80211_ATTR_CHANNEL_WIDTH]));
++
++ if (link_data[NL80211_ATTR_CENTER_FREQ1])
++ info->links[link_id].center_freq1 =
++ nla_get_u32(link_data[NL80211_ATTR_CENTER_FREQ1]);
++
++ if (link_data[NL80211_ATTR_CENTER_FREQ2])
++ info->links[link_id].center_freq2 =
++ nla_get_u32(link_data[NL80211_ATTR_CENTER_FREQ2]);
++ }
++}
++
++
+ static int get_mlo_info(struct nl_msg *msg, void *arg)
+ {
+ struct nlattr *tb[NL80211_ATTR_MAX + 1];
+@@ -1208,8 +1229,7 @@ static int get_mlo_info(struct nl_msg *msg, void *arg)
+ os_memcpy(info->links[link_id].addr,
+ nla_data(link_data[NL80211_ATTR_MAC]), ETH_ALEN);
+ if (link_data[NL80211_ATTR_WIPHY_FREQ])
+- info->links[link_id].freq =
+- nla_get_u32(link_data[NL80211_ATTR_WIPHY_FREQ]);
++ get_link_channel_info(link_data, link_id, info);
+ }
+
+ return NL_SKIP;
+diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
+index 7b91ce988..cd838c6cf 100644
+--- a/wpa_supplicant/events.c
++++ b/wpa_supplicant/events.c
+@@ -4122,6 +4122,9 @@ static int wpa_drv_get_mlo_info(struct wpa_supplicant *wpa_s)
+ os_memcpy(wpa_s->links[i].addr, mlo.links[i].addr, ETH_ALEN);
+ os_memcpy(wpa_s->links[i].bssid, mlo.links[i].bssid, ETH_ALEN);
+ wpa_s->links[i].freq = mlo.links[i].freq;
++ wpa_s->links[i].center_freq1 = mlo.links[i].center_freq1;
++ wpa_s->links[i].center_freq2 = mlo.links[i].center_freq2;
++ wpa_s->links[i].width = mlo.links[i].width;
+ wpa_supplicant_update_link_bss(wpa_s, i, mlo.links[i].bssid);
+ }
+
+diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
+index 952a3bd5a..d2835cc68 100644
+--- a/wpa_supplicant/wpa_supplicant_i.h
++++ b/wpa_supplicant/wpa_supplicant_i.h
+@@ -740,7 +740,8 @@ struct wpa_supplicant {
+ struct {
+ u8 addr[ETH_ALEN];
+ u8 bssid[ETH_ALEN];
+- unsigned int freq;
++ unsigned int freq, center_freq1, center_freq2;
++ enum chan_width width;
+ struct wpa_bss *bss;
+ bool disabled;
+ } links[MAX_NUM_MLD_LINKS];
+--
+2.18.0
+