P2P: Clear driver scan cache after BSS_FLUSH

The only_new_results=1 scan parameter was previously set on other scan
cases, but not on the two P2P specific scan triggers. Set this also for
those P2P cases to get consistent behavior after BSS_FLUSH.

This was showing up with number of hwsim P2P test cases maintaining
unexpected scan results from previous test cases due to the flush
operation not really working correctly since the cfg80211 BSS table was
not explicitly cleared.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2017-02-07 22:48:20 +02:00 committed by Jouni Malinen
parent 0d6dc6830c
commit fcb303a57f

View file

@ -307,6 +307,11 @@ static void wpas_p2p_trigger_scan_cb(struct wpa_radio_work *work, int deinit)
return; return;
} }
if (wpa_s->clear_driver_scan_cache) {
wpa_printf(MSG_DEBUG,
"Request driver to clear scan cache due to local BSS flush");
params->only_new_results = 1;
}
ret = wpa_drv_scan(wpa_s, params); ret = wpa_drv_scan(wpa_s, params);
if (ret == 0) if (ret == 0)
wpa_s->curr_scan_cookie = params->scan_cookie; wpa_s->curr_scan_cookie = params->scan_cookie;
@ -322,6 +327,7 @@ static void wpas_p2p_trigger_scan_cb(struct wpa_radio_work *work, int deinit)
os_get_reltime(&wpa_s->scan_trigger_time); os_get_reltime(&wpa_s->scan_trigger_time);
wpa_s->scan_res_handler = wpas_p2p_scan_res_handler; wpa_s->scan_res_handler = wpas_p2p_scan_res_handler;
wpa_s->own_scan_requested = 1; wpa_s->own_scan_requested = 1;
wpa_s->clear_driver_scan_cache = 0;
wpa_s->p2p_scan_work = work; wpa_s->p2p_scan_work = work;
} }
@ -5002,6 +5008,12 @@ static void wpas_p2p_join_scan_req(struct wpa_supplicant *wpa_s, int freq,
params.extra_ies = wpabuf_head(ies); params.extra_ies = wpabuf_head(ies);
params.extra_ies_len = wpabuf_len(ies); params.extra_ies_len = wpabuf_len(ies);
if (wpa_s->clear_driver_scan_cache) {
wpa_printf(MSG_DEBUG,
"Request driver to clear scan cache due to local BSS flush");
params.only_new_results = 1;
}
/* /*
* Run a scan to update BSS table and start Provision Discovery once * Run a scan to update BSS table and start Provision Discovery once
* the new scan results become available. * the new scan results become available.
@ -5011,6 +5023,7 @@ static void wpas_p2p_join_scan_req(struct wpa_supplicant *wpa_s, int freq,
os_get_reltime(&wpa_s->scan_trigger_time); os_get_reltime(&wpa_s->scan_trigger_time);
wpa_s->scan_res_handler = wpas_p2p_scan_res_join; wpa_s->scan_res_handler = wpas_p2p_scan_res_join;
wpa_s->own_scan_requested = 1; wpa_s->own_scan_requested = 1;
wpa_s->clear_driver_scan_cache = 0;
} }
wpabuf_free(ies); wpabuf_free(ies);