linux_dsm_epyc7002/drivers/net/wireless
Mohammed Shafi Shajakhan 9ec34a8619 ath10k: fix Tx DMA alloc failure during continuous wifi down/up
With maximum number of vap's configured in a two radio supported
systems of ~256 Mb RAM, doing a continuous wifi down/up and
intermittent traffic streaming from the connected stations results
in failure to allocate contiguous memory for tx buffers. This results
in the disappearance of all VAP's and a manual reboot is needed as
this is not a crash (or) OOM(for OOM killer to be invoked). To address
this allocate contiguous memory for tx buffers one time and re-use them
until the modules are unloaded but this results in a slight increase in
memory footprint of ath10k when the wifi is down, but the modules are
still loaded. Also as of now we use a separate bool 'tx_mem_allocated'
to keep track of the one time memory allocation, as we cannot come up
with something like 'ath10k_tx_{register,unregister}' before
'ath10k_probe_fw' is called as 'ath10k_htt_tx_alloc_cont_frag_desc'
memory allocation is dependent on the hw_param 'continuous_frag_desc'

a) memory footprint of ath10k without the change

lsmod | grep ath10k
ath10k_core           414498  1 ath10k_pci
ath10k_pci             38236  0

b) memory footprint of ath10k with the change

ath10k_core           414980  1 ath10k_pci
ath10k_pci             38236  0

Memory Failure Call trace:

hostapd: page allocation failure: order:6, mode:0xd0
 [<c021f150>] (__dma_alloc_buffer.isra.23) from
[<c021f23c>] (__alloc_remap_buffer.isra.26+0x14/0xb8)
[<c021f23c>] (__alloc_remap_buffer.isra.26) from
[<c021f664>] (__dma_alloc+0x224/0x2b8)
[<c021f664>] (__dma_alloc) from [<c021f810>]
(arm_dma_alloc+0x84/0x90)
[<c021f810>] (arm_dma_alloc) from [<bf954764>]
(ath10k_htt_tx_alloc+0xe0/0x2e4 [ath10k_core])
[<bf954764>] (ath10k_htt_tx_alloc [ath10k_core]) from
[<bf94e6ac>] (ath10k_core_start+0x538/0xcf8 [ath10k_core])
[<bf94e6ac>] (ath10k_core_start [ath10k_core]) from
[<bf947eec>] (ath10k_start+0xbc/0x56c [ath10k_core])
[<bf947eec>] (ath10k_start [ath10k_core]) from
[<bf8a7a04>] (drv_start+0x40/0x5c [mac80211])
[<bf8a7a04>] (drv_start [mac80211]) from [<bf8b7cf8>]
(ieee80211_do_open+0x170/0x82c [mac80211])
[<bf8b7cf8>] (ieee80211_do_open [mac80211]) from
[<c056afc8>] (__dev_open+0xa0/0xf4)
[21053.491752] Normal: 641*4kB (UEMR) 505*8kB (UEMR) 330*16kB (UEMR)
126*32kB (UEMR) 762*64kB (UEMR) 237*128kB (UEMR) 1*256kB (M) 0*512kB
0*1024kB 0*2048kB 0*4096kB = 95276kB

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2016-12-01 13:13:55 +02:00
..
admtek
ath ath10k: fix Tx DMA alloc failure during continuous wifi down/up 2016-12-01 13:13:55 +02:00
atmel net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
broadcom brcmfmac: print name of connect status event 2016-11-17 08:44:35 +02:00
cisco net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
intel wireless: fix bogus maybe-uninitialized warning 2016-11-17 08:46:38 +02:00
intersil wireless: fix bogus maybe-uninitialized warning 2016-11-17 08:46:38 +02:00
marvell mwifiex: pcie: stop checking for NULL adapter->card 2016-11-19 09:18:52 +02:00
mediatek mt7601u: use linux/bitfield.h 2016-09-09 12:09:25 +03:00
ralink rt2x00: add support for mac addr from device tree 2016-11-09 03:28:31 +02:00
realtek rtlwifi: Use dev_kfree_skb_irq instead of kfree_skb 2016-11-17 08:48:33 +02:00
rsi rsi: Host to device command frame vap_capabilites modified with new field vap status 2016-11-17 08:43:52 +02:00
st cw1200: fix bogus maybe-uninitialized warning 2016-11-17 08:47:58 +02:00
ti wlcore: Allow scans when in AP mode 2016-11-17 08:43:05 +02:00
zydas net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
Kconfig
mac80211_hwsim.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
mac80211_hwsim.h
Makefile
ray_cs.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ray_cs.h
rayctl.h
rndis_wlan.c nl80211: support beacon report scanning 2016-07-06 14:51:31 +02:00
wl3501_cs.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
wl3501.h