nl80211: Update send_action_cookie on AP-offchannel-TX path
Previously, the send_mlme->send_frame->send_frame_cmd path that could be used when a GO sends an offchannel Action frame ended up not updating drv->send_action_cookie. This can result in an issue with not being able to cancel wait for the response, e.g., in invitation-to-running-group case. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
b9ab2f2e5c
commit
41cc50d19e
1 changed files with 21 additions and 2 deletions
|
@ -6149,6 +6149,7 @@ static int wpa_driver_nl80211_send_frame(struct i802_bss *bss,
|
|||
{
|
||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||
u64 cookie;
|
||||
int res;
|
||||
|
||||
if (freq == 0) {
|
||||
wpa_printf(MSG_DEBUG, "nl80211: send_frame - Use bss->freq=%u",
|
||||
|
@ -6164,8 +6165,26 @@ static int wpa_driver_nl80211_send_frame(struct i802_bss *bss,
|
|||
}
|
||||
|
||||
wpa_printf(MSG_DEBUG, "nl80211: send_frame -> send_frame_cmd");
|
||||
return nl80211_send_frame_cmd(bss, freq, wait_time, data, len,
|
||||
res = nl80211_send_frame_cmd(bss, freq, wait_time, data, len,
|
||||
&cookie, no_cck, noack, offchanok);
|
||||
if (res == 0 && !noack) {
|
||||
const struct ieee80211_mgmt *mgmt;
|
||||
u16 fc;
|
||||
|
||||
mgmt = (const struct ieee80211_mgmt *) data;
|
||||
fc = le_to_host16(mgmt->frame_control);
|
||||
if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
|
||||
WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_ACTION) {
|
||||
wpa_printf(MSG_MSGDUMP,
|
||||
"nl80211: Update send_action_cookie from 0x%llx to 0x%llx",
|
||||
(long long unsigned int)
|
||||
drv->send_action_cookie,
|
||||
(long long unsigned int) cookie);
|
||||
drv->send_action_cookie = cookie;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue