linux/drivers/net/wireless/ath/ath10k
Douglas Anderson d66d24ac30 ath10k: Keep track of which interrupts fired, don't poll them
If we have a per CE (Copy Engine) IRQ then we have no summary
register.  Right now the code generates a summary register by
iterating over all copy engines and seeing if they have an interrupt
pending.

This has a problem.  Specifically if _none_ if the Copy Engines have
an interrupt pending then they might go into low power mode and
reading from their address space will cause a full system crash.  This
was seen to happen when two interrupts went off at nearly the same
time.  Both were handled by a single call of ath10k_snoc_napi_poll()
but, because there were two interrupts handled and thus two calls to
napi_schedule() there was still a second call to
ath10k_snoc_napi_poll() which ran with no interrupts pending.

Instead of iterating over all the copy engines, let's just keep track
of the IRQs that fire.  Then we can effectively generate our own
summary without ever needing to read the Copy Engines.

Tested-on: WCN3990 SNOC WLAN.HL.3.2.2-00490-QCAHLSWMTPL-1

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Rakesh Pillai <pillair@codeaurora.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200709082024.v2.1.I4d2f85ffa06f38532631e864a3125691ef5ffe06@changeid
2020-09-01 15:04:13 +03:00
..
ahb.c ath10k: Fix NULL pointer dereference in AHB device probe 2020-07-20 20:23:48 +03:00
ahb.h
bmi.c ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
bmi.h
ce.c ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
ce.h ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
core.c ath10k: Add new api to support TID specific configuration 2020-08-26 17:52:52 +03:00
core.h ath10k: Add new api to support reset TID config 2020-08-26 17:52:54 +03:00
coredump.c ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
coredump.h ath10k: add bus type for each layout of coredump 2020-08-19 20:36:15 +03:00
debug.c ath10k: enable rx duration report default for wmi tlv 2020-04-27 08:01:25 +03:00
debug.h ath10k: Replace zero-length array with flexible-array 2020-05-11 15:36:31 +03:00
debugfs_sta.c
hif.h ath10k: hif: make send_complete_check op optional 2020-04-21 15:04:02 +03:00
htc.c ath10k: drop the TX packet which size exceed credit size for sdio 2020-04-23 07:55:53 +03:00
htc.h ath10k: enable alt data of TX path for sdio 2020-04-22 09:43:32 +03:00
htt.c ath10k: add htt TX bundle for sdio 2020-04-22 09:43:29 +03:00
htt.h ath10k: fix gcc-10 zero-length-bounds warnings 2020-05-12 10:33:04 +03:00
htt_rx.c ath10k: fix VHT NSS calculation when STBC is enabled 2020-08-18 12:49:28 +03:00
htt_tx.c ath10k: Use fallthrough pseudo-keyword 2020-08-17 13:24:41 +03:00
hw.c ath10k: allow qca988x family to support ack rssi of tx data packets. 2020-03-12 10:20:02 +02:00
hw.h ath10k: Replace zero-length array with flexible-array 2020-05-11 15:36:31 +03:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
mac.c ath10k: Add new api to support reset TID config 2020-08-26 17:52:54 +03:00
mac.h
Makefile
p2p.c
p2p.h
pci.c Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2020-08-18 16:17:20 +03:00
pci.h ath10k: fix ath10k_pci struct layout 2020-05-12 10:33:13 +03:00
qmi.c ath10k: Skip handling del_server during driver exit 2020-05-11 15:30:37 +03:00
qmi.h ath10k: Remove ath10k_qmi_register_service_notifier() declaration 2020-05-30 17:18:29 +03:00
qmi_wlfw_v01.c
qmi_wlfw_v01.h
rx_desc.h
sdio.c ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
sdio.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-06-03 16:27:18 -07:00
snoc.c ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
snoc.h ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
spectral.c
spectral.h
swap.c
swap.h
targaddrs.h ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
testmode.c
testmode.h
testmode_i.h
thermal.c
thermal.h
trace.c
trace.h
txrx.c ath10k: Add new api to support TID specific configuration 2020-08-26 17:52:52 +03:00
txrx.h
usb.c wireless: Fix trivial spelling 2020-07-15 19:48:14 +03:00
usb.h
wmi-ops.h ath10k: Add wmi command support for station specific TID config 2020-08-26 17:52:46 +03:00
wmi-tlv.c ath10k: fix __le32 warning in ath10k_wmi_tlv_op_gen_request_peer_stats_info() 2020-05-11 15:34:10 +03:00
wmi-tlv.h ath10k: add wmi service peer stat info for wmi tlv 2020-08-15 10:05:12 +03:00
wmi.c ath10k: wmi: Use struct_size() helper in ath10k_wmi_alloc_skb() 2020-08-31 18:19:55 +03:00
wmi.h ath10k: Add new api to support TID specific configuration 2020-08-26 17:52:52 +03:00
wow.c ath10k: Use fallthrough pseudo-keyword 2020-08-17 13:24:41 +03:00
wow.h