[RFC] [PATCH] Try fallback drivers if global init for preferred drivers fails
Dan Williams
dcbw
Thu Feb 2 13:48:31 PST 2012
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 at redhat.com>
---
* Only compile tested; does this look like the right thing to
do here? Relevant bug is:
https://bugzilla.redhat.com/show_bug.cgi?id=783712
wpa_supplicant/wpa_supplicant.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index ee5ca8d..6320918 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -1941,8 +1941,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;
--
1.7.7.6
More information about the Hostap
mailing list