From 86ae2e8a42c79d6dba94f3a025f84abb5fd98c6c Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sun, 8 Apr 2012 20:42:45 +0300 Subject: [PATCH] P2P: Fix shared freq check and support AP mode validation The previous commit did not use the correct pointer in all operations and was specific to station mode interfaces. Fix and extend it to work with AP/GO interfaces, too. Signed-hostap: Jouni Malinen --- wpa_supplicant/p2p_supplicant.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index fa675fe26..9d31fdbb9 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -2619,15 +2619,19 @@ static int wpas_check_freq_conflict(struct wpa_supplicant *wpa_s, int freq) continue; if (iface->current_ssid == NULL || iface->assoc_freq == 0) continue; - if (wpa_drv_get_bssid(iface, bssid) == 0) { - if (freq != (int) wpa_s->assoc_freq) { - wpa_printf(MSG_DEBUG, "P2P: Frequency " - "conflict - %s connected on %d MHz " - "- new connection on %d MHz", - wpa_s->ifname, wpa_s->assoc_freq, - freq); - return 1; - } + if (iface->current_ssid->mode == WPAS_MODE_AP || + iface->current_ssid->mode == WPAS_MODE_P2P_GO) + shared_freq = iface->current_ssid->frequency; + else if (wpa_drv_get_bssid(iface, bssid) == 0) + shared_freq = iface->assoc_freq; + else + shared_freq = 0; + + if (shared_freq && freq != shared_freq) { + wpa_printf(MSG_DEBUG, "P2P: Frequency conflict - %s " + "connected on %d MHz - new connection on " + "%d MHz", iface->ifname, shared_freq, freq); + return 1; } }