AP MLD: Refresh beacons for other links when one gets disabled/enabled

If one or more BSS from the interface is partnering with BSSs from
another interface and if this interface gets disabled, the Beacon frames
need to be refreshed for other interfaces. Similar thing should happen
when it gets enabled.

Add logic to refresh other interface Beacon frames when one of the
interfaces is disabled or enabled.

Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
This commit is contained in:
Aditya Kumar Singh 2024-03-06 12:09:43 +05:30 committed by Jouni Malinen
parent d2b62b3fe5
commit 7a0501d20d

View file

@ -3355,6 +3355,22 @@ static void hostapd_deinit_driver(const struct wpa_driver_ops *driver,
} }
static void hostapd_refresh_all_iface_beacons(struct hostapd_iface *hapd_iface)
{
size_t j;
if (!hapd_iface->interfaces || hapd_iface->interfaces->count <= 1)
return;
for (j = 0; j < hapd_iface->interfaces->count; j++) {
if (hapd_iface->interfaces->iface[j] == hapd_iface)
continue;
ieee802_11_update_beacons(hapd_iface->interfaces->iface[j]);
}
}
int hostapd_enable_iface(struct hostapd_iface *hapd_iface) int hostapd_enable_iface(struct hostapd_iface *hapd_iface)
{ {
size_t j; size_t j;
@ -3393,6 +3409,8 @@ int hostapd_enable_iface(struct hostapd_iface *hapd_iface)
return -1; return -1;
} }
hostapd_refresh_all_iface_beacons(hapd_iface);
return 0; return 0;
} }
@ -3504,6 +3522,7 @@ int hostapd_disable_iface(struct hostapd_iface *hapd_iface)
wpa_printf(MSG_DEBUG, "Interface %s disabled", wpa_printf(MSG_DEBUG, "Interface %s disabled",
hapd_iface->bss[0]->conf->iface); hapd_iface->bss[0]->conf->iface);
hostapd_set_state(hapd_iface, HAPD_IFACE_DISABLED); hostapd_set_state(hapd_iface, HAPD_IFACE_DISABLED);
hostapd_refresh_all_iface_beacons(hapd_iface);
return 0; return 0;
} }