DPDK patches and discussions
 help / color / mirror / Atom feed
From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: oss-drivers@corigine.com, Chaoyong He <chaoyong.he@corigine.com>,
	Long Wu <long.wu@corigine.com>,
	Peng Zhang <peng.zhang@corigine.com>
Subject: [PATCH v2 10/11] net/nfp: support MARK flow action
Date: Tue,  5 Dec 2023 10:54:56 +0800	[thread overview]
Message-ID: <20231205025457.1067372-11-chaoyong.he@corigine.com> (raw)
In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com>

Add the corresponding logics to support the offload of MARK action.
Also add the related logics to parse the mark id and put into the mbuf
structure, and assigned the offload flags.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 doc/guides/nics/features/nfp.ini     |  1 +
 drivers/common/nfp/nfp_common_ctrl.h |  1 +
 drivers/net/nfp/nfp_net_flow.c       | 18 ++++++++++++++++++
 drivers/net/nfp/nfp_rxtx.c           | 18 ++++++++++++++++++
 4 files changed, 38 insertions(+)

diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini
index 1a09c4cbaf..248fd34a39 100644
--- a/doc/guides/nics/features/nfp.ini
+++ b/doc/guides/nics/features/nfp.ini
@@ -48,6 +48,7 @@ conntrack            = Y
 count                = Y
 drop                 = Y
 jump                 = Y
+mark                 = Y
 meter                = Y
 of_pop_vlan          = Y
 of_push_vlan         = Y
diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h
index cbde987736..d65fcd17cb 100644
--- a/drivers/common/nfp/nfp_common_ctrl.h
+++ b/drivers/common/nfp/nfp_common_ctrl.h
@@ -33,6 +33,7 @@
 
 /* Prepend field types */
 #define NFP_NET_META_HASH               1 /* Next field carries hash type */
+#define NFP_NET_META_MARK               2
 #define NFP_NET_META_VLAN               4
 #define NFP_NET_META_PORTID             5
 #define NFP_NET_META_IPSEC              9
diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c
index f561e9ecbe..71f126156e 100644
--- a/drivers/net/nfp/nfp_net_flow.c
+++ b/drivers/net/nfp/nfp_net_flow.c
@@ -548,6 +548,20 @@ nfp_net_flow_action_drop(struct rte_flow *nfp_flow)
 	action_data->action = NFP_NET_CMSG_ACTION_DROP;
 }
 
+static void
+nfp_net_flow_action_mark(struct rte_flow *nfp_flow,
+		const struct rte_flow_action *action)
+{
+	struct nfp_net_cmsg_action *action_data;
+	const struct rte_flow_action_mark *mark;
+
+	action_data = (struct nfp_net_cmsg_action *)nfp_flow->payload.action_data;
+	mark = action->conf;
+
+	action_data->action |= NFP_NET_CMSG_ACTION_MARK;
+	action_data->mark_id = mark->id;
+}
+
 static int
 nfp_net_flow_compile_actions(const struct rte_flow_action actions[],
 		struct rte_flow *nfp_flow)
