linux/drivers/net/wireless/realtek/rtw88
Brian Norris 57fb39e247 rtw88: don't hold all IRQs disabled for PS operations
This driver generally only needs to ensure that
(a) it doesn't try to process TX interrupts at the same time as
    power-save operations (and similar)
(b) the device interrupt gets disabled while we're still handling the
    last set of interrupts

For (a), all the operations (e.g., PS transitions, packet handling)
happens in non-atomic contexts (e.g., threaded IRQ).

For (b), we only need mutual exclusion for brief sections (i.e., while
we're actually manipulating the interrupt mask/status).

So, we can introduce a separate lock for handling (b), disabling IRQs
while we do it. For (a), we can demote the locking to BH only, now that
(b) (the only steps done in atomic context) and that has its own lock.

This helps reduce the amount of time this driver spends with IRQs off.
Notably, transitioning out of power-save modes can take >3 milliseconds,
and this transition is done under the protection of 'irq_lock'.

Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200312080852.16684-2-yhchuang@realtek.com
2020-03-23 19:29:26 +02:00
..
bf.c rtw88: Fix incorrect beamformee role setting 2020-02-13 12:07:25 +02:00
bf.h rtw88: Enable 802.11ac beamformee support 2019-10-24 08:46:22 +03:00
coex.c rtw88: avoid holding mutex for cancel_delayed_work_sync() 2020-02-12 18:18:28 +02:00
coex.h rtw88: 8822c: add SW DPK support 2019-09-13 18:03:19 +03:00
debug.c rtw88: add phy_info debugfs to show Tx/Rx physical status 2019-10-24 08:46:25 +03:00
debug.h rtw88: support wowlan feature for 8822c 2020-01-26 17:37:03 +02:00
efuse.c
efuse.h
fw.c rtw88: Use kfree_skb() instead of kfree() 2020-02-12 18:19:51 +02:00
fw.h wireless: realtek: Replace zero-length array with flexible-array member 2020-03-23 18:51:56 +02:00
hci.h rtw88: add rtw_read8_mask and rtw_read16_mask 2020-02-12 18:18:24 +02:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
mac80211.c rtw88: disable TX-AMSDU on 2.4G band 2020-02-12 18:22:01 +02:00
mac.c rtw88: 8822[bc]: Make tables const, reduce data object size 2020-02-12 18:22:33 +02:00
mac.h rtw88: add NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 support 2019-10-14 12:10:48 +03:00
main.c rtw88: remove unused member of struct rtw_hal 2020-03-12 15:39:41 +02:00
main.h wireless: realtek: Replace zero-length array with flexible-array member 2020-03-23 18:51:56 +02:00
Makefile rtw88: support wowlan feature for 8822c 2020-01-26 17:37:03 +02:00
pci.c rtw88: don't hold all IRQs disabled for PS operations 2020-03-23 19:29:26 +02:00
pci.h rtw88: don't hold all IRQs disabled for PS operations 2020-03-23 19:29:26 +02:00
phy.c rtw88: 8822c: modify rf protection setting 2020-02-12 18:20:40 +02:00
phy.h rtw88: fix potential read outside array boundary 2019-10-31 10:03:50 +02:00
ps.c rtw88: use shorter delay time to poll PS state 2020-01-26 17:42:56 +02:00
ps.h rtw88: raise LPS threshold to 50, for less power consumption 2019-11-06 19:55:37 +02:00
reg.h rtw88: Add wowlan pattern match support 2020-01-26 17:37:04 +02:00
regd.c rtw88: update tx power limit table to RF v20 2019-06-27 20:24:27 +03:00
regd.h rtw88: update tx power limit table to RF v20 2019-06-27 20:24:27 +03:00
rtw8822b_table.c rtw88: use rtw_phy_pg_cfg_pair struct, not arrays 2019-10-31 10:03:48 +02:00
rtw8822b_table.h rtw88: 8822b: add RFE type 3 support 2019-10-31 10:03:47 +02:00
rtw8822b.c rtw88: 8822[bc]: Make tables const, reduce data object size 2020-02-12 18:22:33 +02:00
rtw8822b.h rtw88: add phy_info debugfs to show Tx/Rx physical status 2019-10-24 08:46:25 +03:00
rtw8822c_table.c rtw88: use rtw_phy_pg_cfg_pair struct, not arrays 2019-10-31 10:03:48 +02:00
rtw8822c_table.h rtw88: 8822c: add SW DPK support 2019-09-13 18:03:19 +03:00
rtw8822c.c rtw88: 8822[bc]: Make tables const, reduce data object size 2020-02-12 18:22:33 +02:00
rtw8822c.h rtw88: 8822c: modify rf protection setting 2020-02-12 18:20:40 +02:00
rx.c rtw88: rearrange if..else statements for rx rate indexes 2019-10-31 10:03:49 +02:00
rx.h rtw88: Don't set RX_FLAG_DECRYPTED if packet has no encryption 2019-10-04 16:45:01 +03:00
sec.c rtw88: add deep PS PG mode for 8822c 2019-10-02 07:33:49 +03:00
sec.h rtw88: add deep PS PG mode for 8822c 2019-10-02 07:33:49 +03:00
tx.c rtw88: take over rate control from mac80211 2019-10-04 16:44:56 +03:00
tx.h rtw88: add driver TX queue support 2019-10-04 16:44:55 +03:00
util.c rtw88: report tx rate to mac80211 stack 2019-10-04 16:44:57 +03:00
util.h rtw88: support wowlan feature for 8822c 2020-01-26 17:37:03 +02:00
wow.c rtw88: Fix return value of rtw_wow_check_fw_status 2020-02-03 20:10:31 +02:00
wow.h rtw88: Add wowlan net-detect support 2020-01-26 17:37:05 +02:00