aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-02-04 20:09:00 +0200
committerJouni Malinen <j@w1.fi>2012-02-04 20:09:51 +0200
commit0f4668ceac37e2c98ce6068bd255d0915974a706 (patch)
tree4c2b26c4fb364a459b04c35ddc525bcba2e45e2e /wpa_supplicant
parent4bb70bd80d61a451b598102bd26f5348846fdef0 (diff)
downloadexternal_wpa_supplicant_8_ti-0f4668ceac37e2c98ce6068bd255d0915974a706.zip
external_wpa_supplicant_8_ti-0f4668ceac37e2c98ce6068bd255d0915974a706.tar.gz
external_wpa_supplicant_8_ti-0f4668ceac37e2c98ce6068bd255d0915974a706.tar.bz2
Try fallback drivers if global init for preferred drivers fails
Driver global init was considered a hard failure. Thus if, for example, you used the Broadcom STA driver and didn't have nl80211 or cfg80211 loaded into the kernel, and specified a driver value of "nl80211,wext", the nl80211 driver's global init would fail with the following message: nl80211: 'nl80211' generic netlink not found Failed to initialize driver 'nl80211' but since global init was a hard failure, creating the supplicant interface would fail and the WEXT driver would not be tried. Give other drivers a chance instead. Signed-hostap: Dan Williams <dcbw@redhat.com> intended-for: hostap-1
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/wpa_supplicant.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 62545e2..4a7a5be 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -1944,8 +1944,11 @@ static int wpa_supplicant_set_driver(struct wpa_supplicant *wpa_s,
for (i = 0; wpa_drivers[i]; i++) {
if (os_strlen(wpa_drivers[i]->name) == len &&
os_strncmp(driver, wpa_drivers[i]->name, len) ==
- 0)
- return select_driver(wpa_s, i);
+ 0) {
+ /* First driver that succeeds wins */
+ if (select_driver(wpa_s, i) == 0)
+ return 0;
+ }
}
driver = pos + 1;