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, niklas.soderlund@corigine.com,
	Chaoyong He <chaoyong.he@corigine.com>
Subject: [PATCH v2 25/25] net/nfp: support new tunnel solution
Date: Sat, 22 Oct 2022 16:24:29 +0800	[thread overview]
Message-ID: <1666427069-10553-26-git-send-email-chaoyong.he@corigine.com> (raw)
In-Reply-To: <1666427069-10553-1-git-send-email-chaoyong.he@corigine.com>

The new version of flower firmware application add the support of
a new tunnel solution.

It changes the structure of tunnel neighbor, and use a feature flag
to indicate which tunnel solution is used.

Add the logic of read extra features from firmware, and store it in
the app private structure.

Adjust the data structure and related logic to make the PMD support
both version of tunnel solutions.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c      |  14 ++++
 drivers/net/nfp/flower/nfp_flower.h      |  24 +++++++
 drivers/net/nfp/flower/nfp_flower_cmsg.c |   4 ++
 drivers/net/nfp/flower/nfp_flower_cmsg.h |  17 +++++
 drivers/net/nfp/nfp_flow.c               | 118 +++++++++++++++++++++++++------
 5 files changed, 157 insertions(+), 20 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index 41b0fe2..aa8199d 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -1074,6 +1074,8 @@
 nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev)
 {
 	int ret;
+	int err;
+	uint64_t ext_features;
 	unsigned int numa_node;
 	struct nfp_net_hw *pf_hw;
 	struct nfp_net_hw *ctrl_hw;
@@ -1115,6 +1117,18 @@
 		goto vnic_cleanup;
 	}
 
+	/* Read the extra features */
+	ext_features = nfp_rtsym_read_le(pf_dev->sym_tbl, "_abi_flower_extra_features",
+			&err);
+	if (err != 0) {
+		PMD_INIT_LOG(ERR, "Couldn't read extra features from fw");
+		ret = -EIO;
+		goto pf_cpp_area_cleanup;
+	}
+
+	/* Store the extra features */
+	app_fw_flower->ext_features = ext_features;
+
 	/* Fill in the PF vNIC and populate app struct */
 	app_fw_flower->pf_hw = pf_hw;
 	pf_hw->ctrl_bar = pf_dev->ctrl_bar;
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index 12a0fb5..ab8876d 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -6,6 +6,21 @@
 #ifndef _NFP_FLOWER_H_
 #define _NFP_FLOWER_H_
 
+/* Extra features bitmap. */
+#define NFP_FL_FEATS_GENEVE             RTE_BIT64(0)
+#define NFP_FL_NBI_MTU_SETTING          RTE_BIT64(1)
+#define NFP_FL_FEATS_GENEVE_OPT         RTE_BIT64(2)
+#define NFP_FL_FEATS_VLAN_PCP           RTE_BIT64(3)
+#define NFP_FL_FEATS_VF_RLIM            RTE_BIT64(4)
+#define NFP_FL_FEATS_FLOW_MOD           RTE_BIT64(5)
+#define NFP_FL_FEATS_PRE_TUN_RULES      RTE_BIT64(6)
+#define NFP_FL_FEATS_IPV6_TUN           RTE_BIT64(7)
+#define NFP_FL_FEATS_VLAN_QINQ          RTE_BIT64(8)
+#define NFP_FL_FEATS_QOS_PPS            RTE_BIT64(9)
+#define NFP_FL_FEATS_QOS_METER          RTE_BIT64(10)
+#define NFP_FL_FEATS_DECAP_V2           RTE_BIT64(11)
+#define NFP_FL_FEATS_HOST_ACK           RTE_BIT64(31)
+
 /*
  * Flower fallback and ctrl path always adds and removes
  * 8 bytes of prepended data. Tx descriptors must point
@@ -55,9 +70,18 @@ struct nfp_app_fw_flower {
 	/* service id of ctrl vnic service */
 	uint32_t ctrl_vnic_id;
 
+	/* Flower extra features */
+	uint64_t ext_features;
+
 	struct nfp_flow_priv *flow_priv;
 };
 
