P2P: Fix device discoverability to not wait before sending GO Neg Req
authorJouni Malinen <jouni.malinen@atheros.com>
Sat, 10 Jul 2010 00:23:11 +0000 (17:23 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 9 Sep 2010 14:17:20 +0000 (07:17 -0700)
When we receive Device Discoverability Response, we need to initiate
new GO Negotiation as quickly as possible to avoid the target client
from going back to sleep. Make sure we do not end up in
P2P_CONNECT_LISTEN state (short Listen mode) in this case.

src/p2p/p2p_dev_disc.c

index ac2a177..7bd080a 100644 (file)
@@ -293,6 +293,15 @@ void p2p_process_dev_disc_resp(struct p2p_data *p2p, const u8 *sa,
                 */
                wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG,
                        "P2P: Client discoverability request succeeded");
+               if (p2p->state == P2P_CONNECT) {
+                       /*
+                        * Change state to force the timeout to start in
+                        * P2P_CONNECT again without going through the short
+                        * Listen state.
+                        */
+                       p2p_set_state(p2p, P2P_CONNECT_LISTEN);
+                       p2p->cfg->send_action_done(p2p->cfg->cb_ctx);
+               }
                p2p_set_timeout(p2p, 0, 0);
        } else {
                /*