From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 55EA7A0521; Tue, 3 Nov 2020 14:21:29 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 094DCCA9B; Tue, 3 Nov 2020 14:20:33 +0100 (CET) Received: from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130]) by dpdk.org (Postfix) with ESMTP id 106B1CA74 for ; Tue, 3 Nov 2020 14:20:30 +0100 (CET) From: Xiaoyu Min To: dekelp@nvidia.com, Ori Kam , Wenzhuo Lu , Beilei Xing , Bernard Iremonger Cc: dev@dpdk.org, Xiaoyu Min Date: Tue, 3 Nov 2020 21:20:22 +0800 Message-Id: <20201103132022.14132-1-jackmin@mellanox.com> X-Mailer: git-send-email 2.24.0.rc0.3.g12a4aeaad8 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH] app/testpmd: set raw cmd use rte hdr struct X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Xiaoyu Min 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 --- 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 #include #include +#include +#include +#include +#include #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