P2P: Fix channel selection for MCC case

Commit 0d08efa447 modified
wpas_p2p_setup_freqs() design to use number of MCC channels capability
from the driver. However, it resulted in regression on how the preferred
vs. forced channel selection is done in the case of a MCC device.
force_freq was set unconditionally even though this was supposed to be
done only if no additional channels are available. pref_freq needs to be
used when possible to avoid preventing connection.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2013-11-18 16:53:44 +02:00 committed by Jouni Malinen
parent f86d282f43
commit b17d89bd10

View file

@ -4162,13 +4162,14 @@ static int wpas_p2p_setup_freqs(struct wpa_supplicant *wpa_s, int freq,
if (!p2p_supported_freq(wpa_s->global->p2p, freqs[i])) if (!p2p_supported_freq(wpa_s->global->p2p, freqs[i]))
continue; continue;
wpa_printf(MSG_DEBUG, "P2P: Try to force us to use frequency (%u MHz) which is already in use",
*force_freq);
*force_freq = freqs[i];
if (*pref_freq == 0 && num < wpa_s->num_multichan_concurrent) { if (*pref_freq == 0 && num < wpa_s->num_multichan_concurrent) {
wpa_printf(MSG_DEBUG, "P2P: Try to prefer a frequency we are already using"); wpa_printf(MSG_DEBUG, "P2P: Try to prefer a frequency (%u MHz) we are already using",
*pref_freq = *force_freq; freqs[i]);
*pref_freq = freqs[i];
} else {
wpa_printf(MSG_DEBUG, "P2P: Try to force us to use frequency (%u MHz) which is already in use",
freqs[i]);
*force_freq = freqs[i];
} }
break; break;
} }