TDLS: Ignore incoming TDLS Setup Response retries
authorArik Nemtsov <arik@wizery.com>
Thu, 10 Dec 2015 10:56:07 +0000 (12:56 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 18 Dec 2015 18:32:39 +0000 (20:32 +0200)
The Setup Response timer is relatively fast (500 ms) and there are
instances where it fires on the responder side after the initiator has
already sent out the TDLS Setup Confirm frame. Prevent the processing of
this stale TDLS Setup Response frame on the initiator side.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
src/rsn_supp/tdls.c

index 48752d7..86e509e 100644 (file)
@@ -2176,6 +2176,14 @@ static int wpa_tdls_process_tpk_m2(struct wpa_sm *sm, const u8 *src_addr,
                           "ignore TPK M2 from " MACSTR, MAC2STR(src_addr));
                return -1;
        }
+
+       if (peer->tpk_success) {
+               wpa_printf(MSG_INFO, "TDLS: Ignore incoming TPK M2 retry, from "
+                          MACSTR " as TPK M3 was already sent",
+                          MAC2STR(src_addr));
+               return 0;
+       }
+
        wpa_tdls_tpk_retry_timeout_cancel(sm, peer, WLAN_TDLS_SETUP_REQUEST);
 
        if (len < 3 + 2 + 1) {