patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Rafal Kozik <rk@semihalf.com>
Cc: Michal Krawczyk <mk@semihalf.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/ena: fix out of order completion' has been queued to stable release 18.08.1
Date: Thu, 29 Nov 2018 13:21:16 +0000	[thread overview]
Message-ID: <20181129132128.7609-76-ktraynor@redhat.com> (raw)
In-Reply-To: <20181129132128.7609-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/08/18. 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. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 68433fad2007db5d17b15a254bb7a34fa8b66951 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Wed, 21 Nov 2018 09:21:14 +0100
Subject: [PATCH] net/ena: fix out of order completion

[ upstream commit 79405ee175857cfdbb508f9d55e2a51d95483be6 ]

rx_buffer_info should be refill not linearly, but out of order.
IDs should be taken from empty_rx_reqs array.

rx_refill_buffer is introduced to temporary storage
bulk of mbufs taken from pool.

In case of error unused mbufs are put back to pool.

Fixes: c2034976673d ("net/ena: add Rx out of order completion")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 40 +++++++++++++++++++++++++-----------
 drivers/net/ena/ena_ethdev.h |  1 +
 2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 9e462099f..87c95b2e7 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -761,4 +761,8 @@ static void ena_rx_queue_release(void *queue)
 	ring->rx_buffer_info = NULL;
 
+	if (ring->rx_refill_buffer)
+		rte_free(ring->rx_refill_buffer);
+	ring->rx_refill_buffer = NULL;
+
 	if (ring->empty_rx_reqs)
 		rte_free(ring->empty_rx_reqs);
@@ -1303,4 +1307,15 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
 	}
 
+	rxq->rx_refill_buffer = rte_zmalloc("rxq->rx_refill_buffer",
+					    sizeof(struct rte_mbuf *) * nb_desc,
+					    RTE_CACHE_LINE_SIZE);
+
+	if (!rxq->rx_refill_buffer) {
+		RTE_LOG(ERR, PMD, "failed to alloc mem for rx refill buffer\n");
+		rte_free(rxq->rx_buffer_info);
+		rxq->rx_buffer_info = NULL;
+		return -ENOMEM;
+	}
+
 	rxq->empty_rx_reqs = rte_zmalloc("rxq->empty_rx_reqs",
 					 sizeof(uint16_t) * nb_desc,
@@ -1310,4 +1325,6 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
 		rte_free(rxq->rx_buffer_info);
 		rxq->rx_buffer_info = NULL;
+		rte_free(rxq->rx_refill_buffer);
+		rxq->rx_refill_buffer = NULL;
 		return -ENOMEM;
 	}
@@ -1331,5 +1348,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 	uint16_t next_to_use = rxq->next_to_use;
 	uint16_t in_use, req_id;
-	struct rte_mbuf **mbufs = &rxq->rx_buffer_info[0];
+	struct rte_mbuf **mbufs = rxq->rx_refill_buffer;
 
 	if (unlikely(!count))
@@ -1339,11 +1356,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 	ena_assert_msg(((in_use + count) < ring_size), "bad ring state");
 
-	count = RTE_MIN(count,
-			(uint16_t)(ring_size - (next_to_use & ring_mask)));
-
 	/* get resources for incoming packets */
-	rc = rte_mempool_get_bulk(rxq->mb_pool,
-				  (void **)(&mbufs[next_to_use & ring_mask]),
-				  count);
+	rc = rte_mempool_get_bulk(rxq->mb_pool, (void **)mbufs, count);
 	if (unlikely(rc < 0)) {
 		rte_atomic64_inc(&rxq->adapter->drv_stats->rx_nombuf);
@@ -1354,8 +1366,9 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 	for (i = 0; i < count; i++) {
 		uint16_t next_to_use_masked = next_to_use & ring_mask;
-		struct rte_mbuf *mbuf = mbufs[next_to_use_masked];
+		struct rte_mbuf *mbuf = mbufs[i];
 		struct ena_com_buf ebuf;
 
-		rte_prefetch0(mbufs[((next_to_use + 4) & ring_mask)]);
+		if (likely((i + 4) < count))
+			rte_prefetch0(mbufs[i + 4]);
 
 		req_id = rxq->empty_rx_reqs[next_to_use_masked];
@@ -1363,4 +1376,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 		if (unlikely(rc < 0))
 			break;
+		rxq->rx_buffer_info[req_id] = mbuf;
 
 		/* prepare physical address for DMA transaction */
@@ -1371,7 +1385,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 						&ebuf, req_id);
 		if (unlikely(rc)) {
-			rte_mempool_put_bulk(rxq->mb_pool, (void **)(&mbuf),
-					     count - i);
 			RTE_LOG(WARNING, PMD, "failed adding rx desc\n");
+			rxq->rx_buffer_info[req_id] = NULL;
 			break;
 		}
@@ -1379,7 +1392,10 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
 	}
 
