summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-02-27 21:36:28 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-02-27 21:36:28 +0000
commit95c97bf201b863723f6335d70a66b543e40f7398 (patch)
treebc840870bd7b57ef19de682a1e9879486a0aff11
parent1b3a8683096fb3680a19ffce076000379ee3e35e (diff)
downloadmaster-31e0f0ae-95c97bf201b863723f6335d70a66b543e40f7398.tar.gz
master-31e0f0ae-95c97bf201b863723f6335d70a66b543e40f7398.tar.bz2
master-31e0f0ae-95c97bf201b863723f6335d70a66b543e40f7398.zip
ath5k: fix enabling 5/10 mhz channel bandwidth support
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 39758
-rw-r--r--package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch56
1 files changed, 43 insertions, 13 deletions
diff --git a/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch b/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch
index 61b3fb93f6..a8ebdf5126 100644
--- a/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch
+++ b/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch
@@ -11,7 +11,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
--- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c
-@@ -821,6 +821,89 @@ static const struct file_operations fops
+@@ -821,6 +821,97 @@ static const struct file_operations fops
.llseek = default_llseek,
};
@@ -24,7 +24,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
+ char buf[15];
+ unsigned int len = 0;
+
-+ int cur_ah_bwmode = ah->ah_bwmode;
++ int cur_ah_bwmode = ah->ah_bwmode_debug;
+
+#define print_selected(MODE, LABEL) \
+ if (cur_ah_bwmode == MODE) \
@@ -77,16 +77,24 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
+ bw, tobwmode);
+
+ switch (ah->ah_radio) {
-+ /* TODO: only define radios that actually support 5/10mhz channels */
-+ case AR5K_RF5413: case AR5K_RF5110: case AR5K_RF5111: case AR5K_RF5112: case AR5K_RF2413: case AR5K_RF2316: case AR5K_RF2317: case AR5K_RF2425:
-+ if(ah->ah_bwmode != tobwmode) {
-+ mutex_lock(&ah->lock);
-+ ah->ah_bwmode = tobwmode;
-+ mutex_unlock(&ah->lock);
-+ }
-+ break;
-+ default:
-+ return -EOPNOTSUPP;
++ /* TODO: only define radios that actually support 5/10mhz channels */
++ case AR5K_RF5413:
++ case AR5K_RF5110:
++ case AR5K_RF5111:
++ case AR5K_RF5112:
++ case AR5K_RF2413:
++ case AR5K_RF2316:
++ case AR5K_RF2317:
++ case AR5K_RF2425:
++ if(ah->ah_bwmode_debug != tobwmode) {
++ mutex_lock(&ah->lock);
++ ah->ah_bwmode = tobwmode;
++ ah->ah_bwmode_debug = tobwmode;
++ mutex_unlock(&ah->lock);
++ }
++ break;
++ default:
++ return -EOPNOTSUPP;
+ }
+ return count;
+}
@@ -101,7 +109,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
/* debugfs: queues etc */
-@@ -914,6 +997,9 @@ ath5k_debug_init_device(struct ath5k_hw
+@@ -914,6 +1005,9 @@ ath5k_debug_init_device(struct ath5k_hw
debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah,
&fops_beacon);
@@ -111,3 +119,25 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
debugfs_create_file("reset", S_IWUSR, phydir, ah, &fops_reset);
debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, ah,
+--- a/drivers/net/wireless/ath/ath5k/ath5k.h
++++ b/drivers/net/wireless/ath/ath5k/ath5k.h
+@@ -1369,6 +1369,7 @@ struct ath5k_hw {
+ u8 ah_coverage_class;
+ bool ah_ack_bitrate_high;
+ u8 ah_bwmode;
++ u8 ah_bwmode_debug;
+ bool ah_short_slot;
+
+ /* Antenna Control */
+--- a/drivers/net/wireless/ath/ath5k/base.c
++++ b/drivers/net/wireless/ath/ath5k/base.c
+@@ -466,6 +466,9 @@ ath5k_chan_set(struct ath5k_hw *ah, stru
+ return -EINVAL;
+ }
+
++ if (ah->ah_bwmode_debug != AR5K_BWMODE_DEFAULT)
++ ah->ah_bwmode = ah->ah_bwmode_debug;
++
+ /*
+ * To switch channels clear any pending DMA operations;
+ * wait long enough for the RX fifo to drain, reset the