]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/2.6.36.2/ath9k-fix-tx-struck-state-with-paprd.patch
Remove duplicated commits
[thirdparty/kernel/stable-queue.git] / releases / 2.6.36.2 / ath9k-fix-tx-struck-state-with-paprd.patch
1 From 9094537c3a9ef9e127e844254a74186735c9a90b Mon Sep 17 00:00:00 2001
2 From: Vasanthakumar Thiagarajan <vasanth@atheros.com>
3 Date: Mon, 20 Sep 2010 22:54:46 -0700
4 Subject: ath9k: Fix tx struck state with paprd
5
6 From: Vasanthakumar Thiagarajan <vasanth@atheros.com>
7
8 commit 9094537c3a9ef9e127e844254a74186735c9a90b upstream.
9
10 Paprd needs to be done only on active chains(not for all the chains
11 that hw can support). The paprd training frames which are sent
12 for inactive chains would be hanging on the hw queue without
13 getting transmitted and would make the connection so unstable.
14 This issue happens only with the hw which supports paprd cal(ar9003).
15
16 Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
17 Signed-off-by: John W. Linville <linville@tuxdriver.com>
18 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
19
20 ---
21 drivers/net/wireless/ath/ath9k/main.c | 6 ++++--
22 1 file changed, 4 insertions(+), 2 deletions(-)
23
24 --- a/drivers/net/wireless/ath/ath9k/main.c
25 +++ b/drivers/net/wireless/ath/ath9k/main.c
26 @@ -269,6 +269,7 @@ static void ath_paprd_activate(struct at
27 {
28 struct ath_hw *ah = sc->sc_ah;
29 struct ath9k_hw_cal_data *caldata = ah->caldata;
30 + struct ath_common *common = ath9k_hw_common(ah);
31 int chain;
32
33 if (!caldata || !caldata->paprd_done)
34 @@ -277,7 +278,7 @@ static void ath_paprd_activate(struct at
35 ath9k_ps_wakeup(sc);
36 ar9003_paprd_enable(ah, false);
37 for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) {
38 - if (!(ah->caps.tx_chainmask & BIT(chain)))
39 + if (!(common->tx_chainmask & BIT(chain)))
40 continue;
41
42 ar9003_paprd_populate_single_table(ah, caldata, chain);
43 @@ -299,6 +300,7 @@ void ath_paprd_calibrate(struct work_str
44 struct ieee80211_supported_band *sband = &sc->sbands[band];
45 struct ath_tx_control txctl;
46 struct ath9k_hw_cal_data *caldata = ah->caldata;
47 + struct ath_common *common = ath9k_hw_common(ah);
48 int qnum, ftype;
49 int chain_ok = 0;
50 int chain;
51 @@ -332,7 +334,7 @@ void ath_paprd_calibrate(struct work_str
52 ath9k_ps_wakeup(sc);
53 ar9003_paprd_init_table(ah);
54 for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) {
55 - if (!(ah->caps.tx_chainmask & BIT(chain)))
56 + if (!(common->tx_chainmask & BIT(chain)))
57 continue;
58
59 chain_ok = 0;