P2P: Clear off_channel_freq when requesting new remain-on-channel

The driver may end up leaving the current channel when we request
a new remain-on-channel and as such, it is better not assume we can
start new operations like sending an Action frame on the previous
off-channel.
This commit is contained in:
Jouni Malinen 2010-11-05 18:39:42 +02:00 committed by Jouni Malinen
parent 8eada5ca13
commit 09d660b9e3

View File

@ -569,9 +569,11 @@ static void wpas_send_action_cb(void *eloop_ctx, void *timeout_ctx)
"driver to remain on channel (%u " "driver to remain on channel (%u "
"MHz) for Action Frame TX", "MHz) for Action Frame TX",
wpa_s->pending_action_freq); wpa_s->pending_action_freq);
} else } else {
wpa_s->off_channel_freq = 0;
wpa_s->roc_waiting_drv_freq = wpa_s->roc_waiting_drv_freq =
wpa_s->pending_action_freq; wpa_s->pending_action_freq;
}
} }
return; return;
} }
@ -709,6 +711,7 @@ static int wpas_send_action(void *ctx, unsigned int freq, const u8 *dst,
"Frame TX", freq); "Frame TX", freq);
return -1; return -1;
} }
wpa_s->off_channel_freq = 0;
wpa_s->roc_waiting_drv_freq = freq; wpa_s->roc_waiting_drv_freq = freq;
return 0; return 0;
@ -1098,6 +1101,7 @@ static int wpas_start_listen(void *ctx, unsigned int freq,
wpa_s->pending_listen_freq = 0; wpa_s->pending_listen_freq = 0;
return -1; return -1;
} }
wpa_s->off_channel_freq = 0;
wpa_s->roc_waiting_drv_freq = freq; wpa_s->roc_waiting_drv_freq = freq;
return 0; return 0;