]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
AP MLD: Remove restriction of having to disable the first link BSS last
authorAditya Kumar Singh <quic_adisi@quicinc.com>
Wed, 6 Mar 2024 06:41:19 +0000 (12:11 +0530)
committerJouni Malinen <j@w1.fi>
Wed, 27 Mar 2024 16:12:39 +0000 (18:12 +0200)
The first link BSS was always disabled last. However, now the first BSS
can be dynamically adjusted. Hence, remove such restriction.

Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
hostapd/ctrl_iface.c
src/ap/hostapd.c

index 085ee6e570269e4c3b994345f0d419069cd16ba3..10cb186f142d50ceb946236b5ff444e7cb573558 100644 (file)
@@ -3501,7 +3501,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,
@@ -3519,24 +3518,15 @@ static int hostapd_ctrl_iface_disable_mld(struct hostapd_iface *iface)
                if (!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];
 
-               if (!hostapd_is_ml_partner(h_hapd, iface->bss[0]) ||
-                   hostapd_mld_is_first_bss(h_hapd))
+               if (!hostapd_is_ml_partner(h_hapd, iface->bss[0]))
                        continue;
 
                if (hostapd_disable_iface(h_iface)) {
@@ -3545,11 +3535,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;
 }
 
index b1ae909a04ec82b577bc2decf4ae28e1f8cbb096..f8cb6432d00756670fb7046490cf4d952a2f5ab6 100644 (file)
@@ -3486,29 +3486,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];
-
-                       if (!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;