From 3c2bd55f032be82dfacb81d270060beec702b0f2 Mon Sep 17 00:00:00 2001 From: Sunil Dutt Date: Wed, 24 May 2017 21:10:53 +0530 Subject: [PATCH] P2P: wpas_p2p_select_go_freq() to check for supported pref_freq This commit is similar to the commit 783c2920cc9117b663506dc82223867bfa792a5d ('P2P: Check if the pref_freq reported by the driver supports P2P') but extends the check for supported pref_freq to wpas_p2p_select_go_freq(). This avoids issues with P2P_GROUP_ADD ending up selecting an unexpected channel when get_pref_freq_list() (i.e., QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST) is used. Filter the list by removing channels that do not allow P2P operation at all. Previously, only the explicitly disallowed channels were removed and that could have resulted in selecting an operating channel that is not allowed for P2P and failing to complete the operation to start the group. Signed-off-by: Jouni Malinen --- wpa_supplicant/p2p_supplicant.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 73bed5787..413e4e00b 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -5616,8 +5616,10 @@ static int wpas_p2p_select_go_freq(struct wpa_supplicant *wpa_s, int freq) if (!res && size > 0) { i = 0; while (i < size && - wpas_p2p_disallowed_freq(wpa_s->global, - pref_freq_list[i])) { + (!p2p_supported_freq(wpa_s->global->p2p, + pref_freq_list[i]) || + wpas_p2p_disallowed_freq(wpa_s->global, + pref_freq_list[i]))) { wpa_printf(MSG_DEBUG, "P2P: preferred_freq_list[%d]=%d is disallowed", i, pref_freq_list[i]);