wifi: rtw88: Move register access from rtw_bf_assoc() outside the RCU
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Sun, 8 Jan 2023 21:13:22 +0000 (22:13 +0100)
committerKalle Valo <kvalo@kernel.org>
Mon, 16 Jan 2023 16:27:43 +0000 (18:27 +0200)
commit8a1e2fd8e2da5c8b8c438e20ebffef6881cc9ab8
treed83af21810a313da7b06236a3d6794a7fdf39397
parent2a86aa9a1892d60ef2e3f310f5b42b8b05546d65
wifi: rtw88: Move register access from rtw_bf_assoc() outside the RCU

USB and (upcoming) SDIO support may sleep in the read/write handlers.
Shrink the RCU critical section so it only cover the call to
ieee80211_find_sta() and finding the ic_vht_cap/vht_cap based on the
found station. This moves the chip's BFEE configuration outside the
rcu_read_lock section and thus prevent "scheduling while atomic" or
"Voluntary context switch within RCU read-side critical section!"
warnings when accessing the registers using an SDIO card (which is
where this issue has been spotted in the real world - but it also
affects USB cards).

Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Tested-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230108211324.442823-2-martin.blumenstingl@googlemail.com
drivers/net/wireless/realtek/rtw88/bf.c