blob: 3af30bf6d16c42ec77a33b343f078837a9c581be [file] [log] [blame]
From ab77df3cc660c0aa0f46060499d8704dc389a2a6 Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Mon, 24 Jul 2023 16:39:22 +0800
Subject: [PATCH 63/98] wifi: mt76: mt7996: add wtbl_info support for kite
Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
mt7996/mtk_debug.h | 22 +++++++++++++
mt7996/mtk_debugfs.c | 74 ++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 93 insertions(+), 3 deletions(-)
diff --git a/mt7996/mtk_debug.h b/mt7996/mtk_debug.h
index 9718c2c..1611345 100644
--- a/mt7996/mtk_debug.h
+++ b/mt7996/mtk_debug.h
@@ -1088,6 +1088,17 @@ enum cipher_suit {
#define WF_LWTBL_AAD_OM_MASK \
0x00008000 // 15-15
#define WF_LWTBL_AAD_OM_SHIFT 15
+/* kite DW2 field bit 13-14 */
+#define WF_LWTBL_DUAL_PTEC_EN_DW 2
+#define WF_LWTBL_DUAL_PTEC_EN_ADDR 8
+#define WF_LWTBL_DUAL_PTEC_EN_MASK \
+ 0x00002000 // 13-13
+#define WF_LWTBL_DUAL_PTEC_EN_SHIFT 13
+#define WF_LWTBL_DUAL_CTS_CAP_DW 2
+#define WF_LWTBL_DUAL_CTS_CAP_ADDR 8
+#define WF_LWTBL_DUAL_CTS_CAP_MASK \
+ 0x00004000 // 14-14
+#define WF_LWTBL_DUAL_CTS_CAP_SHIFT 14
#define WF_LWTBL_CIPHER_SUIT_PGTK_DW 2
#define WF_LWTBL_CIPHER_SUIT_PGTK_ADDR 8
#define WF_LWTBL_CIPHER_SUIT_PGTK_MASK \
@@ -1305,6 +1316,8 @@ enum cipher_suit {
#define WF_LWTBL_AF_ADDR 20
#define WF_LWTBL_AF_MASK \
0x00000007 // 2- 0
+#define WF_LWTBL_AF_MASK_7992 \
+ 0x0000000f // 3- 0
#define WF_LWTBL_AF_SHIFT 0
#define WF_LWTBL_AF_HE_DW 5
#define WF_LWTBL_AF_HE_ADDR 20
@@ -1565,16 +1578,25 @@ enum cipher_suit {
#define WF_LWTBL_PRITX_SW_MODE_MASK \
0x00008000 // 15-15
#define WF_LWTBL_PRITX_SW_MODE_SHIFT 15
+#define WF_LWTBL_PRITX_SW_MODE_MASK_7992 \
+ 0x00004000 // 14-14
+#define WF_LWTBL_PRITX_SW_MODE_SHIFT_7992 14
#define WF_LWTBL_PRITX_ERSU_DW 9
#define WF_LWTBL_PRITX_ERSU_ADDR 36
#define WF_LWTBL_PRITX_ERSU_MASK \
0x00010000 // 16-16
#define WF_LWTBL_PRITX_ERSU_SHIFT 16
+#define WF_LWTBL_PRITX_ERSU_MASK_7992 \
+ 0x00008000 // 15-15
+#define WF_LWTBL_PRITX_ERSU_SHIFT_7992 15
#define WF_LWTBL_PRITX_PLR_DW 9
#define WF_LWTBL_PRITX_PLR_ADDR 36
#define WF_LWTBL_PRITX_PLR_MASK \
0x00020000 // 17-17
#define WF_LWTBL_PRITX_PLR_SHIFT 17
+#define WF_LWTBL_PRITX_PLR_MASK_7992 \
+ 0x00030000 // 17-16
+#define WF_LWTBL_PRITX_PLR_SHIFT_7992 16
#define WF_LWTBL_PRITX_DCM_DW 9
#define WF_LWTBL_PRITX_DCM_ADDR 36
#define WF_LWTBL_PRITX_DCM_MASK \
diff --git a/mt7996/mtk_debugfs.c b/mt7996/mtk_debugfs.c
index f56ad88..ce48664 100644
--- a/mt7996/mtk_debugfs.c
+++ b/mt7996/mtk_debugfs.c
@@ -1011,7 +1011,8 @@ static void parse_fmac_lwtbl_dw0_1(struct seq_file *s, u8 *lwtbl)
}
}
-static const struct berse_wtbl_parse WTBL_LMAC_DW2[] = {
+static const struct berse_wtbl_parse *WTBL_LMAC_DW2;
+static const struct berse_wtbl_parse WTBL_LMAC_DW2_7996[] = {
{"AID", WF_LWTBL_AID_MASK, WF_LWTBL_AID_SHIFT, false},
{"GID_SU", WF_LWTBL_GID_SU_MASK, NO_SHIFT_DEFINE, false},
{"SPP_EN", WF_LWTBL_SPP_EN_MASK, NO_SHIFT_DEFINE, false},
@@ -1032,6 +1033,26 @@ static const struct berse_wtbl_parse WTBL_LMAC_DW2[] = {
{NULL,}
};
+static const struct berse_wtbl_parse WTBL_LMAC_DW2_7992[] = {
+ {"AID", WF_LWTBL_AID_MASK, WF_LWTBL_AID_SHIFT, false},
+ {"GID_SU", WF_LWTBL_GID_SU_MASK, NO_SHIFT_DEFINE, false},
+ {"DUAL_PTEC_EN", WF_LWTBL_DUAL_PTEC_EN_MASK, NO_SHIFT_DEFINE, false},
+ {"DUAL_CTS_CAP", WF_LWTBL_DUAL_CTS_CAP_MASK, NO_SHIFT_DEFINE, false},
+ {"CIPHER_PGTK",WF_LWTBL_CIPHER_SUIT_PGTK_MASK, WF_LWTBL_CIPHER_SUIT_PGTK_SHIFT, true},
+ {"FROM_DS", WF_LWTBL_FD_MASK, NO_SHIFT_DEFINE, false},
+ {"TO_DS", WF_LWTBL_TD_MASK, NO_SHIFT_DEFINE, false},
+ {"SW", WF_LWTBL_SW_MASK, NO_SHIFT_DEFINE, false},
+ {"UL", WF_LWTBL_UL_MASK, NO_SHIFT_DEFINE, false},
+ {"TX_POWER_SAVE", WF_LWTBL_TX_PS_MASK, NO_SHIFT_DEFINE, true},
+ {"QOS", WF_LWTBL_QOS_MASK, NO_SHIFT_DEFINE, false},
+ {"HT", WF_LWTBL_HT_MASK, NO_SHIFT_DEFINE, false},
+ {"VHT", WF_LWTBL_VHT_MASK, NO_SHIFT_DEFINE, false},
+ {"HE", WF_LWTBL_HE_MASK, NO_SHIFT_DEFINE, false},
+ {"EHT", WF_LWTBL_EHT_MASK, NO_SHIFT_DEFINE, false},
+ {"MESH", WF_LWTBL_MESH_MASK, NO_SHIFT_DEFINE, true},
+ {NULL,}
+};
+
static void parse_fmac_lwtbl_dw2(struct seq_file *s, u8 *lwtbl)
{
u32 *addr = 0;
@@ -1141,7 +1162,8 @@ static void parse_fmac_lwtbl_dw4(struct seq_file *s, u8 *lwtbl)
}
}
-static const struct berse_wtbl_parse WTBL_LMAC_DW5[] = {
+static const struct berse_wtbl_parse *WTBL_LMAC_DW5;
+static const struct berse_wtbl_parse WTBL_LMAC_DW5_7996[] = {
{"AF", WF_LWTBL_AF_MASK, WF_LWTBL_AF_SHIFT, false},
{"AF_HE", WF_LWTBL_AF_HE_MASK, WF_LWTBL_AF_HE_SHIFT,false},
{"RTS", WF_LWTBL_RTS_MASK, NO_SHIFT_DEFINE, false},
@@ -1163,6 +1185,27 @@ static const struct berse_wtbl_parse WTBL_LMAC_DW5[] = {
{NULL,}
};
+static const struct berse_wtbl_parse WTBL_LMAC_DW5_7992[] = {
+ {"AF", WF_LWTBL_AF_MASK_7992, WF_LWTBL_AF_SHIFT, false},
+ {"RTS", WF_LWTBL_RTS_MASK, NO_SHIFT_DEFINE, false},
+ {"SMPS", WF_LWTBL_SMPS_MASK, NO_SHIFT_DEFINE, false},
+ {"DYN_BW", WF_LWTBL_DYN_BW_MASK, NO_SHIFT_DEFINE, true},
+ {"MMSS", WF_LWTBL_MMSS_MASK, WF_LWTBL_MMSS_SHIFT,false},
+ {"USR", WF_LWTBL_USR_MASK, NO_SHIFT_DEFINE, false},
+ {"SR_RATE", WF_LWTBL_SR_R_MASK, WF_LWTBL_SR_R_SHIFT,false},
+ {"SR_ABORT", WF_LWTBL_SR_ABORT_MASK, NO_SHIFT_DEFINE, true},
+ {"TX_POWER_OFFSET", WF_LWTBL_TX_POWER_OFFSET_MASK, WF_LWTBL_TX_POWER_OFFSET_SHIFT, false},
+ {"LTF_EHT", WF_LWTBL_LTF_EHT_MASK, WF_LWTBL_LTF_EHT_SHIFT, false},
+ {"GI_EHT", WF_LWTBL_GI_EHT_MASK, WF_LWTBL_GI_EHT_SHIFT, false},
+ {"DOPPL", WF_LWTBL_DOPPL_MASK, NO_SHIFT_DEFINE, false},
+ {"TXOP_PS_CAP", WF_LWTBL_TXOP_PS_CAP_MASK, NO_SHIFT_DEFINE, false},
+ {"DONOT_UPDATE_I_PSM", WF_LWTBL_DU_I_PSM_MASK, NO_SHIFT_DEFINE, true},
+ {"I_PSM", WF_LWTBL_I_PSM_MASK, NO_SHIFT_DEFINE, false},
+ {"PSM", WF_LWTBL_PSM_MASK, NO_SHIFT_DEFINE, false},
+ {"SKIP_TX", WF_LWTBL_SKIP_TX_MASK, NO_SHIFT_DEFINE, true},
+ {NULL,}
+};
+
static void parse_fmac_lwtbl_dw5(struct seq_file *s, u8 *lwtbl)
{
u32 *addr = 0;
@@ -1281,7 +1324,8 @@ static void parse_fmac_lwtbl_dw8(struct seq_file *s, u8 *lwtbl)
}
}
-static const struct berse_wtbl_parse WTBL_LMAC_DW9[] = {
+static const struct berse_wtbl_parse *WTBL_LMAC_DW9;
+static const struct berse_wtbl_parse WTBL_LMAC_DW9_7996[] = {
{"RX_AVG_MPDU_SIZE", WF_LWTBL_RX_AVG_MPDU_SIZE_MASK, WF_LWTBL_RX_AVG_MPDU_SIZE_SHIFT, false},
{"PRITX_SW_MODE", WF_LWTBL_PRITX_SW_MODE_MASK, NO_SHIFT_DEFINE, false},
{"PRITX_ERSU", WF_LWTBL_PRITX_ERSU_MASK, NO_SHIFT_DEFINE, false},
@@ -1295,6 +1339,20 @@ static const struct berse_wtbl_parse WTBL_LMAC_DW9[] = {
{NULL,}
};
+static const struct berse_wtbl_parse WTBL_LMAC_DW9_7992[] = {
+ {"RX_AVG_MPDU_SIZE", WF_LWTBL_RX_AVG_MPDU_SIZE_MASK, WF_LWTBL_RX_AVG_MPDU_SIZE_SHIFT, false},
+ {"PRITX_SW_MODE", WF_LWTBL_PRITX_SW_MODE_MASK_7992, NO_SHIFT_DEFINE, false},
+ {"PRITX_ERSU", WF_LWTBL_PRITX_ERSU_MASK_7992, NO_SHIFT_DEFINE, false},
+ {"PRITX_PLR", WF_LWTBL_PRITX_PLR_MASK_7992, NO_SHIFT_DEFINE, true},
+ {"PRITX_DCM", WF_LWTBL_PRITX_DCM_MASK, NO_SHIFT_DEFINE, false},
+ {"PRITX_ER106T", WF_LWTBL_PRITX_ER106T_MASK, NO_SHIFT_DEFINE, true},
+ /* {"FCAP(0:20 1:~40)", WTBL_FCAP_20_TO_160_MHZ, WTBL_FCAP_20_TO_160_MHZ_OFFSET}, */
+ {"MPDU_FAIL_CNT", WF_LWTBL_MPDU_FAIL_CNT_MASK, WF_LWTBL_MPDU_FAIL_CNT_SHIFT, false},
+ {"MPDU_OK_CNT", WF_LWTBL_MPDU_OK_CNT_MASK, WF_LWTBL_MPDU_OK_CNT_SHIFT, false},
+ {"RATE_IDX", WF_LWTBL_RATE_IDX_MASK, WF_LWTBL_RATE_IDX_SHIFT, true},
+ {NULL,}
+};
+
char *fcap_name[] = {"20MHz", "20/40MHz", "20/40/80MHz", "20/40/80/160/80+80MHz", "20/40/80/160/80+80/320MHz"};
static void parse_fmac_lwtbl_dw9(struct seq_file *s, u8 *lwtbl)
@@ -2670,6 +2728,16 @@ int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir)
{
struct mt7996_dev *dev = phy->dev;
+ if (is_mt7996(&dev->mt76)) {
+ WTBL_LMAC_DW2 = WTBL_LMAC_DW2_7996;
+ WTBL_LMAC_DW5 = WTBL_LMAC_DW5_7996;
+ WTBL_LMAC_DW9 = WTBL_LMAC_DW9_7996;
+ } else {
+ WTBL_LMAC_DW2 = WTBL_LMAC_DW2_7992;
+ WTBL_LMAC_DW5 = WTBL_LMAC_DW5_7992;
+ WTBL_LMAC_DW9 = WTBL_LMAC_DW9_7992;
+ }
+
mt7996_mcu_fw_log_2_host(dev, MCU_FW_LOG_WM, 0);
/* agg */
--
2.18.0