Revert "Revert "[wpa_supplicant] cumilative patch from commit 3a..."
Revert submission 28102966-revert-26533062-Supplicant_merge_June24-CUATTSRBBR
Reason for revert: Fixed the regression issue (ag/28389573)
Reverted changes: /q/submissionid:28102966-revert-26533062-Supplicant_merge_June24-CUATTSRBBR
Bug: 329004037
Test: Turn ON/OFF SoftAp multiple times
Change-Id: Ibfff2a847be5678f1a6d77e28506a05936812a91
diff --git a/src/p2p/p2p_sd.c b/src/p2p/p2p_sd.c
index b9e753f..d6882e4 100644
--- a/src/p2p/p2p_sd.c
+++ b/src/p2p/p2p_sd.c
@@ -79,8 +79,7 @@
count++;
}
if (!q->for_all_peers &&
- os_memcmp(q->peer, dev->info.p2p_device_addr, ETH_ALEN) ==
- 0)
+ ether_addr_equal(q->peer, dev->info.p2p_device_addr))
goto found;
}
@@ -289,8 +288,7 @@
if (query == NULL)
return -1;
if (p2p->state == P2P_SEARCH &&
- os_memcmp(p2p->sd_query_no_ack, dev->info.p2p_device_addr,
- ETH_ALEN) == 0) {
+ ether_addr_equal(p2p->sd_query_no_ack, dev->info.p2p_device_addr)) {
p2p_dbg(p2p, "Do not start Service Discovery with " MACSTR
" due to it being the first no-ACK peer in this search iteration",
MAC2STR(dev->info.p2p_device_addr));
@@ -491,12 +489,21 @@
u16 slen;
u16 update_indic;
- if (p2p->state != P2P_SD_DURING_FIND || p2p->sd_peer == NULL ||
- os_memcmp(sa, p2p->sd_peer->info.p2p_device_addr, ETH_ALEN) != 0) {
+ if ((p2p->state != P2P_SD_DURING_FIND && p2p->state != P2P_SEARCH) ||
+ !p2p->sd_peer ||
+ !ether_addr_equal(sa, p2p->sd_peer->info.p2p_device_addr)) {
p2p_dbg(p2p, "Ignore unexpected GAS Initial Response from "
MACSTR, MAC2STR(sa));
return;
}
+ if (p2p->state == P2P_SEARCH) {
+ /* It is possible for the TX status and RX response events to be
+ * reordered, so assume the request was ACKed if a response is
+ * received. */
+ p2p_dbg(p2p,
+ "GAS Initial Request had not yet received TX status - process the response anyway");
+ p2p_set_state(p2p, P2P_SD_DURING_FIND);
+ }
p2p->cfg->send_action_done(p2p->cfg->cb_ctx);
p2p_clear_timeout(p2p);
@@ -642,7 +649,7 @@
p2p_dbg(p2p, "No pending SD response fragment available");
return;
}
- if (os_memcmp(sa, p2p->sd_resp_addr, ETH_ALEN) != 0) {
+ if (!ether_addr_equal(sa, p2p->sd_resp_addr)) {
p2p_dbg(p2p, "No pending SD response fragment for " MACSTR,
MAC2STR(sa));
return;
@@ -707,7 +714,7 @@
wpa_hexdump(MSG_DEBUG, "P2P: RX GAS Comeback Response", data, len);
if (p2p->state != P2P_SD_DURING_FIND || p2p->sd_peer == NULL ||
- os_memcmp(sa, p2p->sd_peer->info.p2p_device_addr, ETH_ALEN) != 0) {
+ !ether_addr_equal(sa, p2p->sd_peer->info.p2p_device_addr)) {
p2p_dbg(p2p, "Ignore unexpected GAS Comeback Response from "
MACSTR, MAC2STR(sa));
return;