[dpdk-stable] patch 'net/pcap: fix Tx return count in error conditions' has been queued to LTS release 18.11.3

Kevin Traynor ktraynor at redhat.com
Thu Sep 5 12:17:13 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/12/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/c93d353429bfcdef049248ea02d31da26bd7bc7b

Thanks.

Kevin Traynor

---
>From c93d353429bfcdef049248ea02d31da26bd7bc7b Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Thu, 25 Jul 2019 21:24:18 +0200
Subject: [PATCH] net/pcap: fix Tx return count in error conditions

[ upstream commit 9be0b6bde39289cfe583a25070eba44383de7de7 ]

When a packet cannot be transmitted, the driver is supposed to free this
packet and report it as handled.
This is to prevent the application from retrying to send the same packet
and ending up in a liveloop since the driver will never manage to send
it.

Fixes: 49a0a2ffd5db ("net/pcap: fix possible mbuf double freeing")
Fixes: 6db141c91e1f ("pcap: support jumbo frames")

Signed-off-by: David Marchand <david.marchand at redhat.com>
Acked-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
 drivers/net/pcap/rte_eth_pcap.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 334075ca8..8feee999a 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -293,5 +293,6 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 					ETHER_MAX_JUMBO_FRAME_LEN);
 
-				break;
+				rte_pktmbuf_free(mbuf);
+				continue;
 			}
 		}
@@ -312,5 +313,5 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 	dumper_q->tx_stat.err_pkts += nb_pkts - num_tx;
 
-	return num_tx;
+	return nb_pkts;
 }
 
@@ -354,5 +355,6 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 					ETHER_MAX_JUMBO_FRAME_LEN);
 
-				break;
+				rte_pktmbuf_free(mbuf);
+				continue;
 			}
 		}
@@ -367,7 +369,7 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 	tx_queue->tx_stat.pkts += num_tx;
 	tx_queue->tx_stat.bytes += tx_bytes;
-	tx_queue->tx_stat.err_pkts += nb_pkts - num_tx;
+	tx_queue->tx_stat.err_pkts += i - num_tx;
 
-	return num_tx;
+	return i;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-09-05 10:36:48.306164151 +0100
+++ 0013-net-pcap-fix-Tx-return-count-in-error-conditions.patch	2019-09-05 10:36:47.481701216 +0100
@@ -1 +1 @@
-From 9be0b6bde39289cfe583a25070eba44383de7de7 Mon Sep 17 00:00:00 2001
+From c93d353429bfcdef049248ea02d31da26bd7bc7b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9be0b6bde39289cfe583a25070eba44383de7de7 ]
+
@@ -14 +15,0 @@
-Cc: stable at dpdk.org
@@ -23 +24 @@
-index 470867de6..bfc0756ef 100644
+index 334075ca8..8feee999a 100644
@@ -26,2 +27,2 @@
-@@ -355,5 +355,6 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- 					RTE_ETHER_MAX_JUMBO_FRAME_LEN);
+@@ -293,5 +293,6 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+ 					ETHER_MAX_JUMBO_FRAME_LEN);
@@ -34 +35 @@
-@@ -374,5 +375,5 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+@@ -312,5 +313,5 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
@@ -41,2 +42,2 @@
-@@ -440,5 +441,6 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- 					RTE_ETHER_MAX_JUMBO_FRAME_LEN);
+@@ -354,5 +355,6 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+ 					ETHER_MAX_JUMBO_FRAME_LEN);
@@ -49 +50 @@
-@@ -453,7 +455,7 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+@@ -367,7 +369,7 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)


More information about the stable mailing list