mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-05-05 01:46:11 +02:00
hostapd: clear start_disabled when adding a BSS to an enabled iface
In AP+STA mode, wifi-scripts emits start_disabled=1 in the per-BSS section of the generated hostapd config so that hostapd defers beaconing on every BSS until apsta_state up clears the flag for the whole iface (uc_hostapd_iface_start clears start_disabled on every BSS and calls ieee802_11_set_beacon). When a new BSS is added later via iface.add_bss while the iface is already in HAPD_IFACE_ENABLED state, the freshly parsed config still carries start_disabled=1 for that BSS. hostapd_setup_bss is invoked with start_beacon=true, but hostapd_start_beacon then skips ieee802_11_set_beacon because conf->start_disabled is set. The kernel netdev is created without ever starting beacons, the carrier never comes up, and probe-response transmission attempts fail with "handle_probe_req: send failed". Mirror what iface.start does: when the iface is already enabled, the apsta channel selection has happened, so clear start_disabled for the incoming BSS before starting it. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
a86da0bd1e
commit
a6969351a7
@ -457,9 +457,11 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs)
|
||||
interfaces->ctrl_iface_init(hapd) < 0)
|
||||
goto free_hapd;
|
||||
|
||||
if (iface->state == HAPD_IFACE_ENABLED &&
|
||||
hostapd_setup_bss(hapd, -1, true))
|
||||
goto deinit_ctrl;
|
||||
if (iface->state == HAPD_IFACE_ENABLED) {
|
||||
hapd->conf->start_disabled = 0;
|
||||
if (hostapd_setup_bss(hapd, -1, true))
|
||||
goto deinit_ctrl;
|
||||
}
|
||||
|
||||
iface->bss = os_realloc_array(iface->bss, iface->num_bss + 1,
|
||||
sizeof(*iface->bss));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user