mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior.
@ 2023-12-19  6:57 Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, Larry.Finger, linville, george0505, chaoming_li,
	linux-wireless, linux-kernel, kernel-janitors

There is an undefined bitwise shift behavior, when the right operand is
greater than or equal to then width of the  promoted left operand.
(eg: (u32)data << 32). Commit bc8263083af6("fix an undefined bitwise shift
behavior") only fixed one problem, there are many similar problems in 
drivers/net/wireless/realtek/. 

This patchset adds a new function calculate_bit_shift() to fix the
remaining undefined bitwise shift behavior problems.(Compile tested only)

Su Hui (11):
  wifi: rtlwifi: add calculate_bit_shift()
  wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift()
  wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
  wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
  wifi: rtlwifi: rtl8723_common: using calculate_bit_shift()
  wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift()

 .../net/wireless/realtek/rtlwifi/rtl8188ee/phy.c | 14 ++++----------
 .../realtek/rtlwifi/rtl8192c/phy_common.c        | 12 ++----------
 .../realtek/rtlwifi/rtl8192c/phy_common.h        |  1 -
 .../net/wireless/realtek/rtlwifi/rtl8192ce/phy.c |  6 +++---
 .../net/wireless/realtek/rtlwifi/rtl8192ce/phy.h |  1 -
 .../net/wireless/realtek/rtlwifi/rtl8192cu/phy.c |  6 +++---
 .../net/wireless/realtek/rtlwifi/rtl8192de/phy.c | 15 ++++-----------
 .../net/wireless/realtek/rtlwifi/rtl8192ee/phy.c | 16 ++++------------
 .../net/wireless/realtek/rtlwifi/rtl8192se/phy.c | 15 ++++-----------
 .../net/wireless/realtek/rtlwifi/rtl8723ae/phy.c |  6 +++---
 .../net/wireless/realtek/rtlwifi/rtl8723be/phy.c |  4 ++--
 .../realtek/rtlwifi/rtl8723com/phy_common.c      | 12 ++----------
 .../realtek/rtlwifi/rtl8723com/phy_common.h      |  1 -
 .../net/wireless/realtek/rtlwifi/rtl8821ae/phy.c | 15 ++++-----------
 drivers/net/wireless/realtek/rtlwifi/wifi.h      |  7 +++++++
 15 files changed, 42 insertions(+), 89 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-20  6:47   ` Ping-Ke Shih
  2023-12-21 14:40   ` Kalle Valo
  2023-12-19  6:57 ` [PATCH wireless-next 02/11] wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift() Su Hui
                   ` (9 subsequent siblings)
  10 siblings, 2 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: Su Hui, linux-wireless, linux-kernel, kernel-janitors

There are many same functions like _rtl88e_phy_calculate_bit_shift(),
_rtl92c_phy_calculate_bit_shift() and so on. And these functions can
cause undefined bitwise shift behavior. Add calculate_bit_shift() to
replace them and fix undefined behavior in subsequent patches.

Signed-off-by: Su Hui <suhui@nfschina.com>
---
 drivers/net/wireless/realtek/rtlwifi/wifi.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index 31a481f43a07..5d842cc394aa 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -3069,4 +3069,11 @@ static inline struct ieee80211_sta *rtl_find_sta(struct ieee80211_hw *hw,
 	return ieee80211_find_sta(mac->vif, mac_addr);
 }
 
+static inline u32 calculate_bit_shift(u32 bitmask)
+{
+	if (WARN_ON_ONCE(!bitmask))
+		return 0;
+
+	return __ffs(bitmask);
+}
 #endif
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 02/11] wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 03/11] wifi: rtlwifi: rtl8188ee: " Su Hui
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: Su Hui, linux-wireless, linux-kernel, kernel-janitors

