diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-12-02 09:12:19 +0100 |
---|---|---|
committer | Kalle Valo <kvalo@kernel.org> | 2022-12-08 16:48:41 +0200 |
commit | 78d5bf925f30bf9f79a69ce77386902672defe68 (patch) | |
tree | f295e83e69f9be5d38d12624f9d7a6ecc0d4d77b /drivers/net/wireless/realtek/rtw88/ps.c | |
parent | 8647f7f0b9080bc2d2f6e02524782f2f02f159bc (diff) | |
download | linux-78d5bf925f30bf9f79a69ce77386902672defe68.tar.gz linux-78d5bf925f30bf9f79a69ce77386902672defe68.tar.bz2 linux-78d5bf925f30bf9f79a69ce77386902672defe68.zip |
wifi: rtw88: iterate over vif/sta list non-atomically
The driver uses ieee80211_iterate_active_interfaces_atomic()
and ieee80211_iterate_stations_atomic() in several places and does
register accesses in the iterators. This doesn't cope with upcoming
USB support as registers can only be accessed non-atomically.
Split these into a two stage process: First use the atomic iterator
functions to collect all active interfaces or stations on a list, then
iterate over the list non-atomically and call the iterator on each
entry.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Suggested-by: Ping-Ke shih <pkshih@realtek.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20221202081224.2779981-7-s.hauer@pengutronix.de
Diffstat (limited to 'drivers/net/wireless/realtek/rtw88/ps.c')
-rw-r--r-- | drivers/net/wireless/realtek/rtw88/ps.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/realtek/rtw88/ps.c b/drivers/net/wireless/realtek/rtw88/ps.c index c93da743681f..11594940d6b0 100644 --- a/drivers/net/wireless/realtek/rtw88/ps.c +++ b/drivers/net/wireless/realtek/rtw88/ps.c @@ -61,7 +61,7 @@ int rtw_leave_ips(struct rtw_dev *rtwdev) return ret; } - rtw_iterate_vifs_atomic(rtwdev, rtw_restore_port_cfg_iter, rtwdev); + rtw_iterate_vifs(rtwdev, rtw_restore_port_cfg_iter, rtwdev); rtw_coex_ips_notify(rtwdev, COEX_IPS_LEAVE); |