]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Try fallback drivers if global init for preferred drivers fails
authorDan Williams <dcbw@redhat.com>
Sat, 4 Feb 2012 18:09:00 +0000 (20:09 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 4 Feb 2012 18:09:51 +0000 (20:09 +0200)
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

wpa_supplicant/wpa_supplicant.c

index 62545e2d6143d8278347df3944d40da9f577c8d7..4a7a5bec49102cb2e9da106a4152100f8e22ca3f 100644 (file)
@@ -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;