blob: e688a5663ff9488279282c806cb2fd28a9481a9e [file] [log] [blame]
developer617abbd2024-04-23 14:50:01 +08001From 30cfdaf10a5b3bb2a173a096b2c708c4a18d55bc Mon Sep 17 00:00:00 2001
2From: Michael-CY Lee <michael-cy.lee@mediatek.com>
3Date: Mon, 8 Apr 2024 14:34:36 +0800
4Subject: [PATCH 100/104] mtk: hostapd: MLD: find partner links by BSSID and
5 SSID
6
7CR-Id: WCNCR00289305
8Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com>
9---
10 wpa_supplicant/bss.c | 8 ++++++--
11 wpa_supplicant/sme.c | 14 ++++++++------
12 2 files changed, 14 insertions(+), 8 deletions(-)
13
14diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c
15index 289035310..ae0e61bc3 100644
16--- a/wpa_supplicant/bss.c
17+++ b/wpa_supplicant/bss.c
18@@ -1529,8 +1529,12 @@ wpa_bss_parse_ml_rnr_ap_info(struct wpa_supplicant *wpa_s,
19 wpa_printf(MSG_DEBUG,
20 "MLD: Reported link not part of MLD");
21 } else if (!(BIT(link_id) & *seen)) {
22- struct wpa_bss *neigh_bss =
23- wpa_bss_get_bssid(wpa_s, pos + 1);
24+ struct wpa_bss *neigh_bss;
25+
26+ if (ssid)
27+ neigh_bss = wpa_bss_get(wpa_s, pos + 1, ssid->ssid, ssid->ssid_len);
28+ else
29+ neigh_bss = wpa_bss_get_bssid(wpa_s, pos + 1);
30
31 *seen |= BIT(link_id);
32 wpa_printf(MSG_DEBUG, "MLD: mld ID=%u, link ID=%u",
33diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
34index ef258fadc..0b4b8e3ce 100644
35--- a/wpa_supplicant/sme.c
36+++ b/wpa_supplicant/sme.c
37@@ -390,7 +390,8 @@ static void wpas_ml_handle_removed_links(struct wpa_supplicant *wpa_s,
38
39 #ifdef CONFIG_TESTING_OPTIONS
40 static struct wpa_bss * wpas_ml_connect_pref(struct wpa_supplicant *wpa_s,
41- struct wpa_bss *bss)
42+ struct wpa_bss *bss,
43+ struct wpa_ssid *ssid)
44 {
45 unsigned int low, high, i;
46
47@@ -459,7 +460,7 @@ found:
48 MAC2STR(wpa_s->links[i].bssid));
49
50 /* Get the BSS entry and do the switch */
51- bss = wpa_bss_get_bssid(wpa_s, wpa_s->links[i].bssid);
52+ bss = wpa_bss_get(wpa_s, wpa_s->links[i].bssid, ssid->ssid, ssid->ssid_len);
53 wpa_s->mlo_assoc_link_id = i;
54
55 return bss;
56@@ -528,7 +529,7 @@ static bool check_mld_allowed_phy(struct wpa_supplicant *wpa_s, int freq)
57
58
59 static void wpas_sme_set_mlo_links(struct wpa_supplicant *wpa_s,
60- struct wpa_bss *bss)
61+ struct wpa_bss *bss, struct wpa_ssid *ssid)
62 {
63 u8 i;
64
65@@ -551,7 +552,8 @@ static void wpas_sme_set_mlo_links(struct wpa_supplicant *wpa_s,
66 if (bss->mld_link_id == i)
67 wpa_s->links[i].bss = bss;
68 else
69- wpa_s->links[i].bss = wpa_bss_get_bssid(wpa_s, bssid);
70+ wpa_s->links[i].bss = wpa_bss_get(wpa_s, bssid, ssid->ssid,
71+ ssid->ssid_len);
72 }
73 }
74
75@@ -597,10 +599,10 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s,
76 #endif /* CONFIG_TESTING_OPTIONS */
77 bss->valid_links) {
78 wpa_printf(MSG_DEBUG, "MLD: In authentication");
79- wpas_sme_set_mlo_links(wpa_s, bss);
80+ wpas_sme_set_mlo_links(wpa_s, bss, ssid);
81
82 #ifdef CONFIG_TESTING_OPTIONS
83- bss = wpas_ml_connect_pref(wpa_s, bss);
84+ bss = wpas_ml_connect_pref(wpa_s, bss, ssid);
85
86 if (wpa_s->conf->mld_force_single_link) {
87 wpa_printf(MSG_DEBUG, "MLD: Force single link");
88--
892.39.2
90