mac80211: support creating wiphy w/out creating wlanX
authorBen Greear <greearb@candelatech.com>
Wed, 22 Oct 2014 19:23:03 +0000 (12:23 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 27 Oct 2014 07:48:32 +0000 (08:48 +0100)
This will be helpful when using the mac80211_hwsim
wiphys and automated testing.  Let user create the
vifs as needed, and named as expected.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/main.c

index bb50e8beec0eb4f2c3f12a20e45e73b7305c3406..1614b2fc3bf69ee856787a6b36e921842720aa58 100644 (file)
@@ -1583,6 +1583,10 @@ struct ieee80211_tx_control {
  *     a virtual monitor interface when monitor interfaces are the only
  *     active interfaces.
  *
+ * @IEEE80211_HW_NO_AUTO_VIF: The driver would like for no wlanX to
+ *     be created.  It is expected user-space will create vifs as
+ *     desired (and thus have them named as desired).
+ *
  * @IEEE80211_HW_QUEUE_CONTROL: The driver wants to control per-interface
  *     queue mapping in order to use different queues (not just one per AC)
  *     for different virtual interfaces. See the doc section on HW queue
@@ -1629,7 +1633,8 @@ enum ieee80211_hw_flags {
        IEEE80211_HW_SUPPORTS_DYNAMIC_PS                = 1<<12,
        IEEE80211_HW_MFP_CAPABLE                        = 1<<13,
        IEEE80211_HW_WANT_MONITOR_VIF                   = 1<<14,
-       /* free slots */
+       IEEE80211_HW_NO_AUTO_VIF                        = 1<<15,
+       /* free slot */
        IEEE80211_HW_SUPPORTS_UAPSD                     = 1<<17,
        IEEE80211_HW_REPORTS_TX_ACK_STATUS              = 1<<18,
        IEEE80211_HW_CONNECTION_MONITOR                 = 1<<19,
index b189122d4b204e26606b3fb5c49335ab5179b741..7d40e3f0a77be0141826caea0fd2ef3ca11f0727 100644 (file)
@@ -1023,7 +1023,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
        }
 
        /* add one default STA interface if supported */
-       if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION)) {
+       if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION) &&
+           !(hw->flags & IEEE80211_HW_NO_AUTO_VIF)) {
                result = ieee80211_if_add(local, "wlan%d", NULL,
                                          NL80211_IFTYPE_STATION, NULL);
                if (result)