diff mbox series

wifi: rtlwifi: rtl8192de: Don't read register in _rtl92de_query_rxphystatus

Message ID 19a3e023-0eaa-4096-9f78-a2c8e909cb54@gmail.com
State New
Headers show
Series wifi: rtlwifi: rtl8192de: Don't read register in _rtl92de_query_rxphystatus | expand

Commit Message

Bitterblue Smith Jan. 12, 2024, 11:42 p.m. UTC
Instead of reading bit 9 of RFPGA0_XA_HSSIPARAMETER2 every time a frame
is received, just use rtlphy->cck_high_power, which is initialised in
_rtl92d_phy_bb_config(). That bit never changes anyway.

With this change _rtl92de_query_rxphystatus() can be shared with the
upcoming USB driver. The USB driver can't read registers in this
function because register reading can sleep.

Compile tested only.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
"That bit never changes anyway." <- I'm 99% sure this is true.
---
 drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Ping-Ke Shih Jan. 15, 2024, 1:30 a.m. UTC | #1
> -----Original Message-----
> From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> Sent: Saturday, January 13, 2024 7:42 AM
> To: linux-wireless@vger.kernel.org
> Cc: Ping-Ke Shih <pkshih@realtek.com>; Larry Finger <Larry.Finger@lwfinger.net>
> Subject: [PATCH] wifi: rtlwifi: rtl8192de: Don't read register in _rtl92de_query_rxphystatus
> 
> Instead of reading bit 9 of RFPGA0_XA_HSSIPARAMETER2 every time a frame
> is received, just use rtlphy->cck_high_power, which is initialised in
> _rtl92d_phy_bb_config(). That bit never changes anyway.
> 
> With this change _rtl92de_query_rxphystatus() can be shared with the
> upcoming USB driver. The USB driver can't read registers in this
> function because register reading can sleep.
> 
> Compile tested only.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>

> ---
> "That bit never changes anyway." <- I'm 99% sure this is true.

I can't find a RTL8192DE, but after checking RFPGA0_XA_HSSIPARAMETER2 and
its address 0x824, I believe you are right. 

[...]
Kalle Valo Jan. 18, 2024, 9:34 a.m. UTC | #2
Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:

> Instead of reading bit 9 of RFPGA0_XA_HSSIPARAMETER2 every time a frame
> is received, just use rtlphy->cck_high_power, which is initialised in
> _rtl92d_phy_bb_config(). That bit never changes anyway.
> 
> With this change _rtl92de_query_rxphystatus() can be shared with the
> upcoming USB driver. The USB driver can't read registers in this
> function because register reading can sleep.
> 
> Compile tested only.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> Acked-by: Ping-Ke Shih <pkshih@realtek.com>

Patch applied to wireless-next.git, thanks.

0635d73d85c1 wifi: rtlwifi: rtl8192de: Don't read register in _rtl92de_query_rxphystatus
diff mbox series

Patch

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
index 02ac69c08ed3..192982ec8152 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
@@ -42,6 +42,7 @@  static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
 				       bool packet_beacon)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
+	struct rtl_phy *rtlphy = &(rtlpriv->phy);
 	struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv);
 	struct phy_sts_cck_8192d *cck_buf;
 	s8 rx_pwr_all, rx_pwr[4];
@@ -62,9 +63,7 @@  static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
 		u8 report, cck_highpwr;
 		cck_buf = (struct phy_sts_cck_8192d *)p_drvinfo;
 		if (ppsc->rfpwr_state == ERFON)
-			cck_highpwr = (u8) rtl_get_bbreg(hw,
-						 RFPGA0_XA_HSSIPARAMETER2,
-						 BIT(9));
+			cck_highpwr = rtlphy->cck_high_power;
 		else
 			cck_highpwr = false;
 		if (!cck_highpwr) {