#define P2P_EVENT_FIND_STOPPED "P2P-FIND-STOPPED "
#define P2P_EVENT_PERSISTENT_PSK_FAIL "P2P-PERSISTENT-PSK-FAIL id="
#define P2P_EVENT_PRESENCE_RESPONSE "P2P-PRESENCE-RESPONSE "
+#define P2P_EVENT_NFC_BOTH_GO "P2P-NFC-BOTH-GO "
/* parameters: <PMF enabled> <timeout in ms> <Session Information URL> */
#define ESS_DISASSOC_IMMINENT "ESS-DISASSOC-IMMINENT "
dev->flags |= P2P_DEV_REPORTED | P2P_DEV_REPORTED_ONCE;
}
- if (peer_go)
+ if (peer_go && p2p->num_groups > 0)
+ params->next_step = BOTH_GO;
+ else if (peer_go)
params->next_step = JOIN_GROUP;
else if (p2p->num_groups > 0)
params->next_step = AUTH_JOIN;
size_t p2p_len;
enum {
- NO_ACTION, JOIN_GROUP, AUTH_JOIN, INIT_GO_NEG, RESP_GO_NEG
+ NO_ACTION, JOIN_GROUP, AUTH_JOIN, INIT_GO_NEG, RESP_GO_NEG,
+ BOTH_GO
} next_step;
struct p2p_peer_info *peer;
u8 oob_dev_pw[WPS_OOB_PUBKEY_HASH_LEN + 2 +
if (res)
return res;
+ if (params.next_step == NO_ACTION)
+ return 0;
+
+ if (params.next_step == BOTH_GO) {
+ wpa_msg(wpa_s, MSG_INFO, P2P_EVENT_NFC_BOTH_GO "peer=" MACSTR,
+ MAC2STR(params.peer->p2p_device_addr));
+ return 0;
+ }
+
wpabuf_free(wpa_s->p2p_oob_dev_pw);
wpa_s->p2p_oob_dev_pw = NULL;
switch (params.next_step) {
case NO_ACTION:
+ case BOTH_GO:
+ /* already covered above */
return 0;
case JOIN_GROUP:
return wpas_p2p_nfc_join_group(wpa_s, ¶ms);