using calculate_bit_shift() to replace
_rtl8821ae_phy_calculate_bit_shift().

Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../net/wireless/realtek/rtlwifi/rtl8821ae/phy.c  | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c
index 68c3fb0395ce..1be51ea3f3c8 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c
@@ -27,13 +27,6 @@ static u32 _rtl8821ae_phy_rf_serial_read(struct ieee80211_hw *hw,
 static void _rtl8821ae_phy_rf_serial_write(struct ieee80211_hw *hw,
 					   enum radio_path rfpath, u32 offset,
 					   u32 data);
-static u32 _rtl8821ae_phy_calculate_bit_shift(u32 bitmask)
-{
-	if (WARN_ON_ONCE(!bitmask))
-		return 0;
-
-	return __ffs(bitmask);
-}
 static bool _rtl8821ae_phy_bb8821a_config_parafile(struct ieee80211_hw *hw);
 /*static bool _rtl8812ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw);*/
 static bool _rtl8821ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw);
@@ -106,7 +99,7 @@ u32 rtl8821ae_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
 		"regaddr(%#x), bitmask(%#x)\n",
 		regaddr, bitmask);
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -127,7 +120,7 @@ void rtl8821ae_phy_set_bb_reg(struct ieee80211_hw *hw,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) |
 			((data << bitshift) & bitmask));
 	}
@@ -153,7 +146,7 @@ u32 rtl8821ae_phy_query_rf_reg(struct ieee80211_hw *hw,
 	spin_lock(&rtlpriv->locks.rf_lock);
 
 	original_value = _rtl8821ae_phy_rf_serial_read(hw, rfpath, regaddr);
-	bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -181,7 +174,7 @@ void rtl8821ae_phy_set_rf_reg(struct ieee80211_hw *hw,
 	if (bitmask != RFREG_OFFSET_MASK) {
 		original_value =
 		   _rtl8821ae_phy_rf_serial_read(hw, rfpath, regaddr);
-		bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((original_value & (~bitmask)) | (data << bitshift));
 	}
 
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 03/11] wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 02/11] wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift() Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 04/11] wifi: rtlwifi: rtl8192c: " Su Hui
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, Larry.Finger, linville, linux-wireless, linux-kernel,
	kernel-janitors

Using calculate_bit_shift() to replace _rtl88e_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: f0eb856e0b6c ("rtlwifi: rtl8188ee: Add new driver")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../net/wireless/realtek/rtlwifi/rtl8188ee/phy.c   | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c
index 12d0b3a87af7..0fab3a0c7d49 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c
@@ -16,12 +16,6 @@ static u32 _rtl88e_phy_rf_serial_read(struct ieee80211_hw *hw,
 static void _rtl88e_phy_rf_serial_write(struct ieee80211_hw *hw,
 					enum radio_path rfpath, u32 offset,
 					u32 data);
-static u32 _rtl88e_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
 static bool _rtl88e_phy_bb8188e_config_parafile(struct ieee80211_hw *hw);
 static bool _rtl88e_phy_config_mac_with_headerfile(struct ieee80211_hw *hw);
 static bool phy_config_bb_with_headerfile(struct ieee80211_hw *hw,
@@ -51,7 +45,7 @@ u32 rtl88e_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
 		"regaddr(%#x), bitmask(%#x)\n", regaddr, bitmask);
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = _rtl88e_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -74,7 +68,7 @@ void rtl88e_phy_set_bb_reg(struct ieee80211_hw *hw,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl88e_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 
@@ -99,7 +93,7 @@ u32 rtl88e_phy_query_rf_reg(struct ieee80211_hw *hw,
 
 
 	original_value = _rtl88e_phy_rf_serial_read(hw, rfpath, regaddr);
-	bitshift = _rtl88e_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -127,7 +121,7 @@ void rtl88e_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = _rtl88e_phy_rf_serial_read(hw,
 								    rfpath,
 								    regaddr);
-			bitshift = _rtl88e_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 04/11] wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (2 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 03/11] wifi: rtlwifi: rtl8188ee: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 05/11] wifi: rtlwifi: rtl8192cu: " Su Hui
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, linville, Larry.Finger, linux-wireless, linux-kernel,
	kernel-janitors

Using calculate_bit_shift() to replace _rtl92c_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: 4295cd254af3 ("rtlwifi: Move common parts of rtl8192ce/phy.c")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../wireless/realtek/rtlwifi/rtl8192c/phy_common.c   | 12 ++----------
 .../wireless/realtek/rtlwifi/rtl8192c/phy_common.h   |  1 -
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c
index 3d29c8dbb255..144ee780e1b6 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c
@@ -17,7 +17,7 @@ u32 rtl92c_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE, "regaddr(%#x), bitmask(%#x)\n",
 		regaddr, bitmask);
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -40,7 +40,7 @@ void rtl92c_phy_set_bb_reg(struct ieee80211_hw *hw,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 
@@ -143,14 +143,6 @@ void _rtl92c_phy_rf_serial_write(struct ieee80211_hw *hw,
 }
 EXPORT_SYMBOL(_rtl92c_phy_rf_serial_write);
 
-u32 _rtl92c_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
-EXPORT_SYMBOL(_rtl92c_phy_calculate_bit_shift);
-
 static void _rtl92c_phy_bb_config_1t(struct ieee80211_hw *hw)
 {
 	rtl_set_bbreg(hw, RFPGA0_TXINFO, 0x3, 0x2);
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h
index 75afa6253ad0..e64d377dfe9e 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h
@@ -196,7 +196,6 @@ bool rtl92c_phy_set_rf_power_state(struct ieee80211_hw *hw,
 void rtl92ce_phy_set_rf_on(struct ieee80211_hw *hw);
 void rtl92c_phy_set_io(struct ieee80211_hw *hw);
 void rtl92c_bb_block_on(struct ieee80211_hw *hw);
-u32 _rtl92c_phy_calculate_bit_shift(u32 bitmask);
 long _rtl92c_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw,
 				  enum wireless_mode wirelessmode,
 				  u8 txpwridx);
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 05/11] wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (3 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 04/11] wifi: rtlwifi: rtl8192c: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 06/11] wifi: rtlwifi: rtl8192ce: " Su Hui
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, Larry.Finger, george0505, linville, linux-wireless,
	linux-kernel, kernel-janitors

