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