--- /dev/null
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Fri, 22 Jan 2016 01:05:56 +0100
+Subject: [PATCH] ath9k: do not limit the number of DFS interfaces to 1
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -751,14 +751,6 @@ static const struct ieee80211_iface_comb
+
+ #endif /* CPTCFG_ATH9K_CHANNEL_CONTEXT */
+
+-static const struct ieee80211_iface_limit if_dfs_limits[] = {
+- { .max = 1, .types = BIT(NL80211_IFTYPE_AP) |
+-#ifdef CPTCFG_MAC80211_MESH
+- BIT(NL80211_IFTYPE_MESH_POINT) |
+-#endif
+- BIT(NL80211_IFTYPE_ADHOC) },
+-};
+-
+ static const struct ieee80211_iface_combination if_comb[] = {
+ {
+ .limits = if_limits,
+@@ -766,6 +758,11 @@ static const struct ieee80211_iface_comb
+ .max_interfaces = 2048,
+ .num_different_channels = 1,
+ .beacon_int_infra_match = true,
++#ifdef CPTCFG_ATH9K_DFS_CERTIFIED
++ .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
++ BIT(NL80211_CHAN_WIDTH_20) |
++ BIT(NL80211_CHAN_WIDTH_40),
++#endif
+ },
+ {
+ .limits = wds_limits,
+@@ -774,18 +771,6 @@ static const struct ieee80211_iface_comb
+ .num_different_channels = 1,
+ .beacon_int_infra_match = true,
+ },
+-#ifdef CPTCFG_ATH9K_DFS_CERTIFIED
+- {
+- .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_WIDTH_20_NOHT) |
+- BIT(NL80211_CHAN_WIDTH_20) |
+- BIT(NL80211_CHAN_WIDTH_40),
+- }
+-#endif
+ };
+
+ #ifdef CPTCFG_ATH9K_CHANNEL_CONTEXT
void ath_fill_led_pin(struct ath_softc *sc)
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -951,7 +951,7 @@ int ath9k_init_device(u16 devid, struct
+@@ -936,7 +936,7 @@ int ath9k_init_device(u16 devid, struct
#ifdef CPTCFG_MAC80211_LEDS
/* must be initialized before ieee80211_register_hw */
}
static const struct ieee80211_iface_limit if_limits[] = {
-@@ -912,6 +913,18 @@ static void ath9k_set_hw_capab(struct at
+@@ -897,6 +898,18 @@ static void ath9k_set_hw_capab(struct at
SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
}
int ath9k_init_device(u16 devid, struct ath_softc *sc,
const struct ath_bus_ops *bus_ops)
{
-@@ -957,6 +970,8 @@ int ath9k_init_device(u16 devid, struct
+@@ -942,6 +955,8 @@ int ath9k_init_device(u16 devid, struct
ARRAY_SIZE(ath9k_tpt_blink));
#endif