diff mbox series

wpa_supplicant 2.11 - thick-mac open AP won't pass data packets

Message ID PH7PR14MB5713EBF67C4F072474A650C1F7802@PH7PR14MB5713.namprd14.prod.outlook.com
State New
Headers show
Series wpa_supplicant 2.11 - thick-mac open AP won't pass data packets | expand

Commit Message

Doug Smith Aug. 15, 2024, 6:49 p.m. UTC
All,

Apologies in advance if this has already been addressed.

Found an issue using wpa_supplicant 2.11 (built with CONFIG_AP support) configured as an open AP.
After a station connects to the AP, data packets are not passed -- pings fail.

The issue occurs with a thick-mac radio due to the WPA_STA_AUTHORIZED flag not being pushed.

When the station connects, the AP handles the assoc event in wpa_supplicant_event_assoc():<wpa_supplicant/events.c>, and calls hostapd_notif_assoc():<src/ap/drv_callbacks.c>.
hostapd_notif_assoc call hostapd_set_sta_flags() to push the flags -- unfortunately the AUTHORIZED flag hasn't been set yet.
The AUTHORIZED flag isn't set until hostapd_new_assoc_sta() is called a few lines later.
hostapd_new_assoc_sta():<src/ap/hostapd.c> calls ap_sta_set_authorized() for the open AP -- unfortunately the flag isn't pushed.

One possible fix is to push the flag as follows:

Regards,
Doug
THE INFORMATION CONTAINED IN THIS DOCUMENT IS OF A PROPRIETARY NATURE AND IS INTENDED TO BE KEPT CONFIDENTIAL BETWEEN THE SENDER AND THE INTENDED RECIPIENT. IT MAY NOT BE REPRODUCED OR USED WITHOUT EXPRESS WRITTEN PERMISSION OF EZURIO
diff mbox series

Patch

diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index c8ec1d624..d4a73510d 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -4042,6 +4042,8 @@  void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
         * been authorized. */
        if (!hapd->conf->ieee802_1x && !hapd->conf->wpa && !hapd->conf->osen) {
                ap_sta_set_authorized(hapd, sta, 1);
+               // fix no ping -- push the authorized flag
+               hostapd_set_sta_flags(hapd, sta);
                os_get_reltime(&sta->connected_time);
                accounting_sta_start(hapd, sta);
        }