nl80211: Remove AP MLD links while removing the interface

When the interface was removed, the added links were not removed. While
removing the interface, kernel has removed the stale links but hostapd
has not. This is wrong since hostapd should remove and do the clean ups
properly while removing the interface.

Hence, remove the links when interface is removed.

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

View file

@ -8965,6 +8965,7 @@ static int wpa_driver_nl80211_if_remove(struct i802_bss *bss,
tbss->next = bss->next; tbss->next = bss->next;
/* Unsubscribe management frames */ /* Unsubscribe management frames */
nl80211_teardown_ap(bss); nl80211_teardown_ap(bss);
nl80211_remove_links(bss);
nl80211_destroy_bss(bss); nl80211_destroy_bss(bss);
if (!bss->added_if) if (!bss->added_if)
i802_set_iface_flags(bss, 0); i802_set_iface_flags(bss, 0);
@ -8979,6 +8980,7 @@ static int wpa_driver_nl80211_if_remove(struct i802_bss *bss,
} else { } else {
wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context"); wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context");
nl80211_teardown_ap(bss); nl80211_teardown_ap(bss);
nl80211_remove_links(bss);
if (!bss->added_if && !drv->first_bss->next) if (!bss->added_if && !drv->first_bss->next)
wpa_driver_nl80211_del_beacon_all(bss); wpa_driver_nl80211_del_beacon_all(bss);
nl80211_destroy_bss(bss); nl80211_destroy_bss(bss);