@@ -560,6 +574,10 @@ nfp_net_flow_compile_actions(const struct rte_flow_action actions[],
 			PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_DROP");
 			nfp_net_flow_action_drop(nfp_flow);
 			return 0;
+		case RTE_FLOW_ACTION_TYPE_MARK:
+			PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_MARK");
+			nfp_net_flow_action_mark(nfp_flow, action);
+			break;
 		default:
 			PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type);
 			return -ENOTSUP;
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index f21e120a43..5094bbf145 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -25,6 +25,8 @@ struct nfp_meta_parsed {
 	uint32_t port_id;         /**< Port id value */
 	uint32_t sa_idx;          /**< IPsec SA index */
 	uint32_t hash;            /**< RSS hash value */
+	uint32_t mark_id;         /**< Mark id value */
+	uint16_t flags;           /**< Bitmap to indicate if meta exist */
 	uint8_t hash_type;        /**< RSS hash type */
 	uint8_t ipsec_type;       /**< IPsec type */
 	uint8_t vlan_layer;       /**< The valid number of value in @vlan[] */
@@ -290,6 +292,10 @@ nfp_net_parse_chained_meta(uint8_t *meta_base,
 			meta->sa_idx = rte_be_to_cpu_32(*(rte_be32_t *)meta_offset);
 			meta->ipsec_type = meta_info & NFP_NET_META_FIELD_MASK;
 			break;
+		case NFP_NET_META_MARK:
+			meta->flags |= (1 << NFP_NET_META_MARK);
+			meta->mark_id = rte_be_to_cpu_32(*(rte_be32_t *)meta_offset);
+			break;
 		default:
 			/* Unsupported metadata can be a performance issue */
 			return false;
@@ -434,6 +440,17 @@ nfp_net_parse_meta_ipsec(struct nfp_meta_parsed *meta,
 	}
 }
 
+static void
+nfp_net_parse_meta_mark(const struct nfp_meta_parsed *meta,
+		struct rte_mbuf *mbuf)
+{
+	if (((meta->flags >> NFP_NET_META_MARK) & 0x1) == 0)
+		return;
+
+	mbuf->hash.fdir.hi = meta->mark_id;
+	mbuf->ol_flags |= RTE_MBUF_F_RX_FDIR | RTE_MBUF_F_RX_FDIR_ID;
+}
+
 /* Parse the metadata from packet */
 static void
 nfp_net_parse_meta(struct nfp_net_rx_desc *rxds,
@@ -458,6 +475,7 @@ nfp_net_parse_meta(struct nfp_net_rx_desc *rxds,
 			nfp_net_parse_meta_vlan(meta, rxds, rxq, mb);
 			nfp_net_parse_meta_qinq(meta, rxq, mb);
 			nfp_net_parse_meta_ipsec(meta, rxq, mb);
+			nfp_net_parse_meta_mark(meta, mb);
 		} else {
 			PMD_RX_LOG(DEBUG, "RX chained metadata format is wrong!");
 		}
-- 
2.39.1


  parent reply	other threads:[~2023-12-05  2:56 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-03  6:25 [PATCH 00/11] Add basic flow support for corenic firmware Chaoyong He
2023-11-03  6:25 ` [PATCH 01/11] net/nfp: move some source files Chaoyong He
2023-11-03  6:25 ` [PATCH 02/11] drivers: add the structures and functions for flow offload Chaoyong He
2023-11-03  6:25 ` [PATCH 03/11] net/nfp: add the control message channel Chaoyong He
2023-11-03  6:25 ` [PATCH 04/11] net/nfp: support flow API for CoreNIC firmware Chaoyong He
2023-11-03  6:26 ` [PATCH 05/11] net/nfp: support Ethernet flow item Chaoyong He
2023-11-03  6:26 ` [PATCH 06/11] net/nfp: support drop flow action Chaoyong He
2023-11-03  6:26 ` [PATCH 07/11] net/nfp: support IPv4 flow item Chaoyong He
2023-11-03  6:26 ` [PATCH 08/11] net/nfp: support IPv6 " Chaoyong He
2023-11-03  6:26 ` [PATCH 09/11] net/nfp: support TCP/UDP/SCTP flow items Chaoyong He
2023-11-03  6:26 ` [PATCH 10/11] drivers: support MARK flow action Chaoyong He
2023-11-03  6:26 ` [PATCH 11/11] net/nfp: support QUEUE " Chaoyong He
2023-11-03 16:12 ` [PATCH 00/11] Add basic flow support for corenic firmware Ferruh Yigit
2023-11-07  1:42   ` Chaoyong He
2023-11-07  9:18     ` Ferruh Yigit
2023-11-07  9:23       ` Chaoyong He
2023-11-07 16:50         ` Patrick Robb
2023-11-07 17:04           ` Patrick Robb
2023-11-07 20:19             ` Ferruh Yigit
2023-11-07 21:59               ` Patrick Robb
2023-11-03 17:01 ` Ferruh Yigit
2023-12-05  2:54 ` [PATCH v2 " Chaoyong He
2023-12-05  2:54   ` [PATCH v2 01/11] net/nfp: move some source files Chaoyong He
2023-12-05  2:54   ` [PATCH v2 02/11] net/nfp: add the structures and functions for flow offload Chaoyong He
2023-12-05  2:54   ` [PATCH v2 03/11] net/nfp: add the control message channel Chaoyong He
2023-12-08 19:15     ` Ferruh Yigit
2023-12-05  2:54   ` [PATCH v2 04/11] net/nfp: support flow API for CoreNIC firmware Chaoyong He
2023-12-05  2:54   ` [PATCH v2 05/11] net/nfp: support Ethernet flow item Chaoyong He
2023-12-05  2:54   ` [PATCH v2 06/11] net/nfp: support drop flow action Chaoyong He
2023-12-05  2:54   ` [PATCH v2 07/11] net/nfp: support IPv4 flow item Chaoyong He
2023-12-05  2:54   ` [PATCH v2 08/11] net/nfp: support IPv6 " Chaoyong He
2023-12-05  2:54   ` [PATCH v2 09/11] net/nfp: support TCP/UDP/SCTP flow items Chaoyong He
2023-12-05  2:54   ` Chaoyong He [this message]
2023-12-05  2:54   ` [PATCH v2 11/11] net/nfp: support QUEUE flow action Chaoyong He
2023-12-08 16:39   ` [PATCH v2 00/11] Add basic flow support for corenic firmware Ferruh Yigit
2023-12-11  1:42     ` Chaoyong He
2023-12-11 14:06       ` 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=20231205025457.1067372-11-chaoyong.he@corigine.com \
    --to=chaoyong.he@corigine.com \
    --cc=dev@dpdk.org \
    --cc=long.wu@corigine.com \
    --cc=oss-drivers@corigine.com \
    --cc=peng.zhang@corigine.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).