Using calculate_bit_shift() to replace _rtl92c_phy_calculate_bit_shift().
And fix an undefined bitwise shift behavior problem.

Fixes: f0a39ae738d6 ("rtlwifi: rtl8192cu: Add routine phy")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c
index a8d9fe269f31..0b8cb7e61fd8 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c
@@ -32,7 +32,7 @@ u32 rtl92cu_phy_query_rf_reg(struct ieee80211_hw *hw,
 		original_value = _rtl92c_phy_fw_rf_serial_read(hw,
 							       rfpath, regaddr);
 	}
-	bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
 		"regaddr(%#x), rfpath(%#x), bitmask(%#x), original_value(%#x)\n",
@@ -56,7 +56,7 @@ void rtl92cu_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = _rtl92c_phy_rf_serial_read(hw,
 								    rfpath,
 								    regaddr);
-			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
@@ -67,7 +67,7 @@ void rtl92cu_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = _rtl92c_phy_fw_rf_serial_read(hw,
 								       rfpath,
 								       regaddr);
-			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 06/11] wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (4 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 05/11] wifi: rtlwifi: rtl8192cu: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 07/11] wifi: rtlwifi: rtl8192de: " Su Hui
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, Larry.Finger, linville, linux-wireless, linux-kernel,
	kernel-janitors

Using calculate_bit_shift() to replace _rtl92c_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c | 6 +++---
 drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h | 1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c
index da54e51badd3..fa70a7d5539f 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c
@@ -39,7 +39,7 @@ u32 rtl92c_phy_query_rf_reg(struct ieee80211_hw *hw,
 							       rfpath, regaddr);
 	}
 
-	bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -110,7 +110,7 @@ void rtl92ce_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = _rtl92c_phy_rf_serial_read(hw,
 								    rfpath,
 								    regaddr);
-			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
@@ -122,7 +122,7 @@ void rtl92ce_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = _rtl92c_phy_fw_rf_serial_read(hw,
 								       rfpath,
 								       regaddr);
-			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h
index 7582a162bd11..c7a0d4c776f0 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h
@@ -94,7 +94,6 @@ u32 _rtl92c_phy_rf_serial_read(struct ieee80211_hw *hw, enum radio_path rfpath,
 			       u32 offset);
 u32 _rtl92c_phy_fw_rf_serial_read(struct ieee80211_hw *hw,
 				  enum radio_path rfpath, u32 offset);
