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