nl80211: Use control port TX (status) in AP mode if possible
Check if nl80211 control port TX status is available in the kernel and enable control port TX if so. With this feature, nl80211 control path is able to provide the same feature set as nl80211 (management) + AF_PACKET socket (control) before. For debugging and testing, this can explicitly be disabled with the driver parameter control_port_ap=0. Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
This commit is contained in:
parent
569497bf4f
commit
67efd19e0a
1 changed files with 14 additions and 1 deletions
|
@ -2172,6 +2172,11 @@ static void * wpa_driver_nl80211_drv_init(void *ctx, const char *ifname,
|
|||
if (wpa_driver_nl80211_finish_drv_init(drv, set_addr, 1, driver_params))
|
||||
goto failed;
|
||||
|
||||
if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_CONTROL_PORT_TX_STATUS) {
|
||||
drv->control_port_ap = 1;
|
||||
goto skip_wifi_status;
|
||||
}
|
||||
|
||||
drv->eapol_tx_sock = socket(PF_PACKET, SOCK_DGRAM, 0);
|
||||
if (drv->eapol_tx_sock < 0)
|
||||
goto failed;
|
||||
|
@ -2195,6 +2200,7 @@ static void * wpa_driver_nl80211_drv_init(void *ctx, const char *ifname,
|
|||
drv, NULL);
|
||||
}
|
||||
}
|
||||
skip_wifi_status:
|
||||
|
||||
if (drv->global) {
|
||||
nl80211_check_global(drv->global);
|
||||
|
@ -8313,12 +8319,19 @@ static int nl80211_set_param(void *priv, const char *param)
|
|||
|
||||
if (os_strstr(param, "control_port=0")) {
|
||||
drv->capa.flags &= ~WPA_DRIVER_FLAGS_CONTROL_PORT;
|
||||
drv->capa.flags2 &= ~WPA_DRIVER_FLAGS2_CONTROL_PORT_RX;
|
||||
drv->capa.flags2 &= ~(WPA_DRIVER_FLAGS2_CONTROL_PORT_RX |
|
||||
WPA_DRIVER_FLAGS2_CONTROL_PORT_TX_STATUS);
|
||||
drv->control_port_ap = 0;
|
||||
}
|
||||
|
||||
if (os_strstr(param, "control_port_ap=1"))
|
||||
drv->control_port_ap = 1;
|
||||
|
||||
if (os_strstr(param, "control_port_ap=0")) {
|
||||
drv->capa.flags2 &= ~WPA_DRIVER_FLAGS2_CONTROL_PORT_TX_STATUS;
|
||||
drv->control_port_ap = 0;
|
||||
}
|
||||
|
||||
if (os_strstr(param, "full_ap_client_state=0"))
|
||||
drv->capa.flags &= ~WPA_DRIVER_FLAGS_FULL_AP_CLIENT_STATE;
|
||||
|
||||
|
|
Loading…
Reference in a new issue