-u32 _rtl92c_phy_calculate_bit_shift(u32 bitmask);
 void _rtl92c_phy_rf_serial_write(struct ieee80211_hw *hw,
 				 enum radio_path rfpath, u32 offset, u32 data);
 void _rtl92c_phy_fw_rf_serial_write(struct ieee80211_hw *hw,
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 07/11] wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (5 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 06/11] wifi: rtlwifi: rtl8192ce: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 08/11] wifi: rtlwifi: rtl8192ee: " Su Hui
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, linville, chaoming_li, Larry.Finger, linux-wireless,
	linux-kernel, kernel-janitors

Using calculate_bit_shift() to replace _rtl92d_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: 7274a8c22980 ("rtlwifi: rtl8192de: Merge phy routines")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../net/wireless/realtek/rtlwifi/rtl8192de/phy.c  | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
index d18c092b6142..d835a27429f0 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
@@ -169,13 +169,6 @@ static const u8 channel_all[59] = {
 	157, 159, 161, 163, 165
 };
 
-static u32 _rtl92d_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
-
 u32 rtl92d_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
@@ -198,7 +191,7 @@ u32 rtl92d_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 	} else {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
 	}
-	bitshift = _rtl92d_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
 		"BBR MASK=0x%x Addr[0x%x]=0x%x\n",
@@ -230,7 +223,7 @@ void rtl92d_phy_set_bb_reg(struct ieee80211_hw *hw,
 					dbi_direct);
 		else
 			originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl92d_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 	if (rtlhal->during_mac1init_radioa || rtlhal->during_mac0init_radiob)
@@ -317,7 +310,7 @@ u32 rtl92d_phy_query_rf_reg(struct ieee80211_hw *hw,
 		regaddr, rfpath, bitmask);
 	spin_lock(&rtlpriv->locks.rf_lock);
 	original_value = _rtl92d_phy_rf_serial_read(hw, rfpath, regaddr);
-	bitshift = _rtl92d_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 	spin_unlock(&rtlpriv->locks.rf_lock);
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -343,7 +336,7 @@ void rtl92d_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
 		if (bitmask != RFREG_OFFSET_MASK) {
 			original_value = _rtl92d_phy_rf_serial_read(hw,
 				rfpath, regaddr);
-			bitshift = _rtl92d_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data = ((original_value & (~bitmask)) |
 				(data << bitshift));
 		}
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 08/11] wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (6 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 07/11] wifi: rtlwifi: rtl8192de: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 09/11] wifi: rtlwifi: rtl8192se: " Su Hui
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, Larry.Finger, linville, linux-wireless, linux-kernel,
	kernel-janitors

