• Mohammed Shafi Shajakhan's avatar
    ath9k: Fix softlockup in AR9485 · bcb7ad7b
    Mohammed Shafi Shajakhan authored
    steps to recreate:
    load latest ath9k driver with AR9485
    stop the network-manager and wpa_supplicant
    bring the interface up
    
    	Call Trace:
    	[<ffffffffa0517490>] ? ath_hw_check+0xe0/0xe0 [ath9k]
    	[<ffffffff812cd1e8>] __const_udelay+0x28/0x30
    	[<ffffffffa03bae7a>] ar9003_get_pll_sqsum_dvc+0x4a/0x80 [ath9k_hw]
    	[<ffffffffa05174eb>] ath_hw_pll_work+0x5b/0xe0 [ath9k]
    	[<ffffffff810744fe>] process_one_work+0x11e/0x470
    	[<ffffffff8107530f>] worker_thread+0x15f/0x360
    	[<ffffffff810751b0>] ? manage_workers+0x230/0x230
    	[<ffffffff81079af3>] kthread+0x93/0xa0
    	[<ffffffff815fd3a4>] kernel_thread_helper+0x4/0x10
    	[<ffffffff81079a60>] ? kthread_freezable_should_stop+0x70/0x70
    	[<ffffffff815fd3a0>] ? gs_change+0x13/0x13
    
    ensure that the PLL-WAR for AR9485/AR9340 is executed only if the STA is
    associated (or) IBSS/AP mode had started beaconing. Ideally this WAR
    is needed to recover from some rare beacon stuck during stress testing.
    Before the STA is associated/IBSS had started beaconing, PLL4(0x1618c)
    always seem to have zero even though we had configured PLL3(0x16188) to
    query about PLL's locking status. When we keep on polling infinitely PLL4's
    8th bit(ie check for PLL locking measurements is done), machine hangs
    due to softlockup.
    
    fixes https://bugzilla.redhat.com/show_bug.cgi?id=811142Reported-by: default avatarRolf Offermanns <rolf.offermanns@gmx.net>
    Cc: stable@vger.kernel.org [3.0+]
    Tested-by: default avatarMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
    Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    bcb7ad7b
main.c 58.2 KB