[PATCH 16/16] hostapd: MLD: remove restriction of disabling first link bss at last

Aditya Kumar Singh quic_adisi at quicinc.com
Wed Mar 6 09:39:47 PST 2024


Currently first link BSS is always disabled at last. However, now first
BSS can be dynamically adjusted. Hence remove such restriction.

Signed-off-by: Aditya Kumar Singh <quic_adisi at quicinc.com>
---
 hostapd/ctrl_iface.c | 17 +----------------
 src/ap/hostapd.c     | 24 ------------------------
 2 files changed, 1 insertion(+), 40 deletions(-)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 714d09837605..300042848bab 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -3503,7 +3503,6 @@ static void hostapd_disable_iface_bss(struct hostapd_iface *iface)
 static int hostapd_ctrl_iface_disable_mld(struct hostapd_iface *iface)
 {
 	unsigned int i;
-	struct hostapd_iface *first_iface = NULL;
 
 	if (!iface || !iface->bss[0]->conf->mld_ap) {
 		wpa_printf(MSG_ERROR,
@@ -3523,26 +3522,17 @@ static int hostapd_ctrl_iface_disable_mld(struct hostapd_iface *iface)
 		    !hostapd_is_ml_partner(h_hapd, iface->bss[0]))
 			continue;
 
-		if (hostapd_mld_is_first_bss(h_hapd)) {
-			first_iface = h_iface;
-			continue;
-		}
 		hostapd_disable_iface_bss(iface);
 	}
 
-	if (first_iface)
-		hostapd_disable_iface_bss(first_iface);
-
 	/* Then, fully disable interfaces */
-
 	for (i = 0; i < iface->interfaces->count; ++i) {
 		struct hostapd_iface *h_iface = iface->interfaces->iface[i];
 		struct hostapd_data *h_hapd = h_iface->bss[0];
 		struct hostapd_bss_config *h_conf = h_hapd->conf;
 
 		if (!h_conf->mld_ap ||
-		    !hostapd_is_ml_partner(h_hapd, iface->bss[0]) ||
-		    hostapd_mld_is_first_bss(h_hapd))
+		    !hostapd_is_ml_partner(h_hapd, iface->bss[0]))
 			continue;
 
 		if (hostapd_disable_iface(h_iface)) {
@@ -3551,11 +3541,6 @@ static int hostapd_ctrl_iface_disable_mld(struct hostapd_iface *iface)
 		}
 	}
 
-	if (first_iface && hostapd_disable_iface(first_iface)) {
-		wpa_printf(MSG_ERROR, "Disabling AP MLD failed");
-		return -1;
-	}
-
 	return 0;
 }
 
diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index 863547c0de33..842a527466c0 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -3495,30 +3495,6 @@ int hostapd_disable_iface(struct hostapd_iface *hapd_iface)
 		return -1;
 	}
 
-#ifdef CONFIG_IEEE80211BE
-	if (hapd_iface->bss[0]->conf->mld_ap &&
-	    hostapd_mld_is_first_bss((hapd_iface->bss[0]))) {
-		/* Do not allow mld_first_bss disabling before other BSSs */
-		for (j = 0; j < hapd_iface->interfaces->count; ++j) {
-			struct hostapd_iface *h_iface =
-				hapd_iface->interfaces->iface[j];
-			struct hostapd_data *h_hapd = h_iface->bss[0];
-			struct hostapd_bss_config *h_conf = h_hapd->conf;
-
-			if (!h_conf->mld_ap ||
-			    !hostapd_is_ml_partner(h_hapd, hapd_iface->bss[0]) ||
-			    h_iface == hapd_iface)
-				continue;
-
-			if (h_iface->state != HAPD_IFACE_DISABLED) {
-				wpa_printf(MSG_INFO,
-					   "Do not allow disable mld_first_bss first");
-				return -1;
-			}
-		}
-	}
-#endif /* CONFIG_IEEE80211BE */
-
 	wpa_msg(hapd_iface->bss[0]->msg_ctx, MSG_INFO, AP_EVENT_DISABLED);
 	driver = hapd_iface->bss[0]->driver;
 	drv_priv = hapd_iface->bss[0]->drv_priv;
-- 
2.25.1




More information about the Hostap mailing list