}
if (!drv->sta_mlo_info.valid_links ||
- drv->mlo_assoc_link_id == link_id) {
+ drv->sta_mlo_info.assoc_link_id == link_id) {
ctx->assoc_freq = freq;
wpa_printf(MSG_DEBUG, "nl80211: Associated on %u MHz",
ctx->assoc_freq);
}
if (!drv->sta_mlo_info.valid_links ||
- drv->mlo_assoc_link_id == link_id) {
+ drv->sta_mlo_info.assoc_link_id == link_id) {
os_memcpy(ctx->assoc_bssid, bssid, ETH_ALEN);
wpa_printf(MSG_DEBUG, "nl80211: Associated with "
MACSTR, MAC2STR(bssid));
{
const u8 *ml_ie;
struct driver_sta_mlo_info *mlo = &drv->sta_mlo_info;
+ int res;
if (!addr || !mlo_links || !resp_ie)
return;
if (!ml_ie)
return;
- drv->mlo_assoc_link_id = nl80211_get_assoc_link_id(&ml_ie[3],
- ml_ie[1] - 1);
- if (drv->mlo_assoc_link_id < 0 ||
- drv->mlo_assoc_link_id >= MAX_NUM_MLD_LINKS)
+ res = nl80211_get_assoc_link_id(&ml_ie[3], ml_ie[1] - 1);
+ if (res < 0 || res >= MAX_NUM_MLD_LINKS) {
+ wpa_printf(MSG_DEBUG,
+ "nl80211: Could not find a valid association Link ID (res=%d)",
+ res);
return;
+ }
+ drv->sta_mlo_info.assoc_link_id = res;
os_memcpy(mlo->ap_mld_addr, nla_data(addr), ETH_ALEN);
wpa_printf(MSG_DEBUG, "nl80211: AP MLD MAC Address " MACSTR,
nl80211_parse_qca_vendor_mlo_link_info(mlo, mlo_links);
#endif /* CONFIG_DRIVER_NL80211_QCA */
- if (!(mlo->valid_links & BIT(drv->mlo_assoc_link_id))) {
+ if (!(mlo->valid_links & BIT(drv->sta_mlo_info.assoc_link_id))) {
wpa_printf(MSG_ERROR, "nl80211: Invalid MLO assoc link ID %d",
- drv->mlo_assoc_link_id);
+ drv->sta_mlo_info.assoc_link_id);
mlo->valid_links = 0;
return;
}
- os_memcpy(drv->bssid, mlo->links[drv->mlo_assoc_link_id].bssid,
+ os_memcpy(drv->bssid, mlo->links[drv->sta_mlo_info.assoc_link_id].bssid,
ETH_ALEN);
os_memcpy(drv->prev_bssid, drv->bssid, ETH_ALEN);
}
EVENT_LINK_CH_SWITCH_STARTED, &data);
}
- if (link_id != drv->mlo_assoc_link_id)
+ if (link_id != drv->sta_mlo_info.assoc_link_id)
return;
}
}
}
- if (match &&
+ if (match && wpa_s->mlo_assoc_link_id == mlo.assoc_link_id &&
os_memcmp(wpa_s->ap_mld_addr, mlo.ap_mld_addr,
ETH_ALEN) == 0)
return 0;
}
wpa_s->valid_links = mlo.valid_links;
+ wpa_s->mlo_assoc_link_id = mlo.assoc_link_id;
os_memcpy(wpa_s->ap_mld_addr, mlo.ap_mld_addr, ETH_ALEN);
for (i = 0; i < MAX_NUM_MLD_LINKS; i++) {
if (!(wpa_s->valid_links & BIT(i)))