P2P: Fix action done handling for driver-based off-channel TX
The action done handling needs to abort an off-channel period since one might have been used for example for GO negotiation and after action done the code assumes it can start a new off-channel period. This fixes a bug I introduced when adding support for in-kernel off-channel transmissions. Reported-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
ffbf1eaa26
commit
3a26a2c9df
1 changed files with 5 additions and 5 deletions
|
@ -816,11 +816,11 @@ static void wpas_send_action_done(void *ctx)
|
||||||
wpa_printf(MSG_DEBUG, "P2P: Action frame sequence done notification");
|
wpa_printf(MSG_DEBUG, "P2P: Action frame sequence done notification");
|
||||||
wpabuf_free(wpa_s->pending_action_tx);
|
wpabuf_free(wpa_s->pending_action_tx);
|
||||||
wpa_s->pending_action_tx = NULL;
|
wpa_s->pending_action_tx = NULL;
|
||||||
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX) {
|
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX &&
|
||||||
if (wpa_s->action_tx_wait_time)
|
wpa_s->action_tx_wait_time)
|
||||||
wpa_drv_send_action_cancel_wait(wpa_s);
|
wpa_drv_send_action_cancel_wait(wpa_s);
|
||||||
wpa_s->off_channel_freq = 0;
|
|
||||||
} else if (wpa_s->off_channel_freq || wpa_s->roc_waiting_drv_freq) {
|
if (wpa_s->off_channel_freq || wpa_s->roc_waiting_drv_freq) {
|
||||||
wpa_drv_cancel_remain_on_channel(wpa_s);
|
wpa_drv_cancel_remain_on_channel(wpa_s);
|
||||||
wpa_s->off_channel_freq = 0;
|
wpa_s->off_channel_freq = 0;
|
||||||
wpa_s->roc_waiting_drv_freq = 0;
|
wpa_s->roc_waiting_drv_freq = 0;
|
||||||
|
|
Loading…
Reference in a new issue