Using calculate_bit_shift() to replace _rtl92ee_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: b1a3bfc97cd9 ("rtlwifi: rtl8192ee: Move driver from staging to the regular tree")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../net/wireless/realtek/rtlwifi/rtl8192ee/phy.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c
index cc0bcaf13e96..73ef602bfb01 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c
@@ -16,7 +16,6 @@ static u32 _rtl92ee_phy_rf_serial_read(struct ieee80211_hw *hw,
 static void _rtl92ee_phy_rf_serial_write(struct ieee80211_hw *hw,
 					 enum radio_path rfpath, u32 offset,
 					 u32 data);
-static u32 _rtl92ee_phy_calculate_bit_shift(u32 bitmask);
 static bool _rtl92ee_phy_bb8192ee_config_parafile(struct ieee80211_hw *hw);
 static bool _rtl92ee_phy_config_mac_with_headerfile(struct ieee80211_hw *hw);
 static bool phy_config_bb_with_hdr_file(struct ieee80211_hw *hw,
@@ -46,7 +45,7 @@ u32 rtl92ee_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
 		"regaddr(%#x), bitmask(%#x)\n", regaddr, bitmask);
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = _rtl92ee_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -68,7 +67,7 @@ void rtl92ee_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl92ee_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 
@@ -92,7 +91,7 @@ u32 rtl92ee_phy_query_rf_reg(struct ieee80211_hw *hw,
 	spin_lock(&rtlpriv->locks.rf_lock);
 
 	original_value = _rtl92ee_phy_rf_serial_read(hw , rfpath, regaddr);
-	bitshift = _rtl92ee_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -119,7 +118,7 @@ void rtl92ee_phy_set_rf_reg(struct ieee80211_hw *hw,
 
 	if (bitmask != RFREG_OFFSET_MASK) {
 		original_value = _rtl92ee_phy_rf_serial_read(hw, rfpath, addr);
-		bitshift = _rtl92ee_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = (original_value & (~bitmask)) | (data << bitshift);
 	}
 
@@ -201,13 +200,6 @@ static void _rtl92ee_phy_rf_serial_write(struct ieee80211_hw *hw,
 		pphyreg->rf3wire_offset, data_and_addr);
 }
 
-static u32 _rtl92ee_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
-
 bool rtl92ee_phy_mac_config(struct ieee80211_hw *hw)
 {
 	return _rtl92ee_phy_config_mac_with_headerfile(hw);
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 09/11] wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (7 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 08/11] wifi: rtlwifi: rtl8192ee: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 10/11] wifi: rtlwifi: rtl8723_common: " Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 11/11] wifi: rtlwifi: rtl8723{be,ae}: " Su Hui
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, chaoming_li, linville, Larry.Finger, linux-wireless,
	linux-kernel, kernel-janitors

Using calculate_bit_shift() to replace _rtl92s_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: d15853163bea ("rtlwifi: rtl8192se: Merge phy routines")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../net/wireless/realtek/rtlwifi/rtl8192se/phy.c  | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c
index 09591a0b5a81..d9ef7e1da1db 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c
@@ -14,13 +14,6 @@
 #include "hw.h"
 #include "table.h"
 
-static u32 _rtl92s_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
-
 u32 rtl92s_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 {
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
@@ -30,7 +23,7 @@ u32 rtl92s_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask)
 		regaddr, bitmask);
 
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE, "BBR MASK=0x%x Addr[0x%x]=0x%x\n",
@@ -52,7 +45,7 @@ void rtl92s_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 
@@ -157,7 +150,7 @@ u32 rtl92s_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
 
 	original_value = _rtl92s_phy_rf_serial_read(hw, rfpath, regaddr);
 
-	bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -188,7 +181,7 @@ void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
 	if (bitmask != RFREG_OFFSET_MASK) {
 		original_value = _rtl92s_phy_rf_serial_read(hw, rfpath,
 							    regaddr);
-		bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((original_value & (~bitmask)) | (data << bitshift));
 	}
 
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 10/11] wifi: rtlwifi: rtl8723_common: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (8 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 09/11] wifi: rtlwifi: rtl8192se: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  2023-12-19  6:57 ` [PATCH wireless-next 11/11] wifi: rtlwifi: rtl8723{be,ae}: " Su Hui
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo
  Cc: Su Hui, linville, Larry.Finger, linux-wireless, linux-kernel,
	kernel-janitors

Using calculate_bit_shift() to replace rtl8723_phy_calculate_bit_shift().
And fix the undefined bitwise shift behavior problem.

Fixes: 0a168b48cdf7 ("rtlwifi: rtl8723ae: rtl8723-common: Create new driver for common code")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
 .../wireless/realtek/rtlwifi/rtl8723com/phy_common.c | 12 ++----------
 .../wireless/realtek/rtlwifi/rtl8723com/phy_common.h |  1 -
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.c
index 47b6c1aa36b0..d97c88ebce75 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.c
@@ -17,7 +17,7 @@ u32 rtl8723_phy_query_bb_reg(struct ieee80211_hw *hw,
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
 		"regaddr(%#x), bitmask(%#x)\n", regaddr, bitmask);
 	originalvalue = rtl_read_dword(rtlpriv, regaddr);
-	bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	returnvalue = (originalvalue & bitmask) >> bitshift;
 
 	rtl_dbg(rtlpriv, COMP_RF, DBG_TRACE,
@@ -39,7 +39,7 @@ void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
 
 	if (bitmask != MASKDWORD) {
 		originalvalue = rtl_read_dword(rtlpriv, regaddr);
-		bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+		bitshift = calculate_bit_shift(bitmask);
 		data = ((originalvalue & (~bitmask)) | (data << bitshift));
 	}
 
@@ -51,14 +51,6 @@ void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
 }
 EXPORT_SYMBOL_GPL(rtl8723_phy_set_bb_reg);
 
-u32 rtl8723_phy_calculate_bit_shift(u32 bitmask)
-{
-	u32 i = ffs(bitmask);
-
-	return i ? i - 1 : 32;
-}
-EXPORT_SYMBOL_GPL(rtl8723_phy_calculate_bit_shift);
-
 u32 rtl8723_phy_rf_serial_read(struct ieee80211_hw *hw,
 			       enum radio_path rfpath, u32 offset)
 {
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.h b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.h
index edf1c52f0ee2..af85c3287507 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.h
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/phy_common.h
@@ -27,7 +27,6 @@ u32 rtl8723_phy_query_bb_reg(struct ieee80211_hw *hw,
 			     u32 regaddr, u32 bitmask);
 void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
 			      u32 bitmask, u32 data);
-u32 rtl8723_phy_calculate_bit_shift(u32 bitmask);
 u32 rtl8723_phy_rf_serial_read(struct ieee80211_hw *hw,
 			       enum radio_path rfpath, u32 offset);
 void rtl8723_phy_rf_serial_write(struct ieee80211_hw *hw,
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH wireless-next 11/11] wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift()
  2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
                   ` (9 preceding siblings ...)
  2023-12-19  6:57 ` [PATCH wireless-next 10/11] wifi: rtlwifi: rtl8723_common: " Su Hui
@ 2023-12-19  6:57 ` Su Hui
  10 siblings, 0 replies; 14+ messages in thread
