[v2] hostapd: avoid unnecessary beacon update for co-location

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When it comes to set some BSS's beacon, there are two reasons to
update the beacon of co-located hostapd_iface(s) at the same time:
1. 6 GHz out-of-band discovery
2. MLD operational parameters update

BSS load update is unrelated with the above two reasons, and therefore
is not the case to update beacon for co-location.
Moreover, updating beacon for co-location when BSS load update makes
hostapd set beacon too frequently, which makes hostapd busy setting
beacon in a multi-BSS case.

This patch adds an new function to update beacon only for current BSS
and uses the function during BSS load update.

Signed-off-by: Michael Lee <michael-cy.lee@xxxxxxxxxxxx>
Signed-off-by: Money Wang <money.wang@xxxxxxxxxxxx>
---
v2: We did not notice that the FILS discovery frame is update during
the beacon update. Also, RNR element is included in the FILS discovery
frame only when the BSS is 6 GHz standalone.
(BTW, we did not see this constraint about RNR in the FILS discovery frame
in 802.11 Standard, so perhaps it can be refactored.)

As a result, it is necessary to update beacon for 6 GHz BSS when setting
2.4/5 GHz beacon. 

We have updated the patch, which remains the original updating logic and
refactors the commit message.
---
 src/ap/beacon.c   | 6 ++++++
 src/ap/beacon.h   | 1 +
 src/ap/bss_load.c | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/ap/beacon.c b/src/ap/beacon.c
index d160675cb..b74396a8d 100644
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -2216,6 +2216,12 @@ fail:
 }
 
 
+void ieee802_11_set_beacon_per_bss_only(struct hostapd_data *hapd)
+{
+	__ieee802_11_set_beacon(hapd);
+}
+
+
 int ieee802_11_set_beacon(struct hostapd_data *hapd)
 {
 	struct hostapd_iface *iface = hapd->iface;
diff --git a/src/ap/beacon.h b/src/ap/beacon.h
index c320825f3..b32b2a7d0 100644
--- a/src/ap/beacon.h
+++ b/src/ap/beacon.h
@@ -15,6 +15,7 @@ struct ieee80211_mgmt;
 void handle_probe_req(struct hostapd_data *hapd,
 		      const struct ieee80211_mgmt *mgmt, size_t len,
 		      int ssi_signal);
+void ieee802_11_set_beacon_per_bss_only(struct hostapd_data *hapd);
 int ieee802_11_set_beacon(struct hostapd_data *hapd);
 int ieee802_11_set_beacons(struct hostapd_iface *iface);
 int ieee802_11_update_beacons(struct hostapd_iface *iface);
diff --git a/src/ap/bss_load.c b/src/ap/bss_load.c
index 725d3cd34..e9baafc96 100644
--- a/src/ap/bss_load.c
+++ b/src/ap/bss_load.c
@@ -55,7 +55,7 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
 		return;
 	}
 
-	ieee802_11_set_beacon(hapd);
+	ieee802_11_set_beacon_per_bss_only(hapd);
 
 	if (get_bss_load_update_timeout(hapd, &sec, &usec) < 0)
 		return;
-- 
2.25.1


_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux