Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 Forwarded: n/a (already upstream) Author: Christian Ehrhardt Last-Update: 2016-03-20 From 04f366906ab395c8047bebfc1ddea244dfcb40f5 Mon Sep 17 00:00:00 2001 From: Jasvinder Singh Date: Wed, 2 Mar 2016 21:19:29 +0000 Subject: [PATCH] port: fix crash for ethdev writer nodrop Error log: [APP] Initializing PIPELINE0 ... pipeline> [APP] Initializing PIPELINE1 ... [PIPELINE1] Pass-through Segmentation fault (core dumped) Fixes: 304c8091e90a ("port: add ethdev writer nodrop") Signed-off-by: Jasvinder Singh Acked-by: Cristian Dumitrescu --- lib/librte_port/rte_port_ethdev.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/librte_port/rte_port_ethdev.c b/lib/librte_port/rte_port_ethdev.c index 1f0c81c..1c34602 100644 --- a/lib/librte_port/rte_port_ethdev.c +++ b/lib/librte_port/rte_port_ethdev.c @@ -390,16 +390,20 @@ send_burst_nodrop(struct rte_port_ethdev_writer_nodrop *p) p->tx_buf_count); /* We sent all the packets in a first try */ - if (nb_tx >= p->tx_buf_count) + if (nb_tx >= p->tx_buf_count) { + p->tx_buf_count = 0; return; + } for (i = 0; i < p->n_retries; i++) { nb_tx += rte_eth_tx_burst(p->port_id, p->queue_id, p->tx_buf + nb_tx, p->tx_buf_count - nb_tx); /* We sent all the packets in more than one try */ - if (nb_tx >= p->tx_buf_count) + if (nb_tx >= p->tx_buf_count) { + p->tx_buf_count = 0; return; + } } /* We didn't send the packets in maximum allowed attempts */ -- 2.7.3