def test_go_neg_with_bss_on_disallowed_chan(dev, apdev): """P2P channel selection: GO negotiation with station interface on a disallowed channel""" with HWSimRadio(n_channels=2) as (radio, iface): wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') wpas.interface_add(iface) wpas.request("SET p2p_no_group_iface 0") if wpas.get_mcc() < 2: raise Exception("New radio does not support MCC") try: hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '1' }) # make sure PBC overlap from old test cases is not maintained dev[1].flush_scan_cache() wpas.connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412") wpas.request("P2P_SET disallow_freq 2412") #wpas as GO [i_res, r_res] = go_neg_pbc(i_dev=wpas, i_intent=10, r_dev=dev[1], r_intent=1) check_grpform_results(i_res, r_res) if i_res['role'] != "GO": raise Exception("GO not selected according to go_intent") if i_res['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(wpas, hapd) wpas.remove_group(i_res['ifname']) dev[1].wait_go_ending_session() dev[1].flush_scan_cache() wpas.dump_monitor() dev[1].dump_monitor() #wpas as client [i_res2, r_res2] = go_neg_pbc(i_dev=wpas, i_intent=1, r_dev=dev[1], r_intent=10) check_grpform_results(i_res2, r_res2) if i_res2['role'] != "client": raise Exception("GO not selected according to go_intent") if i_res2['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(wpas, hapd) dev[1].remove_group(r_res2['ifname']) wpas.wait_go_ending_session() ev = dev[1].wait_global_event(["P2P-GROUP-REMOVED"], timeout=5) if ev is None: raise Exception("Group removal not indicated") wpas.request("DISCONNECT") hapd.disable() finally: wpas.request("P2P_SET disallow_freq ")
def test_no_go_freq(dev, apdev): """P2P channel selection: no GO freq""" try: dev[0].request("SET p2p_no_go_freq 2412") # dev[0] as client, channel 1 is ok [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=14, r_freq=2412) check_grpform_results(i_res, r_res) if i_res['freq'] != "2412": raise Exception("P2P group not formed on forced freq") dev[1].remove_group(r_res['ifname']) fail = False # dev[0] as GO, channel 1 is not allowed try: dev[0].request("SET p2p_no_go_freq 2412") [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=14, r_dev=dev[1], r_intent=1, r_freq=2412) check_grpform_results(i_res2, r_res2) fail = True except: pass if fail: raise Exception("GO set on a disallowed freq") finally: dev[0].request("SET p2p_no_go_freq ")
def test_go_neg_with_bss_connected(dev, apdev): """P2P channel selection: GO negotiation when station interface is connected""" dev[0].request("SET p2p_no_group_iface 0") hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '5' }) dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2432") #dev[0] as GO [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1], r_intent=1) check_grpform_results(i_res, r_res) if i_res['role'] != "GO": raise Exception("GO not selected according to go_intent") if i_res['freq'] != "2432": raise Exception("Group formed on a different frequency than BSS") hwsim_utils.test_connectivity(dev[0], hapd) dev[0].remove_group(i_res['ifname']) if dev[0].get_mcc() > 1: logger.info("Skip as-client case due to MCC being enabled") return; #dev[0] as client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=10) check_grpform_results(i_res2, r_res2) if i_res2['role'] != "client": raise Exception("GO not selected according to go_intent") if i_res2['freq'] != "2432": raise Exception("Group formed on a different frequency than BSS") hwsim_utils.test_connectivity(dev[0], hapd)
def test_go_neg_with_bss_connected(dev, apdev): """P2P channel selection: GO negotiation when station interface is connected""" dev[0].request("SET p2p_no_group_iface 0") hostapd.add_ap(apdev[0]['ifname'], {"ssid": 'bss-2.4ghz', "channel": '5'}) dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2432") #dev[0] as GO [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1], r_intent=1) check_grpform_results(i_res, r_res) if i_res['role'] != "GO": raise Exception("GO not selected according to go_intent") if i_res['freq'] != "2432": raise Exception("Group formed on a different frequency than BSS") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname']) dev[0].remove_group(i_res['ifname']) if dev[0].get_mcc() > 1: logger.info("Skip as-client case due to MCC being enabled") return #dev[0] as client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=10) check_grpform_results(i_res2, r_res2) if i_res2['role'] != "client": raise Exception("GO not selected according to go_intent") if i_res2['freq'] != "2432": raise Exception("Group formed on a different frequency than BSS") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
def test_no_go_freq(dev, apdev): """P2P channel selection: no GO freq""" try: dev[0].request("SET p2p_no_go_freq 2412") # dev[0] as client, channel 1 is ok [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=14, r_freq=2412) check_grpform_results(i_res, r_res) if i_res['freq'] != "2412": raise Exception("P2P group not formed on forced freq") dev[1].remove_group(r_res['ifname']) dev[0].wait_go_ending_session() dev[0].flush_scan_cache() fail = False # dev[0] as GO, channel 1 is not allowed try: dev[0].request("SET p2p_no_go_freq 2412") [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=14, r_dev=dev[1], r_intent=1, r_freq=2412) check_grpform_results(i_res2, r_res2) fail = True except: pass if fail: raise Exception("GO set on a disallowed freq") finally: dev[0].request("SET p2p_no_go_freq ")
def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev): """P2P channel selection: GO negotiation with forced freq different than station interface""" if dev[0].get_mcc() < 2: logger.info("Skipping test because driver does not support MCC") return "skip" dev[0].request("SET p2p_no_group_iface 0") hostapd.add_ap(apdev[0]['ifname'], { "country_code": 'US', "ssid": 'bss-5ghz', "hw_mode": 'a', "channel": '40' }) dev[0].connect("bss-5ghz", key_mgmt="NONE", scan_freq="5200") # GO and peer force the same freq, different than BSS freq, # dev[0] to become GO [i_res, r_res] = go_neg_pbc(i_dev=dev[1], i_intent=1, i_freq=5180, r_dev=dev[0], r_intent=14, r_freq=5180) check_grpform_results(i_res, r_res) if i_res['freq'] != "5180": raise Exception("P2P group formed on unexpected frequency: " + i_res['freq']) if r_res['role'] != "GO": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname']) dev[0].remove_group(r_res['ifname']) # GO and peer force the same freq, different than BSS freq, dev[0] to # become client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[1], i_intent=14, i_freq=2422, r_dev=dev[0], r_intent=1, r_freq=2422) check_grpform_results(i_res2, r_res2) if i_res2['freq'] != "2422": raise Exception("P2P group formed on unexpected frequency: " + i_res2['freq']) if r_res2['role'] != "client": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
def test_go_neg_with_bss_on_disallowed_chan(dev, apdev): """P2P channel selection: GO negotiation with station interface on a disallowed channel""" dev[0].request("SET p2p_no_group_iface 0") if dev[0].get_mcc() < 2: logger.info("Skipping test because driver does not support MCC") return "skip" try: hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '1' }) dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412") dev[0].request("P2P_SET disallow_freq 2412") #dev[0] as GO [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1], r_intent=1) check_grpform_results(i_res, r_res) if i_res['role'] != "GO": raise Exception("GO not selected according to go_intent") if i_res['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname']) dev[0].remove_group(i_res['ifname']) #dev[0] as client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=10) check_grpform_results(i_res2, r_res2) if i_res2['role'] != "client": raise Exception("GO not selected according to go_intent") if i_res2['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname']) finally: dev[0].request("P2P_SET disallow_freq ")
def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev): """P2P channel selection: GO negotiation with forced freq different than station interface""" with HWSimRadio(n_channels=2) as (radio, iface): wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') wpas.interface_add(iface) if wpas.get_mcc() < 2: raise Exception("New radio does not support MCC") # Clear possible PBC session overlap from previous test case dev[1].flush_scan_cache() wpas.request("SET p2p_no_group_iface 0") hapd = hostapd.add_ap(apdev[0]['ifname'], { "country_code": 'US', "ssid": 'bss-5ghz', "hw_mode": 'a', "channel": '40' }) wpas.connect("bss-5ghz", key_mgmt="NONE", scan_freq="5200") # GO and peer force the same freq, different than BSS freq, # wpas to become GO [i_res, r_res] = go_neg_pbc(i_dev=dev[1], i_intent=1, i_freq=5180, r_dev=wpas, r_intent=14, r_freq=5180) check_grpform_results(i_res, r_res) if i_res['freq'] != "5180": raise Exception("P2P group formed on unexpected frequency: " + i_res['freq']) if r_res['role'] != "GO": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(wpas, hapd) wpas.remove_group(r_res['ifname']) dev[1].wait_go_ending_session() dev[1].flush_scan_cache() # GO and peer force the same freq, different than BSS freq, wpas to # become client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[1], i_intent=14, i_freq=2422, r_dev=wpas, r_intent=1, r_freq=2422) check_grpform_results(i_res2, r_res2) if i_res2['freq'] != "2422": raise Exception("P2P group formed on unexpected frequency: " + i_res2['freq']) if r_res2['role'] != "client": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(wpas, hapd) wpas.request("DISCONNECT") hapd.request("DISABLE") subprocess.call(['iw', 'reg', 'set', '00']) wpas.flush_scan_cache()
def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev): """P2P channel selection: GO negotiation with forced freq different than station interface""" if dev[0].get_mcc() < 2: logger.info("Skipping test because driver does not support MCC") return "skip" dev[0].request("SET p2p_no_group_iface 0") hapd = hostapd.add_ap(apdev[0]['ifname'], { "country_code": 'US', "ssid": 'bss-5ghz', "hw_mode": 'a', "channel": '40' }) dev[0].connect("bss-5ghz", key_mgmt="NONE", scan_freq="5200") # GO and peer force the same freq, different than BSS freq, # dev[0] to become GO [i_res, r_res] = go_neg_pbc(i_dev=dev[1], i_intent=1, i_freq=5180, r_dev=dev[0], r_intent=14, r_freq=5180) check_grpform_results(i_res, r_res) if i_res['freq'] != "5180": raise Exception("P2P group formed on unexpected frequency: " + i_res['freq']) if r_res['role'] != "GO": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(dev[0], hapd) dev[0].remove_group(r_res['ifname']) # GO and peer force the same freq, different than BSS freq, dev[0] to # become client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[1], i_intent=14, i_freq=2422, r_dev=dev[0], r_intent=1, r_freq=2422) check_grpform_results(i_res2, r_res2) if i_res2['freq'] != "2422": raise Exception("P2P group formed on unexpected frequency: " + i_res2['freq']) if r_res2['role'] != "client": raise Exception("GO not selected according to go_intent") hwsim_utils.test_connectivity(dev[0], hapd)
def test_go_neg_peers_force_diff_freq(dev, apdev): """P2P channel selection when peers for different frequency""" try: [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=14, i_freq=5180, r_dev=dev[1], r_intent=0, r_freq=5200) except Exception, e: return
def test_go_neg_peers_force_diff_freq(dev, apdev): try: [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=14, i_freq=5180, r_dev=dev[1], r_intent=0, r_freq=5200) except Exception, e: return
def test_go_neg_with_bss_on_disallowed_chan(dev, apdev): """P2P channel selection: GO negotiation with station interface on a disallowed channel""" dev[0].request("SET p2p_no_group_iface 0") if dev[0].get_mcc() < 2: logger.info("Skipping test because driver does not support MCC") return "skip" try: hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '1' }) dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412") dev[0].request("P2P_SET disallow_freq 2412") #dev[0] as GO [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1], r_intent=1) check_grpform_results(i_res, r_res) if i_res['role'] != "GO": raise Exception("GO not selected according to go_intent") if i_res['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(dev[0], hapd) dev[0].remove_group(i_res['ifname']) #dev[0] as client [i_res2, r_res2] = go_neg_pbc(i_dev=dev[0], i_intent=1, r_dev=dev[1], r_intent=10) check_grpform_results(i_res2, r_res2) if i_res2['role'] != "client": raise Exception("GO not selected according to go_intent") if i_res2['freq'] == "2412": raise Exception("Group formed on a disallowed channel") hwsim_utils.test_connectivity(dev[0], hapd) finally: dev[0].request("P2P_SET disallow_freq ")
def test_concurrent_grpform_while_connecting3(dev, apdev): """Concurrent P2P group formation while connecting to an AP (3)""" logger.info("Start connection to an infrastructure AP") hapd = hostapd.add_ap(apdev[0]["ifname"], {"ssid": "test-open"}) dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False) logger.info("Form a P2P group while connecting to an AP") dev[0].request("SET p2p_no_group_iface 0") [i_res, r_res] = go_neg_pbc(i_dev=dev[1], i_intent=15, i_freq=2412, r_dev=dev[0], r_intent=0, r_freq=2412) check_grpform_results(i_res, r_res) remove_group(dev[0], dev[1]) logger.info("Confirm AP connection after P2P group removal") dev[0].wait_completed() hwsim_utils.test_connectivity(dev[0], hapd)
def test_concurrent_grpform_while_connecting3(dev, apdev): """Concurrent P2P group formation while connecting to an AP (3)""" logger.info("Start connection to an infrastructure AP") hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" }) dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False) logger.info("Form a P2P group while connecting to an AP") dev[0].request("SET p2p_no_group_iface 0") [i_res, r_res] = go_neg_pbc(i_dev=dev[1], i_intent=15, i_freq=2412, r_dev=dev[0], r_intent=0, r_freq=2412) check_grpform_results(i_res, r_res) remove_group(dev[0], dev[1]) logger.info("Confirm AP connection after P2P group removal") dev[0].wait_completed() hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])