linux_dsm_epyc7002/drivers/net/wireless/ath/ath9k
Senthil Balasubramanian 19b9675069 ath9k: Fix kernel panic caused by invalid rate index access.
With the recent tx status optimization in mac80211, we bail out as
and and when invalid rate index is found. So the behavior of resetting
rate idx to -1 and count to 0 has changed for the rate indexes that
were not part of the driver's retry series.

This has resulted in ath9k using incorrect rate table index which
caused the system to panic. Ideally ath9k need to loop only for the
indexes that were part of the retry series and so simply use hw->max_rates
as the loop counter.

Pasted the stack trace of the panic issue for reference.

[  754.093192] BUG: unable to handle kernel paging request at ffff88046a9025b0
[  754.093256] IP: [<ffffffffa02eac49>] ath_tx_status+0x209/0x2f0 [ath9k]
[  754.094888] Call Trace:
[  754.094903]  <IRQ>
[  754.094928]  [<ffffffffa051f883>] ieee80211_tx_status+0x203/0x9e0 [mac80211]
[  754.094975]  [<ffffffffa053e305>] ? __ieee80211_wake_queue+0x125/0x140 [mac80211]
[  754.095017]  [<ffffffffa02e66c9>] ath_tx_complete_buf+0x1b9/0x370 [ath9k]
[  754.095054]  [<ffffffffa02e6fcf>] ath_tx_complete_aggr+0x51f/0xb50 [ath9k]
[  754.095098]  [<ffffffffa05382a3>] ? ieee80211_prepare_and_rx_handle+0x173/0xab0 [mac80211]
[  754.095148]  [<ffffffff81350e62>] ? _raw_spin_unlock_irqrestore+0x32/0x40
[  754.095186]  [<ffffffffa02e9735>] ath_tx_tasklet+0x365/0x4b0 [ath9k]
[  754.095224]  [<ffffffff8107a2a2>] ? clockevents_program_event+0x62/0xa0
[  754.095261]  [<ffffffffa02e2628>] ath9k_tasklet+0x168/0x1c0 [ath9k]
[  754.095298]  [<ffffffff8105599b>] tasklet_action+0x6b/0xe0
[  754.095331]  [<ffffffff81056278>] __do_softirq+0x98/0x120
[  754.095361]  [<ffffffff8100cd5c>] call_softirq+0x1c/0x30
[  754.095393]  [<ffffffff8100efb5>] do_softirq+0x65/0xa0
[  754.095423]  [<ffffffff810563fd>] irq_exit+0x8d/0x90
[  754.095453]  [<ffffffff8100ebc1>] do_IRQ+0x61/0xe0
[  754.095482]  [<ffffffff81351413>] ret_from_intr+0x0/0x15
[  754.095513]  <EOI>
[  754.095531]  [<ffffffff81014375>] ? native_sched_clock+0x15/0x70
[  754.096475]  [<ffffffffa02bcfa6>] ? acpi_idle_enter_bm+0x24d/0x285 [processor]
[  754.096475]  [<ffffffffa02bcf9f>] ? acpi_idle_enter_bm+0x246/0x285 [processor]
[  754.096475]  [<ffffffff8127fab2>] cpuidle_idle_call+0x82/0x100
[  754.096475]  [<ffffffff8100a236>] cpu_idle+0xa6/0xf0
[  754.096475]  [<ffffffff81339bc1>] rest_init+0x91/0xa0
[  754.096475]  [<ffffffff814efccd>] start_kernel+0x3fd/0x408
[  754.096475]  [<ffffffff814ef347>] x86_64_start_reservations+0x132/0x136
[  754.096475]  [<ffffffff814ef451>] x86_64_start_kernel+0x106/0x115
[  754.096475] RIP  [<ffffffffa02eac49>] ath_tx_status+0x209/0x2f0 [ath9k]

Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-03-23 15:22:04 -04:00
..
ahb.c wireless:ath: use resource_size() help function 2011-03-07 13:51:04 -05:00
ani.c
ani.h
ar5008_initvals.h
ar5008_phy.c
ar9001_initvals.h
ar9002_calib.c
ar9002_hw.c
ar9002_initvals.h
ar9002_mac.c
ar9002_phy.c
ar9002_phy.h
ar9003_2p2_initvals.h
ar9003_calib.c
ar9003_eeprom.c
ar9003_eeprom.h
ar9003_hw.c ath9k_hw: Fix pcie_serdes setting for AR9485 1.1 version. 2011-02-25 15:33:39 -05:00
ar9003_mac.c
ar9003_mac.h
ar9003_paprd.c
ar9003_phy.c ath9k_hw: Read noise floor only for available chains for AR9003 2011-03-04 14:05:17 -05:00
ar9003_phy.h
ar9485_initvals.h ath9k_hw: Improve idle power consumption for AR9485. 2011-03-11 14:15:36 -05:00
ath9k.h ath9k: fix the .flush driver op implementation 2011-03-14 14:46:58 -04:00
beacon.c ath9k: improve reliability of beacon transmission and stuck beacon handling 2011-03-14 14:46:58 -04:00
btcoex.c
btcoex.h
calib.c ath9k_hw: Increase the wait count for nf load. 2011-03-11 14:15:36 -05:00
calib.h
common.c
common.h
debug.c ath9k: Fix txq memory address printing in debugfs. 2011-03-04 14:06:49 -05:00
debug.h
eeprom_4k.c
eeprom_9287.c
eeprom_def.c
eeprom.c
eeprom.h
gpio.c ath9k: Fix incorrect GPIO LED pin for AR9485 2011-02-28 14:06:55 -05:00
hif_usb.c Merge branch 'for-davem' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2011-03-04 12:48:25 -08:00
hif_usb.h
htc_drv_beacon.c ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
htc_drv_gpio.c
htc_drv_init.c ath9k_htc: Add debug code to print endpoint mapping 2011-02-23 16:25:28 -05:00
htc_drv_main.c ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
htc_drv_txrx.c mac80211: rename RX_FLAG_TSFT 2011-02-23 16:25:29 -05:00
htc_hst.c
htc_hst.h
htc.h ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
hw-ops.h
hw.c ath9k_hw: Fix PLL initialization for AR9485. 2011-03-11 14:15:36 -05:00
hw.h ath9k_hw: fix REG_SET_BIT and REG_CLR_BIT for multiple bits 2011-03-14 14:46:58 -04:00
init.c ath9k: use generic mac80211 LED blinking code 2011-02-28 14:06:55 -05:00
Kconfig
mac.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-03-15 14:16:48 -04:00
mac.h ath9k: improve reliability of beacon transmission and stuck beacon handling 2011-03-14 14:46:58 -04:00
main.c ath9k: fix the .flush driver op implementation 2011-03-14 14:46:58 -04:00
Makefile
pci.c
phy.h
rc.c ath9k: Fix kernel panic caused by invalid rate index access. 2011-03-23 15:22:04 -04:00
rc.h
recv.c ath9k: remove support for the FIF_PROMISC_IN_BSS filter flag 2011-03-11 14:15:36 -05:00
reg.h ath9k_htc: Handle storage devices 2011-02-23 16:25:25 -05:00
wmi.c ath9k_htc: Configure beacon timers in AP mode 2011-02-23 16:25:28 -05:00
wmi.h
xmit.c ath9k: Fix kernel panic in AR2427 2011-03-21 15:19:49 -04:00