#include "driver_i.h"
#include "mlme.h"
#include "wps_supplicant.h"
+#include "p2p_supplicant.h"
+#include "p2p/p2p.h"
#include "notify.h"
#include "bss.h"
#include "scan.h"
wpa_printf(MSG_DEBUG, "Starting AP scan for wildcard SSID");
}
+#ifdef CONFIG_P2P
+ wpa_s->wps->dev.p2p = 1;
+ if (!wps) {
+ wps = 1;
+ req_type = WPS_REQ_ENROLLEE_INFO;
+ }
+
+ if (params.freqs == NULL && wpa_s->p2p_in_provisioning &&
+ wpa_s->go_params) {
+ /* Optimize provisioning state scan based on GO information */
+ if (wpa_s->p2p_in_provisioning < 5 &&
+ wpa_s->go_params->freq > 0) {
+ wpa_printf(MSG_DEBUG, "P2P: Scan only GO preferred "
+ "frequency %d MHz",
+ wpa_s->go_params->freq);
+ params.freqs = os_zalloc(2 * sizeof(int));
+ if (params.freqs)
+ params.freqs[0] = wpa_s->go_params->freq;
+ } else if (wpa_s->go_params->freq_list[0]) {
+ wpa_printf(MSG_DEBUG, "P2P: Scan only common "
+ "channels");
+ int_array_concat(¶ms.freqs,
+ wpa_s->go_params->freq_list);
+ if (params.freqs)
+ int_array_sort_unique(params.freqs);
+ }
+ wpa_s->p2p_in_provisioning++;
+ }
+#endif /* CONFIG_P2P */
+
#ifdef CONFIG_WPS
if (params.freqs == NULL && wpa_s->after_wps && wpa_s->wps_freq) {
/*
}
#endif /* CONFIG_WPS */
+#ifdef CONFIG_P2P
+ if (wps_ie) {
+ if (wpabuf_resize(&wps_ie, 100) == 0) {
+ wpas_p2p_scan_ie(wpa_s, wps_ie);
+ params.extra_ies = wpabuf_head(wps_ie);
+ params.extra_ies_len = wpabuf_len(wps_ie);
+ }
+ }
+#endif /* CONFIG_P2P */
+
params.filter_ssids = wpa_supplicant_build_filter_ssids(
wpa_s->conf, ¶ms.num_filter_ssids);