[dpdk-stable] patch 'examples/ip_frag: fix unknown ethernet type' has been queued to LTS release 18.11.3

Kevin Traynor ktraynor at redhat.com
Tue Aug 27 11:30:30 CEST 2019


Hi,

FYI, your patch has been queued to LTS release 18.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 09/03/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable-queue/commit/bf07a56016504c4117b3f7e4afb06a389a2e2ebd

Thanks.

Kevin Traynor

---
>From bf07a56016504c4117b3f7e4afb06a389a2e2ebd Mon Sep 17 00:00:00 2001
From: Konstantin Ananyev <konstantin.ananyev at intel.com>
Date: Thu, 18 Jul 2019 11:11:13 +0100
Subject: [PATCH] examples/ip_frag: fix unknown ethernet type

[ upstream commit 826038fcfc7b82866673f10e22cc89860ca4cba3 ]

Right now app blindly set IPv4 ether type for all non IPv6 packets.
Instead we can save and later restore original type value.

Fixes: 74de12b7b63a ("examples/ip_fragmentation: overhaul")

Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
---
 examples/ip_fragmentation/main.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c
index 8ffcfef80..1bcda4e52 100644
--- a/examples/ip_fragmentation/main.c
+++ b/examples/ip_fragmentation/main.c
@@ -234,9 +234,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
 	struct rx_queue *rxq;
 	uint32_t i, len, next_hop;
-	uint8_t ipv6;
-	uint16_t port_out;
+	uint16_t port_out, ether_type;
 	int32_t len2;
+	const struct ether_hdr *eth;
 
-	ipv6 = 0;
 	rxq = &qconf->rx_queue_list[queueid];
 
@@ -244,4 +243,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
 	port_out = port_in;
 
+	/* save ether type of the incoming packet */
+	eth = rte_pktmbuf_mtod(m, const struct ether_hdr *);
+	ether_type = eth->ether_type;
+
 	/* Remove the Ethernet header and trailer from the input packet */
 	rte_pktmbuf_adj(m, (uint16_t)sizeof(struct ether_hdr));
@@ -289,6 +292,4 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
 		struct ipv6_hdr *ip_hdr;
 
-		ipv6 = 1;
-
 		/* Read the lookup key (i.e. ip_dst) from the input packet */
 		ip_hdr = rte_pktmbuf_mtod(m, struct ipv6_hdr *);
@@ -347,8 +348,5 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
 		/* src addr */
 		ether_addr_copy(&ports_eth_addr[port_out], &eth_hdr->s_addr);
-		if (ipv6)
-			eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv6);
-		else
-			eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv4);
+		eth_hdr->ether_type = ether_type;
 	}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-08-27 09:40:13.804656569 +0100
+++ 0053-examples-ip_frag-fix-unknown-ethernet-type.patch	2019-08-27 09:40:10.963143344 +0100
@@ -1 +1 @@
-From 826038fcfc7b82866673f10e22cc89860ca4cba3 Mon Sep 17 00:00:00 2001
+From bf07a56016504c4117b3f7e4afb06a389a2e2ebd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 826038fcfc7b82866673f10e22cc89860ca4cba3 ]
+
@@ -10 +11,0 @@
-Cc: stable at dpdk.org
@@ -14,2 +15,2 @@
- examples/ip_fragmentation/main.c | 19 +++++++------------
- 1 file changed, 7 insertions(+), 12 deletions(-)
+ examples/ip_fragmentation/main.c | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
@@ -18 +19 @@
-index d03e93c90..edf87a1a1 100644
+index 8ffcfef80..1bcda4e52 100644
@@ -21 +22 @@
-@@ -243,10 +243,9 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
+@@ -234,9 +234,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
@@ -28,2 +29 @@
- 	uint64_t ol_flags;
-+	const struct rte_ether_hdr *eth;
++	const struct ether_hdr *eth;
@@ -32 +31,0 @@
- 	ol_flags = 0;
@@ -34 +33,2 @@
-@@ -255,4 +254,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
+ 
+@@ -244,4 +243,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
@@ -38 +38 @@
-+	eth = rte_pktmbuf_mtod(m, const struct rte_ether_hdr *);
++	eth = rte_pktmbuf_mtod(m, const struct ether_hdr *);
@@ -42,3 +42,3 @@
- 	rte_pktmbuf_adj(m, (uint16_t)sizeof(struct rte_ether_hdr));
-@@ -303,6 +306,4 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
- 		struct rte_ipv6_hdr *ip_hdr;
+ 	rte_pktmbuf_adj(m, (uint16_t)sizeof(struct ether_hdr));
+@@ -289,6 +292,4 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
+ 		struct ipv6_hdr *ip_hdr;
@@ -49,11 +49,8 @@
- 		ip_hdr = rte_pktmbuf_mtod(m, struct rte_ipv6_hdr *);
-@@ -365,11 +366,5 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
- 		rte_ether_addr_copy(&ports_eth_addr[port_out],
- 				&eth_hdr->s_addr);
--		if (ipv6) {
--			eth_hdr->ether_type =
--				rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV6);
--		} else {
--			eth_hdr->ether_type =
--				rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV4);
--		}
+ 		ip_hdr = rte_pktmbuf_mtod(m, struct ipv6_hdr *);
+@@ -347,8 +348,5 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
+ 		/* src addr */
+ 		ether_addr_copy(&ports_eth_addr[port_out], &eth_hdr->s_addr);
+-		if (ipv6)
+-			eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv6);
+-		else
+-			eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv4);


More information about the stable mailing list