Revert "Revert "[wpa_supplicant] cumilative patch from commit 4b..."
Revert submission 28102966-revert-26533062-Supplicant_merge_June24-CUATTSRBBR
Fixed the regression issue (ag/28389573)
Bug: 329004037
Reverted changes: /q/submissionid:28102966-revert-26533062-Supplicant_merge_June24-CUATTSRBBR
Test: Turn ON/OFF SoftAp
Change-Id: Ie7ea1ee7f8b1311fce280907d37a2e321542f547
diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c
index 22b694c..2890353 100644
--- a/wpa_supplicant/bss.c
+++ b/wpa_supplicant/bss.c
@@ -400,6 +400,11 @@
if (bss == wpa_s->ml_connect_probe_bss)
return 1;
+#ifdef CONFIG_WNM
+ if (bss == wpa_s->wnm_target_bss)
+ return 1;
+#endif /* CONFIG_WNM */
+
if (wpa_s->current_bss &&
(bss->ssid_len != wpa_s->current_bss->ssid_len ||
os_memcmp(bss->ssid, wpa_s->current_bss->ssid,
@@ -414,10 +419,7 @@
if (!wpa_s->valid_links)
return 0;
- for (i = 0; i < MAX_NUM_MLD_LINKS; i++) {
- if (!(wpa_s->valid_links & BIT(i)))
- continue;
-
+ for_each_link(wpa_s->valid_links, i) {
if (ether_addr_equal(bss->bssid, wpa_s->links[i].bssid))
return 1;
}
@@ -1513,9 +1515,6 @@
for (i = 0; i < count; i++) {
u8 bss_params;
- if (bss->n_mld_links >= MAX_NUM_MLD_LINKS)
- return;
-
if (end - pos < ap_info->tbtt_info_len)
break;
@@ -1523,6 +1522,8 @@
mld_params = pos + mld_params_offset;
link_id = *(mld_params + 1) & EHT_ML_LINK_ID_MSK;
+ if (link_id >= MAX_NUM_MLD_LINKS)
+ return;
if (*mld_params != mbssid_idx) {
wpa_printf(MSG_DEBUG,
@@ -1546,13 +1547,12 @@
wpa_s, neigh_bss->bssid)) {
struct mld_link *l;
- l = &bss->mld_links[bss->n_mld_links];
- l->link_id = link_id;
+ bss->valid_links |= BIT(link_id);
+ l = &bss->mld_links[link_id];
os_memcpy(l->bssid, pos + 1, ETH_ALEN);
l->freq = neigh_bss->freq;
l->disabled = mld_params[2] &
RNR_TBTT_INFO_MLD_PARAM2_LINK_DISABLED;
- bss->n_mld_links++;
}
}
@@ -1678,15 +1678,15 @@
os_memcpy(ap_mld_addr, ml_basic_common_info->mld_addr,
ETH_ALEN);
- bss->n_mld_links = 0;
- l = &bss->mld_links[bss->n_mld_links];
link_id = ml_basic_common_info->variable[0] & EHT_ML_LINK_ID_MSK;
- l->link_id = link_id;
+
+ bss->mld_link_id = link_id;
+ seen = bss->valid_links = BIT(link_id);
+
+ l = &bss->mld_links[link_id];
os_memcpy(l->bssid, bss->bssid, ETH_ALEN);
l->freq = bss->freq;
- seen = BIT(link_id);
- bss->n_mld_links++;
/*
* The AP MLD ID in the RNR corresponds to the MBSSID index, see
@@ -1736,13 +1736,12 @@
}
}
- wpa_printf(MSG_DEBUG, "MLD: n_mld_links=%u (unresolved: 0x%04hx)",
- bss->n_mld_links, missing);
+ wpa_printf(MSG_DEBUG, "MLD: valid_links=%04hx (unresolved: 0x%04hx)",
+ bss->valid_links, missing);
- for (i = 0; i < bss->n_mld_links; i++) {
+ for_each_link(bss->valid_links, i) {
wpa_printf(MSG_DEBUG, "MLD: link=%u, bssid=" MACSTR,
- bss->mld_links[i].link_id,
- MAC2STR(bss->mld_links[i].bssid));
+ i, MAC2STR(bss->mld_links[i].bssid));
}
if (missing_links)