P2P: Cancel pending action TX radio work on p2p_cancel

When p2p_cancel is invoked while the GO Negotiation Action TX was
pending, the p2p_send_action_work was not getting cleared.

Signed-off-by: Jithu Jance <jithu@broadcom.com>
This commit is contained in:
Jithu Jance 2014-07-29 18:34:32 +05:30 committed by Jouni Malinen
parent 8b627b7c47
commit 2fa980f0f1

View file

@ -967,16 +967,8 @@ static void wpas_p2p_send_action_work_timeout(void *eloop_ctx,
} }
static void wpas_p2p_send_action_tx_status(struct wpa_supplicant *wpa_s, static void wpas_p2p_action_tx_clear(struct wpa_supplicant *wpa_s)
unsigned int freq,
const u8 *dst, const u8 *src,
const u8 *bssid,
const u8 *data, size_t data_len,
enum offchannel_send_action_result
result)
{ {
enum p2p_send_action_result res = P2P_SEND_ACTION_SUCCESS;
if (wpa_s->p2p_send_action_work) { if (wpa_s->p2p_send_action_work) {
struct send_action_work *awork; struct send_action_work *awork;
awork = wpa_s->p2p_send_action_work->ctx; awork = wpa_s->p2p_send_action_work->ctx;
@ -999,6 +991,20 @@ static void wpas_p2p_send_action_tx_status(struct wpa_supplicant *wpa_s,
wpa_s, NULL); wpa_s, NULL);
} }
} }
}
static void wpas_p2p_send_action_tx_status(struct wpa_supplicant *wpa_s,
unsigned int freq,
const u8 *dst, const u8 *src,
const u8 *bssid,
const u8 *data, size_t data_len,
enum offchannel_send_action_result
result)
{
enum p2p_send_action_result res = P2P_SEND_ACTION_SUCCESS;
wpas_p2p_action_tx_clear(wpa_s);
if (wpa_s->global->p2p == NULL || wpa_s->global->p2p_disabled) if (wpa_s->global->p2p == NULL || wpa_s->global->p2p_disabled)
return; return;
@ -5684,6 +5690,8 @@ static void wpas_p2p_clear_pending_action_tx(struct wpa_supplicant *wpa_s)
if (!offchannel_pending_action_tx(wpa_s)) if (!offchannel_pending_action_tx(wpa_s))
return; return;
wpas_p2p_action_tx_clear(wpa_s);
wpa_printf(MSG_DEBUG, "P2P: Drop pending Action TX due to new " wpa_printf(MSG_DEBUG, "P2P: Drop pending Action TX due to new "
"operation request"); "operation request");
offchannel_clear_pending_action_tx(wpa_s); offchannel_clear_pending_action_tx(wpa_s);