-	if (unlikely(i < count))
+	if (unlikely(i < count)) {
 		RTE_LOG(WARNING, PMD, "refilled rx qid %d with only %d "
 			"buffers (from %d)\n", rxq->id, i, count);
+		rte_mempool_put_bulk(rxq->mb_pool, (void **)(&mbufs[i]),
+				     count - i);
+	}
 
 	/* When we submitted free recources to device... */
diff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h
index 2dc8129e0..322e90ace 100644
--- a/drivers/net/ena/ena_ethdev.h
+++ b/drivers/net/ena/ena_ethdev.h
@@ -88,4 +88,5 @@ struct ena_ring {
 		struct rte_mbuf **rx_buffer_info; /* contex of rx packet */
 	};
+	struct rte_mbuf **rx_refill_buffer;
 	unsigned int ring_size; /* number of tx/rx_buffer_info's entries */
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-29 13:11:36.920935195 +0000
+++ 0075-net-ena-fix-out-of-order-completion.patch	2018-11-29 13:11:35.000000000 +0000
@@ -1,8 +1,10 @@
-From 79405ee175857cfdbb508f9d55e2a51d95483be6 Mon Sep 17 00:00:00 2001
+From 68433fad2007db5d17b15a254bb7a34fa8b66951 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Wed, 21 Nov 2018 09:21:14 +0100
 Subject: [PATCH] net/ena: fix out of order completion
 
+[ upstream commit 79405ee175857cfdbb508f9d55e2a51d95483be6 ]
+
 rx_buffer_info should be refill not linearly, but out of order.
 IDs should be taken from empty_rx_reqs array.
 
