summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch
diff options
context:
space:
mode:
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.patch68
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 @@
1From 7195eb3dcc15a2a0ea8c557806abf32241e276d1 Mon Sep 17 00:00:00 2001
2From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
3Date: Wed, 13 Jun 2012 21:28:09 +0530
4Subject: [PATCH 23/46] ath9k: Fix softlockup in AR9485
5
6commit bcb7ad7bcbef030e6ba71ede1f9866368aca7c99 upstream.
7
8steps to recreate:
9load latest ath9k driver with AR9485
10stop the network-manager and wpa_supplicant
11bring 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
26ensure that the PLL-WAR for AR9485/AR9340 is executed only if the STA is
27associated (or) IBSS/AP mode had started beaconing. Ideally this WAR
28is needed to recover from some rare beacon stuck during stress testing.
29Before the STA is associated/IBSS had started beaconing, PLL4(0x1618c)
30always seem to have zero even though we had configured PLL3(0x16188) to
31query about PLL's locking status. When we keep on polling infinitely PLL4's
328th bit(ie check for PLL locking measurements is done), machine hangs
33due to softlockup.
34
35fixes https://bugzilla.redhat.com/show_bug.cgi?id=811142
36
37Reported-by: Rolf Offermanns <rolf.offermanns@gmx.net>
38Tested-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
39Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
40Signed-off-by: John W. Linville <linville@tuxdriver.com>
41Signed-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
46diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
47index 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--
671.7.10
68