mac80211: only create default STA interface if supported
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 8 Dec 2008 23:10:30 +0000 (00:10 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 12 Dec 2008 18:59:43 +0000 (13:59 -0500)
Drivers will support this, obviously, but this forces them to
set it up properly.

(This includes the fix posted as "mac80211: fix ifmodes check" and
tested in wireless-testing by Hin-Tak and others. -- JWL)

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/main.c

index df7e9a810b888ac9983f6830210456c28c27d085..6d8710327d144a298aabe7350cbd72e97a19d327 100644 (file)
@@ -886,12 +886,14 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
 
        local->mdev->select_queue = ieee80211_select_queue;
 
-       /* add one default STA interface */
-       result = ieee80211_if_add(local, "wlan%d", NULL,
-                                 NL80211_IFTYPE_STATION, NULL);
-       if (result)
-               printk(KERN_WARNING "%s: Failed to add default virtual iface\n",
-                      wiphy_name(local->hw.wiphy));
+       /* add one default STA interface if supported */
+       if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION)) {
+               result = ieee80211_if_add(local, "wlan%d", NULL,
+                                         NL80211_IFTYPE_STATION, NULL);
+               if (result)
+                       printk(KERN_WARNING "%s: Failed to add default virtual iface\n",
+                              wiphy_name(local->hw.wiphy));
+       }
 
        rtnl_unlock();