|
@@ -310,6 +310,8 @@ int offchannel_send_action(struct wpa_supplicant *wpa_s, unsigned int freq,
|
|
|
|
|
|
iface = wpas_get_tx_interface(wpa_s, src);
|
|
|
wpa_s->action_tx_wait_time = wait_time;
|
|
|
+ if (wait_time)
|
|
|
+ wpa_s->action_tx_wait_time_used = 1;
|
|
|
|
|
|
ret = wpa_drv_send_action(
|
|
|
iface, wpa_s->pending_action_freq,
|
|
@@ -398,13 +400,14 @@ void offchannel_send_action_done(struct wpa_supplicant *wpa_s)
|
|
|
wpabuf_free(wpa_s->pending_action_tx);
|
|
|
wpa_s->pending_action_tx = NULL;
|
|
|
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX &&
|
|
|
- wpa_s->action_tx_wait_time)
|
|
|
+ (wpa_s->action_tx_wait_time || wpa_s->action_tx_wait_time_used))
|
|
|
wpa_drv_send_action_cancel_wait(wpa_s);
|
|
|
else if (wpa_s->off_channel_freq || wpa_s->roc_waiting_drv_freq) {
|
|
|
wpa_drv_cancel_remain_on_channel(wpa_s);
|
|
|
wpa_s->off_channel_freq = 0;
|
|
|
wpa_s->roc_waiting_drv_freq = 0;
|
|
|
}
|
|
|
+ wpa_s->action_tx_wait_time_used = 0;
|
|
|
}
|
|
|
|
|
|
|