DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] app/testpmd: set raw cmd use rte hdr struct
@ 2020-11-03 13:20 Xiaoyu Min
  2020-11-03 14:27 ` Ferruh Yigit
  2020-11-03 17:40 ` Ferruh Yigit
  0 siblings, 2 replies; 6+ messages in thread
From: Xiaoyu Min @ 2020-11-03 13:20 UTC (permalink / raw)
  To: dekelp, Ori Kam, Wenzhuo Lu, Beilei Xing, Bernard Iremonger
  Cc: dev, Xiaoyu Min

From: Xiaoyu Min <jackmin@nvidia.com>

The rte_flow_item_eth and rte_flow_item_vlan items are refined [1].
The structs do not exactly represent the packet bits captured on the wire
anymore so set raw_encap/decap commands should only copy real header
instead of the whole struct.

Replace the rte_flow_item_* with the existing corresponding rte_*_hdr.

[1]:
commit 09315fc83861 ("ethdev: add VLAN attributes to ethernet and VLAN
items")

Signed-off-by: Xiaoyu Min <jackmin@nvidia.com>
---
 app/test-pmd/cmdline_flow.c | 72 +++++++++++++++++++------------------
 1 file changed, 38 insertions(+), 34 deletions(-)

diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index c68d22fdaa..ff6ad8bbf3 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -24,6 +24,10 @@
 #include <rte_flow.h>
 #include <rte_hexdump.h>
 #include <rte_vxlan.h>
+#include <rte_gre.h>
+#include <rte_mpls.h>
+#include <rte_gtp.h>
+#include <rte_geneve.h>
 
 #include "testpmd.h"
 
@@ -7361,42 +7365,42 @@ cmdline_parse_inst_t cmd_flow = {
 static void
 update_fields(uint8_t *buf, struct rte_flow_item *item, uint16_t next_proto)
 {
-	struct rte_flow_item_ipv4 *ipv4;
-	struct rte_flow_item_eth *eth;
-	struct rte_flow_item_ipv6 *ipv6;
-	struct rte_flow_item_vxlan *vxlan;
-	struct rte_flow_item_vxlan_gpe *gpe;
+	struct rte_ipv4_hdr *ipv4;
+	struct rte_ether_hdr *eth;
+	struct rte_ipv6_hdr *ipv6;
+	struct rte_vxlan_hdr *vxlan;
+	struct rte_vxlan_gpe_hdr *gpe;
 	struct rte_flow_item_nvgre *nvgre;
 	uint32_t ipv6_vtc_flow;
 
 	switch (item->type) {
 	case RTE_FLOW_ITEM_TYPE_ETH:
-		eth = (struct rte_flow_item_eth *)buf;
+		eth = (struct rte_ether_hdr *)buf;
 		if (next_proto)
-			eth->type = rte_cpu_to_be_16(next_proto);
+			eth->ether_type = rte_cpu_to_be_16(next_proto);
 		break;
 	case RTE_FLOW_ITEM_TYPE_IPV4:
-		ipv4 = (struct rte_flow_item_ipv4 *)buf;
-		ipv4->hdr.version_ihl = 0x45;
-		if (next_proto && ipv4->hdr.next_proto_id == 0)
-			ipv4->hdr.next_proto_id = (uint8_t)next_proto;
+		ipv4 = (struct rte_ipv4_hdr *)buf;
+		ipv4->version_ihl = 0x45;
+		if (next_proto && ipv4->next_proto_id == 0)
+			ipv4->next_proto_id = (uint8_t)next_proto;
 		break;
 	case RTE_FLOW_ITEM_TYPE_IPV6:
-		ipv6 = (struct rte_flow_item_ipv6 *)buf;
-		if (next_proto && ipv6->hdr.proto == 0)
-			ipv6->hdr.proto = (uint8_t)next_proto;
-		ipv6_vtc_flow = rte_be_to_cpu_32(ipv6->hdr.vtc_flow);
+		ipv6 = (struct rte_ipv6_hdr *)buf;
+		if (next_proto && ipv6->proto == 0)
+			ipv6->proto = (uint8_t)next_proto;
+		ipv6_vtc_flow = rte_be_to_cpu_32(ipv6->vtc_flow);
 		ipv6_vtc_flow &= 0x0FFFFFFF; /*< reset version bits. */
 		ipv6_vtc_flow |= 0x60000000; /*< set ipv6 version. */
-		ipv6->hdr.vtc_flow = rte_cpu_to_be_32(ipv6_vtc_flow);
+		ipv6->vtc_flow = rte_cpu_to_be_32(ipv6_vtc_flow);
 		break;
 	case RTE_FLOW_ITEM_TYPE_VXLAN:
-		vxlan = (struct rte_flow_item_vxlan *)buf;
-		vxlan->flags = 0x08;
+		vxlan = (struct rte_vxlan_hdr *)buf;
+		vxlan->vx_flags = 0x08;
 		break;
 	case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
-		gpe = (struct rte_flow_item_vxlan_gpe *)buf;
-		gpe->flags = 0x0C;
+		gpe = (struct rte_vxlan_gpe_hdr *)buf;
+		gpe->vx_flags = 0x0C;
 		break;
 	case RTE_FLOW_ITEM_TYPE_NVGRE:
 		nvgre = (struct rte_flow_item_nvgre *)buf;
@@ -7605,36 +7609,36 @@ cmd_set_raw_parsed(const struct buffer *in)
 			item->spec = flow_item_default_mask(item);
 		switch (item->type) {
 		case RTE_FLOW_ITEM_TYPE_ETH:
-			size = sizeof(struct rte_flow_item_eth);
+			size = sizeof(struct rte_ether_hdr);
 			break;
 		case RTE_FLOW_ITEM_TYPE_VLAN:
-			size = sizeof(struct rte_flow_item_vlan);
+			size = sizeof(struct rte_vlan_hdr);
 			proto = RTE_ETHER_TYPE_VLAN;
 			break;
 		case RTE_FLOW_ITEM_TYPE_IPV4:
-			size = sizeof(struct rte_flow_item_ipv4);
+			size = sizeof(struct rte_ipv4_hdr);
 			proto = RTE_ETHER_TYPE_IPV4;
 			break;
 		case RTE_FLOW_ITEM_TYPE_IPV6:
-			size = sizeof(struct rte_flow_item_ipv6);
+			size = sizeof(struct rte_ipv6_hdr);
 			proto = RTE_ETHER_TYPE_IPV6;
 			break;
 		case RTE_FLOW_ITEM_TYPE_UDP:
-			size = sizeof(struct rte_flow_item_udp);
+			size = sizeof(struct rte_udp_hdr);
 			proto = 0x11;
 			break;
 		case RTE_FLOW_ITEM_TYPE_TCP:
-			size = sizeof(struct rte_flow_item_tcp);
+			size = sizeof(struct rte_tcp_hdr);
 			proto = 0x06;
 			break;
 		case RTE_FLOW_ITEM_TYPE_VXLAN:
-			size = sizeof(struct rte_flow_item_vxlan);
+			size = sizeof(struct rte_vxlan_hdr);
 			break;
 		case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
-			size = sizeof(struct rte_flow_item_vxlan_gpe);
+			size = sizeof(struct rte_vxlan_gpe_hdr);
 			break;
 		case RTE_FLOW_ITEM_TYPE_GRE:
-			size = sizeof(struct rte_flow_item_gre);
+			size = sizeof(struct rte_gre_hdr);
 			proto = 0x2F;
 			break;
 		case RTE_FLOW_ITEM_TYPE_GRE_KEY:
@@ -7642,7 +7646,7 @@ cmd_set_raw_parsed(const struct buffer *in)
 			proto = 0x0;
 			break;
 		case RTE_FLOW_ITEM_TYPE_MPLS:
-			size = sizeof(struct rte_flow_item_mpls);
+			size = sizeof(struct rte_mpls_hdr);
 			proto = 0x0;
 			break;
 		case RTE_FLOW_ITEM_TYPE_NVGRE:
@@ -7650,14 +7654,14 @@ cmd_set_raw_parsed(const struct buffer *in)
 			proto = 0x2F;
 			break;
 		case RTE_FLOW_ITEM_TYPE_GENEVE:
-			size = sizeof(struct rte_flow_item_geneve);
+			size = sizeof(struct rte_geneve_hdr);
 			break;
 		case RTE_FLOW_ITEM_TYPE_L2TPV3OIP:
-			size = sizeof(struct rte_flow_item_l2tpv3oip);
+			size = sizeof(rte_be32_t);
 			proto = 0x73;
 			break;
 		case RTE_FLOW_ITEM_TYPE_ESP:
-			size = sizeof(struct rte_flow_item_esp);
+			size = sizeof(struct rte_esp_hdr);
 			proto = 0x32;
 			break;
 		case RTE_FLOW_ITEM_TYPE_AH:
@@ -7665,7 +7669,7 @@ cmd_set_raw_parsed(const struct buffer *in)
 			proto = 0x33;
 			break;
 		case RTE_FLOW_ITEM_TYPE_GTP:
-			size = sizeof(struct rte_flow_item_gtp);
+			size = sizeof(struct rte_gtp_hdr);
 			break;
 		case RTE_FLOW_ITEM_TYPE_PFCP:
 			size = sizeof(struct rte_flow_item_pfcp);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-11-09 11:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 13:20 [dpdk-dev] [PATCH] app/testpmd: set raw cmd use rte hdr struct Xiaoyu Min
2020-11-03 14:27 ` Ferruh Yigit
2020-11-09 10:05   ` Ferruh Yigit
2020-11-09 11:14     ` Dekel Peled
2020-11-09 11:16       ` Ferruh Yigit
2020-11-03 17:40 ` Ferruh Yigit

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).