aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2016-04-07 21:05:28 +0300
committerGerrit - the friendly Code Review server <code-review@localhost>2016-07-01 04:18:08 -0700
commit0cc961ee4cf77eef24e138fde3ef758721d35e68 (patch)
tree1c233d6b6147a972c58681c2ce2739f3fba0c987
parentd82caa8696c54df8e422f9b79dda7c004b9a7282 (diff)
downloadandroid_external_wpa_supplicant_8-0cc961ee4cf77eef24e138fde3ef758721d35e68.tar.gz
android_external_wpa_supplicant_8-0cc961ee4cf77eef24e138fde3ef758721d35e68.tar.bz2
android_external_wpa_supplicant_8-0cc961ee4cf77eef24e138fde3ef758721d35e68.zip
P2P: Continue p2p_find after sending non-success Invitation Response
This was previously handled for the case where the non-success Invitation Response frame was sent out during the Listen phase. However, in the case the Action frame TX ended up getting scheduled when the Search phase scan had already started (e.g., due to the driver reporting Invitation Request RX late enough for the Listen-to-Search transition having already started), the postponed Action frame TX status processing did not cover the specific case of non-success Invitation Response. This could result in the p2p_find operation getting stopped (stuck in SEARCH state) unexpectedly Fix this by calling p2p_check_after_scan_tx_continuation() from Invitation Response TX callback handler if the invitation was rejected. CRs-Fixed: 1002261 Git-commit: 3433721c5f9073c0d45c1109b825f1dcbabbf517 Git-repo : git://w1.fi/srv/git/hostap.git Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Change-Id: Ic045516f31520fbe8ba068c88fe247df1746f29a
-rw-r--r--src/p2p/p2p.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index 5da8ab38..8c553024 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -3706,6 +3706,8 @@ void p2p_send_action_cb(struct p2p_data *p2p, unsigned int freq, const u8 *dst,
break;
case P2P_PENDING_INVITATION_RESPONSE:
p2p_invitation_resp_cb(p2p, success);
+ if (p2p->inv_status != P2P_SC_SUCCESS)
+ p2p_check_after_scan_tx_continuation(p2p);
break;
case P2P_PENDING_DEV_DISC_REQUEST:
p2p_dev_disc_req_cb(p2p, success);