From: Junfeng Guo <junfeng.guo@intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: ivecera@redhat.com, netdev@vger.kernel.org, qi.z.zhang@intel.com,
jesse.brandeburg@intel.com, anthony.l.nguyen@intel.com,
horms@kernel.org
Subject: [Intel-wired-lan] [PATCH iwl-next v7 09/15] ice: init XLT key builder for parser
Date: Wed, 23 Aug 2023 17:31:52 +0800 [thread overview]
Message-ID: <20230823093158.782802-10-junfeng.guo@intel.com> (raw)
In-Reply-To: <20230823093158.782802-1-junfeng.guo@intel.com>
Parse below DDP section into struct ice_xlt_kb:
ICE_SID_XLT_KEY_BUILDER_SW
ICE_SID_XLT_KEY_BUILDER_ACL
ICE_SID_XLT_KEY_BUILDER_FD
ICE_SID_XLT_KEY_BUILDER_RSS
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
drivers/net/ethernet/intel/ice/ice_parser.c | 28 +++
drivers/net/ethernet/intel/ice/ice_parser.h | 9 +
drivers/net/ethernet/intel/ice/ice_xlt_kb.c | 235 ++++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.h | 79 +++++++
4 files changed, 351 insertions(+)
create mode 100644 drivers/net/ethernet/intel/ice/ice_xlt_kb.c
create mode 100644 drivers/net/ethernet/intel/ice/ice_xlt_kb.h
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.c b/drivers/net/ethernet/intel/ice/ice_parser.c
index 3c3f7d6bea52..6499bb774667 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.c
+++ b/drivers/net/ethernet/intel/ice/ice_parser.c
@@ -229,6 +229,30 @@ int ice_parser_create(struct ice_hw *hw, struct ice_parser **psr)
goto err;
}
+ p->xlt_kb_sw = ice_xlt_kb_get_sw(hw);
+ if (!p->xlt_kb_sw) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_acl = ice_xlt_kb_get_acl(hw);
+ if (!p->xlt_kb_acl) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_fd = ice_xlt_kb_get_fd(hw);
+ if (!p->xlt_kb_fd) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_rss = ice_xlt_kb_get_rss(hw);
+ if (!p->xlt_kb_rss) {
+ status = -EINVAL;
+ goto err;
+ }
+
*psr = p;
return 0;
err:
@@ -254,6 +278,10 @@ void ice_parser_destroy(struct ice_parser *psr)
devm_kfree(ice_hw_to_dev(psr->hw), psr->mk_grp_table);
devm_kfree(ice_hw_to_dev(psr->hw), psr->proto_grp_table);
devm_kfree(ice_hw_to_dev(psr->hw), psr->flg_rd_table);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_sw);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_acl);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_fd);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_rss);
devm_kfree(ice_hw_to_dev(psr->hw), psr);
}
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.h b/drivers/net/ethernet/intel/ice/ice_parser.h
index 62123788e0a2..ca71ef4f50f5 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.h
+++ b/drivers/net/ethernet/intel/ice/ice_parser.h
@@ -12,6 +12,7 @@
#include "ice_mk_grp.h"
#include "ice_proto_grp.h"
#include "ice_flg_rd.h"
+#include "ice_xlt_kb.h"
#define ICE_SEC_DATA_OFFSET 4
#define ICE_SID_RXPARSER_IMEM_ENTRY_SIZE 48
@@ -56,6 +57,14 @@ struct ice_parser {
struct ice_proto_grp_item *proto_grp_table;
/* load data from section ICE_SID_RXPARSER_FLAG_REDIR */
struct ice_flg_rd_item *flg_rd_table;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_SW */
+ struct ice_xlt_kb *xlt_kb_sw;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_ACL */
+ struct ice_xlt_kb *xlt_kb_acl;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_FD */
+ struct ice_xlt_kb *xlt_kb_fd;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_RSS */
+ struct ice_xlt_kb *xlt_kb_rss;
};
int ice_parser_create(struct ice_hw *hw, struct ice_parser **psr);
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
new file mode 100644
index 000000000000..4fca88fb7d77
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
@@ -0,0 +1,235 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2023 Intel Corporation */
+
+#include "ice_common.h"
+
+static void _ice_xlt_kb_entry_dump(struct ice_hw *hw,
+ struct ice_xlt_kb_entry *entry, int idx)
+{
+ int i;
+
+ dev_info(ice_hw_to_dev(hw), "key builder entry %d\n", idx);
+ dev_info(ice_hw_to_dev(hw), "\txlt1_ad_sel = %d\n",
+ entry->xlt1_ad_sel);
+ dev_info(ice_hw_to_dev(hw), "\txlt2_ad_sel = %d\n",
+ entry->xlt2_ad_sel);
+
+ for (i = 0; i < ICE_XLT_KB_FLAG0_14_CNT; i++)
+ dev_info(ice_hw_to_dev(hw), "\tflg%d_sel = %d\n", i,
+ entry->flg0_14_sel[i]);
+
+ dev_info(ice_hw_to_dev(hw), "\txlt1_md_sel = %d\n",
+ entry->xlt1_md_sel);
+ dev_info(ice_hw_to_dev(hw), "\txlt2_md_sel = %d\n",
+ entry->xlt2_md_sel);
+}
+
+/**
+ * ice_xlt_kb_dump - dump a xlt key build info
+ * @hw: pointer to the hardware structure
+ * @kb: key build to dump
+ */
+void ice_xlt_kb_dump(struct ice_hw *hw, struct ice_xlt_kb *kb)
+{
+ int i;
+
+ dev_info(ice_hw_to_dev(hw), "xlt1_pm = %d\n", kb->xlt1_pm);
+ dev_info(ice_hw_to_dev(hw), "xlt2_pm = %d\n", kb->xlt2_pm);
+ dev_info(ice_hw_to_dev(hw), "prof_id_pm = %d\n", kb->prof_id_pm);
+ dev_info(ice_hw_to_dev(hw), "flag15 lo = 0x%08x\n", (u32)kb->flag15);
+ dev_info(ice_hw_to_dev(hw), "flag15 hi = 0x%08x\n",
+ (u32)(kb->flag15 >> (sizeof(u32) * BITS_PER_BYTE)));
+
+ for (i = 0; i < ICE_XLT_KB_TBL_CNT; i++)
+ _ice_xlt_kb_entry_dump(hw, &kb->entries[i], i);
+}
+
+/** The function parses a 192 bits XLT Key Builder entry with below format:
+ * BIT 0-31: reserved
+ * BIT 32-34: XLT1 AdSel (entry->xlt1_ad_sel)
+ * BIT 35-37: XLT2 AdSel (entry->xlt2_ad_sel)
+ * BIT 38-46: Flag 0 Select (entry->flg0_14_sel[0])
+ * BIT 47-55: Flag 1 Select (entry->flg0_14_sel[1])
+ * BIT 56-64: Flag 2 Select (entry->flg0_14_sel[2])
+ * BIT 65-73: Flag 3 Select (entry->flg0_14_sel[3])
+ * BIT 74-82: Flag 4 Select (entry->flg0_14_sel[4])
+ * BIT 83-91: Flag 5 Select (entry->flg0_14_sel[5])
+ * BIT 92-100: Flag 6 Select (entry->flg0_14_sel[6])
+ * BIT 101-109:Flag 7 Select (entry->flg0_14_sel[7])
+ * BIT 110-118:Flag 8 Select (entry->flg0_14_sel[8])
+ * BIT 119-127:Flag 9 Select (entry->flg0_14_sel[9])
+ * BIT 128-136:Flag 10 Select (entry->flg0_14_sel[10])
+ * BIT 137-145:Flag 11 Select (entry->flg0_14_sel[11])
+ * BIT 146-154:Flag 12 Select (entry->flg0_14_sel[12])
+ * BIT 155-163:Flag 13 Select (entry->flg0_14_sel[13])
+ * BIT 164-172:Flag 14 Select (entry->flg0_14_sel[14])
+ * BIT 173-181:reserved
+ * BIT 182-186:XLT1 MdSel (entry->xlt1_md_sel)
+ * BIT 187-191:XLT2 MdSel (entry->xlt2_md_sel)
+ */
+static void _ice_kb_entry_init(struct ice_xlt_kb_entry *entry, u8 *data)
+{
+ u8 idd, off, i;
+ u64 d64;
+
+ idd = ICE_XLT_KB_X1AS_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_X1AS_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ off = ICE_XLT_KB_X1AS_S - ICE_XLT_KB_X1AS_S;
+ entry->xlt1_ad_sel = (u8)((d64 >> off) & ICE_XLT_KB_X1AS_M);
+ off = ICE_XLT_KB_X2AS_S - ICE_XLT_KB_X1AS_S;
+ entry->xlt2_ad_sel = (u8)((d64 >> off) & ICE_XLT_KB_X2AS_M);
+
+ i = 0;
+ off = ICE_XLT_KB_FL00_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL00_M);
+ i++;
+ off = ICE_XLT_KB_FL01_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL01_M);
+ i++;
+ off = ICE_XLT_KB_FL02_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL02_M);
+ i++;
+ off = ICE_XLT_KB_FL03_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL03_M);
+ i++;
+ off = ICE_XLT_KB_FL04_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL04_M);
+ i++;
+ off = ICE_XLT_KB_FL05_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL05_M);
+
+ idd = ICE_XLT_KB_FL06_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_FL06_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ i++;
+ off = ICE_XLT_KB_FL06_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL06_M);
+ i++;
+ off = ICE_XLT_KB_FL07_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL07_M);
+ i++;
+ off = ICE_XLT_KB_FL08_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL08_M);
+ i++;
+ off = ICE_XLT_KB_FL09_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL09_M);
+ i++;
+ off = ICE_XLT_KB_FL10_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL10_M);
+ i++;
+ off = ICE_XLT_KB_FL11_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL11_M);
+
+ idd = ICE_XLT_KB_FL12_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_FL12_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ i++;
+ off = ICE_XLT_KB_FL12_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL12_M);
+ i++;
+ off = ICE_XLT_KB_FL13_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL13_M);
+ i++;
+ off = ICE_XLT_KB_FL14_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL14_M);
+
+ off = ICE_XLT_KB_X1MS_S - ICE_XLT_KB_FL12_S;
+ entry->xlt1_md_sel = (u8)((d64 >> off) & ICE_XLT_KB_X1MS_M);
+ off = ICE_XLT_KB_X2MS_S - ICE_XLT_KB_FL12_S;
+ entry->xlt2_md_sel = (u8)((d64 >> off) & ICE_XLT_KB_X2MS_M);
+}
+
+/** The function parses a 204 bytes XLT Key Build Table with below format:
+ * byte 0: XLT1 Partition Mode (kb->xlt1_pm)
+ * byte 1: XLT2 Partition Mode (kb->xlt2_pm)
+ * byte 2: Profile ID Partition Mode (kb->prof_id_pm)
+ * byte 3: reserved
+ * byte 4-11: Flag15 Mask (kb->flag15)
+ * byte 12-203:8 Key Build entries (kb->entries)
+ */
+static void _ice_parse_kb_data(struct ice_hw *hw, struct ice_xlt_kb *kb,
+ void *data)
+{
+ u8 *buf = data;
+ int i;
+
+ kb->xlt1_pm = buf[ICE_XLT_KB_X1PM_OFF];
+ kb->xlt2_pm = buf[ICE_XLT_KB_X2PM_OFF];
+ kb->prof_id_pm = buf[ICE_XLT_KB_PIPM_OFF];
+
+ kb->flag15 = *(u64 *)&buf[ICE_XLT_KB_FL15_OFF];
+ for (i = 0; i < ICE_XLT_KB_TBL_CNT; i++)
+ _ice_kb_entry_init(&kb->entries[i],
+ &buf[ICE_XLT_KB_TBL_OFF +
+ i * ICE_XLT_KB_TBL_ENTRY_SIZE]);
+
+ if (hw->debug_mask & ICE_DBG_PARSER)
+ ice_xlt_kb_dump(hw, kb);
+}
+
+static struct ice_xlt_kb *_ice_xlt_kb_get(struct ice_hw *hw, u32 sect_type)
+{
+ struct ice_seg *seg = hw->seg;
+ struct ice_pkg_enum state;
+ struct ice_xlt_kb *kb;
+ void *data;
+
+ if (!seg)
+ return NULL;
+
+ kb = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*kb), GFP_KERNEL);
+ if (!kb)
+ return NULL;
+
+ memset(&state, 0, sizeof(state));
+ data = ice_pkg_enum_section(seg, &state, sect_type);
+ if (!data) {
+ ice_debug(hw, ICE_DBG_PARSER, "failed to find section type %d.\n",
+ sect_type);
+ return NULL;
+ }
+
+ _ice_parse_kb_data(hw, kb, data);
+
+ return kb;
+}
+
+/**
+ * ice_xlt_kb_get_sw - create switch xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_sw(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_SW);
+}
+
+/**
+ * ice_xlt_kb_get_acl - create acl xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_acl(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_ACL);
+}
+
+/**
+ * ice_xlt_kb_get_fd - create fdir xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_fd(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_FD);
+}
+
+/**
+ * ice_xlt_kb_get_rss - create rss xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_rss(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_RSS);
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
new file mode 100644
index 000000000000..020f96bfdbe8
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (C) 2023 Intel Corporation */
+
+#ifndef _ICE_XLT_KB_H_
+#define _ICE_XLT_KB_H_
+
+#define ICE_XLT_KB_FLAG0_14_CNT 15
+
+#define ICE_XLT_KB_FLAG_M BITMAP_MASK(9)
+#define ICE_XLT_KB_X1AS_S 32
+#define ICE_XLT_KB_X1AS_M BITMAP_MASK(3)
+#define ICE_XLT_KB_X2AS_S 35
+#define ICE_XLT_KB_X2AS_M BITMAP_MASK(3)
+#define ICE_XLT_KB_FL00_S 38
+#define ICE_XLT_KB_FL00_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL01_S 47
+#define ICE_XLT_KB_FL01_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL02_S 56
+#define ICE_XLT_KB_FL02_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL03_S 65
+#define ICE_XLT_KB_FL03_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL04_S 74
+#define ICE_XLT_KB_FL04_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL05_S 83
+#define ICE_XLT_KB_FL05_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL06_S 92
+#define ICE_XLT_KB_FL06_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL07_S 101
+#define ICE_XLT_KB_FL07_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL08_S 110
+#define ICE_XLT_KB_FL08_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL09_S 119
+#define ICE_XLT_KB_FL09_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL10_S 128
+#define ICE_XLT_KB_FL10_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL11_S 137
+#define ICE_XLT_KB_FL11_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL12_S 146
+#define ICE_XLT_KB_FL12_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL13_S 155
+#define ICE_XLT_KB_FL13_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL14_S 164
+#define ICE_XLT_KB_FL14_M BITMAP_MASK(9)
+#define ICE_XLT_KB_X1MS_S 182
+#define ICE_XLT_KB_X1MS_M BITMAP_MASK(5)
+#define ICE_XLT_KB_X2MS_S 187
+#define ICE_XLT_KB_X2MS_M BITMAP_MASK(5)
+
+struct ice_xlt_kb_entry {
+ u8 xlt1_ad_sel;
+ u8 xlt2_ad_sel;
+ u16 flg0_14_sel[ICE_XLT_KB_FLAG0_14_CNT];
+ u8 xlt1_md_sel;
+ u8 xlt2_md_sel;
+};
+
+#define ICE_XLT_KB_X1PM_OFF 0
+#define ICE_XLT_KB_X2PM_OFF 1
+#define ICE_XLT_KB_PIPM_OFF 2
+#define ICE_XLT_KB_FL15_OFF 4
+#define ICE_XLT_KB_TBL_CNT 8
+#define ICE_XLT_KB_TBL_OFF 12
+#define ICE_XLT_KB_TBL_ENTRY_SIZE 24
+
+struct ice_xlt_kb {
+ u8 xlt1_pm;
+ u8 xlt2_pm;
+ u8 prof_id_pm;
+ u64 flag15;
+
+ struct ice_xlt_kb_entry entries[ICE_XLT_KB_TBL_CNT];
+};
+
+void ice_xlt_kb_dump(struct ice_hw *hw, struct ice_xlt_kb *kb);
+struct ice_xlt_kb *ice_xlt_kb_get_sw(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_acl(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_fd(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_rss(struct ice_hw *hw);
+#endif /* _ICE_XLT_KB_H */
--
2.25.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
WARNING: multiple messages have this Message-ID (diff)
From: Junfeng Guo <junfeng.guo@intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, anthony.l.nguyen@intel.com,
jesse.brandeburg@intel.com, qi.z.zhang@intel.com,
ivecera@redhat.com, sridhar.samudrala@intel.com,
horms@kernel.org, Junfeng Guo <junfeng.guo@intel.com>
Subject: [PATCH iwl-next v7 09/15] ice: init XLT key builder for parser
Date: Wed, 23 Aug 2023 17:31:52 +0800 [thread overview]
Message-ID: <20230823093158.782802-10-junfeng.guo@intel.com> (raw)
In-Reply-To: <20230823093158.782802-1-junfeng.guo@intel.com>
Parse below DDP section into struct ice_xlt_kb:
ICE_SID_XLT_KEY_BUILDER_SW
ICE_SID_XLT_KEY_BUILDER_ACL
ICE_SID_XLT_KEY_BUILDER_FD
ICE_SID_XLT_KEY_BUILDER_RSS
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
drivers/net/ethernet/intel/ice/ice_parser.c | 28 +++
drivers/net/ethernet/intel/ice/ice_parser.h | 9 +
drivers/net/ethernet/intel/ice/ice_xlt_kb.c | 235 ++++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.h | 79 +++++++
4 files changed, 351 insertions(+)
create mode 100644 drivers/net/ethernet/intel/ice/ice_xlt_kb.c
create mode 100644 drivers/net/ethernet/intel/ice/ice_xlt_kb.h
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.c b/drivers/net/ethernet/intel/ice/ice_parser.c
index 3c3f7d6bea52..6499bb774667 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.c
+++ b/drivers/net/ethernet/intel/ice/ice_parser.c
@@ -229,6 +229,30 @@ int ice_parser_create(struct ice_hw *hw, struct ice_parser **psr)
goto err;
}
+ p->xlt_kb_sw = ice_xlt_kb_get_sw(hw);
+ if (!p->xlt_kb_sw) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_acl = ice_xlt_kb_get_acl(hw);
+ if (!p->xlt_kb_acl) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_fd = ice_xlt_kb_get_fd(hw);
+ if (!p->xlt_kb_fd) {
+ status = -EINVAL;
+ goto err;
+ }
+
+ p->xlt_kb_rss = ice_xlt_kb_get_rss(hw);
+ if (!p->xlt_kb_rss) {
+ status = -EINVAL;
+ goto err;
+ }
+
*psr = p;
return 0;
err:
@@ -254,6 +278,10 @@ void ice_parser_destroy(struct ice_parser *psr)
devm_kfree(ice_hw_to_dev(psr->hw), psr->mk_grp_table);
devm_kfree(ice_hw_to_dev(psr->hw), psr->proto_grp_table);
devm_kfree(ice_hw_to_dev(psr->hw), psr->flg_rd_table);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_sw);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_acl);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_fd);
+ devm_kfree(ice_hw_to_dev(psr->hw), psr->xlt_kb_rss);
devm_kfree(ice_hw_to_dev(psr->hw), psr);
}
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.h b/drivers/net/ethernet/intel/ice/ice_parser.h
index 62123788e0a2..ca71ef4f50f5 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.h
+++ b/drivers/net/ethernet/intel/ice/ice_parser.h
@@ -12,6 +12,7 @@
#include "ice_mk_grp.h"
#include "ice_proto_grp.h"
#include "ice_flg_rd.h"
+#include "ice_xlt_kb.h"
#define ICE_SEC_DATA_OFFSET 4
#define ICE_SID_RXPARSER_IMEM_ENTRY_SIZE 48
@@ -56,6 +57,14 @@ struct ice_parser {
struct ice_proto_grp_item *proto_grp_table;
/* load data from section ICE_SID_RXPARSER_FLAG_REDIR */
struct ice_flg_rd_item *flg_rd_table;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_SW */
+ struct ice_xlt_kb *xlt_kb_sw;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_ACL */
+ struct ice_xlt_kb *xlt_kb_acl;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_FD */
+ struct ice_xlt_kb *xlt_kb_fd;
+ /* load data from section ICE_SID_XLT_KEY_BUILDER_RSS */
+ struct ice_xlt_kb *xlt_kb_rss;
};
int ice_parser_create(struct ice_hw *hw, struct ice_parser **psr);
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
new file mode 100644
index 000000000000..4fca88fb7d77
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
@@ -0,0 +1,235 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2023 Intel Corporation */
+
+#include "ice_common.h"
+
+static void _ice_xlt_kb_entry_dump(struct ice_hw *hw,
+ struct ice_xlt_kb_entry *entry, int idx)
+{
+ int i;
+
+ dev_info(ice_hw_to_dev(hw), "key builder entry %d\n", idx);
+ dev_info(ice_hw_to_dev(hw), "\txlt1_ad_sel = %d\n",
+ entry->xlt1_ad_sel);
+ dev_info(ice_hw_to_dev(hw), "\txlt2_ad_sel = %d\n",
+ entry->xlt2_ad_sel);
+
+ for (i = 0; i < ICE_XLT_KB_FLAG0_14_CNT; i++)
+ dev_info(ice_hw_to_dev(hw), "\tflg%d_sel = %d\n", i,
+ entry->flg0_14_sel[i]);
+
+ dev_info(ice_hw_to_dev(hw), "\txlt1_md_sel = %d\n",
+ entry->xlt1_md_sel);
+ dev_info(ice_hw_to_dev(hw), "\txlt2_md_sel = %d\n",
+ entry->xlt2_md_sel);
+}
+
+/**
+ * ice_xlt_kb_dump - dump a xlt key build info
+ * @hw: pointer to the hardware structure
+ * @kb: key build to dump
+ */
+void ice_xlt_kb_dump(struct ice_hw *hw, struct ice_xlt_kb *kb)
+{
+ int i;
+
+ dev_info(ice_hw_to_dev(hw), "xlt1_pm = %d\n", kb->xlt1_pm);
+ dev_info(ice_hw_to_dev(hw), "xlt2_pm = %d\n", kb->xlt2_pm);
+ dev_info(ice_hw_to_dev(hw), "prof_id_pm = %d\n", kb->prof_id_pm);
+ dev_info(ice_hw_to_dev(hw), "flag15 lo = 0x%08x\n", (u32)kb->flag15);
+ dev_info(ice_hw_to_dev(hw), "flag15 hi = 0x%08x\n",
+ (u32)(kb->flag15 >> (sizeof(u32) * BITS_PER_BYTE)));
+
+ for (i = 0; i < ICE_XLT_KB_TBL_CNT; i++)
+ _ice_xlt_kb_entry_dump(hw, &kb->entries[i], i);
+}
+
+/** The function parses a 192 bits XLT Key Builder entry with below format:
+ * BIT 0-31: reserved
+ * BIT 32-34: XLT1 AdSel (entry->xlt1_ad_sel)
+ * BIT 35-37: XLT2 AdSel (entry->xlt2_ad_sel)
+ * BIT 38-46: Flag 0 Select (entry->flg0_14_sel[0])
+ * BIT 47-55: Flag 1 Select (entry->flg0_14_sel[1])
+ * BIT 56-64: Flag 2 Select (entry->flg0_14_sel[2])
+ * BIT 65-73: Flag 3 Select (entry->flg0_14_sel[3])
+ * BIT 74-82: Flag 4 Select (entry->flg0_14_sel[4])
+ * BIT 83-91: Flag 5 Select (entry->flg0_14_sel[5])
+ * BIT 92-100: Flag 6 Select (entry->flg0_14_sel[6])
+ * BIT 101-109:Flag 7 Select (entry->flg0_14_sel[7])
+ * BIT 110-118:Flag 8 Select (entry->flg0_14_sel[8])
+ * BIT 119-127:Flag 9 Select (entry->flg0_14_sel[9])
+ * BIT 128-136:Flag 10 Select (entry->flg0_14_sel[10])
+ * BIT 137-145:Flag 11 Select (entry->flg0_14_sel[11])
+ * BIT 146-154:Flag 12 Select (entry->flg0_14_sel[12])
+ * BIT 155-163:Flag 13 Select (entry->flg0_14_sel[13])
+ * BIT 164-172:Flag 14 Select (entry->flg0_14_sel[14])
+ * BIT 173-181:reserved
+ * BIT 182-186:XLT1 MdSel (entry->xlt1_md_sel)
+ * BIT 187-191:XLT2 MdSel (entry->xlt2_md_sel)
+ */
+static void _ice_kb_entry_init(struct ice_xlt_kb_entry *entry, u8 *data)
+{
+ u8 idd, off, i;
+ u64 d64;
+
+ idd = ICE_XLT_KB_X1AS_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_X1AS_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ off = ICE_XLT_KB_X1AS_S - ICE_XLT_KB_X1AS_S;
+ entry->xlt1_ad_sel = (u8)((d64 >> off) & ICE_XLT_KB_X1AS_M);
+ off = ICE_XLT_KB_X2AS_S - ICE_XLT_KB_X1AS_S;
+ entry->xlt2_ad_sel = (u8)((d64 >> off) & ICE_XLT_KB_X2AS_M);
+
+ i = 0;
+ off = ICE_XLT_KB_FL00_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL00_M);
+ i++;
+ off = ICE_XLT_KB_FL01_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL01_M);
+ i++;
+ off = ICE_XLT_KB_FL02_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL02_M);
+ i++;
+ off = ICE_XLT_KB_FL03_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL03_M);
+ i++;
+ off = ICE_XLT_KB_FL04_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL04_M);
+ i++;
+ off = ICE_XLT_KB_FL05_S - ICE_XLT_KB_X1AS_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL05_M);
+
+ idd = ICE_XLT_KB_FL06_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_FL06_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ i++;
+ off = ICE_XLT_KB_FL06_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL06_M);
+ i++;
+ off = ICE_XLT_KB_FL07_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL07_M);
+ i++;
+ off = ICE_XLT_KB_FL08_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL08_M);
+ i++;
+ off = ICE_XLT_KB_FL09_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL09_M);
+ i++;
+ off = ICE_XLT_KB_FL10_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL10_M);
+ i++;
+ off = ICE_XLT_KB_FL11_S - ICE_XLT_KB_FL06_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL11_M);
+
+ idd = ICE_XLT_KB_FL12_S / BITS_PER_BYTE;
+ off = ICE_XLT_KB_FL12_S % BITS_PER_BYTE;
+ d64 = *((u64 *)&data[idd]) >> off;
+
+ i++;
+ off = ICE_XLT_KB_FL12_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL12_M);
+ i++;
+ off = ICE_XLT_KB_FL13_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL13_M);
+ i++;
+ off = ICE_XLT_KB_FL14_S - ICE_XLT_KB_FL12_S;
+ entry->flg0_14_sel[i] = (u16)((d64 >> off) & ICE_XLT_KB_FL14_M);
+
+ off = ICE_XLT_KB_X1MS_S - ICE_XLT_KB_FL12_S;
+ entry->xlt1_md_sel = (u8)((d64 >> off) & ICE_XLT_KB_X1MS_M);
+ off = ICE_XLT_KB_X2MS_S - ICE_XLT_KB_FL12_S;
+ entry->xlt2_md_sel = (u8)((d64 >> off) & ICE_XLT_KB_X2MS_M);
+}
+
+/** The function parses a 204 bytes XLT Key Build Table with below format:
+ * byte 0: XLT1 Partition Mode (kb->xlt1_pm)
+ * byte 1: XLT2 Partition Mode (kb->xlt2_pm)
+ * byte 2: Profile ID Partition Mode (kb->prof_id_pm)
+ * byte 3: reserved
+ * byte 4-11: Flag15 Mask (kb->flag15)
+ * byte 12-203:8 Key Build entries (kb->entries)
+ */
+static void _ice_parse_kb_data(struct ice_hw *hw, struct ice_xlt_kb *kb,
+ void *data)
+{
+ u8 *buf = data;
+ int i;
+
+ kb->xlt1_pm = buf[ICE_XLT_KB_X1PM_OFF];
+ kb->xlt2_pm = buf[ICE_XLT_KB_X2PM_OFF];
+ kb->prof_id_pm = buf[ICE_XLT_KB_PIPM_OFF];
+
+ kb->flag15 = *(u64 *)&buf[ICE_XLT_KB_FL15_OFF];
+ for (i = 0; i < ICE_XLT_KB_TBL_CNT; i++)
+ _ice_kb_entry_init(&kb->entries[i],
+ &buf[ICE_XLT_KB_TBL_OFF +
+ i * ICE_XLT_KB_TBL_ENTRY_SIZE]);
+
+ if (hw->debug_mask & ICE_DBG_PARSER)
+ ice_xlt_kb_dump(hw, kb);
+}
+
+static struct ice_xlt_kb *_ice_xlt_kb_get(struct ice_hw *hw, u32 sect_type)
+{
+ struct ice_seg *seg = hw->seg;
+ struct ice_pkg_enum state;
+ struct ice_xlt_kb *kb;
+ void *data;
+
+ if (!seg)
+ return NULL;
+
+ kb = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*kb), GFP_KERNEL);
+ if (!kb)
+ return NULL;
+
+ memset(&state, 0, sizeof(state));
+ data = ice_pkg_enum_section(seg, &state, sect_type);
+ if (!data) {
+ ice_debug(hw, ICE_DBG_PARSER, "failed to find section type %d.\n",
+ sect_type);
+ return NULL;
+ }
+
+ _ice_parse_kb_data(hw, kb, data);
+
+ return kb;
+}
+
+/**
+ * ice_xlt_kb_get_sw - create switch xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_sw(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_SW);
+}
+
+/**
+ * ice_xlt_kb_get_acl - create acl xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_acl(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_ACL);
+}
+
+/**
+ * ice_xlt_kb_get_fd - create fdir xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_fd(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_FD);
+}
+
+/**
+ * ice_xlt_kb_get_rss - create rss xlt key build
+ * @hw: pointer to the hardware structure
+ */
+struct ice_xlt_kb *ice_xlt_kb_get_rss(struct ice_hw *hw)
+{
+ return _ice_xlt_kb_get(hw, ICE_SID_XLT_KEY_BUILDER_RSS);
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
new file mode 100644
index 000000000000..020f96bfdbe8
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (C) 2023 Intel Corporation */
+
+#ifndef _ICE_XLT_KB_H_
+#define _ICE_XLT_KB_H_
+
+#define ICE_XLT_KB_FLAG0_14_CNT 15
+
+#define ICE_XLT_KB_FLAG_M BITMAP_MASK(9)
+#define ICE_XLT_KB_X1AS_S 32
+#define ICE_XLT_KB_X1AS_M BITMAP_MASK(3)
+#define ICE_XLT_KB_X2AS_S 35
+#define ICE_XLT_KB_X2AS_M BITMAP_MASK(3)
+#define ICE_XLT_KB_FL00_S 38
+#define ICE_XLT_KB_FL00_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL01_S 47
+#define ICE_XLT_KB_FL01_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL02_S 56
+#define ICE_XLT_KB_FL02_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL03_S 65
+#define ICE_XLT_KB_FL03_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL04_S 74
+#define ICE_XLT_KB_FL04_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL05_S 83
+#define ICE_XLT_KB_FL05_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL06_S 92
+#define ICE_XLT_KB_FL06_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL07_S 101
+#define ICE_XLT_KB_FL07_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL08_S 110
+#define ICE_XLT_KB_FL08_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL09_S 119
+#define ICE_XLT_KB_FL09_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL10_S 128
+#define ICE_XLT_KB_FL10_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL11_S 137
+#define ICE_XLT_KB_FL11_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL12_S 146
+#define ICE_XLT_KB_FL12_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL13_S 155
+#define ICE_XLT_KB_FL13_M BITMAP_MASK(9)
+#define ICE_XLT_KB_FL14_S 164
+#define ICE_XLT_KB_FL14_M BITMAP_MASK(9)
+#define ICE_XLT_KB_X1MS_S 182
+#define ICE_XLT_KB_X1MS_M BITMAP_MASK(5)
+#define ICE_XLT_KB_X2MS_S 187
+#define ICE_XLT_KB_X2MS_M BITMAP_MASK(5)
+
+struct ice_xlt_kb_entry {
+ u8 xlt1_ad_sel;
+ u8 xlt2_ad_sel;
+ u16 flg0_14_sel[ICE_XLT_KB_FLAG0_14_CNT];
+ u8 xlt1_md_sel;
+ u8 xlt2_md_sel;
+};
+
+#define ICE_XLT_KB_X1PM_OFF 0
+#define ICE_XLT_KB_X2PM_OFF 1
+#define ICE_XLT_KB_PIPM_OFF 2
+#define ICE_XLT_KB_FL15_OFF 4
+#define ICE_XLT_KB_TBL_CNT 8
+#define ICE_XLT_KB_TBL_OFF 12
+#define ICE_XLT_KB_TBL_ENTRY_SIZE 24
+
+struct ice_xlt_kb {
+ u8 xlt1_pm;
+ u8 xlt2_pm;
+ u8 prof_id_pm;
+ u64 flag15;
+
+ struct ice_xlt_kb_entry entries[ICE_XLT_KB_TBL_CNT];
+};
+
+void ice_xlt_kb_dump(struct ice_hw *hw, struct ice_xlt_kb *kb);
+struct ice_xlt_kb *ice_xlt_kb_get_sw(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_acl(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_fd(struct ice_hw *hw);
+struct ice_xlt_kb *ice_xlt_kb_get_rss(struct ice_hw *hw);
+#endif /* _ICE_XLT_KB_H */
--
2.25.1
next prev parent reply other threads:[~2023-08-23 9:32 UTC|newest]
Thread overview: 228+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-05 5:46 [Intel-wired-lan] [PATCH iwl-next v2 00/15] Introduce the Parser Library Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 02/15] ice: init imem table for parser Junfeng Guo
2023-07-24 10:26 ` Ivan Vecera
2023-08-02 7:55 ` Guo, Junfeng
2023-08-02 15:56 ` Ivan Vecera
2023-08-03 3:28 ` Guo, Junfeng
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 03/15] ice: init metainit " Junfeng Guo
2023-07-24 10:31 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-08-02 15:57 ` Ivan Vecera
2023-08-03 3:28 ` Guo, Junfeng
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 04/15] ice: init parse graph cam " Junfeng Guo
2023-07-24 10:37 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 05/15] ice: init boost tcam " Junfeng Guo
2023-07-24 10:39 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 06/15] ice: init ptype marker " Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 07/15] ice: init marker and protocol group " Junfeng Guo
2023-07-24 11:01 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 08/15] ice: init flag redirect " Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 09/15] ice: init XLT key builder " Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 11/15] ice: add internal help functions Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 12/15] ice: add parser execution main loop Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-07-24 11:09 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-08-02 15:59 ` Ivan Vecera
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 14/15] ice: add tunnel port support " Junfeng Guo
2023-06-05 5:46 ` [Intel-wired-lan] [PATCH iwl-next v2 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-07-24 11:17 ` Ivan Vecera
2023-08-02 7:56 ` Guo, Junfeng
2023-08-02 15:59 ` Ivan Vecera
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 00/15] Introduce the Parser Library Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 00/15] Introduce the Parser Library Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 02/15] ice: init imem table for parser Junfeng Guo
2023-08-22 14:57 ` Ivan Vecera
2023-08-23 9:41 ` Guo, Junfeng
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 03/15] ice: init metainit " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 11/15] ice: add internal help functions Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-23 12:50 ` Ivan Vecera
2023-08-24 7:10 ` Guo, Junfeng
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-17 9:42 ` [Intel-wired-lan] [PATCH net-next v4 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-18 18:40 ` [Intel-wired-lan] [PATCH net-next v4 00/15] Introduce the Parser Library Tony Nguyen
2023-08-21 2:28 ` Guo, Junfeng
2023-08-25 2:48 ` Guo, Junfeng
2023-08-25 8:55 ` Przemek Kitszel
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 02/15] ice: init imem table for parser Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 03/15] ice: init metainit " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 11/15] ice: add internal help functions Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-17 9:34 ` [Intel-wired-lan] [PATCH net-next v3 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 00/15] Introduce the Parser Library Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 7:20 ` [Intel-wired-lan] " Simon Horman
2023-08-21 7:20 ` Simon Horman
2023-08-21 7:30 ` [Intel-wired-lan] " Simon Horman
2023-08-21 7:30 ` Simon Horman
2023-08-21 7:34 ` [Intel-wired-lan] " Guo, Junfeng
2023-08-21 7:34 ` Guo, Junfeng
2023-08-21 14:47 ` [Intel-wired-lan] " Simon Horman
2023-08-21 14:47 ` Simon Horman
2023-08-22 2:47 ` [Intel-wired-lan] " Guo, Junfeng
2023-08-22 2:47 ` Guo, Junfeng
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 02/15] ice: init imem table for parser Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 03/15] ice: init metainit " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 11/15] ice: add internal help functions Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 2:38 ` [Intel-wired-lan] [PATCH iwl-next v5 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-21 2:38 ` Junfeng Guo
2023-08-21 6:46 ` [Intel-wired-lan] [EXT] [PATCH iwl-next v5 00/15] Introduce the Parser Library Subbaraya Sundeep Bhatta
2023-08-21 6:46 ` Subbaraya Sundeep Bhatta
2023-08-21 7:15 ` [Intel-wired-lan] " Guo, Junfeng
2023-08-21 7:15 ` Guo, Junfeng
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 02/15] ice: init imem table for parser Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 03/15] ice: init metainit " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 11/15] ice: add internal help functions Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-21 8:14 ` [Intel-wired-lan] [PATCH iwl-next v6 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-21 8:14 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 00/15] Introduce the Parser Library Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 02/15] ice: init imem table for parser Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 03/15] ice: init metainit " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo [this message]
2023-08-23 9:31 ` [PATCH iwl-next v7 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 11/15] ice: add internal help functions Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-23 9:31 ` [Intel-wired-lan] [PATCH iwl-next v7 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-23 9:31 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 00/15] Introduce the Parser Library Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 01/15] ice: add parser create and destroy skeleton Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 02/15] ice: init imem table for parser Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-28 9:55 ` [Intel-wired-lan] " Ivan Vecera
2023-08-28 9:55 ` Ivan Vecera
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 03/15] ice: init metainit " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 04/15] ice: init parse graph cam tables " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 05/15] ice: init boost tcam and label " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 06/15] ice: init ptype marker tcam table " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 07/15] ice: init marker and protocol group tables " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 08/15] ice: init flag redirect table " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 10/15] ice: add parser runtime skeleton Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 11/15] ice: add internal help functions Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 12/15] ice: add parser execution main loop Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 15:39 ` [Intel-wired-lan] " Simon Horman
2023-08-24 15:39 ` Simon Horman
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 13/15] ice: support double vlan mode configure for parser Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:54 ` [Intel-wired-lan] [PATCH iwl-next v8 14/15] ice: add tunnel port support " Junfeng Guo
2023-08-24 7:54 ` Junfeng Guo
2023-08-24 7:55 ` [Intel-wired-lan] [PATCH iwl-next v8 15/15] ice: add API for parser profile initialization Junfeng Guo
2023-08-24 7:55 ` Junfeng Guo
2023-08-24 15:20 ` [Intel-wired-lan] [PATCH iwl-next v8 00/15] Introduce the Parser Library Jakub Kicinski
2023-08-24 15:20 ` Jakub Kicinski
2023-08-25 10:52 ` [Intel-wired-lan] " Alexander Lobakin
2023-08-25 10:52 ` Alexander Lobakin
2023-08-26 0:23 ` [Intel-wired-lan] " Jakub Kicinski
2023-08-26 0:23 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230823093158.782802-10-junfeng.guo@intel.com \
--to=junfeng.guo@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=horms@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=ivecera@redhat.com \
--cc=jesse.brandeburg@intel.com \
--cc=netdev@vger.kernel.org \
--cc=qi.z.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.