aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2013-10-24 10:24:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2013-10-24 10:24:55 -0700
commit3663b786be68b1d8cb50ecd0f37a739451c0e830 (patch)
treef3e9309728b6c177e296bb7940e8d17368995e23
parent0eed4b150593d5cfbb62e02e018fbc8b839a7a29 (diff)
parentec9327ed080998bd7e9910cbadcf4735d660b83c (diff)
downloadandroid_external_wpa_supplicant_8-3663b786be68b1d8cb50ecd0f37a739451c0e830.tar.gz
android_external_wpa_supplicant_8-3663b786be68b1d8cb50ecd0f37a739451c0e830.tar.bz2
android_external_wpa_supplicant_8-3663b786be68b1d8cb50ecd0f37a739451c0e830.zip
Merge "P2P: Do not drop P2P IEs from BSS table on non-P2P scans"
-rw-r--r--wpa_supplicant/bss.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c
index ec640b5f..caec1bae 100644
--- a/wpa_supplicant/bss.c
+++ b/wpa_supplicant/bss.c
@@ -501,6 +501,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);