[PATCH 3/3] P2P: Optimize scan frequencies list when re-joining a persistent group
Jouni Malinen
j
Sun Mar 22 12:17:19 PDT 2015
On Mon, Mar 16, 2015 at 01:20:03AM -0400, Ilan Peer wrote:
> When starting a P2P client to re-join a persistent group
> (P2P_GROUP_ADD persistent=<id>), it is possible that the P2P GO was
> already found in previous scans. Try to get the P2P GO operating
> frequency from the scan results list so wpa_supplicant will initially
> scan only the P2P GO known operating frequency.
> diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
> @@ -5504,18 +5504,26 @@ int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s,
> - } else {
> - freq = neg_freq;
> - if (freq < 0 ||
> - (freq > 0 && !freq_included(channels, freq)))
> - freq = 0;
> - }
> + } else if (ssid->mode == WPAS_MODE_INFRA) {
> + freq = wpas_p2p_select_go_freq(wpa_s, neg_freq);
That looks suspicious.. wpas_p2p_select_go_freq() is used only on the GO
device, so this cannot really be correct.
> + if (freq <= 0 ||
> + (freq > 0 && !freq_included(channels, freq))) {
> + struct os_reltime now;
> + struct wpa_bss *bss =
> + wpa_bss_get_p2p_dev_addr(wpa_s, ssid->bssid);
> +
> + os_get_reltime(&now);
> + if (bss &&
> + !os_reltime_expired(&now, &bss->last_update, 5))
> + freq = bss->freq;
> + else
> + freq = 0;
> + }
And the freq > 0 && !freq_included(channels, freq) case should clear
freq to 0 to match the current behavior.
--
Jouni Malinen PGP id EFC895FA
More information about the Hostap
mailing list