* [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®