From baa618790ad359e99396a233d85e9ef1e5c917ca Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 22 Jan 2016 00:54:34 +0000 Subject: [PATCH] ath9k: allow multiple virtual interfaces on DFS channels Signed-off-by: Felix Fietkau SVN-Revision: 48448 --- ...it-the-number-of-DFS-interfaces-to-1.patch | 55 +++++++++++++++++++ .../mac80211/patches/501-ath9k_ahb_init.patch | 2 +- .../patches/530-ath9k_extra_leds.patch | 2 +- .../patches/543-ath9k_entropy_from_adc.patch | 4 +- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 package/kernel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch diff --git a/package/kernel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch b/package/kernel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch new file mode 100644 index 0000000000..070efa98e8 --- /dev/null +++ b/package/kernel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch @@ -0,0 +1,55 @@ +From: Felix Fietkau +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 +--- + +--- 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 diff --git a/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch b/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch index 4950648b4c..5892c3e17a 100644 --- a/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch +++ b/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -1039,23 +1039,23 @@ static int __init ath9k_init(void) +@@ -1024,23 +1024,23 @@ static int __init ath9k_init(void) { int error; diff --git a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch index 66662f4c5a..50ddd0b9d9 100644 --- a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch +++ b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch @@ -165,7 +165,7 @@ 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 */ diff --git a/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch b/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch index 81878c8ca9..d7bb5a12ce 100644 --- a/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch +++ b/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch @@ -65,7 +65,7 @@ } 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); } @@ -84,7 +84,7 @@ 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 -- 2.25.1