]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: rfk: add to print debug log of TX IQK
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 23 Jan 2026 01:39:48 +0000 (09:39 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Wed, 28 Jan 2026 03:11:24 +0000 (11:11 +0800)
Add report format for TX IQK, which do calibration in firmware and send
a C2H event as debug purpose.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260123013957.16418-3-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/fw.h
drivers/net/wireless/realtek/rtw89/phy.c
drivers/net/wireless/realtek/rtw89/phy.h

index 31402667e1557a3a38e5ae7ff138e9478e92fa85..c3ad473a06f212f25b55c4a1c52bbef4bfad0646 100644 (file)
@@ -5069,6 +5069,26 @@ struct rtw89_c2h_rf_txgapk_rpt_log {
        u8 rsv1;
 } __packed;
 
+struct rtw89_c2h_rf_txiqk_rpt_log {
+       u8 fw_txiqk_ver;
+       u8 rsvd;
+       u8 iqk_band[2];
+       u8 iqk_ch[2];
+       u8 iqk_bw[2];
+       bool tx_iqk_fail[2];
+       bool is_iqk_init;
+       bool txiqk_en;
+       bool lok_en;
+       bool lok_fail[2];
+       u8 rsvd2;
+       __le32 iqk_times;
+       bool txiqk_nctldone[2];
+       u8 rsvd3[2];
+       __le32 txgain[2][6];
+       __le32 tx_iqc[2][6];
+       __le32 tx_xym[2][6][14];
+} __packed;
+
 struct rtw89_c2h_rfk_report {
        struct rtw89_c2h_hdr hdr;
        u8 state; /* enum rtw89_rfk_report_state */
index fd2e9a47251811cbe86bab485c3284f7b0bc2a07..215864d1e1c7907b8dc62bf3d29eb92ad129e2e7 100644 (file)
@@ -3456,6 +3456,7 @@ static void rtw89_phy_c2h_rfk_rpt_log(struct rtw89_dev *rtwdev,
 {
        struct rtw89_c2h_rf_txgapk_rpt_log *txgapk;
        struct rtw89_c2h_rf_rxdck_rpt_log *rxdck;
+       struct rtw89_c2h_rf_txiqk_rpt_log *txiqk;
        struct rtw89_c2h_rf_dack_rpt_log *dack;
        struct rtw89_c2h_rf_tssi_rpt_log *tssi;
        struct rtw89_c2h_rf_dpk_rpt_log *dpk;
@@ -3706,7 +3707,10 @@ static void rtw89_phy_c2h_rfk_rpt_log(struct rtw89_dev *rtwdev,
                        goto out;
 
                rtw89_phy_c2h_rfk_tas_pwr(rtwdev, content);
-
+               return;
+       case RTW89_PHY_C2H_RFK_LOG_FUNC_TXIQK:
+               if (len != sizeof(*txiqk))
+                       goto out;
                return;
        default:
                break;
@@ -3843,6 +3847,13 @@ rtw89_phy_c2h_rfk_log_tas_pwr(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32
                              RTW89_PHY_C2H_RFK_LOG_FUNC_TAS_PWR, "TAS");
 }
 
+static void
+rtw89_phy_c2h_rfk_log_txiqk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
+{
+       rtw89_phy_c2h_rfk_log(rtwdev, c2h, len,
+                             RTW89_PHY_C2H_RFK_LOG_FUNC_TXIQK, "TXIQK");
+}
+
 static
 void (* const rtw89_phy_c2h_rfk_log_handler[])(struct rtw89_dev *rtwdev,
                                               struct sk_buff *c2h, u32 len) = {
@@ -3853,6 +3864,7 @@ void (* const rtw89_phy_c2h_rfk_log_handler[])(struct rtw89_dev *rtwdev,
        [RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI] = rtw89_phy_c2h_rfk_log_tssi,
        [RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK] = rtw89_phy_c2h_rfk_log_txgapk,
        [RTW89_PHY_C2H_RFK_LOG_FUNC_TAS_PWR] = rtw89_phy_c2h_rfk_log_tas_pwr,
+       [RTW89_PHY_C2H_RFK_LOG_FUNC_TXIQK] = rtw89_phy_c2h_rfk_log_txiqk,
 };
 
 static
@@ -3941,6 +3953,7 @@ bool rtw89_phy_c2h_chk_atomic(struct rtw89_dev *rtwdev, u8 class, u8 func)
                case RTW89_PHY_C2H_RFK_LOG_FUNC_RXDCK:
                case RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI:
                case RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK:
+               case RTW89_PHY_C2H_RFK_LOG_FUNC_TXIQK:
                        return true;
                default:
                        return false;
index 9a15dbf1c318117733b3e8beab06c0fcca85ce95..89e3bc588494c9037a9875fc64312e4c73740c6c 100644 (file)
@@ -150,6 +150,7 @@ enum rtw89_phy_c2h_rfk_log_func {
        RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI = 4,
        RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK = 5,
        RTW89_PHY_C2H_RFK_LOG_FUNC_TAS_PWR = 9,
+       RTW89_PHY_C2H_RFK_LOG_FUNC_TXIQK = 0xc,
 
        RTW89_PHY_C2H_RFK_LOG_FUNC_NUM,
 };