@@ -12,7 +14,6 @@
 In case of error unused mbufs are put back to pool.
 
 Fixes: c2034976673d ("net/ena: add Rx out of order completion")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -22,10 +23,10 @@
  2 files changed, 29 insertions(+), 12 deletions(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 3690afe3b..a07bd2b49 100644
+index 9e462099f..87c95b2e7 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -777,4 +777,8 @@ static void ena_rx_queue_release(void *queue)
+@@ -761,4 +761,8 @@ static void ena_rx_queue_release(void *queue)
  	ring->rx_buffer_info = NULL;
  
 +	if (ring->rx_refill_buffer)
@@ -34,7 +35,7 @@
 +
  	if (ring->empty_rx_reqs)
  		rte_free(ring->empty_rx_reqs);
-@@ -1319,4 +1323,15 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -1303,4 +1307,15 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
  	}
  
 +	rxq->rx_refill_buffer = rte_zmalloc("rxq->rx_refill_buffer",
@@ -50,21 +51,21 @@
 +
  	rxq->empty_rx_reqs = rte_zmalloc("rxq->empty_rx_reqs",
  					 sizeof(uint16_t) * nb_desc,
-@@ -1326,4 +1341,6 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -1310,4 +1325,6 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
  		rte_free(rxq->rx_buffer_info);
  		rxq->rx_buffer_info = NULL;
 +		rte_free(rxq->rx_refill_buffer);
 +		rxq->rx_refill_buffer = NULL;
  		return -ENOMEM;
  	}
-@@ -1347,5 +1364,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1331,5 +1348,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  	uint16_t next_to_use = rxq->next_to_use;
  	uint16_t in_use, req_id;
 -	struct rte_mbuf **mbufs = &rxq->rx_buffer_info[0];
 +	struct rte_mbuf **mbufs = rxq->rx_refill_buffer;
  
  	if (unlikely(!count))
-@@ -1355,11 +1372,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1339,11 +1356,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  	ena_assert_msg(((in_use + count) < ring_size), "bad ring state");
  
 -	count = RTE_MIN(count,
@@ -77,7 +78,7 @@
 +	rc = rte_mempool_get_bulk(rxq->mb_pool, (void **)mbufs, count);
  	if (unlikely(rc < 0)) {
  		rte_atomic64_inc(&rxq->adapter->drv_stats->rx_nombuf);
-@@ -1370,8 +1382,9 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1354,8 +1366,9 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  	for (i = 0; i < count; i++) {
  		uint16_t next_to_use_masked = next_to_use & ring_mask;
 -		struct rte_mbuf *mbuf = mbufs[next_to_use_masked];
@@ -89,13 +90,13 @@
 +			rte_prefetch0(mbufs[i + 4]);
  
  		req_id = rxq->empty_rx_reqs[next_to_use_masked];
-@@ -1379,4 +1392,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1363,4 +1376,5 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  		if (unlikely(rc < 0))
  			break;
 +		rxq->rx_buffer_info[req_id] = mbuf;
  
  		/* prepare physical address for DMA transaction */
-@@ -1387,7 +1401,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1371,7 +1385,6 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  						&ebuf, req_id);
  		if (unlikely(rc)) {
 -			rte_mempool_put_bulk(rxq->mb_pool, (void **)(&mbuf),
@@ -104,7 +105,7 @@
 +			rxq->rx_buffer_info[req_id] = NULL;
  			break;
  		}
-@@ -1395,7 +1408,10 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
+@@ -1379,7 +1392,10 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)
  	}
  
 -	if (unlikely(i < count))

  parent reply	other threads:[~2018-11-29 13:24 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-29 13:20 [dpdk-stable] patch 'app/testpmd: fix port status for new bonded devices' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/i40e: fix Rx instability with vector mode' " Kevin Traynor
2018-11-29 13:30   ` Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/vmxnet3: fix hot-unplug' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/e1000/base: fix uninitialized variable' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/ixgbe: stop link setup alarm handler before start' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/cxgbevf: add PCI uninitialization for VF' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/cxgbe: check Rx config before doing VLAN strip offload' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/cxgbe: fix check for redefined match items' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/cxgbe: increase completion wait time for flow operations' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/cxgbe: fix wrong ingress port value set in filter spec' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/thunderx: fix Tx desc corruption in scatter-gather mode' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'vhost: fix IOVA access for packed ring' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/virtio-user: fix typo in error message' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'vhost/crypto: fix packet copy in chaining mode' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/virtio: fix unchecked return value' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'vhost: remove unneeded null pointer check' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/bnx2x: fix dynamic logging' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/bnx2x: fix VF link state update' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/bonding: fix crash when stopping mode 4 port' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: fallback quietly if pkg-config is unavailable' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/qede: fix crash when configure fails' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'app/testpmd: fix L4 length for UDP checksum' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/octeontx: fix mbuf corruption with large private sizes' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/qede: fix Tx tunnel offload support mask' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'ethdev: fix invalid configuration after failure' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'ethdev: fix device info getting' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/sfc/base: fix field order in filter spec struct' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/enic: fix size check in Tx prepare handler' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/ixgbevf: fix link state' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'app/testpmd: fix memory leak for TM object' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'app/testpmd: fix memory allocation for DSCP table' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'crypto/ccp: fix resource leak' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'crypto/aesni_mb: fix queue pair free' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'examples/l3fwd-power: fix power library fallback' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'test/power: fix ACPI cpufreq module miss " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'test/kni: fix " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'test/reorder: fix out of bound access' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'malloc: fix adjacency check to also include segment list' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'build: set -mfpu=neon flag for armv7-a with meson' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'efd: fix write unlock during ring creation' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/i40e: fix X710 Rx after reading some registers' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/ixgbe: fix maximum wait time in comment' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx4: fix minor typo' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: fix minor typos' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx4: fix initialization of struct members' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx4: optimize Tx external memory registration' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: optimize Tx doorbell write' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: optimize Rx buffer replenishment threshold' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/mlx5: fix packet type for MPLS in UDP' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/ena: fix cleaning HW IO rings configuration' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/octeontx: fix failures when available ports > queues' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/avf: fix Tx offload mask' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'net/bonding: fix possible silent failure in configuration' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'app/testpmd: fix memory leak for DSCP table' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'app/pdump: fix port id storage size' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'examples/ipv4_multicast: fix leak of cloned packets' " Kevin Traynor
2018-11-29 13:20 ` [dpdk-stable] patch 'test: fix interrupt check' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'test/power: skip KVM autotest if cannot run' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'test: release ring resources after PMD perf test' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'devtools: fix regex in symbol addition check' " Kevin Traynor
2018-11-30 13:55   ` Neil Horman
2018-11-30 20:36     ` Kevin Traynor
2018-12-01 19:13       ` Neil Horman
2018-11-29 13:21 ` [dpdk-stable] patch 'usertools: check for lspci dependency' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: fix DESTDIR variable name in meson guide' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: fix NUMA library name in Linux " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: add cross-compilation in sample apps " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: fix formatting in IP reassembly app " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: fix function name in flow filtering " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'ipc: fix access after async request failure' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'eal: fix build with -O1' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'kni: fix possible uninitialized variable' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'net/mlx4: " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'eventdev: fix unlock in Rx adapter' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'config: enable more than 128 cores for arm64' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'net/i40e/base: fix comment referencing internal data' " Kevin Traynor
2018-11-29 13:21 ` Kevin Traynor [this message]
2018-11-29 13:21 ` [dpdk-stable] patch 'net/qede: fix Tx offload mask' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'net/ixgbe: fix TDH register write' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'vhost: fix packed ring constants declaration' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'doc: remove old options from pdump guide' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'eal/bsd: fix possible IOPL fd leak' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'net/virtio: avoid annoying IOPL error log' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'bus/pci: fix allocation of device path' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'vfio: do not needlessly setup device in secondary process' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'mem: fix division by zero in no-NUMA mode' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'fix indentation in symbol maps' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'fix dpdk.org URLs' " Kevin Traynor
2018-11-29 13:21 ` [dpdk-stable] patch 'ethdev: eliminate interim variable' " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181129132128.7609-76-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=mk@semihalf.com \
    --cc=rk@semihalf.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).