P2P: Stop remain-on-channel prior to starting join-a-group client
authorJouni Malinen <jouni@qca.qualcomm.com>
Thu, 29 Dec 2011 11:28:17 +0000 (13:28 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 29 Dec 2011 11:28:17 +0000 (13:28 +0200)
This fixes issues with drivers that do not handle concurrent
remain-on-channel and scan operations in a case where Provision
Discovery Response frame is not received to stop the Action frame
handshake.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/p2p_supplicant.c

index 1ca8357..2fb2d0a 100644 (file)
@@ -2732,6 +2732,13 @@ static int wpas_p2p_join_start(struct wpa_supplicant *wpa_s)
        os_memcpy(res.peer_interface_addr, wpa_s->pending_join_iface_addr,
                  ETH_ALEN);
        res.wps_method = wpa_s->pending_join_wps_method;
+       if (wpa_s->off_channel_freq || wpa_s->roc_waiting_drv_freq) {
+               wpa_printf(MSG_DEBUG, "P2P: Cancel remain-on-channel prior to "
+                          "starting client");
+               wpa_drv_cancel_remain_on_channel(wpa_s);
+               wpa_s->off_channel_freq = 0;
+               wpa_s->roc_waiting_drv_freq = 0;
+       }
        wpas_start_wps_enrollee(group, &res);
 
        /*