From: Ilan Peer Date: Sun, 22 Nov 2015 13:57:50 +0000 (+0200) Subject: P2P: Set p2p_go_wait_client in invitation_result() cb X-Git-Tag: hostap_2_6~1356 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6cbbae2cf8ae8380ed542e1bda72ec923697ea7a;p=thirdparty%2Fhostap.git 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 --- diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 4e27c87de..88c90d044 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -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, status, MAC2STR(peer)); 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) 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) {