wifi: rtw89: correct unit for port offset and refine macro
authorZong-Zhe Yang <kevin_yang@realtek.com>
Thu, 19 Jan 2023 06:24:51 +0000 (14:24 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 13 Feb 2023 17:04:59 +0000 (19:04 +0200)
Strictly speaking, the unit of the offset should be TU instead of ms.
So, correct it and the macro for calculation. Then, to make the macro
generic, the factor n is moved outside.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230119062453.58341-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h

index 5ab0590..ea34b4d 100644 (file)
@@ -3930,10 +3930,12 @@ static void rtw89_mac_port_tsf_sync(struct rtw89_dev *rtwdev,
 
        /* adjust offset randomly to avoid beacon conflict */
        offset = offset - offset / 4 + get_random_u32() % (offset / 2);
-       val = RTW89_PORT_OFFSET_MS_TO_32US((*n_offset)++, offset);
+       val = (*n_offset) * RTW89_PORT_OFFSET_TU_TO_32US(offset);
        reg = rtw89_mac_reg_by_idx(R_AX_PORT0_TSF_SYNC + rtwvif->port * 4,
                                   rtwvif->mac_idx);
 
+       (*n_offset)++;
+
        rtw89_write32_mask(rtwdev, reg, B_AX_SYNC_PORT_SRC, rtwvif_src->port);
        rtw89_write32_mask(rtwdev, reg, B_AX_SYNC_PORT_OFFSET_VAL, val);
        rtw89_write32_set(rtwdev, reg, B_AX_SYNC_NOW);
index f0b684b..2556271 100644 (file)
@@ -168,7 +168,7 @@ enum rtw89_mac_ax_l0_to_l1_event {
        MAC_AX_L0_TO_L1_EVENT_MAX = 15,
 };
 
-#define RTW89_PORT_OFFSET_MS_TO_32US(n, shift_ms) ((n) * (shift_ms) * 1000 / 32)
+#define RTW89_PORT_OFFSET_TU_TO_32US(shift_tu) ((shift_tu) * 1024 / 32)
 
 enum rtw89_mac_dbg_port_sel {
        /* CMAC 0 related */