}
-struct wlantest_bss * bss_find_mld(struct wlantest *wt, const u8 *mld_mac_addr)
+struct wlantest_bss * bss_find_mld(struct wlantest *wt, const u8 *mld_mac_addr,
+ int link_id)
{
struct wlantest_bss *bss;
dl_list_for_each(bss, &wt->bss, struct wlantest_bss, list) {
- if (os_memcmp(bss->mld_mac_addr, mld_mac_addr, ETH_ALEN) == 0)
+ if (os_memcmp(bss->mld_mac_addr, mld_mac_addr, ETH_ALEN) == 0 &&
+ (link_id < 0 ||
+ (bss->link_id_set && bss->link_id == link_id)))
return bss;
}
}
bss = bss_find(wt, aa);
- bss2 = bss_find_mld(wt, aa);
+ bss2 = bss_find_mld(wt, aa, -1);
if (!bss)
bss = bss2;
if (bss && bss2 && bss != bss2 && !sta_find(bss, spa))
}
bss = bss_find(wt, aa);
- bss2 = bss_find_mld(wt, aa);
+ bss2 = bss_find_mld(wt, aa, -1);
if (!bss)
bss = bss2;
if (bss && bss2 && bss != bss2 && !sta_find(bss, spa))
const u8 *data, size_t len);
struct wlantest_bss * bss_find(struct wlantest *wt, const u8 *bssid);
-struct wlantest_bss * bss_find_mld(struct wlantest *wt, const u8 *mld_mac_addr);
+struct wlantest_bss * bss_find_mld(struct wlantest *wt, const u8 *mld_mac_addr,
+ int link_id);
struct wlantest_bss * bss_get(struct wlantest *wt, const u8 *bssid);
void bss_deinit(struct wlantest_bss *bss);
void bss_update(struct wlantest *wt, struct wlantest_bss *bss,