All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qi Zhang <qi.z.zhang@intel.com>
To: qiming.yang@intel.com
Cc: junfeng.guo@intel.com, dev@dpdk.org, Qi Zhang <qi.z.zhang@intel.com>
Subject: [dpdk-dev] [PATCH v3 09/20] net/ice/base: init flag redirect table for parser
Date: Tue, 21 Sep 2021 21:19:58 +0800	[thread overview]
Message-ID: <20210921132009.3461020-10-qi.z.zhang@intel.com> (raw)
In-Reply-To: <20210921132009.3461020-1-qi.z.zhang@intel.com>

Parse DDP section ICE_SID_RXPARSER_FLAG_REDIR into an array of
ice_flag_rd_item.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Junfeng Guo <junfeng.guo@intel.com>
---
 drivers/net/ice/base/ice_flex_type.h |  2 ++
 drivers/net/ice/base/ice_flg_rd.c    | 53 ++++++++++++++++++++++++++++
 drivers/net/ice/base/ice_flg_rd.h    | 16 +++++++++
 drivers/net/ice/base/ice_parser.c    | 11 ++++++
 drivers/net/ice/base/ice_parser.h    |  3 ++
 drivers/net/ice/base/meson.build     |  1 +
 6 files changed, 86 insertions(+)
 create mode 100644 drivers/net/ice/base/ice_flg_rd.c
 create mode 100644 drivers/net/ice/base/ice_flg_rd.h

diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h
index 3f2038c931..59eeca0a30 100644
--- a/drivers/net/ice/base/ice_flex_type.h
+++ b/drivers/net/ice/base/ice_flex_type.h
@@ -198,6 +198,8 @@ struct ice_buf_hdr {
 #define ICE_SID_CDID_KEY_BUILDER_PE	87
 #define ICE_SID_CDID_REDIR_PE		88
 
+#define ICE_SID_RXPARSER_FLAG_REDIR	97
+
 /* Label Metadata section IDs */
 #define ICE_SID_LBL_FIRST		0x80000010
 #define ICE_SID_LBL_RXPARSER_IMEM	0x80000010
diff --git a/drivers/net/ice/base/ice_flg_rd.c b/drivers/net/ice/base/ice_flg_rd.c
new file mode 100644
index 0000000000..292916d9a8
--- /dev/null
+++ b/drivers/net/ice/base/ice_flg_rd.c
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2001-2021 Intel Corporation
+ */
+
+#include "ice_common.h"
+#include "ice_parser_util.h"
+
+#define ICE_FLG_RD_TABLE_SIZE 64
+
+/**
+ * ice_flg_rd_dump - dump a flag redirect item info
+ * @ice_hw: pointer to the hardware structure
+ * @item: flag redirect item to dump
+ */
+void ice_flg_rd_dump(struct ice_hw *hw, struct ice_flg_rd_item *item)
+{
+	ice_info(hw, "index = %d\n", item->idx);
+	ice_info(hw, "expose = %d\n", item->expose);
+	ice_info(hw, "intr_flg_id = %d\n", item->intr_flg_id);
+}
+
+/** The function parses a 8 bits Flag Redirect Table entry with below format:
+ *  BIT 0:	Expose (rdi->expose)
+ *  BIT 1-6:	Internal Flag ID (rdi->intr_flg_id)
+ *  BIT 7:	reserved
+ */
+static void _flg_rd_parse_item(struct ice_hw *hw, u16 idx, void *item,
+			       void *data, int size)
+{
+	struct ice_flg_rd_item *rdi = (struct ice_flg_rd_item *)item;
+	u8 d8 = *(u8 *)data;
+
+	rdi->idx = idx;
+	rdi->expose = (d8 & 0x1) != 0;
+	rdi->intr_flg_id = (u8)((d8 >> 1) & 0x3f);
+
+	if (hw->debug_mask & ICE_DBG_PARSER)
+		ice_flg_rd_dump(hw, rdi);
+}
+
+/**
+ * ice_flg_rd_table_get - create a flag redirect table
+ * @ice_hw: pointer to the hardware structure
+ */
+struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw)
+{
+	return (struct ice_flg_rd_item *)
+		ice_parser_create_table(hw, ICE_SID_RXPARSER_FLAG_REDIR,
+					sizeof(struct ice_flg_rd_item),
+					ICE_FLG_RD_TABLE_SIZE,
+					ice_parser_sect_item_get,
+					_flg_rd_parse_item, false);
+}
diff --git a/drivers/net/ice/base/ice_flg_rd.h b/drivers/net/ice/base/ice_flg_rd.h
new file mode 100644
index 0000000000..e65350f18c
--- /dev/null
+++ b/drivers/net/ice/base/ice_flg_rd.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2001-2021 Intel Corporation
+ */
+
+#ifndef _ICE_FLG_RD_H_
+#define _ICE_FLG_RD_H_
+
+struct ice_flg_rd_item {
+	u16 idx;
+	bool expose;
+	u8 intr_flg_id;
+};
+
+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);
+#endif /* _ICE_FLG_RD_H_ */
diff --git a/drivers/net/ice/base/ice_parser.c b/drivers/net/ice/base/ice_parser.c
index 0ed7c5fe32..02a299aa04 100644
--- a/drivers/net/ice/base/ice_parser.c
+++ b/drivers/net/ice/base/ice_parser.c
@@ -16,6 +16,7 @@
 #define ICE_SID_RXPARSER_MARKER_TYPE_ENTRY_SIZE		24
 #define ICE_SID_RXPARSER_MARKER_GRP_ENTRY_SIZE		8
 #define ICE_SID_RXPARSER_PROTO_GRP_ENTRY_SIZE		24