+static inline bool
+nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower)
+{
+	return app_fw_flower->ext_features & NFP_FL_FEATS_DECAP_V2;
+}
+
 int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev);
 int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp);
 uint16_t nfp_flower_pf_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 76815cf..babdd8e 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -263,6 +263,8 @@
 	}
 
 	msg_len = sizeof(struct nfp_flower_cmsg_tun_neigh_v4);
+	if (!nfp_flower_support_decap_v2(app_fw_flower))
+		msg_len -= sizeof(struct nfp_flower_tun_neigh_ext);
 	msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, msg_len);
 	memcpy(msg, payload, msg_len);
 
@@ -292,6 +294,8 @@
 	}
 
 	msg_len = sizeof(struct nfp_flower_cmsg_tun_neigh_v6);
+	if (!nfp_flower_support_decap_v2(app_fw_flower))
+		msg_len -= sizeof(struct nfp_flower_tun_neigh_ext);
 	msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, msg_len);
 	memcpy(msg, payload, msg_len);
 
diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h
index a48da67..04601cb 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.h
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h
@@ -136,6 +136,21 @@ struct nfp_flower_tun_neigh {
 };
 
 /*
+ *    Bit    3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
+ *    -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ *          +---------------------------------------------------------------+
+ *        0 |         VLAN_TPID             |            VLAN_ID            |
+ *          +---------------------------------------------------------------+
+ *        1 |                           HOST_CTX                            |
+ *          +---------------------------------------------------------------+
+ */
+struct nfp_flower_tun_neigh_ext {
+	rte_be16_t vlan_tpid;
+	rte_be16_t vlan_tci;
+	rte_be32_t host_ctx;
+};
+
+/*
  * NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V4
  *    Bit    3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
  *    -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
@@ -157,6 +172,7 @@ struct nfp_flower_cmsg_tun_neigh_v4 {
 	rte_be32_t dst_ipv4;
 	rte_be32_t src_ipv4;
 	struct nfp_flower_tun_neigh common;
+	struct nfp_flower_tun_neigh_ext ext;
 };
 
 /*
@@ -193,6 +209,7 @@ struct nfp_flower_cmsg_tun_neigh_v6 {
 	uint8_t dst_ipv6[16];
 	uint8_t src_ipv6[16];
 	struct nfp_flower_tun_neigh common;
+	struct nfp_flower_tun_neigh_ext ext;
 };
 
 #define NFP_TUN_PRE_TUN_RULE_DEL    (1 << 0)
diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c
index 4c6cfe4..01494e7 100644
--- a/drivers/net/nfp/nfp_flow.c
+++ b/drivers/net/nfp/nfp_flow.c
@@ -2384,8 +2384,10 @@ struct nfp_pre_tun_entry {
 
 static int
 nfp_flower_add_tun_neigh_v4_decap(struct nfp_app_fw_flower *app_fw_flower,
+		struct nfp_fl_rule_metadata *nfp_flow_meta,
 		struct rte_flow *nfp_flow)
 {
+	bool exists = false;
 	struct nfp_fl_tun *tmp;
 	struct nfp_fl_tun *tun;
 	struct nfp_flow_priv *priv;
@@ -2419,11 +2421,17 @@ struct nfp_pre_tun_entry {
 	LIST_FOREACH(tmp, &priv->nn_list, next) {
 		if (memcmp(&tmp->payload, &tun->payload, sizeof(struct nfp_fl_tun_entry)) == 0) {
 			tmp->ref_cnt++;
-			return 0;
+			exists = true;
+			break;
 		}
 	}
 
-	LIST_INSERT_HEAD(&priv->nn_list, tun, next);
+	if (exists) {
+		if (!nfp_flower_support_decap_v2(app_fw_flower))
+			return 0;
+	} else {
+		LIST_INSERT_HEAD(&priv->nn_list, tun, next);
+	}
 
 	memset(&payload, 0, sizeof(struct nfp_flower_cmsg_tun_neigh_v4));
 	payload.dst_ipv4 = ipv4->ipv4_src;
@@ -2432,6 +2440,17 @@ struct nfp_pre_tun_entry {
 	memcpy(payload.common.src_mac, eth->mac_dst, RTE_ETHER_ADDR_LEN);
 	payload.common.port_id = port->in_port;
 
+	if (nfp_flower_support_decap_v2(app_fw_flower)) {
+		if (meta_tci->tci != 0) {
+			payload.ext.vlan_tci = meta_tci->tci;
+			payload.ext.vlan_tpid = 0x88a8;
+		} else {
+			payload.ext.vlan_tci = 0xffff;
+			payload.ext.vlan_tpid = 0xffff;
+		}
+		payload.ext.host_ctx = nfp_flow_meta->host_ctx_id;
+	}
+
 	return nfp_flower_cmsg_tun_neigh_v4_rule(app_fw_flower, &payload);
 }
 
@@ -2492,8 +2511,10 @@ struct nfp_pre_tun_entry {
 
 static int
 nfp_flower_add_tun_neigh_v6_decap(struct nfp_app_fw_flower *app_fw_flower,
+		struct nfp_fl_rule_metadata *nfp_flow_meta,
 		struct rte_flow *nfp_flow)
 {
+	bool exists = false;
 	struct nfp_fl_tun *tmp;
 	struct nfp_fl_tun *tun;
 	struct nfp_flow_priv *priv;
@@ -2527,11 +2548,17 @@ struct nfp_pre_tun_entry {
 	LIST_FOREACH(tmp, &priv->nn_list, next) {
 		if (memcmp(&tmp->payload, &tun->payload, sizeof(struct nfp_fl_tun_entry)) == 0) {
 			tmp->ref_cnt++;
-			return 0;
+			exists = true;
+			break;
 		}
 	}
 
-	LIST_INSERT_HEAD(&priv->nn_list, tun, next);
+	if (exists) {
+		if (!nfp_flower_support_decap_v2(app_fw_flower))
+			return 0;
+	} else {
+		LIST_INSERT_HEAD(&priv->nn_list, tun, next);
+	}
 
 	memset(&payload, 0, sizeof(struct nfp_flower_cmsg_tun_neigh_v6));
 	memcpy(payload.dst_ipv6, ipv6->ipv6_src, sizeof(payload.dst_ipv6));
@@ -2540,6 +2567,17 @@ struct nfp_pre_tun_entry {
 	memcpy(payload.common.src_mac, eth->mac_dst, RTE_ETHER_ADDR_LEN);
 	payload.common.port_id = port->in_port;
 
+	if (nfp_flower_support_decap_v2(app_fw_flower)) {
+		if (meta_tci->tci != 0) {
+			payload.ext.vlan_tci = meta_tci->tci;
+			payload.ext.vlan_tpid = 0x88a8;
+		} else {
+			payload.ext.vlan_tci = 0xffff;
+			payload.ext.vlan_tpid = 0xffff;
+		}
+		payload.ext.host_ctx = nfp_flow_meta->host_ctx_id;
+	}
+
 	return nfp_flower_cmsg_tun_neigh_v6_rule(app_fw_flower, &payload);
 }
 
@@ -2557,12 +2595,14 @@ struct nfp_pre_tun_entry {
 
 static int
 nfp_flower_del_tun_neigh(struct nfp_app_fw_flower *app_fw_flower,
-		struct rte_flow *nfp_flow)
+		struct rte_flow *nfp_flow,
+		bool decap_flag)
 {
 	int ret;
 	bool flag = false;
 	struct nfp_fl_tun *tmp;
 	struct nfp_fl_tun *tun;
+	struct nfp_flower_in_port *port;
 
 	tun = &nfp_flow->tun;
 	LIST_FOREACH(tmp, &app_fw_flower->flow_priv->nn_list, next) {
@@ -2590,6 +2630,40 @@ struct nfp_pre_tun_entry {
 		}
 	}
 
+	if (!decap_flag)
+		return 0;
+
+	port = (struct nfp_flower_in_port *)(nfp_flow->payload.unmasked_data +
+			sizeof(struct nfp_fl_rule_metadata) +
+			sizeof(struct nfp_flower_meta_tci));
+
+	if (tmp->payload.v6_flag != 0) {
+		struct nfp_flower_cmsg_tun_neigh_v6 nn_v6;
+		memset(&nn_v6, 0, sizeof(struct nfp_flower_cmsg_tun_neigh_v6));
+		memcpy(nn_v6.dst_ipv6, tmp->payload.dst.dst_ipv6, sizeof(nn_v6.dst_ipv6));
+		memcpy(nn_v6.src_ipv6, tmp->payload.src.src_ipv6, sizeof(nn_v6.src_ipv6));
+		memcpy(nn_v6.common.dst_mac, tmp->payload.dst_addr, RTE_ETHER_ADDR_LEN);
+		memcpy(nn_v6.common.src_mac, tmp->payload.src_addr, RTE_ETHER_ADDR_LEN);
+		nn_v6.common.port_id = port->in_port;
+
+		ret = nfp_flower_cmsg_tun_neigh_v6_rule(app_fw_flower, &nn_v6);
+	} else {
+		struct nfp_flower_cmsg_tun_neigh_v4 nn_v4;
+		memset(&nn_v4, 0, sizeof(struct nfp_flower_cmsg_tun_neigh_v4));
+		nn_v4.dst_ipv4 = tmp->payload.dst.dst_ipv4;
+		nn_v4.src_ipv4 = tmp->payload.src.src_ipv4;
+		memcpy(nn_v4.common.dst_mac, tmp->payload.dst_addr, RTE_ETHER_ADDR_LEN);
+		memcpy(nn_v4.common.src_mac, tmp->payload.src_addr, RTE_ETHER_ADDR_LEN);
+		nn_v4.common.port_id = port->in_port;
+
+		ret = nfp_flower_cmsg_tun_neigh_v4_rule(app_fw_flower, &nn_v4);
+	}
+
+	if (ret != 0) {
+		PMD_DRV_LOG(DEBUG, "Failed to send the nn entry");
+		return -EINVAL;
+	}
+
 	return 0;
 }
 
@@ -2877,12 +2951,14 @@ struct nfp_pre_tun_entry {
 		goto free_entry;
 	}
 
-	ret = nfp_flower_cmsg_pre_tunnel_rule(repr->app_fw_flower, nfp_flow_meta,
-			nfp_mac_idx, true);
-	if (ret != 0) {
-		PMD_DRV_LOG(ERR, "Send pre tunnel rule failed");
-		ret = -EINVAL;
-		goto free_entry;
+	if (!nfp_flower_support_decap_v2(repr->app_fw_flower)) {
+		ret = nfp_flower_cmsg_pre_tunnel_rule(repr->app_fw_flower, nfp_flow_meta,
+				nfp_mac_idx, true);
+		if (ret != 0) {
+			PMD_DRV_LOG(ERR, "Send pre tunnel rule failed");
+			ret = -EINVAL;
+			goto free_entry;
+		}
 	}
 
 	find_entry->ref_cnt = 1U;
@@ -2933,18 +3009,20 @@ struct nfp_pre_tun_entry {
 		return -EINVAL;
 	}
 
-	ret = nfp_flower_cmsg_pre_tunnel_rule(app_fw_flower, nfp_flow_meta,
-			nfp_mac_idx, false);
-	if (ret != 0) {
-		PMD_DRV_LOG(ERR, "Send pre tunnel rule failed");
-		return -EINVAL;
+	if (!nfp_flower_support_decap_v2(app_fw_flower)) {
+		ret = nfp_flower_cmsg_pre_tunnel_rule(app_fw_flower, nfp_flow_meta,
+				nfp_mac_idx, false);
+		if (ret != 0) {
+			PMD_DRV_LOG(ERR, "Send pre tunnel rule failed");
+			return -EINVAL;
+		}
 	}
 
 	meta_tci = (struct nfp_flower_meta_tci *)nfp_flow->payload.unmasked_data;
 	if (meta_tci->nfp_flow_key_layer & NFP_FLOWER_LAYER_IPV4)
-		return nfp_flower_add_tun_neigh_v4_decap(app_fw_flower, nfp_flow);
+		return nfp_flower_add_tun_neigh_v4_decap(app_fw_flower, nfp_flow_meta, nfp_flow);
 	else
-		return nfp_flower_add_tun_neigh_v6_decap(app_fw_flower, nfp_flow);
+		return nfp_flower_add_tun_neigh_v6_decap(app_fw_flower, nfp_flow_meta, nfp_flow);
 }
 
 static int
@@ -3654,11 +3732,11 @@ struct nfp_pre_tun_entry {
 		break;
 	case NFP_FLOW_ENCAP:
 		/* Delete the entry from nn table */
