Fix BSSID enforcement with driver-based BSS selection

Previously, wpa_supplicant did not specify BSSID to any connection
request if the driver indicated that it will take care of BSS selection.
This is fine for most use cases, but can result to issues if the network
block has an explicit bssid parameter to select which BSS is to be used.
Fix this by setting BSSID and channel when the network block includes the
bssid parameter even if the driver indicates support for BSS selection.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
intended-for: hostap-1
This commit is contained in:
Jouni Malinen 2012-05-11 15:27:46 +03:00 committed by Jouni Malinen
parent 2c1e557507
commit f15854d1e1

View File

@ -1347,7 +1347,12 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
if (bss) { if (bss) {
params.ssid = bss->ssid; params.ssid = bss->ssid;
params.ssid_len = bss->ssid_len; params.ssid_len = bss->ssid_len;
if (!wpas_driver_bss_selection(wpa_s)) { if (!wpas_driver_bss_selection(wpa_s) || ssid->bssid_set) {
wpa_printf(MSG_DEBUG, "Limit connection to BSSID "
MACSTR " freq=%u MHz based on scan results "
"(bssid_set=%d)",
MAC2STR(bss->bssid), bss->freq,
ssid->bssid_set);
params.bssid = bss->bssid; params.bssid = bss->bssid;
params.freq = bss->freq; params.freq = bss->freq;
} }