diff --git a/tests/hwsim/test_p2p_grpform.py b/tests/hwsim/test_p2p_grpform.py index 9f5b97c1b..11c0513a6 100644 --- a/tests/hwsim/test_p2p_grpform.py +++ b/tests/hwsim/test_p2p_grpform.py @@ -557,3 +557,31 @@ def test_grpform_pd_no_probe_resp(dev): ev = dev[1].wait_global_event(["P2P-GROUP-STARTED"], timeout=15) if ev is None: raise Exception("Group formation timed out") + +def test_go_neg_two_peers(dev): + """P2P GO Negotiation rejected due to already started negotiation with another peer""" + addr0 = dev[0].p2p_dev_addr() + addr1 = dev[1].p2p_dev_addr() + addr2 = dev[2].p2p_dev_addr() + dev[1].p2p_listen() + dev[2].p2p_listen() + if not dev[0].discover_peer(addr1): + raise Exception("Could not discover peer") + if not dev[0].discover_peer(addr2): + raise Exception("Could not discover peer") + if "OK" not in dev[0].request("P2P_CONNECT " + addr2 + " pbc auth"): + raise Exception("Failed to authorize GO Neg") + dev[0].p2p_listen() + if not dev[2].discover_peer(addr0): + raise Exception("Could not discover peer") + if "OK" not in dev[0].request("P2P_CONNECT " + addr1 + " pbc"): + raise Exception("Failed to initiate GO Neg") + ev = dev[1].wait_global_event(["P2P-GO-NEG-REQUEST"], timeout=5) + if ev is None: + raise Exception("timeout on GO Neg RX event") + dev[2].request("P2P_CONNECT " + addr0 + " pbc") + ev = dev[2].wait_global_event(["GO-NEG-FAILURE"], timeout=10) + if ev is None: + raise Exception("Rejection not reported") + if "status=5" not in ev: + raise Exception("Unexpected status code in rejection: " + ev)