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)