From: Mikael Kanstrup Date: Tue, 21 Oct 2014 10:08:30 +0000 (+0200) Subject: P2P: Use neg_freq when re-establish persistent group as GC X-Git-Tag: hostap_2_4~1240 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=commitdiff_plain;h=431dd8bb118dacfb19320c08d5a8d829277dbc12 P2P: Use neg_freq when re-establish persistent group as GC When GC receives invitation response and tries to re-establish connection to a persistent group channels from passive list should be allowed. A missing check for operation mode triggered reselection of operating channel from active channels only to happen and thus fail the connect attempt. Add a check for operation mode and if GC instead use negotiated frequency (i.e. GO operating channel from invitation response). Signed-off-by: Mikael Kanstrup --- diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 8cd43df..175923b 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -5507,13 +5507,21 @@ int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s, wpa_s->p2p_fallback_to_go_neg = 0; - if (force_freq > 0) { - freq = wpas_p2p_select_go_freq(wpa_s, force_freq); - if (freq < 0) - return -1; + if (ssid->mode == WPAS_MODE_P2P_GO) { + if (force_freq > 0) { + freq = wpas_p2p_select_go_freq(wpa_s, force_freq); + if (freq < 0) + return -1; + } else { + freq = wpas_p2p_select_go_freq(wpa_s, neg_freq); + if (freq < 0 || + (freq > 0 && !freq_included(channels, freq))) + freq = 0; + } } else { - freq = wpas_p2p_select_go_freq(wpa_s, neg_freq); - if (freq < 0 || (freq > 0 && !freq_included(channels, freq))) + freq = neg_freq; + if (freq < 0 || + (freq > 0 && !freq_included(channels, freq))) freq = 0; }