diff mbox

[4/4] tests: verify tdls responder teardown in encrypted network

Message ID 1412016474-9940-5-git-send-email-ilan.peer@intel.com
State Accepted
Headers show

Commit Message

Peer, Ilan Sept. 29, 2014, 6:47 p.m. UTC
From: Arik Nemtsov <arik@wizery.com>

Older mac80211 implementations did not set the link identifier
appropriately, resulting in an incorrect teardown packet being sent the
peer. wpa_s adds the FTE containing the MIC field calculated using
the correct link-identifier. This causes a MIC failure on the other side
and the teardown is discarded.
Verify this case is fixed by newer kernel and wpa_s code.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
---
 tests/hwsim/test_ap_tdls.py |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/tests/hwsim/test_ap_tdls.py b/tests/hwsim/test_ap_tdls.py
index 7cbcca9..55f89f6 100644
--- a/tests/hwsim/test_ap_tdls.py
+++ b/tests/hwsim/test_ap_tdls.py
@@ -129,13 +129,16 @@  def setup_tdls(sta0, sta1, ap, reverse=False, expect_fail=False, allow_skip=Fals
     tdls_check_dl(sta0, sta1, bssid, addr0, addr1)
     check_connectivity(sta0, sta1, ap)
 
-def teardown_tdls(sta0, sta1, ap):
+def teardown_tdls(sta0, sta1, ap, responder=False):
     logger.info("Teardown TDLS")
     check_connectivity(sta0, sta1, ap)
     bssid = ap['bssid']
     addr0 = sta0.p2p_interface_addr()
     addr1 = sta1.p2p_interface_addr()
-    sta0.tdls_teardown(addr1)
+    if responder:
+        sta1.tdls_teardown(addr0)
+    else:
+        sta0.tdls_teardown(addr1)
     time.sleep(1)
     wt = Wlantest()
     teardown = wt.get_tdls_counter("teardown", bssid, addr0, addr1);
@@ -319,3 +322,11 @@  def test_ap_wpa2_tdls_bssid_mismatch(dev, apdev):
     finally:
         subprocess.call(['sudo', 'ip', 'link', 'set', 'dev', 'ap-br0', 'down'])
         subprocess.call(['sudo', 'brctl', 'delbr', 'ap-br0'])
+
+def test_ap_wpa2_tdls_responder_teardown(dev, apdev):
+    """TDLS teardown from responder with WPA2-PSK AP"""
+    start_ap_wpa2_psk(apdev[0]['ifname'])
+    wlantest_setup()
+    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    setup_tdls(dev[0], dev[1], apdev[0])
+    teardown_tdls(dev[0], dev[1], apdev[0], responder=True)