-		ret = nfp_flower_del_tun_neigh(app_fw_flower, nfp_flow);
+		ret = nfp_flower_del_tun_neigh(app_fw_flower, nfp_flow, false);
 		break;
 	case NFP_FLOW_DECAP:
 		/* Delete the entry from nn table */
-		ret = nfp_flower_del_tun_neigh(app_fw_flower, nfp_flow);
+		ret = nfp_flower_del_tun_neigh(app_fw_flower, nfp_flow, true);
 		if (ret != 0)
 			goto exit;
 
-- 
1.8.3.1


  parent reply	other threads:[~2022-10-22  8:27 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18  3:22 [PATCH 00/25] add the extend rte_flow offload support of nfp PMD Chaoyong He
2022-10-18  3:22 ` [PATCH 01/25] net/nfp: add the offload support of IPv4 VXLAN item Chaoyong He
2022-10-18  3:22 ` [PATCH 02/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 03/25] net/nfp: prepare for the encap action of IPv4 tunnel Chaoyong He
2022-10-18  3:22 ` [PATCH 04/25] net/nfp: prepare for the encap action of IPv6 tunnel Chaoyong He
2022-10-18  3:22 ` [PATCH 05/25] net/nfp: add the offload support of IPv4 VXLAN encap action Chaoyong He
2022-10-18  3:22 ` [PATCH 06/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 07/25] net/nfp: prepare for the decap action of IPv4 UDP tunnel Chaoyong He
2022-10-18  3:22 ` [PATCH 08/25] net/nfp: prepare for the decap action of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 09/25] net/nfp: add the offload support of IPv4 VXLAN decap action Chaoyong He
2022-10-18  3:22 ` [PATCH 10/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 11/25] net/nfp: add the offload support of IPv4 GENEVE encap action Chaoyong He
2022-10-18  3:22 ` [PATCH 12/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 13/25] net/nfp: add the offload support of IPv4 GENEVE item Chaoyong He
2022-10-18  3:22 ` [PATCH 14/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 15/25] net/nfp: add the offload support of IPv4 GENEVE decap action Chaoyong He
2022-10-18  3:22 ` [PATCH 16/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 17/25] net/nfp: add the offload support of IPv4 NVGRE encap action Chaoyong He
2022-10-18  3:22 ` [PATCH 18/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 19/25] net/nfp: prepare for the decap action of IPv4 GRE tunnel Chaoyong He
2022-10-18  3:22 ` [PATCH 20/25] net/nfp: prepare for the decap action of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 21/25] net/nfp: add the offload support of IPv4 NVGRE item Chaoyong He
2022-10-18  3:22 ` [PATCH 22/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 23/25] net/nfp: add the offload support of IPv4 NVGRE decap action Chaoyong He
2022-10-18  3:22 ` [PATCH 24/25] net/nfp: add the offload support of IPv6 " Chaoyong He
2022-10-18  3:22 ` [PATCH 25/25] net/nfp: add the support of new tunnel solution Chaoyong He
2022-10-21 13:37 ` [PATCH 00/25] add the extend rte_flow offload support of nfp PMD Ferruh Yigit
2022-10-21 13:39   ` Ferruh Yigit
2022-10-22  8:24 ` [PATCH v2 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 01/25] net/nfp: support IPv4 VXLAN flow item Chaoyong He
2022-10-22  8:24   ` [PATCH v2 02/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 03/25] net/nfp: prepare for IPv4 tunnel encap flow action Chaoyong He
2022-10-22  8:24   ` [PATCH v2 04/25] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 05/25] net/nfp: support IPv4 VXLAN " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 06/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 07/25] net/nfp: prepare for IPv4 UDP tunnel decap " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 08/25] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 09/25] net/nfp: support IPv4 VXLAN " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 10/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 11/25] net/nfp: support IPv4 GENEVE encap " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 12/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 13/25] net/nfp: support IPv4 GENEVE flow item Chaoyong He
2022-10-22  8:24   ` [PATCH v2 14/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 15/25] net/nfp: support IPv4 GENEVE decap flow action Chaoyong He
2022-10-22  8:24   ` [PATCH v2 16/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 17/25] net/nfp: support IPv4 NVGRE encap " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 18/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 19/25] net/nfp: prepare for IPv4 GRE tunnel decap " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 20/25] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 21/25] net/nfp: support IPv4 NVGRE flow item Chaoyong He
2022-10-22  8:24   ` [PATCH v2 22/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` [PATCH v2 23/25] net/nfp: support IPv4 NVGRE decap flow action Chaoyong He
2022-10-22  8:24   ` [PATCH v2 24/25] net/nfp: support IPv6 " Chaoyong He
2022-10-22  8:24   ` Chaoyong He [this message]
2022-10-24 15:09     ` [PATCH v2 25/25] net/nfp: support new tunnel solution Ferruh Yigit
2022-10-25  1:44       ` Chaoyong He
2022-10-25  8:18         ` Ferruh Yigit
2022-10-24 15:07   ` [PATCH v2 00/25] add the extend rte_flow offload support of nfp PMD Ferruh Yigit
2022-10-25  3:17     ` Chaoyong He
2022-10-25  3:29       ` Chaoyong He
2022-10-25  7:58   ` [PATCH v3 00/26] " Chaoyong He
2022-10-25  7:58     ` [PATCH v3 01/26] net/nfp: fix the app stuck by CPP bridge service Chaoyong He
2022-10-25  7:58     ` [PATCH v3 02/26] net/nfp: support IPv4 VXLAN flow item Chaoyong He
2022-10-25  7:58     ` [PATCH v3 03/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:58     ` [PATCH v3 04/26] net/nfp: prepare for IPv4 tunnel encap flow action Chaoyong He
2022-10-25  7:58     ` [PATCH v3 05/26] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-25  7:58     ` [PATCH v3 06/26] net/nfp: support IPv4 VXLAN " Chaoyong He
2022-10-25  7:58     ` [PATCH v3 07/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 08/26] net/nfp: prepare for IPv4 UDP tunnel decap " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 09/26] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 10/26] net/nfp: support IPv4 VXLAN " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 11/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 12/26] net/nfp: support IPv4 GENEVE encap " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 13/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 14/26] net/nfp: support IPv4 GENEVE flow item Chaoyong He
2022-10-25  7:59     ` [PATCH v3 15/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 16/26] net/nfp: support IPv4 GENEVE decap flow action Chaoyong He
2022-10-25  7:59     ` [PATCH v3 17/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 18/26] net/nfp: support IPv4 NVGRE encap " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 19/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 20/26] net/nfp: prepare for IPv4 GRE tunnel decap " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 21/26] net/nfp: prepare for IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 22/26] net/nfp: support IPv4 NVGRE flow item Chaoyong He
2022-10-25  7:59     ` [PATCH v3 23/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 24/26] net/nfp: support IPv4 NVGRE decap flow action Chaoyong He
2022-10-25  7:59     ` [PATCH v3 25/26] net/nfp: support IPv6 " Chaoyong He
2022-10-25  7:59     ` [PATCH v3 26/26] net/nfp: support new solution for tunnel decap action Chaoyong He
2022-10-25 11:42     ` [PATCH v3 00/26] add the extend rte_flow offload support of nfp PMD 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=1666427069-10553-26-git-send-email-chaoyong.he@corigine.com \
    --to=chaoyong.he@corigine.com \
    --cc=dev@dpdk.org \
    --cc=niklas.soderlund@corigine.com \
    --cc=oss-drivers@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).