diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch new file mode 100644 index 00000000..7a88ca07 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From 7195eb3dcc15a2a0ea8c557806abf32241e276d1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | ||
3 | Date: Wed, 13 Jun 2012 21:28:09 +0530 | ||
4 | Subject: [PATCH 23/46] ath9k: Fix softlockup in AR9485 | ||
5 | |||
6 | commit bcb7ad7bcbef030e6ba71ede1f9866368aca7c99 upstream. | ||
7 | |||
8 | steps to recreate: | ||
9 | load latest ath9k driver with AR9485 | ||
10 | stop the network-manager and wpa_supplicant | ||
11 | bring the interface up | ||
12 | |||
13 | Call Trace: | ||
14 | [<ffffffffa0517490>] ? ath_hw_check+0xe0/0xe0 [ath9k] | ||
15 | [<ffffffff812cd1e8>] __const_udelay+0x28/0x30 | ||
16 | [<ffffffffa03bae7a>] ar9003_get_pll_sqsum_dvc+0x4a/0x80 [ath9k_hw] | ||
17 | [<ffffffffa05174eb>] ath_hw_pll_work+0x5b/0xe0 [ath9k] | ||
18 | [<ffffffff810744fe>] process_one_work+0x11e/0x470 | ||
19 | [<ffffffff8107530f>] worker_thread+0x15f/0x360 | ||
20 | [<ffffffff810751b0>] ? manage_workers+0x230/0x230 | ||
21 | [<ffffffff81079af3>] kthread+0x93/0xa0 | ||
22 | [<ffffffff815fd3a4>] kernel_thread_helper+0x4/0x10 | ||
23 | [<ffffffff81079a60>] ? kthread_freezable_should_stop+0x70/0x70 | ||
24 | [<ffffffff815fd3a0>] ? gs_change+0x13/0x13 | ||
25 | |||
26 | ensure that the PLL-WAR for AR9485/AR9340 is executed only if the STA is | ||
27 | associated (or) IBSS/AP mode had started beaconing. Ideally this WAR | ||
28 | is needed to recover from some rare beacon stuck during stress testing. | ||
29 | Before the STA is associated/IBSS had started beaconing, PLL4(0x1618c) | ||
30 | always seem to have zero even though we had configured PLL3(0x16188) to | ||
31 | query about PLL's locking status. When we keep on polling infinitely PLL4's | ||
32 | 8th bit(ie check for PLL locking measurements is done), machine hangs | ||
33 | due to softlockup. | ||
34 | |||
35 | fixes https://bugzilla.redhat.com/show_bug.cgi?id=811142 | ||
36 | |||
37 | Reported-by: Rolf Offermanns <rolf.offermanns@gmx.net> | ||
38 | Tested-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | ||
39 | Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | ||
40 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
41 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
42 | --- | ||
43 | drivers/net/wireless/ath/ath9k/main.c | 9 +++++++++ | ||
44 | 1 file changed, 9 insertions(+) | ||
45 | |||
46 | diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c | ||
47 | index 5b22ecd..95437fc 100644 | ||
48 | --- a/drivers/net/wireless/ath/ath9k/main.c | ||
49 | +++ b/drivers/net/wireless/ath/ath9k/main.c | ||
50 | @@ -1042,6 +1042,15 @@ void ath_hw_pll_work(struct work_struct *work) | ||
51 | hw_pll_work.work); | ||
52 | u32 pll_sqsum; | ||
53 | |||
54 | + /* | ||
55 | + * ensure that the PLL WAR is executed only | ||
56 | + * after the STA is associated (or) if the | ||
57 | + * beaconing had started in interfaces that | ||
58 | + * uses beacons. | ||
59 | + */ | ||
60 | + if (!(sc->sc_flags & SC_OP_BEACONS)) | ||
61 | + return; | ||
62 | + | ||
63 | if (AR_SREV_9485(sc->sc_ah)) { | ||
64 | |||
65 | ath9k_ps_wakeup(sc); | ||
66 | -- | ||
67 | 1.7.10 | ||
68 | |||