P2P: Set p2p_go_wait_client in invitation_result() cb

When an invitation to join an existing group is accepted by the
peer device, set p2p_go_wait_client to the current time so
that wpas_p2p_in_progress() would return != 0, thus preventing
P2P CSA, scanning etc., that would interfere with the peer
device connection.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
Ilan Peer 2015-11-22 15:57:50 +02:00 committed by Jouni Malinen
parent 845d48c133
commit 6cbbae2cf8

View file

@ -3099,9 +3099,23 @@ static void wpas_invitation_result(void *ctx, int status, const u8 *bssid,
wpa_printf(MSG_DEBUG, "P2P: Invitation result - status=%d peer=" MACSTR, wpa_printf(MSG_DEBUG, "P2P: Invitation result - status=%d peer=" MACSTR,
status, MAC2STR(peer)); status, MAC2STR(peer));
if (wpa_s->pending_invite_ssid_id == -1) { if (wpa_s->pending_invite_ssid_id == -1) {
struct wpa_supplicant *group_if =
wpa_s->global->p2p_invite_group;
if (status == P2P_SC_FAIL_UNKNOWN_GROUP) if (status == P2P_SC_FAIL_UNKNOWN_GROUP)
wpas_remove_persistent_client(wpa_s, peer); wpas_remove_persistent_client(wpa_s, peer);
return; /* Invitation to active group */
/*
* Invitation to an active group. If this is successful and we
* are the GO, set the client wait to postpone some concurrent
* operations and to allow provisioning and connection to happen
* more quickly.
*/
if (status == P2P_SC_SUCCESS &&
group_if && group_if->current_ssid &&
group_if->current_ssid->mode == WPAS_MODE_P2P_GO)
os_get_reltime(&wpa_s->global->p2p_go_wait_client);
return;
} }
if (status == P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE) { if (status == P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE) {