diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c72dda381..0ffb14dc7 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -5328,7 +5328,10 @@ static int wpa_driver_nl80211_hapd_send_eapol( int res; int qos = flags & WPA_STA_WMM; - if (drv->capa.flags & WPA_DRIVER_FLAGS_CONTROL_PORT) + /* For now, disable EAPOL TX over control port in AP mode by default + * since it does not provide TX status notifications. */ + if (drv->control_port_ap && + (drv->capa.flags & WPA_DRIVER_FLAGS_CONTROL_PORT)) return nl80211_tx_control_port(bss, addr, ETH_P_EAPOL, data, data_len, !encrypt); @@ -8173,6 +8176,9 @@ static int nl80211_set_param(void *priv, const char *param) drv->capa.flags2 &= ~WPA_DRIVER_FLAGS2_CONTROL_PORT_RX; } + if (os_strstr(param, "control_port_ap=1")) + drv->control_port_ap = 1; + if (os_strstr(param, "full_ap_client_state=0")) drv->capa.flags &= ~WPA_DRIVER_FLAGS_FULL_AP_CLIENT_STATE; diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h index 538d40364..19ac44a42 100644 --- a/src/drivers/driver_nl80211.h +++ b/src/drivers/driver_nl80211.h @@ -171,6 +171,7 @@ struct wpa_driver_nl80211_data { unsigned int roam_vendor_cmd_avail:1; unsigned int get_supported_akm_suites_avail:1; unsigned int add_sta_node_vendor_cmd_avail:1; + unsigned int control_port_ap:1; u64 vendor_scan_cookie; u64 remain_on_chan_cookie;