nl80211: Disable EAPOL TX over control port in AP mode by default

Since this nl80211 mechanism for sending EAPOL frames does not currently
support TX status notification, disable it by default of AP mode where
the Authenticator state machine uses those notifications to optimize
retransmission. The control port TX can be enabled for AP mode with
driver param control_port_ap=1.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2020-04-19 15:43:41 +03:00
parent 12ea7dee31
commit c1bc0dd80d
2 changed files with 8 additions and 1 deletions

View file

@ -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;

View file

@ -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;