hostapd: improve multi radio ACS

Fixes: WIFI-14402
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin
2025-02-06 08:22:33 +01:00
parent b74f824b3a
commit 4f0f25ad05
2 changed files with 54 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
@@ -3103,7 +3103,7 @@ static void handle_auth(struct hostapd_d
return;
}
#endif /* CONFIG_SAE */
- {
+ if (hapd->mld) {
struct hostapd_ft_over_ds_ml_sta_entry *entry;
entry = ap_get_ft_ds_ml_sta(hapd, sa);
@@ -5589,7 +5589,7 @@ static void handle_assoc(struct hostapd_
if (sta && reassoc)
memcpy(sta->origin_ap, mgmt->u.reassoc_req.current_ap, 6);
#ifdef CONFIG_IEEE80211R_AP
- if (!sta) {
+ if (!sta && hapd->mld) {
wpa_printf(MSG_DEBUG,
"FT over DS: Check for STA entry with ML address");
sta = get_sta_from_ft_ds_list(hapd, mgmt, len, reassoc);

View File

@@ -0,0 +1,34 @@
--- a/src/drivers/driver_nl80211_scan.c
+++ b/src/drivers/driver_nl80211_scan.c
@@ -423,6 +423,9 @@ int wpa_driver_nl80211_scan(struct i802_
goto fail;
}
+ if (ret == -EBUSY)
+ goto fail;
+
/*
* mac80211 does not allow scan requests in AP mode, so
* try to do this in station mode.
--- a/src/ap/acs.h
+++ b/src/ap/acs.h
@@ -15,7 +15,7 @@
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
void acs_cleanup(struct hostapd_iface *iface);
-#define ACS_SCAN_RETRY_MAX_COUNT 15
+#define ACS_SCAN_RETRY_MAX_COUNT 50
#define ACS_SCAN_RETRY_INTERVAL 5
#else /* CONFIG_ACS */
--- a/src/ap/acs.c
+++ b/src/ap/acs.c
@@ -1496,7 +1496,7 @@ static int acs_request_scan(struct hosta
if (ret == -EBUSY) {
iface->acs_num_retries++;
- wpa_printf(MSG_ERROR, "Failed to request acs scan ret=%d (%s) - try to scan after %d seconds",
+ wpa_printf(MSG_DEBUG, "Failed to request acs scan ret=%d (%s) - try to scan after %d seconds",
ret, strerror(-ret), ACS_SCAN_RETRY_INTERVAL);
eloop_cancel_timeout(acs_scan_retry, iface, NULL);
eloop_register_timeout(ACS_SCAN_RETRY_INTERVAL, 0,