wlcore: declare interface combinations
authorEliad Peller <eliad@wizery.com>
Wed, 13 Jun 2012 17:29:16 +0000 (20:29 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 13 Jun 2012 18:57:10 +0000 (21:57 +0300)
Advertise to the stack that the wlcore driver
supports multiple interfaces for a single device.
This is required in order to be able to run
multirole with mac80211.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/main.c

index 21e05476cd355295f51bdeffde245bf43f3a11a3..8eefcd7505e2709cc72369305304b7706aa2be6a 100644 (file)
@@ -4977,6 +4977,29 @@ static void wl1271_unregister_hw(struct wl1271 *wl)
 
 }
 
+static const struct ieee80211_iface_limit wlcore_iface_limits[] = {
+       {
+               .max = 2,
+               .types = BIT(NL80211_IFTYPE_STATION),
+       },
+       {
+               .max = 1,
+               .types = BIT(NL80211_IFTYPE_AP) |
+                        BIT(NL80211_IFTYPE_P2P_GO) |
+                        BIT(NL80211_IFTYPE_P2P_CLIENT),
+       },
+};
+
+static const struct ieee80211_iface_combination
+wlcore_iface_combinations[] = {
+       {
+         .num_different_channels = 1,
+         .max_interfaces = 2,
+         .limits = wlcore_iface_limits,
+         .n_limits = ARRAY_SIZE(wlcore_iface_limits),
+       },
+};
+
 static int wl1271_init_ieee80211(struct wl1271 *wl)
 {
        static const u32 cipher_suites[] = {
@@ -5070,6 +5093,11 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
                NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 |
                NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P;
 
+       /* allowed interface combinations */
+       wl->hw->wiphy->iface_combinations = wlcore_iface_combinations;
+       wl->hw->wiphy->n_iface_combinations =
+               ARRAY_SIZE(wlcore_iface_combinations);
+
        SET_IEEE80211_DEV(wl->hw, wl->dev);
 
        wl->hw->sta_data_size = sizeof(struct wl1271_station);