rtlwifi: Use mutex to replace spin_lock to protect IPS and LPS
authorPing-Ke Shih <pkshih@realtek.com>
Wed, 17 Jan 2018 06:15:21 +0000 (14:15 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 17 Jan 2018 15:09:10 +0000 (17:09 +0200)
commita3fa3669d18c959c265eda2048b998c0062a61ce
tree50aac2c73bb59847acc8bc536ce567b6218905a8
parent98051872fd25077d3b106ab3d2b945fa7025c1ef
rtlwifi: Use mutex to replace spin_lock to protect IPS and LPS

Enter/leavel IPS and LPS are large critical section, and they can't use
sleep function because running in atomic-context, which own a spin_lock.
In commit ba9f93f82aba ("rtlwifi: Fix enter/exit power_save"), it moves
LPS functions to thread-context, so this commit can simply change LPS's
spin lock to mutex.
Considering IPS functions, rtl_ips_nic_on() may be called by TX tasklet
(softirq-context) that check whether packet is auth frame. Fortunately,
current mac80211 will ask driver to leave IPS using op_config with
changed flag IEEE80211_CONF_CHANGE_IDLE, before issuing auth frame, so
IPS functions can run in thread-context and use mutex to protect critical
section, too.
Also, this commit removes some useless spin locks.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtlwifi/base.c
drivers/net/wireless/realtek/rtlwifi/ps.c
drivers/net/wireless/realtek/rtlwifi/usb.c
drivers/net/wireless/realtek/rtlwifi/wifi.h