diff --git a/tests/hwsim/test_p2ps.py b/tests/hwsim/test_p2ps.py index 6f66c18be..c68466263 100644 --- a/tests/hwsim/test_p2ps.py +++ b/tests/hwsim/test_p2ps.py @@ -1473,3 +1473,61 @@ def test_p2ps_channel_active_go_and_station_different_mcc(dev, apdev): dev[0].request("DISCONNECT") hapd.disable() dev[0].global_request("P2P_SERVICE_DEL asp all") + +def test_p2ps_connect_p2p_device(dev): + """P2PS connection using cfg80211 P2P Device""" + run_p2ps_connect_p2p_device(dev, 0) + +def test_p2ps_connect_p2p_device_no_group_iface(dev): + """P2PS connection using cfg80211 P2P Device (no separate group interface)""" + run_p2ps_connect_p2p_device(dev, 1) + +def run_p2ps_connect_p2p_device(dev, no_group_iface): + with HWSimRadio(use_p2p_device=True) as (radio, iface): + wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') + wpas.interface_add(iface) + wpas.global_request("SET p2p_no_group_iface %d" % no_group_iface) + + p2ps_advertise(r_dev=dev[0], r_role='1', + svc_name='org.wi-fi.wfds.send.rx', + srv_info='I can receive files upto size 2 GB') + [adv_id, rcvd_svc_name] = p2ps_exact_seek(i_dev=wpas, r_dev=dev[0], + svc_name='org.wi-fi.wfds.send.rx', + srv_info='2 GB') + + ev1, ev0 = p2ps_provision(wpas, dev[0], adv_id) + p2ps_connect_pd(dev[0], wpas, ev0, ev1) + + ev0 = dev[0].global_request("P2P_SERVICE_DEL asp " + str(adv_id)) + if ev0 is None: + raise Exception("Unable to remove the advertisement instance") + remove_group(dev[0], wpas) + +def test_p2ps_connect_p2p_device2(dev): + """P2PS connection using cfg80211 P2P Device (reverse)""" + run_p2ps_connect_p2p_device2(dev, 0) + +def test_p2ps_connect_p2p_device2_no_group_iface(dev): + """P2PS connection using cfg80211 P2P Device (reverse) (no separate group interface)""" + run_p2ps_connect_p2p_device2(dev, 1) + +def run_p2ps_connect_p2p_device2(dev, no_group_iface): + with HWSimRadio(use_p2p_device=True) as (radio, iface): + wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') + wpas.interface_add(iface) + wpas.global_request("SET p2p_no_group_iface %d" % no_group_iface) + + p2ps_advertise(r_dev=wpas, r_role='1', + svc_name='org.wi-fi.wfds.send.rx', + srv_info='I can receive files upto size 2 GB') + [adv_id, rcvd_svc_name] = p2ps_exact_seek(i_dev=dev[0], r_dev=wpas, + svc_name='org.wi-fi.wfds.send.rx', + srv_info='2 GB') + + ev1, ev0 = p2ps_provision(dev[0], wpas, adv_id) + p2ps_connect_pd(wpas, dev[0], ev0, ev1) + + ev0 = wpas.global_request("P2P_SERVICE_DEL asp " + str(adv_id)) + if ev0 is None: + raise Exception("Unable to remove the advertisement instance") + remove_group(wpas, dev[0])