]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2P: Do not drop P2P IEs from BSS table on non-P2P scans
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 27 Sep 2013 18:03:16 +0000 (21:03 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 14 Oct 2013 14:34:41 +0000 (17:34 +0300)
This could happen when non-P2P station interface runs a scan without P2P
IE in the Probe Request frame. P2P GO would reply to that with a Probe
Response that does not include P2P IE. Do not update the IEs in this BSS
entry to avoid such loss of information that may be needed for P2P
operations to determine group information.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/bss.c

index 7d9bac5d38f9143a7633a4811920de8ec62dd475..86f4bf15e3d88ac41dc29899358024726af6554e 100644 (file)
@@ -502,6 +502,22 @@ wpa_bss_update(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
        wpa_bss_copy_res(bss, res, fetch_time);
        /* Move the entry to the end of the list */
        dl_list_del(&bss->list);
+#ifdef CONFIG_P2P
+       if (wpa_bss_get_vendor_ie(bss, P2P_IE_VENDOR_TYPE) &&
+           !wpa_scan_get_vendor_ie(res, P2P_IE_VENDOR_TYPE)) {
+               /*
+                * This can happen when non-P2P station interface runs a scan
+                * without P2P IE in the Probe Request frame. P2P GO would reply
+                * to that with a Probe Response that does not include P2P IE.
+                * Do not update the IEs in this BSS entry to avoid such loss of
+                * information that may be needed for P2P operations to
+                * determine group information.
+                */
+               wpa_dbg(wpa_s, MSG_DEBUG, "BSS: Do not update scan IEs for "
+                       MACSTR " since that would remove P2P IE information",
+                       MAC2STR(bss->bssid));
+       } else
+#endif /* CONFIG_P2P */
        if (bss->ie_len + bss->beacon_ie_len >=
            res->ie_len + res->beacon_ie_len) {
                os_memcpy(bss + 1, res + 1, res->ie_len + res->beacon_ie_len);