nl80211: Work around misdelivered control port TX status
The kernel commit "mac80211: support control port TX status reporting" seems to be delivering the TX status events for EAPOL frames over control port using NL80211_CMD_FRAME_TX_STATUS due to incorrect check on whether the frame is a Management or Data frame. Use the pending cookie value from EAPOL TX operation to detect this incorrect behavior and redirect the event internally to allow it to be used to get full TX control port functionality available for AP mode. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
87065881b1
commit
569497bf4f
3 changed files with 36 additions and 17 deletions
|
@ -5363,14 +5363,18 @@ static int nl80211_tx_control_port(void *priv, const u8 *dest,
|
|||
ext_arg.ext_data = &cookie;
|
||||
ret = send_and_recv_msgs(bss->drv, msg, NULL, NULL,
|
||||
ack_handler_cookie, &ext_arg);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"nl80211: tx_control_port failed: ret=%d (%s)",
|
||||
ret, strerror(-ret));
|
||||
else
|
||||
} else {
|
||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"nl80211: tx_control_port cookie=0x%llx",
|
||||
(long long unsigned int) cookie);
|
||||
drv->eapol_tx_cookie = cookie;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue