* [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select()
@ 2025-02-11 7:39 Dmitry Antipov
2025-02-11 7:39 ` [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps Dmitry Antipov
2025-02-12 5:35 ` [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Ping-Ke Shih
0 siblings, 2 replies; 10+ messages in thread
From: Dmitry Antipov @ 2025-02-11 7:39 UTC (permalink / raw)
To: Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov
Simplify 'rtw89_debug_priv_mac_reg_dump_select()' by using
the convenient 'kstrtoint_from_user()'. Compile tested only.
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
---
drivers/net/wireless/realtek/rtw89/debug.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
index 09fa977a6e6d..339f9f6672fd 100644
--- a/drivers/net/wireless/realtek/rtw89/debug.c
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
@@ -924,17 +924,10 @@ rtw89_debug_priv_mac_reg_dump_select(struct file *filp,
struct rtw89_debugfs_priv *debugfs_priv = m->private;
struct rtw89_dev *rtwdev = debugfs_priv->rtwdev;
const struct rtw89_chip_info *chip = rtwdev->chip;
- char buf[32];
- size_t buf_size;
int sel;
int ret;
- buf_size = min(count, sizeof(buf) - 1);
- if (copy_from_user(buf, user_buf, buf_size))
- return -EFAULT;
-
- buf[buf_size] = '\0';
- ret = kstrtoint(buf, 0, &sel);
+ ret = kstrtoint_from_user(user_buf, count, 0, &sel);
if (ret)
return ret;
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-11 7:39 [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Dmitry Antipov @ 2025-02-11 7:39 ` Dmitry Antipov 2025-02-12 5:42 ` Ping-Ke Shih 2025-02-12 5:35 ` [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Ping-Ke Shih 1 sibling, 1 reply; 10+ messages in thread From: Dmitry Antipov @ 2025-02-11 7:39 UTC (permalink / raw) To: Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov Assuming that 'tssi_alimk_time' of 'struct rtw89_tssi_info' is in milliseconds, adjust rtw8852b{t}-specific '_tssi_alimentk()' to not mix the former with nanoseconds. Compile tested only. Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- drivers/net/wireless/realtek/rtw89/core.h | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 9 ++++----- drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 9 ++++----- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index ff4894c7fa8a..93e41def81b4 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5135,7 +5135,7 @@ struct rtw89_tssi_info { u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; - u32 tssi_alimk_time; + u64 tssi_alimk_time; }; struct rtw89_power_trim_info { diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c index ef47a5facc83..c33cf04aed4a 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c @@ -3585,7 +3585,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time; u32 bb_reg_backup[8] = {0}; const s16 *power; u8 band; @@ -3613,7 +3613,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, return; } - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3738,11 +3738,10 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + tssi_info->tssi_alimk_time += ktime_ms_delta(ktime_get(), start_time); rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, + "[TSSI PA K] %s processing time = %llu ms\n", __func__, tssi_info->tssi_alimk_time); } diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c index 336a83e1d46b..a35952245fb3 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c @@ -3663,7 +3663,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time; u32 bb_reg_backup[8] = {}; const s16 *power; u8 band; @@ -3675,7 +3675,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, "======> %s channel=%d path=%d\n", __func__, channel, path); - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3802,11 +3802,10 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + tssi_info->tssi_alimk_time += ktime_ms_delta(ktime_get(), start_time); rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, + "[TSSI PA K] %s processing time = %llu ms\n", __func__, tssi_info->tssi_alimk_time); } -- 2.48.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-11 7:39 ` [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps Dmitry Antipov @ 2025-02-12 5:42 ` Ping-Ke Shih 2025-02-12 7:38 ` [PATCH v2] " Dmitry Antipov 0 siblings, 1 reply; 10+ messages in thread From: Ping-Ke Shih @ 2025-02-12 5:42 UTC (permalink / raw) To: Dmitry Antipov; +Cc: Kalle Valo, linux-wireless@vger.kernel.org Dmitry Antipov <dmantipov@yandex.ru> wrote: > Assuming that 'tssi_alimk_time' of 'struct rtw89_tssi_info' is > in milliseconds, Checking vendor driver, It intends microseconds. RF_DBG(rf, DBG_RF_TX_PWR_TRACK, "[TSSI PA K] %s processing time = %d.%dms\n", __func__, HALRF_ABS(finish_time, start_time) / 1000, HALRF_ABS(finish_time, start_time) % 1000); > adjust rtw8852b{t}-specific '_tssi_alimentk()' > to not mix the former with nanoseconds. Compile tested only. > > Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> > --- > drivers/net/wireless/realtek/rtw89/core.h | 2 +- > drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 9 ++++----- > drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 9 ++++----- > 3 files changed, 9 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h > index ff4894c7fa8a..93e41def81b4 100644 > --- a/drivers/net/wireless/realtek/rtw89/core.h > +++ b/drivers/net/wireless/realtek/rtw89/core.h > @@ -5135,7 +5135,7 @@ struct rtw89_tssi_info { > u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; > u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; > bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; > - u32 tssi_alimk_time; > + u64 tssi_alimk_time; This is the accumulated time of doing alimk, so debug message would be rtw89_debug(rtwdev, RTW89_DBG_RFK, "[TSSI PA K] %s processing time = %d.%d ms (acc = %d.%d ms)\n", ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-12 5:42 ` Ping-Ke Shih @ 2025-02-12 7:38 ` Dmitry Antipov 2025-02-13 0:45 ` Ping-Ke Shih 0 siblings, 1 reply; 10+ messages in thread From: Dmitry Antipov @ 2025-02-12 7:38 UTC (permalink / raw) To: Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov According to Ping-Ke, 'tssi_alimk_time' of 'struct rtw89_tssi_info' is in microseconds. So adjust rtw8852b{t}-specific '_tssi_alimentk()' to not mess the former with nanoseconds and print both per-call and accumulated times. Compile tested only. Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- v2: actually use microseconds and print both times --- drivers/net/wireless/realtek/rtw89/core.h | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 12 ++++++------ drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 12 ++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index b3fdd8eded21..eb2a6b90c940 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5141,7 +5141,7 @@ struct rtw89_tssi_info { u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; - u32 tssi_alimk_time; + u64 tssi_alimk_time; }; struct rtw89_power_trim_info { diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c index ef47a5facc83..1e0490813c40 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c @@ -3585,7 +3585,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time, this_time; u32 bb_reg_backup[8] = {0}; const s16 *power; u8 band; @@ -3613,7 +3613,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, return; } - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3738,12 +3738,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %llu us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852b_dpk_init(struct rtw89_dev *rtwdev) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c index 336a83e1d46b..1745d8039c33 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c @@ -3663,7 +3663,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time, this_time; u32 bb_reg_backup[8] = {}; const s16 *power; u8 band; @@ -3675,7 +3675,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, "======> %s channel=%d path=%d\n", __func__, channel, path); - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3802,12 +3802,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %llu us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852bt_dpk_init(struct rtw89_dev *rtwdev) -- 2.48.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH v2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-12 7:38 ` [PATCH v2] " Dmitry Antipov @ 2025-02-13 0:45 ` Ping-Ke Shih 2025-02-13 5:42 ` [PATCH v3] " Dmitry Antipov 0 siblings, 1 reply; 10+ messages in thread From: Ping-Ke Shih @ 2025-02-13 0:45 UTC (permalink / raw) To: Dmitry Antipov; +Cc: Kalle Valo, linux-wireless@vger.kernel.org Dmitry Antipov <dmantipov@yandex.ru> wrote: > According to Ping-Ke, "As vendor driver...." I think I shouldn't be the reason... > 'tssi_alimk_time' of 'struct rtw89_tssi_info' > is in microseconds. So adjust rtw8852b{t}-specific '_tssi_alimentk()' > to not mess the former with nanoseconds and print both per-call > and accumulated times. Compile tested only. > > Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> > --- > v2: actually use microseconds and print both times > --- > drivers/net/wireless/realtek/rtw89/core.h | 2 +- > drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 12 ++++++------ > drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 12 ++++++------ > 3 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h > index b3fdd8eded21..eb2a6b90c940 100644 > --- a/drivers/net/wireless/realtek/rtw89/core.h > +++ b/drivers/net/wireless/realtek/rtw89/core.h > @@ -5141,7 +5141,7 @@ struct rtw89_tssi_info { > u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; > u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; > bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; > - u32 tssi_alimk_time; > + u64 tssi_alimk_time; > }; > > struct rtw89_power_trim_info { > diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > index ef47a5facc83..1e0490813c40 100644 > --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > @@ -3585,7 +3585,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); > struct rtw8852bx_bb_tssi_bak tssi_bak; > s32 aliment_diff, tssi_cw_default; > - u32 start_time, finish_time; > + ktime_t start_time, this_time; > u32 bb_reg_backup[8] = {0}; > const s16 *power; > u8 band; > @@ -3613,7 +3613,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > return; > } > > - start_time = ktime_get_ns(); > + start_time = ktime_get(); > > if (chan->band_type == RTW89_BAND_2G) > power = power_2g; > @@ -3738,12 +3738,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); > rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); > > - finish_time = ktime_get_ns(); > - tssi_info->tssi_alimk_time += finish_time - start_time; > + this_time = ktime_us_delta(ktime_get(), start_time); As prototype static inline s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) The type of this_time should be s64 instead of ktime_t. > + tssi_info->tssi_alimk_time += this_time; > > rtw89_debug(rtwdev, RTW89_DBG_RFK, > - "[TSSI PA K] %s processing time = %d ms\n", __func__, > - tssi_info->tssi_alimk_time); > + "[TSSI PA K] %s processing time = %llu us (acc = %llu us)\n", > + __func__, this_time, tssi_info->tssi_alimk_time); > } > > void rtw8852b_dpk_init(struct rtw89_dev *rtwdev) [...] ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-13 0:45 ` Ping-Ke Shih @ 2025-02-13 5:42 ` Dmitry Antipov 2025-02-13 7:55 ` Ping-Ke Shih 0 siblings, 1 reply; 10+ messages in thread From: Dmitry Antipov @ 2025-02-13 5:42 UTC (permalink / raw) To: Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov According to Ping-Ke, the vendor driver measures 'tssi_alimk_time' of 'struct rtw89_tssi_info' in microseconds. So adjust rtw8852b{t}-specific '_tssi_alimentk()' to not mess the former with nanoseconds and print both per-call and accumulated times. Compile tested only. Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- v3: do not mess s64 vs. ktime_t and print the former as signed v2: actually use microseconds and print both times --- drivers/net/wireless/realtek/rtw89/core.h | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 13 +++++++------ drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 13 +++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index b3fdd8eded21..eb2a6b90c940 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5141,7 +5141,7 @@ struct rtw89_tssi_info { u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; - u32 tssi_alimk_time; + u64 tssi_alimk_time; }; struct rtw89_power_trim_info { diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c index ef47a5facc83..8b1cc8b71d1f 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c @@ -3585,7 +3585,8 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time; + s64 this_time; u32 bb_reg_backup[8] = {0}; const s16 *power; u8 band; @@ -3613,7 +3614,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, return; } - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3738,12 +3739,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852b_dpk_init(struct rtw89_dev *rtwdev) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c index 336a83e1d46b..07c31929222e 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c @@ -3663,7 +3663,8 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; + ktime_t start_time; + s64 this_time; u32 bb_reg_backup[8] = {}; const s16 *power; u8 band; @@ -3675,7 +3676,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, "======> %s channel=%d path=%d\n", __func__, channel, path); - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3802,12 +3803,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852bt_dpk_init(struct rtw89_dev *rtwdev) -- 2.48.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH v3] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-13 5:42 ` [PATCH v3] " Dmitry Antipov @ 2025-02-13 7:55 ` Ping-Ke Shih 2025-02-13 9:50 ` [PATCH v4] " Dmitry Antipov 0 siblings, 1 reply; 10+ messages in thread From: Ping-Ke Shih @ 2025-02-13 7:55 UTC (permalink / raw) To: Dmitry Antipov; +Cc: Kalle Valo, linux-wireless@vger.kernel.org Dmitry Antipov <dmantipov@yandex.ru> wrote: > According to Ping-Ke, I meant please don't mention my name in commit message. I don't think that helps. > the vendor driver measures 'tssi_alimk_time' of > 'struct rtw89_tssi_info' in microseconds. So adjust rtw8852b{t}-specific > '_tssi_alimentk()' to not mess the former with nanoseconds and print both > per-call and accumulated times. Compile tested only. > > Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> > --- > v3: do not mess s64 vs. ktime_t and print the former as signed > v2: actually use microseconds and print both times > --- > drivers/net/wireless/realtek/rtw89/core.h | 2 +- > drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 13 +++++++------ > drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 13 +++++++------ > 3 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h > index b3fdd8eded21..eb2a6b90c940 100644 > --- a/drivers/net/wireless/realtek/rtw89/core.h > +++ b/drivers/net/wireless/realtek/rtw89/core.h > @@ -5141,7 +5141,7 @@ struct rtw89_tssi_info { > u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; > u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; > bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; > - u32 tssi_alimk_time; > + u64 tssi_alimk_time; > }; > > struct rtw89_power_trim_info { > diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > index ef47a5facc83..8b1cc8b71d1f 100644 > --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c > @@ -3585,7 +3585,8 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); > struct rtw8852bx_bb_tssi_bak tssi_bak; > s32 aliment_diff, tssi_cw_default; > - u32 start_time, finish_time; > + ktime_t start_time; > + s64 this_time; In reverse X'mas tree order. > u32 bb_reg_backup[8] = {0}; > const s16 *power; > u8 band; > @@ -3613,7 +3614,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > return; > } > > - start_time = ktime_get_ns(); > + start_time = ktime_get(); > > if (chan->band_type == RTW89_BAND_2G) > power = power_2g; > @@ -3738,12 +3739,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); > rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); > > - finish_time = ktime_get_ns(); > - tssi_info->tssi_alimk_time += finish_time - start_time; > + this_time = ktime_us_delta(ktime_get(), start_time); > + tssi_info->tssi_alimk_time += this_time; > > rtw89_debug(rtwdev, RTW89_DBG_RFK, > - "[TSSI PA K] %s processing time = %d ms\n", __func__, > - tssi_info->tssi_alimk_time); > + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", > + __func__, this_time, tssi_info->tssi_alimk_time); > } > > void rtw8852b_dpk_init(struct rtw89_dev *rtwdev) > diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c > b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c > index 336a83e1d46b..07c31929222e 100644 > --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c > +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c > @@ -3663,7 +3663,8 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); > struct rtw8852bx_bb_tssi_bak tssi_bak; > s32 aliment_diff, tssi_cw_default; > - u32 start_time, finish_time; > + ktime_t start_time; > + s64 this_time; ditto. > u32 bb_reg_backup[8] = {}; > const s16 *power; > u8 band; > @@ -3675,7 +3676,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > "======> %s channel=%d path=%d\n", __func__, channel, > path); > > - start_time = ktime_get_ns(); > + start_time = ktime_get(); > > if (chan->band_type == RTW89_BAND_2G) > power = power_2g; > @@ -3802,12 +3803,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, > rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); > rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); > > - finish_time = ktime_get_ns(); > - tssi_info->tssi_alimk_time += finish_time - start_time; > + this_time = ktime_us_delta(ktime_get(), start_time); > + tssi_info->tssi_alimk_time += this_time; > > rtw89_debug(rtwdev, RTW89_DBG_RFK, > - "[TSSI PA K] %s processing time = %d ms\n", __func__, > - tssi_info->tssi_alimk_time); > + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", > + __func__, this_time, tssi_info->tssi_alimk_time); > } > > void rtw8852bt_dpk_init(struct rtw89_dev *rtwdev) > -- > 2.48.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-13 7:55 ` Ping-Ke Shih @ 2025-02-13 9:50 ` Dmitry Antipov 2025-02-21 1:36 ` Ping-Ke Shih 0 siblings, 1 reply; 10+ messages in thread From: Dmitry Antipov @ 2025-02-13 9:50 UTC (permalink / raw) To: Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov Since the vendor driver is claimed to measure 'tssi_alimk_time' of 'struct rtw89_tssi_info' in microseconds, adjust rtw8852b{t}-specific '_tssi_alimentk()' to not mess the former with nanoseconds and print both per-call and accumulated times. Compile tested only. Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- v4: adjust declarations and commit message v3: do not mess s64 vs. ktime_t and print the former as signed v2: actually use microseconds and print both times --- drivers/net/wireless/realtek/rtw89/core.h | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c | 13 +++++++------ drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 13 +++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index b3fdd8eded21..eb2a6b90c940 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5141,7 +5141,7 @@ struct rtw89_tssi_info { u32 alignment_backup_by_ch[RF_PATH_MAX][TSSI_MAX_CH_NUM][TSSI_ALIMK_VALUE_NUM]; u32 alignment_value[RF_PATH_MAX][TSSI_ALIMK_MAX][TSSI_ALIMK_VALUE_NUM]; bool alignment_done[RF_PATH_MAX][TSSI_ALIMK_MAX]; - u32 tssi_alimk_time; + u64 tssi_alimk_time; }; struct rtw89_power_trim_info { diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c index ef47a5facc83..fbf82d42687b 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b_rfk.c @@ -3585,9 +3585,10 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; u32 bb_reg_backup[8] = {0}; + ktime_t start_time; const s16 *power; + s64 this_time; u8 band; bool ok; u32 tmp; @@ -3613,7 +3614,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, return; } - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3738,12 +3739,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852b_dpk_init(struct rtw89_dev *rtwdev) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c index 336a83e1d46b..6e6889eea9a0 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c @@ -3663,9 +3663,10 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, u8 ch_idx = _tssi_ch_to_idx(rtwdev, channel); struct rtw8852bx_bb_tssi_bak tssi_bak; s32 aliment_diff, tssi_cw_default; - u32 start_time, finish_time; u32 bb_reg_backup[8] = {}; + ktime_t start_time; const s16 *power; + s64 this_time; u8 band; bool ok; u32 tmp; @@ -3675,7 +3676,7 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, "======> %s channel=%d path=%d\n", __func__, channel, path); - start_time = ktime_get_ns(); + start_time = ktime_get(); if (chan->band_type == RTW89_BAND_2G) power = power_2g; @@ -3802,12 +3803,12 @@ static void _tssi_alimentk(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy, rtw8852bx_bb_restore_tssi(rtwdev, phy, &tssi_bak); rtw8852bx_bb_tx_mode_switch(rtwdev, phy, 0); - finish_time = ktime_get_ns(); - tssi_info->tssi_alimk_time += finish_time - start_time; + this_time = ktime_us_delta(ktime_get(), start_time); + tssi_info->tssi_alimk_time += this_time; rtw89_debug(rtwdev, RTW89_DBG_RFK, - "[TSSI PA K] %s processing time = %d ms\n", __func__, - tssi_info->tssi_alimk_time); + "[TSSI PA K] %s processing time = %lld us (acc = %llu us)\n", + __func__, this_time, tssi_info->tssi_alimk_time); } void rtw8852bt_dpk_init(struct rtw89_dev *rtwdev) -- 2.48.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps 2025-02-13 9:50 ` [PATCH v4] " Dmitry Antipov @ 2025-02-21 1:36 ` Ping-Ke Shih 0 siblings, 0 replies; 10+ messages in thread From: Ping-Ke Shih @ 2025-02-21 1:36 UTC (permalink / raw) To: Dmitry Antipov, Ping-Ke Shih; +Cc: Kalle Valo, linux-wireless, Dmitry Antipov Dmitry Antipov <dmantipov@yandex.ru> wrote: > Since the vendor driver is claimed to measure 'tssi_alimk_time' of > 'struct rtw89_tssi_info' in microseconds, adjust rtw8852b{t}-specific > '_tssi_alimentk()' to not mess the former with nanoseconds and print > both per-call and accumulated times. Compile tested only. > > Fixes: 7f18a70d7b4d ("wifi: rtw89: 8852b: rfk: add TSSI") > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> 1 patch(es) applied to rtw-next branch of rtw.git, thanks. bfc8e71ef6b7 wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps --- https://github.com/pkshih/rtw.git ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() 2025-02-11 7:39 [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Dmitry Antipov 2025-02-11 7:39 ` [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps Dmitry Antipov @ 2025-02-12 5:35 ` Ping-Ke Shih 1 sibling, 0 replies; 10+ messages in thread From: Ping-Ke Shih @ 2025-02-12 5:35 UTC (permalink / raw) To: Dmitry Antipov; +Cc: Kalle Valo, linux-wireless@vger.kernel.org Dmitry Antipov <dmantipov@yandex.ru> wrote: > Simplify 'rtw89_debug_priv_mac_reg_dump_select()' by using > the convenient 'kstrtoint_from_user()'. Compile tested only. > > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> The function has been changed, because of switch wiphy_lock(). No copy_from_user() now. Skip this patch. > --- > drivers/net/wireless/realtek/rtw89/debug.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c > index 09fa977a6e6d..339f9f6672fd 100644 > --- a/drivers/net/wireless/realtek/rtw89/debug.c > +++ b/drivers/net/wireless/realtek/rtw89/debug.c > @@ -924,17 +924,10 @@ rtw89_debug_priv_mac_reg_dump_select(struct file *filp, > struct rtw89_debugfs_priv *debugfs_priv = m->private; > struct rtw89_dev *rtwdev = debugfs_priv->rtwdev; > const struct rtw89_chip_info *chip = rtwdev->chip; > - char buf[32]; > - size_t buf_size; > int sel; > int ret; > > - buf_size = min(count, sizeof(buf) - 1); > - if (copy_from_user(buf, user_buf, buf_size)) > - return -EFAULT; > - > - buf[buf_size] = '\0'; > - ret = kstrtoint(buf, 0, &sel); > + ret = kstrtoint_from_user(user_buf, count, 0, &sel); > if (ret) > return ret; > > -- > 2.48.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-02-21 1:37 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-11 7:39 [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Dmitry Antipov
2025-02-11 7:39 ` [PATCH 2/2] wifi: rtw89: rtw8852b{t}: fix TSSI debug timestamps Dmitry Antipov
2025-02-12 5:42 ` Ping-Ke Shih
2025-02-12 7:38 ` [PATCH v2] " Dmitry Antipov
2025-02-13 0:45 ` Ping-Ke Shih
2025-02-13 5:42 ` [PATCH v3] " Dmitry Antipov
2025-02-13 7:55 ` Ping-Ke Shih
2025-02-13 9:50 ` [PATCH v4] " Dmitry Antipov
2025-02-21 1:36 ` Ping-Ke Shih
2025-02-12 5:35 ` [PATCH 1/2] wifi: rtw89: simplify rtw89_debug_priv_mac_reg_dump_select() Ping-Ke Shih
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.