ath9k: add interface combinations for DFS master
authorZefir Kurtisi <zefir.kurtisi@neratec.com>
Wed, 3 Apr 2013 16:31:29 +0000 (18:31 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 8 Apr 2013 19:28:38 +0000 (15:28 -0400)
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/init.c

index af932c9444def08a14e8826948936ba33e73342c..385c59a735a8a54cd24fe8e7874185b7c4056a9c 100644 (file)
@@ -727,12 +727,28 @@ static const struct ieee80211_iface_limit if_limits[] = {
                                 BIT(NL80211_IFTYPE_P2P_GO) },
 };
 
-static const struct ieee80211_iface_combination if_comb = {
-       .limits = if_limits,
-       .n_limits = ARRAY_SIZE(if_limits),
-       .max_interfaces = 2048,
-       .num_different_channels = 1,
-       .beacon_int_infra_match = true,
+
+static const struct ieee80211_iface_limit if_dfs_limits[] = {
+       { .max = 1,     .types = BIT(NL80211_IFTYPE_AP) },
+};
+
+static const struct ieee80211_iface_combination if_comb[] = {
+       {
+               .limits = if_limits,
+               .n_limits = ARRAY_SIZE(if_limits),
+               .max_interfaces = 2048,
+               .num_different_channels = 1,
+               .beacon_int_infra_match = true,
+       },
+       {
+               .limits = if_dfs_limits,
+               .n_limits = ARRAY_SIZE(if_dfs_limits),
+               .max_interfaces = 1,
+               .num_different_channels = 1,
+               .beacon_int_infra_match = true,
+               .radar_detect_widths =  BIT(NL80211_CHAN_NO_HT) |
+                                       BIT(NL80211_CHAN_HT20),
+       }
 };
 
 void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
@@ -763,8 +779,8 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
                BIT(NL80211_IFTYPE_ADHOC) |
                BIT(NL80211_IFTYPE_MESH_POINT);
 
-       hw->wiphy->iface_combinations = &if_comb;
-       hw->wiphy->n_iface_combinations = 1;
+       hw->wiphy->iface_combinations = if_comb;
+       hw->wiphy->n_iface_combinations = ARRAY_SIZE(if_comb);
 
        if (AR_SREV_5416(sc->sc_ah))
                hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;