aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-02-17 22:15:26 +0000
committerFelix Fietkau <nbd@openwrt.org>2012-02-17 22:15:26 +0000
commit732802a8dba1cb68bab339ab5fd522967223a754 (patch)
tree21c23edd910206fafb0d8bc40693ad61c14c5901 /package
parent2f3e324a4c78b211c30f45f177b818988a3f0ef9 (diff)
downloadupstream-732802a8dba1cb68bab339ab5fd522967223a754.tar.gz
upstream-732802a8dba1cb68bab339ab5fd522967223a754.tar.bz2
upstream-732802a8dba1cb68bab339ab5fd522967223a754.zip
ath5k: do not stop the hardware queues during PAPD calibration, speeds up calibration
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30623 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch b/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch
new file mode 100644
index 0000000000..3751c531ba
--- /dev/null
+++ b/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch
@@ -0,0 +1,31 @@
+--- a/drivers/net/wireless/ath/ath5k/base.c
++++ b/drivers/net/wireless/ath/ath5k/base.c
+@@ -2330,15 +2330,6 @@ ath5k_calibrate_work(struct work_struct
+ "got new rfgain, resetting\n");
+ ieee80211_queue_work(ah->hw, &ah->reset_work);
+ }
+-
+- /* TODO: On full calibration we should stop TX here,
+- * so that it doesn't interfere (mostly due to gain_f
+- * calibration that messes with tx packets -see phy.c).
+- *
+- * NOTE: Stopping the queues from above is not enough
+- * to stop TX but saves us from disconecting (at least
+- * we don't lose packets). */
+- ieee80211_stop_queues(ah->hw);
+ } else
+ ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT;
+
+@@ -2353,10 +2344,9 @@ ath5k_calibrate_work(struct work_struct
+ ah->curchan->center_freq));
+
+ /* Clear calibration flags */
+- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) {
+- ieee80211_wake_queues(ah->hw);
++ if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL)
+ ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL;
+- } else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
++ else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
+ ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT;
+ }
+