From: Su Hui @ 2023-12-19  6:57 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: Su Hui, linux-wireless, linux-kernel, kernel-janitors

Using calculate_bit_shift() to replace rtl8723_phy_calculate_bit_shift().
And fix an undefined bitwise shift behavior problem.

Signed-off-by: Su Hui <suhui@nfschina.com>
---
 drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c | 6 +++---
 drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c
index fe9b407dc2af..71e29b103da5 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c
@@ -49,7 +49,7 @@ u32 rtl8723e_phy_query_rf_reg(struct ieee80211_hw *hw,
 							    rfpath, regaddr);
 	}
 
-	bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -80,7 +80,7 @@ void rtl8723e_phy_set_rf_reg(struct ieee80211_hw *hw,
 			original_value = rtl8723_phy_rf_serial_read(hw,
 								    rfpath,
 								    regaddr);
-			bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
@@ -89,7 +89,7 @@ void rtl8723e_phy_set_rf_reg(struct ieee80211_hw *hw,
 		rtl8723_phy_rf_serial_write(hw, rfpath, regaddr, data);
 	} else {
 		if (bitmask != RFREG_OFFSET_MASK) {
-			bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data =
 			    ((original_value & (~bitmask)) |
 			     (data << bitshift));
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c
index 2b9313cb93db..094cb36153f5 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c
@@ -41,7 +41,7 @@ u32 rtl8723be_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
 	spin_lock(&rtlpriv->locks.rf_lock);
 
 	original_value = rtl8723_phy_rf_serial_read(hw, rfpath, regaddr);
-	bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+	bitshift = calculate_bit_shift(bitmask);
 	readback_value = (original_value & bitmask) >> bitshift;
 
 	spin_unlock(&rtlpriv->locks.rf_lock);
@@ -68,7 +68,7 @@ void rtl8723be_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path path,
 	if (bitmask != RFREG_OFFSET_MASK) {
 			original_value = rtl8723_phy_rf_serial_read(hw, path,
 								    regaddr);
-			bitshift = rtl8723_phy_calculate_bit_shift(bitmask);
+			bitshift = calculate_bit_shift(bitmask);
 			data = ((original_value & (~bitmask)) |
 				(data << bitshift));
 		}
-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift()
  2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
@ 2023-12-20  6:47   ` Ping-Ke Shih
  2023-12-21 14:40   ` Kalle Valo
  1 sibling, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2023-12-20  6:47 UTC (permalink / raw)
  To: Su Hui, kvalo; +Cc: linux-wireless, linux-kernel, kernel-janitors



> -----Original Message-----
> From: Su Hui <suhui@nfschina.com>
> Sent: Tuesday, December 19, 2023 2:57 PM
> To: Ping-Ke Shih <pkshih@realtek.com>; kvalo@kernel.org
> Cc: Su Hui <suhui@nfschina.com>; linux-wireless@vger.kernel.org; linux-kernel@vger.kernel.org;
> kernel-janitors@vger.kernel.org
> Subject: [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift()
> 
> There are many same functions like _rtl88e_phy_calculate_bit_shift(),
> _rtl92c_phy_calculate_bit_shift() and so on. And these functions can
> cause undefined bitwise shift behavior. Add calculate_bit_shift() to
> replace them and fix undefined behavior in subsequent patches.
> 
> Signed-off-by: Su Hui <suhui@nfschina.com>

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

> ---
>  drivers/net/wireless/realtek/rtlwifi/wifi.h | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> index 31a481f43a07..5d842cc394aa 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> @@ -3069,4 +3069,11 @@ static inline struct ieee80211_sta *rtl_find_sta(struct ieee80211_hw *hw,
>         return ieee80211_find_sta(mac->vif, mac_addr);
>  }
> 
> +static inline u32 calculate_bit_shift(u32 bitmask)
> +{
> +       if (WARN_ON_ONCE(!bitmask))
> +               return 0;
> +
> +       return __ffs(bitmask);
> +}
>  #endif

Basically, this patchset is to change from below example to above one. 

static u32 _rtl92d_phy_calculate_bit_shift(u32 bitmask)
{
       u32 i = ffs(bitmask);

       return i ? i - 1 : 32;
}

And, bitmask is expected not 0, so all are fine to me. 
(I don't reply all patches one-by-one to bother people)

Ping-Ke


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift()
  2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
  2023-12-20  6:47   ` Ping-Ke Shih
@ 2023-12-21 14:40   ` Kalle Valo
  1 sibling, 0 replies; 14+ messages in thread
From: Kalle Valo @ 2023-12-21 14:40 UTC (permalink / raw)
  To: Su Hui; +Cc: pkshih, Su Hui, linux-wireless, linux-kernel, kernel-janitors

Su Hui <suhui@nfschina.com> wrote:

> There are many same functions like _rtl88e_phy_calculate_bit_shift(),
> _rtl92c_phy_calculate_bit_shift() and so on. And these functions can
> cause undefined bitwise shift behavior. Add calculate_bit_shift() to
> replace them and fix undefined behavior in subsequent patches.
> 
> Signed-off-by: Su Hui <suhui@nfschina.com>
> Acked-by: Ping-Ke Shih <pkshih@realtek.com>

11 patches applied to wireless-next.git, thanks.

52221dfddbbf wifi: rtlwifi: add calculate_bit_shift()
acefef7a7e7a wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift()
969bc926f04b wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
1dedc3a6699d wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
f4088c8fcbab wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
3d03e8231031 wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
b8b2baad2e65 wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
63526897fc0d wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
ac32b9317063 wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
98d9c7731dbb wifi: rtlwifi: rtl8723_common: using calculate_bit_shift()
5c16618bc06a wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift()

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20231219065739.1895666-2-suhui@nfschina.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-12-21 14:40 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-19  6:57 [PATCH wireless-next 00/11] using calculate_bit_shift() to fix undefined bitwise shift behavior Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 01/11] wifi: rtlwifi: add calculate_bit_shift() Su Hui
2023-12-20  6:47   ` Ping-Ke Shih
2023-12-21 14:40   ` Kalle Valo
2023-12-19  6:57 ` [PATCH wireless-next 02/11] wifi: rtlwifi: rtl8821ae: phy: using calculate_bit_shift() Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 03/11] wifi: rtlwifi: rtl8188ee: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 04/11] wifi: rtlwifi: rtl8192c: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 05/11] wifi: rtlwifi: rtl8192cu: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 06/11] wifi: rtlwifi: rtl8192ce: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 07/11] wifi: rtlwifi: rtl8192de: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 08/11] wifi: rtlwifi: rtl8192ee: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 09/11] wifi: rtlwifi: rtl8192se: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 10/11] wifi: rtlwifi: rtl8723_common: " Su Hui
2023-12-19  6:57 ` [PATCH wireless-next 11/11] wifi: rtlwifi: rtl8723{be,ae}: " Su Hui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®