+#define ICE_SID_RXPARSER_FLAG_REDIR_ENTRY_SIZE		1
 
 #define ICE_SEC_LBL_DATA_OFFSET				2
 #define ICE_SID_LBL_ENTRY_SIZE				66
@@ -84,6 +85,9 @@ void *ice_parser_sect_item_get(u32 sect_type, void *section,
 	case ICE_SID_RXPARSER_PROTO_GRP:
 		size = ICE_SID_RXPARSER_PROTO_GRP_ENTRY_SIZE;
 		break;
+	case ICE_SID_RXPARSER_FLAG_REDIR:
+		size = ICE_SID_RXPARSER_FLAG_REDIR_ENTRY_SIZE;
+		break;
 	default:
 		return NULL;
 	}
@@ -235,6 +239,12 @@ enum ice_status ice_parser_create(struct ice_hw *hw, struct ice_parser **psr)
 		goto err;
 	}
 
+	p->flg_rd_table = ice_flg_rd_table_get(hw);
+	if (!p->flg_rd_table) {
+		status = ICE_ERR_PARAM;
+		goto err;
+	}
+
 	*psr = p;
 	return ICE_SUCCESS;
 err:
@@ -259,6 +269,7 @@ void ice_parser_destroy(struct ice_parser *psr)
 	ice_free(psr->hw, psr->ptype_mk_tcam_table);
 	ice_free(psr->hw, psr->mk_grp_table);
 	ice_free(psr->hw, psr->proto_grp_table);
+	ice_free(psr->hw, psr->flg_rd_table);
 
 	ice_free(psr->hw, psr);
 }
diff --git a/drivers/net/ice/base/ice_parser.h b/drivers/net/ice/base/ice_parser.h
index ac4139abd7..272eb28d5b 100644
--- a/drivers/net/ice/base/ice_parser.h
+++ b/drivers/net/ice/base/ice_parser.h
@@ -12,6 +12,7 @@
 #include "ice_ptype_mk.h"
 #include "ice_mk_grp.h"
 #include "ice_proto_grp.h"
+#include "ice_flg_rd.h"
 
 struct ice_parser {
 	struct ice_hw *hw; /* pointer to the hardware structure */
@@ -38,6 +39,8 @@ struct ice_parser {
 	struct ice_mk_grp_item *mk_grp_table;
 	/* load data from section ICE_SID_RXPARSER_PROTO_GRP */
 	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;
 };
 
 enum ice_status ice_parser_create(struct ice_hw *hw, struct ice_parser **psr);
diff --git a/drivers/net/ice/base/meson.build b/drivers/net/ice/base/meson.build
index 8da942a2be..9ce508c272 100644
--- a/drivers/net/ice/base/meson.build
+++ b/drivers/net/ice/base/meson.build
@@ -23,6 +23,7 @@ sources = [
 	'ice_ptype_mk.c',
 	'ice_mk_grp.c',
 	'ice_proto_grp.c',
+	'ice_flg_rd.c',
 ]
 
 error_cflags = [
-- 
2.26.2


  parent reply	other threads:[~2021-09-21 13:18 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-21 13:19 [dpdk-dev] [PATCH v3 00/20] ice/base: add parser module Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 01/20] net/ice/base: add parser create and destroy skeleton Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 02/20] net/ice/base: init imem table for parser Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 03/20] net/ice/base: init metainit " Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 04/20] net/ice/base: init parse graph cam " Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 05/20] net/ice/base: init boost TCAM " Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 06/20] net/ice/base: init ptype marker " Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 07/20] net/ice/base: init marker group " Qi Zhang
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 08/20] net/ice/base: init protocol " Qi Zhang
2021-09-21 13:19 ` Qi Zhang [this message]
2021-09-21 13:19 ` [dpdk-dev] [PATCH v3 10/20] net/ice/base: init XLT key builder " Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 11/20] net/ice/base: add parser runtime skeleton Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 12/20] net/ice/base: add helper function for boost TCAM match Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 13/20] net/ice/base: add helper functions for parse graph key matching Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 14/20] net/ice/base: add helper function for ptype markers match Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 15/20] net/ice/base: add helper function to redirect flags Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 16/20] net/ice/base: add helper function to aggregate flags Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 17/20] net/ice/base: add parser execution main loop Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 18/20] net/ice/base: support double VLAN mode configure for parser Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 19/20] net/ice/base: add tunnel port support " Qi Zhang
2021-09-21 13:20 ` [dpdk-dev] [PATCH v3 20/20] net/ice/base: add API for parser profile initialization Qi Zhang
2021-09-21 13:32 ` [dpdk-dev] [PATCH v3 00/20] ice/base: add parser module Zhang, Qi Z
2021-09-28 12:23   ` Ferruh Yigit

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=20210921132009.3461020-10-qi.z.zhang@intel.com \
    --to=qi.z.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=junfeng.guo@intel.com \
    --cc=qiming.yang@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.