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 11/15] ice: add internal help functions
Date: Wed, 23 Aug 2023 17:31:54 +0800 [thread overview]
Message-ID: <20230823093158.782802-12-junfeng.guo@intel.com> (raw)
In-Reply-To: <20230823093158.782802-1-junfeng.guo@intel.com>
Add below internal helper function:
- [ice_bst_tcam_match]:
to perform ternary match on boost TCAM.
- [ice_pg_cam_match]:
to perform parse graph key match in cam table.
- [ice_pg_nm_cam_match]:
to perform parse graph key no match in cam table.
- [ice_ptype_mk_tcam_match]:
to perform ptype markers match in tcam table.
- [ice_flg_redirect]:
to redirect parser flags to packet flags.
- [ice_xlt_kb_flg_get]:
to aggregate 64 bit packet flag into 16 bit key builder flags.
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
drivers/net/ethernet/intel/ice/ice_bst_tcam.c | 23 ++++++
drivers/net/ethernet/intel/ice/ice_bst_tcam.h | 3 +
drivers/net/ethernet/intel/ice/ice_flg_rd.c | 23 ++++++
drivers/net/ethernet/intel/ice/ice_flg_rd.h | 1 +
drivers/net/ethernet/intel/ice/ice_parser.h | 1 +
drivers/net/ethernet/intel/ice/ice_pg_cam.c | 76 +++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_pg_cam.h | 6 ++
drivers/net/ethernet/intel/ice/ice_ptype_mk.c | 22 ++++++
drivers/net/ethernet/intel/ice/ice_ptype_mk.h | 3 +
drivers/net/ethernet/intel/ice/ice_tmatch.h | 40 ++++++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.c | 27 +++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.h | 1 +
12 files changed, 226 insertions(+)
create mode 100644 drivers/net/ethernet/intel/ice/ice_tmatch.h
diff --git a/drivers/net/ethernet/intel/ice/ice_bst_tcam.c b/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
index 9f232db164d9..f31023da0a41 100644
--- a/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
+++ b/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
@@ -271,3 +271,26 @@ struct ice_lbl_item *ice_bst_lbl_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_parse_lbl_item, true);
}
+
+/**
+ * ice_bst_tcam_match - match a pattern on the boost tcam table
+ * @tcam_table: boost tcam table to search
+ * @pat: pattern to match
+ */
+struct ice_bst_tcam_item *
+ice_bst_tcam_match(struct ice_bst_tcam_item *tcam_table, u8 *pat)
+{
+ int i;
+
+ for (i = 0; i < ICE_BST_TCAM_TABLE_SIZE; i++) {
+ struct ice_bst_tcam_item *item = &tcam_table[i];
+
+ if (item->hit_idx_grp == 0)
+ continue;
+ if (ice_ternary_match(item->key, item->key_inv, pat,
+ ICE_BST_TCAM_KEY_SIZE))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_bst_tcam.h b/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
index b1b1dc224d70..960c8ff09171 100644
--- a/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
+++ b/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
@@ -42,4 +42,7 @@ void ice_bst_tcam_dump(struct ice_hw *hw, struct ice_bst_tcam_item *item);
struct ice_bst_tcam_item *ice_bst_tcam_table_get(struct ice_hw *hw);
struct ice_lbl_item *ice_bst_lbl_table_get(struct ice_hw *hw);
+
+struct ice_bst_tcam_item *
+ice_bst_tcam_match(struct ice_bst_tcam_item *tcam_table, u8 *pat);
#endif /*_ICE_BST_TCAM_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_flg_rd.c b/drivers/net/ethernet/intel/ice/ice_flg_rd.c
index 9d5d66d0c773..057bcd68125f 100644
--- a/drivers/net/ethernet/intel/ice/ice_flg_rd.c
+++ b/drivers/net/ethernet/intel/ice/ice_flg_rd.c
@@ -48,3 +48,26 @@ struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_flg_rd_parse_item, false);
}
+
+/**
+ * ice_flg_redirect - redirect a parser flag to packet flag
+ * @table: flag redirect table
+ * @psr_flg: parser flag to redirect
+ */
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg)
+{
+ u64 flg = 0;
+ int i;
+
+ for (i = 0; i < ICE_FLG_RDT_SIZE; i++) {
+ struct ice_flg_rd_item *item = &table[i];
+
+ if (!item->expose)
+ continue;
+
+ if (psr_flg & BIT(item->intr_flg_id))
+ flg |= BIT(i);
+ }
+
+ return flg;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_flg_rd.h b/drivers/net/ethernet/intel/ice/ice_flg_rd.h
index b3b4fd7a9002..9215c8e0cdfd 100644
--- a/drivers/net/ethernet/intel/ice/ice_flg_rd.h
+++ b/drivers/net/ethernet/intel/ice/ice_flg_rd.h
@@ -20,4 +20,5 @@ struct ice_flg_rd_item {
void ice_flg_rd_dump(struct ice_hw *hw, struct ice_flg_rd_item *item);
struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw);
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg);
#endif /* _ICE_FLG_RD_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.h b/drivers/net/ethernet/intel/ice/ice_parser.h
index 5f98f3031294..bfcef4f597bf 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.h
+++ b/drivers/net/ethernet/intel/ice/ice_parser.h
@@ -14,6 +14,7 @@
#include "ice_flg_rd.h"
#include "ice_xlt_kb.h"
#include "ice_parser_rt.h"
+#include "ice_tmatch.h"
#define ICE_SEC_DATA_OFFSET 4
#define ICE_SID_RXPARSER_IMEM_ENTRY_SIZE 48
diff --git a/drivers/net/ethernet/intel/ice/ice_pg_cam.c b/drivers/net/ethernet/intel/ice/ice_pg_cam.c
index 70b0b0b93a8d..bd17e85834ed 100644
--- a/drivers/net/ethernet/intel/ice/ice_pg_cam.c
+++ b/drivers/net/ethernet/intel/ice/ice_pg_cam.c
@@ -319,3 +319,79 @@ struct ice_pg_nm_cam_item *ice_pg_nm_sp_cam_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_pg_nm_sp_cam_parse_item, false);
}
+
+static bool _ice_pg_cam_match(struct ice_pg_cam_item *item,
+ struct ice_pg_cam_key *key)
+{
+ if (!item->key.valid ||
+ item->key.node_id != key->node_id ||
+ item->key.flag0 != key->flag0 ||
+ item->key.flag1 != key->flag1 ||
+ item->key.flag2 != key->flag2 ||
+ item->key.flag3 != key->flag3 ||
+ item->key.boost_idx != key->boost_idx ||
+ item->key.alu_reg != key->alu_reg ||
+ item->key.next_proto != key->next_proto)
+ return false;
+
+ return true;
+}
+
+static bool _ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *item,
+ struct ice_pg_cam_key *key)
+{
+ if (!item->key.valid ||
+ item->key.node_id != key->node_id ||
+ item->key.flag0 != key->flag0 ||
+ item->key.flag1 != key->flag1 ||
+ item->key.flag2 != key->flag2 ||
+ item->key.flag3 != key->flag3 ||
+ item->key.boost_idx != key->boost_idx ||
+ item->key.alu_reg != key->alu_reg)
+ return false;
+
+ return true;
+}
+
+/**
+ * ice_pg_cam_match - search parse graph cam table by key
+ * @table: parse graph cam table to search
+ * @size: cam table size
+ * @key: search key
+ */
+struct ice_pg_cam_item *ice_pg_cam_match(struct ice_pg_cam_item *table,
+ int size, struct ice_pg_cam_key *key)
+{
+ int i;
+
+ for (i = 0; i < size; i++) {
+ struct ice_pg_cam_item *item = &table[i];
+
+ if (_ice_pg_cam_match(item, key))
+ return item;
+ }
+
+ return NULL;
+}
+
+/**
+ * ice_pg_nm_cam_match - search parse graph no match cam table by key
+ * @table: parse graph no match cam table to search
+ * @size: cam table size
+ * @key: search key
+ */
+struct ice_pg_nm_cam_item *
+ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
+ struct ice_pg_cam_key *key)
+{
+ int i;
+
+ for (i = 0; i < size; i++) {
+ struct ice_pg_nm_cam_item *item = &table[i];
+
+ if (_ice_pg_nm_cam_match(item, key))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_pg_cam.h b/drivers/net/ethernet/intel/ice/ice_pg_cam.h
index 0d5c84d380d3..301165b19b6a 100644
--- a/drivers/net/ethernet/intel/ice/ice_pg_cam.h
+++ b/drivers/net/ethernet/intel/ice/ice_pg_cam.h
@@ -133,4 +133,10 @@ struct ice_pg_cam_item *ice_pg_sp_cam_table_get(struct ice_hw *hw);
struct ice_pg_nm_cam_item *ice_pg_nm_cam_table_get(struct ice_hw *hw);
struct ice_pg_nm_cam_item *ice_pg_nm_sp_cam_table_get(struct ice_hw *hw);
+
+struct ice_pg_cam_item *ice_pg_cam_match(struct ice_pg_cam_item *table,
+ int size, struct ice_pg_cam_key *key);
+struct ice_pg_nm_cam_item *
+ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
+ struct ice_pg_cam_key *key);
#endif /* _ICE_PG_CAM_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_ptype_mk.c b/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
index ee7b09618d54..fbd46ae857a3 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
@@ -49,3 +49,25 @@ struct ice_ptype_mk_tcam_item *ice_ptype_mk_tcam_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_parse_ptype_mk_tcam_item, true);
}
+
+/**
+ * ice_ptype_mk_tcam_match - match a pattern on a ptype marker tcam table
+ * @table: ptype marker tcam table to search
+ * @pat: pattern to match
+ * @len: length of the pattern
+ */
+struct ice_ptype_mk_tcam_item *
+ice_ptype_mk_tcam_match(struct ice_ptype_mk_tcam_item *table,
+ u8 *pat, int len)
+{
+ int i;
+
+ for (i = 0; i < ICE_PTYPE_MK_TCAM_TABLE_SIZE; i++) {
+ struct ice_ptype_mk_tcam_item *item = &table[i];
+
+ if (ice_ternary_match(item->key, item->key_inv, pat, len))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_ptype_mk.h b/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
index 4a071d823bea..c8061f55cccc 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
+++ b/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
@@ -17,4 +17,7 @@ struct ice_ptype_mk_tcam_item {
void ice_ptype_mk_tcam_dump(struct ice_hw *hw,
struct ice_ptype_mk_tcam_item *item);
struct ice_ptype_mk_tcam_item *ice_ptype_mk_tcam_table_get(struct ice_hw *hw);
+struct ice_ptype_mk_tcam_item *
+ice_ptype_mk_tcam_match(struct ice_ptype_mk_tcam_item *table,
+ u8 *pat, int len);
#endif /* _ICE_PTYPE_MK_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_tmatch.h b/drivers/net/ethernet/intel/ice/ice_tmatch.h
new file mode 100644
index 000000000000..e7adcf22ae3f
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_tmatch.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (C) 2023 Intel Corporation */
+
+#ifndef _ICE_TMATCH_H_
+#define _ICE_TMATCH_H_
+
+static inline bool ice_ternary_match_byte(u8 key, u8 key_inv, u8 pat)
+{
+ u8 k1, k2, vv;
+ int i;
+
+ for (i = 0; i < BITS_PER_BYTE; i++) {
+ k1 = (u8)(key & BIT(i));
+ k2 = (u8)(key_inv & BIT(i));
+ vv = (u8)(pat & BIT(i));
+
+ if (k1 != 0 && k2 != 0)
+ continue;
+ if (k1 == 0 && k2 == 0)
+ return false;
+
+ if (k1 == vv)
+ return false;
+ }
+
+ return true;
+}
+
+static inline bool ice_ternary_match(const u8 *key, const u8 *key_inv,
+ const u8 *pat, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++)
+ if (!ice_ternary_match_byte(key[i], key_inv[i], pat[i]))
+ return false;
+
+ return true;
+}
+#endif /* _ICE_TMATCH_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
index 4fca88fb7d77..1cb00fabbaf4 100644
--- a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
@@ -233,3 +233,30 @@ 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);
}
+
+/**
+ * ice_xlt_kb_flag_get - aggregate 64 bits packet flag into 16 bits xlt flag
+ * @kb: xlt key build
+ * @pkt_flag: 64 bits packet flag
+ */
+u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag)
+{
+ struct ice_xlt_kb_entry *entry = &kb->entries[0];
+ u16 flg = 0;
+ int i;
+
+ /* check flag 15 */
+ if (kb->flag15 & pkt_flag)
+ flg = (u16)BIT(ICE_XLT_KB_FLAG0_14_CNT);
+
+ /* check flag 0 - 14 */
+ for (i = 0; i < ICE_XLT_KB_FLAG0_14_CNT; i++) {
+ /* only check first entry */
+ u16 idx = (u16)(entry->flg0_14_sel[i] & ICE_XLT_KB_FLAG_M);
+
+ if (pkt_flag & BIT(idx))
+ flg |= (u16)BIT(i);
+ }
+
+ return flg;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
index 020f96bfdbe8..dbd80fe8b0b9 100644
--- a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
@@ -76,4 +76,5 @@ 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);
+u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag);
#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 11/15] ice: add internal help functions
Date: Wed, 23 Aug 2023 17:31:54 +0800 [thread overview]
Message-ID: <20230823093158.782802-12-junfeng.guo@intel.com> (raw)
In-Reply-To: <20230823093158.782802-1-junfeng.guo@intel.com>
Add below internal helper function:
- [ice_bst_tcam_match]:
to perform ternary match on boost TCAM.
- [ice_pg_cam_match]:
to perform parse graph key match in cam table.
- [ice_pg_nm_cam_match]:
to perform parse graph key no match in cam table.
- [ice_ptype_mk_tcam_match]:
to perform ptype markers match in tcam table.
- [ice_flg_redirect]:
to redirect parser flags to packet flags.
- [ice_xlt_kb_flg_get]:
to aggregate 64 bit packet flag into 16 bit key builder flags.
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
drivers/net/ethernet/intel/ice/ice_bst_tcam.c | 23 ++++++
drivers/net/ethernet/intel/ice/ice_bst_tcam.h | 3 +
drivers/net/ethernet/intel/ice/ice_flg_rd.c | 23 ++++++
drivers/net/ethernet/intel/ice/ice_flg_rd.h | 1 +
drivers/net/ethernet/intel/ice/ice_parser.h | 1 +
drivers/net/ethernet/intel/ice/ice_pg_cam.c | 76 +++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_pg_cam.h | 6 ++
drivers/net/ethernet/intel/ice/ice_ptype_mk.c | 22 ++++++
drivers/net/ethernet/intel/ice/ice_ptype_mk.h | 3 +
drivers/net/ethernet/intel/ice/ice_tmatch.h | 40 ++++++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.c | 27 +++++++
drivers/net/ethernet/intel/ice/ice_xlt_kb.h | 1 +
12 files changed, 226 insertions(+)
create mode 100644 drivers/net/ethernet/intel/ice/ice_tmatch.h
diff --git a/drivers/net/ethernet/intel/ice/ice_bst_tcam.c b/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
index 9f232db164d9..f31023da0a41 100644
--- a/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
+++ b/drivers/net/ethernet/intel/ice/ice_bst_tcam.c
@@ -271,3 +271,26 @@ struct ice_lbl_item *ice_bst_lbl_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_parse_lbl_item, true);
}
+
+/**
+ * ice_bst_tcam_match - match a pattern on the boost tcam table
+ * @tcam_table: boost tcam table to search
+ * @pat: pattern to match
+ */
+struct ice_bst_tcam_item *
+ice_bst_tcam_match(struct ice_bst_tcam_item *tcam_table, u8 *pat)
+{
+ int i;
+
+ for (i = 0; i < ICE_BST_TCAM_TABLE_SIZE; i++) {
+ struct ice_bst_tcam_item *item = &tcam_table[i];
+
+ if (item->hit_idx_grp == 0)
+ continue;
+ if (ice_ternary_match(item->key, item->key_inv, pat,
+ ICE_BST_TCAM_KEY_SIZE))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_bst_tcam.h b/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
index b1b1dc224d70..960c8ff09171 100644
--- a/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
+++ b/drivers/net/ethernet/intel/ice/ice_bst_tcam.h
@@ -42,4 +42,7 @@ void ice_bst_tcam_dump(struct ice_hw *hw, struct ice_bst_tcam_item *item);
struct ice_bst_tcam_item *ice_bst_tcam_table_get(struct ice_hw *hw);
struct ice_lbl_item *ice_bst_lbl_table_get(struct ice_hw *hw);
+
+struct ice_bst_tcam_item *
+ice_bst_tcam_match(struct ice_bst_tcam_item *tcam_table, u8 *pat);
#endif /*_ICE_BST_TCAM_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_flg_rd.c b/drivers/net/ethernet/intel/ice/ice_flg_rd.c
index 9d5d66d0c773..057bcd68125f 100644
--- a/drivers/net/ethernet/intel/ice/ice_flg_rd.c
+++ b/drivers/net/ethernet/intel/ice/ice_flg_rd.c
@@ -48,3 +48,26 @@ struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_flg_rd_parse_item, false);
}
+
+/**
+ * ice_flg_redirect - redirect a parser flag to packet flag
+ * @table: flag redirect table
+ * @psr_flg: parser flag to redirect
+ */
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg)
+{
+ u64 flg = 0;
+ int i;
+
+ for (i = 0; i < ICE_FLG_RDT_SIZE; i++) {
+ struct ice_flg_rd_item *item = &table[i];
+
+ if (!item->expose)
+ continue;
+
+ if (psr_flg & BIT(item->intr_flg_id))
+ flg |= BIT(i);
+ }
+
+ return flg;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_flg_rd.h b/drivers/net/ethernet/intel/ice/ice_flg_rd.h
index b3b4fd7a9002..9215c8e0cdfd 100644
--- a/drivers/net/ethernet/intel/ice/ice_flg_rd.h
+++ b/drivers/net/ethernet/intel/ice/ice_flg_rd.h
@@ -20,4 +20,5 @@ struct ice_flg_rd_item {
void ice_flg_rd_dump(struct ice_hw *hw, struct ice_flg_rd_item *item);
struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw);
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg);
#endif /* _ICE_FLG_RD_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_parser.h b/drivers/net/ethernet/intel/ice/ice_parser.h
index 5f98f3031294..bfcef4f597bf 100644
--- a/drivers/net/ethernet/intel/ice/ice_parser.h
+++ b/drivers/net/ethernet/intel/ice/ice_parser.h
@@ -14,6 +14,7 @@
#include "ice_flg_rd.h"
#include "ice_xlt_kb.h"
#include "ice_parser_rt.h"
+#include "ice_tmatch.h"
#define ICE_SEC_DATA_OFFSET 4
#define ICE_SID_RXPARSER_IMEM_ENTRY_SIZE 48
diff --git a/drivers/net/ethernet/intel/ice/ice_pg_cam.c b/drivers/net/ethernet/intel/ice/ice_pg_cam.c
index 70b0b0b93a8d..bd17e85834ed 100644
--- a/drivers/net/ethernet/intel/ice/ice_pg_cam.c
+++ b/drivers/net/ethernet/intel/ice/ice_pg_cam.c
@@ -319,3 +319,79 @@ struct ice_pg_nm_cam_item *ice_pg_nm_sp_cam_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_pg_nm_sp_cam_parse_item, false);
}
+
+static bool _ice_pg_cam_match(struct ice_pg_cam_item *item,
+ struct ice_pg_cam_key *key)
+{
+ if (!item->key.valid ||
+ item->key.node_id != key->node_id ||
+ item->key.flag0 != key->flag0 ||
+ item->key.flag1 != key->flag1 ||
+ item->key.flag2 != key->flag2 ||
+ item->key.flag3 != key->flag3 ||
+ item->key.boost_idx != key->boost_idx ||
+ item->key.alu_reg != key->alu_reg ||
+ item->key.next_proto != key->next_proto)
+ return false;
+
+ return true;
+}
+
+static bool _ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *item,
+ struct ice_pg_cam_key *key)
+{
+ if (!item->key.valid ||
+ item->key.node_id != key->node_id ||
+ item->key.flag0 != key->flag0 ||
+ item->key.flag1 != key->flag1 ||
+ item->key.flag2 != key->flag2 ||
+ item->key.flag3 != key->flag3 ||
+ item->key.boost_idx != key->boost_idx ||
+ item->key.alu_reg != key->alu_reg)
+ return false;
+
+ return true;
+}
+
+/**
+ * ice_pg_cam_match - search parse graph cam table by key
+ * @table: parse graph cam table to search
+ * @size: cam table size
+ * @key: search key
+ */
+struct ice_pg_cam_item *ice_pg_cam_match(struct ice_pg_cam_item *table,
+ int size, struct ice_pg_cam_key *key)
+{
+ int i;
+
+ for (i = 0; i < size; i++) {
+ struct ice_pg_cam_item *item = &table[i];
+
+ if (_ice_pg_cam_match(item, key))
+ return item;
+ }
+
+ return NULL;
+}
+
+/**
+ * ice_pg_nm_cam_match - search parse graph no match cam table by key
+ * @table: parse graph no match cam table to search
+ * @size: cam table size
+ * @key: search key
+ */
+struct ice_pg_nm_cam_item *
+ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
+ struct ice_pg_cam_key *key)
+{
+ int i;
+
+ for (i = 0; i < size; i++) {
+ struct ice_pg_nm_cam_item *item = &table[i];
+
+ if (_ice_pg_nm_cam_match(item, key))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_pg_cam.h b/drivers/net/ethernet/intel/ice/ice_pg_cam.h
index 0d5c84d380d3..301165b19b6a 100644
--- a/drivers/net/ethernet/intel/ice/ice_pg_cam.h
+++ b/drivers/net/ethernet/intel/ice/ice_pg_cam.h
@@ -133,4 +133,10 @@ struct ice_pg_cam_item *ice_pg_sp_cam_table_get(struct ice_hw *hw);
struct ice_pg_nm_cam_item *ice_pg_nm_cam_table_get(struct ice_hw *hw);
struct ice_pg_nm_cam_item *ice_pg_nm_sp_cam_table_get(struct ice_hw *hw);
+
+struct ice_pg_cam_item *ice_pg_cam_match(struct ice_pg_cam_item *table,
+ int size, struct ice_pg_cam_key *key);
+struct ice_pg_nm_cam_item *
+ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
+ struct ice_pg_cam_key *key);
#endif /* _ICE_PG_CAM_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_ptype_mk.c b/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
index ee7b09618d54..fbd46ae857a3 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptype_mk.c
@@ -49,3 +49,25 @@ struct ice_ptype_mk_tcam_item *ice_ptype_mk_tcam_table_get(struct ice_hw *hw)
ice_parser_sect_item_get,
_ice_parse_ptype_mk_tcam_item, true);
}
+
+/**
+ * ice_ptype_mk_tcam_match - match a pattern on a ptype marker tcam table
+ * @table: ptype marker tcam table to search
+ * @pat: pattern to match
+ * @len: length of the pattern
+ */
+struct ice_ptype_mk_tcam_item *
+ice_ptype_mk_tcam_match(struct ice_ptype_mk_tcam_item *table,
+ u8 *pat, int len)
+{
+ int i;
+
+ for (i = 0; i < ICE_PTYPE_MK_TCAM_TABLE_SIZE; i++) {
+ struct ice_ptype_mk_tcam_item *item = &table[i];
+
+ if (ice_ternary_match(item->key, item->key_inv, pat, len))
+ return item;
+ }
+
+ return NULL;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_ptype_mk.h b/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
index 4a071d823bea..c8061f55cccc 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
+++ b/drivers/net/ethernet/intel/ice/ice_ptype_mk.h
@@ -17,4 +17,7 @@ struct ice_ptype_mk_tcam_item {
void ice_ptype_mk_tcam_dump(struct ice_hw *hw,
struct ice_ptype_mk_tcam_item *item);
struct ice_ptype_mk_tcam_item *ice_ptype_mk_tcam_table_get(struct ice_hw *hw);
+struct ice_ptype_mk_tcam_item *
+ice_ptype_mk_tcam_match(struct ice_ptype_mk_tcam_item *table,
+ u8 *pat, int len);
#endif /* _ICE_PTYPE_MK_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_tmatch.h b/drivers/net/ethernet/intel/ice/ice_tmatch.h
new file mode 100644
index 000000000000..e7adcf22ae3f
--- /dev/null
+++ b/drivers/net/ethernet/intel/ice/ice_tmatch.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (C) 2023 Intel Corporation */
+
+#ifndef _ICE_TMATCH_H_
+#define _ICE_TMATCH_H_
+
+static inline bool ice_ternary_match_byte(u8 key, u8 key_inv, u8 pat)
+{
+ u8 k1, k2, vv;
+ int i;
+
+ for (i = 0; i < BITS_PER_BYTE; i++) {
+ k1 = (u8)(key & BIT(i));
+ k2 = (u8)(key_inv & BIT(i));
+ vv = (u8)(pat & BIT(i));
+
+ if (k1 != 0 && k2 != 0)
+ continue;
+ if (k1 == 0 && k2 == 0)
+ return false;
+
+ if (k1 == vv)
+ return false;
+ }
+
+ return true;
+}
+
+static inline bool ice_ternary_match(const u8 *key, const u8 *key_inv,
+ const u8 *pat, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++)
+ if (!ice_ternary_match_byte(key[i], key_inv[i], pat[i]))
+ return false;
+
+ return true;
+}
+#endif /* _ICE_TMATCH_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
index 4fca88fb7d77..1cb00fabbaf4 100644
--- a/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.c
@@ -233,3 +233,30 @@ 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);
}
+
+/**
+ * ice_xlt_kb_flag_get - aggregate 64 bits packet flag into 16 bits xlt flag
+ * @kb: xlt key build
+ * @pkt_flag: 64 bits packet flag
+ */
+u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag)
+{
+ struct ice_xlt_kb_entry *entry = &kb->entries[0];
+ u16 flg = 0;
+ int i;
+
+ /* check flag 15 */
+ if (kb->flag15 & pkt_flag)
+ flg = (u16)BIT(ICE_XLT_KB_FLAG0_14_CNT);
+
+ /* check flag 0 - 14 */
+ for (i = 0; i < ICE_XLT_KB_FLAG0_14_CNT; i++) {
+ /* only check first entry */
+ u16 idx = (u16)(entry->flg0_14_sel[i] & ICE_XLT_KB_FLAG_M);
+
+ if (pkt_flag & BIT(idx))
+ flg |= (u16)BIT(i);
+ }
+
+ return flg;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
index 020f96bfdbe8..dbd80fe8b0b9 100644
--- a/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
+++ b/drivers/net/ethernet/intel/ice/ice_xlt_kb.h
@@ -76,4 +76,5 @@ 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);
+u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag);
#endif /* _ICE_XLT_KB_H */
--
2.25.1
next prev parent reply other threads:[~2023-08-23 9:33 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 ` [Intel-wired-lan] [PATCH iwl-next v7 09/15] ice: init XLT key builder " Junfeng Guo
2023-08-23 9:31 ` 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 ` Junfeng Guo [this message]
2023-08-23 9:31 ` [PATCH iwl-next v7 11/15] ice: add internal help functions 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-12-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.