patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2
@ 2019-04-10 16:43 Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix values of descriptor limits' " Kevin Traynor
                   ` (61 more replies)
  0 siblings, 62 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Gage Eads, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From b50c01307b4e113946661930ef8f4dd4e24414b1 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Wed, 30 Jan 2019 09:08:54 +0800
Subject: [PATCH] net/pcap: fix memory leak

[ upstream commit 9b3d42207c35516b1c62fbdf19da288e5c3d8356 ]

Fix potential memory leak due to kvlist not be freed.

Fixes: 0d0dd2d9d8ff ("net/pcap: enable data path for secondary process")

Reported-by: Gage Eads <gage.eads@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/pcap/rte_eth_pcap.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 9fd932772..65bbd7e2f 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -1259,5 +1259,6 @@ create_eth:
 			PMD_LOG(ERR,
 				"Failed to allocate memory for process private");
-			return -1;
+			ret = -1;
+			goto free_kvlist;
 		}
 
@@ -1282,5 +1283,5 @@ create_eth:
 
 		rte_eth_dev_probing_finish(eth_dev);
-		return 0;
+		goto free_kvlist;
 	}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.096489274 +0100
+++ 0001-net-pcap-fix-memory-leak.patch	2019-04-10 14:06:07.744296991 +0100
@@ -1,12 +1,13 @@
-From 9b3d42207c35516b1c62fbdf19da288e5c3d8356 Mon Sep 17 00:00:00 2001
+From b50c01307b4e113946661930ef8f4dd4e24414b1 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Wed, 30 Jan 2019 09:08:54 +0800
 Subject: [PATCH] net/pcap: fix memory leak
 
+[ upstream commit 9b3d42207c35516b1c62fbdf19da288e5c3d8356 ]
+
 Fix potential memory leak due to kvlist not be freed.
 
 Fixes: 0d0dd2d9d8ff ("net/pcap: enable data path for secondary process")
-Cc: stable@dpdk.org
 
 Reported-by: Gage Eads <gage.eads@intel.com>
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bonding: fix values of descriptor limits' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: log port ID as 16-bit unsigned integer on panic' " Kevin Traynor
                   ` (60 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Hari Kumar Vemula; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 3428e21eb3dd7de09dd28e96269ae58c9222845c Mon Sep 17 00:00:00 2001
From: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
Date: Tue, 5 Feb 2019 13:39:39 +0000
Subject: [PATCH] net/bonding: fix values of descriptor limits

[ upstream commit 5be3b40fea60a70463bb55bae998349472c9e8da ]

test_create_bonded_device is failing due to improper initialisation in
bonded device configuration. Which leads to crash while setting up
queues.

The value of nb_rx_desc is checked if it is not in range of rx_desc_lim
of bonded device which fails.
This is due to "rx_desc_lim" is set to 0 as default value of bonded
device during bond_alloc().
Hence nb_rx_desc (1024) is > 0 and test fails.

Fix is to set the default values of rx_desc_lim of bonded device to
appropriate value.
Receive the values from slaves configuration like done for other
existing slave configuration

Fixes: 2efb58cbab6e ("bond: new link bonding library")

Signed-off-by: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 7ed69b388..319215c0b 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2229,4 +2229,6 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	uint16_t max_nb_rx_queues = UINT16_MAX;
 	uint16_t max_nb_tx_queues = UINT16_MAX;
+	uint16_t max_rx_desc_lim = UINT16_MAX;
+	uint16_t max_tx_desc_lim = UINT16_MAX;
 
 	dev_info->max_mac_addrs = BOND_MAX_MAC_ADDRS;
@@ -2253,4 +2255,10 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 			if (slave_info.max_tx_queues < max_nb_tx_queues)
 				max_nb_tx_queues = slave_info.max_tx_queues;
+
+			if (slave_info.rx_desc_lim.nb_max < max_rx_desc_lim)
+				max_rx_desc_lim = slave_info.rx_desc_lim.nb_max;
+
+			if (slave_info.tx_desc_lim.nb_max < max_tx_desc_lim)
+				max_tx_desc_lim = slave_info.tx_desc_lim.nb_max;
 		}
 	}
@@ -2264,8 +2272,6 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	       sizeof(dev_info->default_txconf));
 
-	memcpy(&dev_info->rx_desc_lim, &internals->rx_desc_lim,
-	       sizeof(dev_info->rx_desc_lim));
-	memcpy(&dev_info->tx_desc_lim, &internals->tx_desc_lim,
-	       sizeof(dev_info->tx_desc_lim));
+	dev_info->rx_desc_lim.nb_max = max_rx_desc_lim;
+	dev_info->tx_desc_lim.nb_max = max_tx_desc_lim;
 
 	/**
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.171714346 +0100
+++ 0002-net-bonding-fix-values-of-descriptor-limits.patch	2019-04-10 14:06:07.751296830 +0100
@@ -1,8 +1,10 @@
-From 5be3b40fea60a70463bb55bae998349472c9e8da Mon Sep 17 00:00:00 2001
+From 3428e21eb3dd7de09dd28e96269ae58c9222845c Mon Sep 17 00:00:00 2001
 From: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
 Date: Tue, 5 Feb 2019 13:39:39 +0000
 Subject: [PATCH] net/bonding: fix values of descriptor limits
 
+[ upstream commit 5be3b40fea60a70463bb55bae998349472c9e8da ]
+
 test_create_bonded_device is failing due to improper initialisation in
 bonded device configuration. Which leads to crash while setting up
 queues.
@@ -19,7 +21,6 @@
 existing slave configuration
 
 Fixes: 2efb58cbab6e ("bond: new link bonding library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
 Acked-by: Chas Williams <chas3@att.com>
@@ -28,7 +29,7 @@
  1 file changed, 10 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 44deaf119..23cec2549 100644
+index 7ed69b388..319215c0b 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
 @@ -2229,4 +2229,6 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/sfc: log port ID as 16-bit unsigned integer on panic' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix values of descriptor limits' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: remove control path logging from Rx queue count' " Kevin Traynor
                   ` (59 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 20a99b3ccc2ce8db53fe842f722466d1ad8ed245 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Thu, 7 Feb 2019 12:17:24 +0000
Subject: [PATCH] net/sfc: log port ID as 16-bit unsigned integer on panic

[ upstream commit 5e48db8c53cf2b6de1c944c392f33bc60e414c17 ]

Fixes: f8244c6399d9 ("ethdev: increase port id range")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_debug.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/sfc/sfc_debug.h b/drivers/net/sfc/sfc_debug.h
index 6b600ff4d..62f3937e8 100644
--- a/drivers/net/sfc/sfc_debug.h
+++ b/drivers/net/sfc/sfc_debug.h
@@ -28,5 +28,6 @@
 		const struct sfc_adapter *_sa = (sa);			\
 									\
-		rte_panic("sfc " PCI_PRI_FMT " #%" PRIu8 ": " fmt "\n",	\
+		rte_panic("sfc " PCI_PRI_FMT				\
+			  " #%" PRIu16 ": " fmt "\n",			\
 			  _sa->pci_addr.domain, _sa->pci_addr.bus,	\
 			  _sa->pci_addr.devid, _sa->pci_addr.function,	\
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.244993738 +0100
+++ 0003-net-sfc-log-port-ID-as-16-bit-unsigned-integer-on-pa.patch	2019-04-10 14:06:07.752296808 +0100
@@ -1,10 +1,11 @@
-From 5e48db8c53cf2b6de1c944c392f33bc60e414c17 Mon Sep 17 00:00:00 2001
+From 20a99b3ccc2ce8db53fe842f722466d1ad8ed245 Mon Sep 17 00:00:00 2001
 From: Ivan Malov <ivan.malov@oktetlabs.ru>
 Date: Thu, 7 Feb 2019 12:17:24 +0000
 Subject: [PATCH] net/sfc: log port ID as 16-bit unsigned integer on panic
 
+[ upstream commit 5e48db8c53cf2b6de1c944c392f33bc60e414c17 ]
+
 Fixes: f8244c6399d9 ("ethdev: increase port id range")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/sfc: remove control path logging from Rx queue count' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix values of descriptor limits' " Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: log port ID as 16-bit unsigned integer on panic' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: fix logging from secondary process' " Kevin Traynor
                   ` (58 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From d837c7f214b5eb44c76fbb4aa875621df9ee9f3d Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Thu, 7 Feb 2019 12:17:25 +0000
Subject: [PATCH] net/sfc: remove control path logging from Rx queue count

[ upstream commit bd6e510658a95a08217ecf33b684e16d7e29b955 ]

Rx queue count may be used from data core and it should not
generate control path logs.

Fixes: 04aa6b9c5fd7 ("net/sfc: get RxQ pending descriptors count")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_ethdev.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index a7322a1eb..67ce5a22f 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -1125,6 +1125,4 @@ sfc_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 	struct sfc_adapter *sa = dev->data->dev_private;
 
-	sfc_log_init(sa, "RxQ=%u", rx_queue_id);
-
 	return sfc_rx_qdesc_npending(sa, rx_queue_id);
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.318575185 +0100
+++ 0004-net-sfc-remove-control-path-logging-from-Rx-queue-co.patch	2019-04-10 14:06:07.755296739 +0100
@@ -1,13 +1,14 @@
-From bd6e510658a95a08217ecf33b684e16d7e29b955 Mon Sep 17 00:00:00 2001
+From d837c7f214b5eb44c76fbb4aa875621df9ee9f3d Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Thu, 7 Feb 2019 12:17:25 +0000
 Subject: [PATCH] net/sfc: remove control path logging from Rx queue count
 
+[ upstream commit bd6e510658a95a08217ecf33b684e16d7e29b955 ]
+
 Rx queue count may be used from data core and it should not
 generate control path logs.
 
 Fixes: 04aa6b9c5fd7 ("net/sfc: get RxQ pending descriptors count")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/sfc: fix logging from secondary process' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (2 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: remove control path logging from Rx queue count' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: set offload flag for jumbo frames' " Kevin Traynor
                   ` (57 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 347e44ad60e8984bf964fd4a8c8ada961af11bff Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Thu, 7 Feb 2019 12:17:26 +0000
Subject: [PATCH] net/sfc: fix logging from secondary process

[ upstream commit e2c3639abf559866acc291e576e83916c2986a08 ]

Dynamic log type value may differ in different processes.

Fixes: f28ede500c2e ("net/sfc: support multi-process")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc.c        |  6 +++---
 drivers/net/sfc/sfc.h        |  2 +-
 drivers/net/sfc/sfc_ethdev.c | 25 ++++++++++++++++---------
 drivers/net/sfc/sfc_mcdi.c   |  3 ++-
 4 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c
index 6690053f2..0d7311d68 100644
--- a/drivers/net/sfc/sfc.c
+++ b/drivers/net/sfc/sfc.c
@@ -1072,6 +1072,6 @@ sfc_unprobe(struct sfc_adapter *sa)
 
 uint32_t
-sfc_register_logtype(struct sfc_adapter *sa, const char *lt_prefix_str,
-		     uint32_t ll_default)
+sfc_register_logtype(const struct rte_pci_addr *pci_addr,
+		     const char *lt_prefix_str, uint32_t ll_default)
 {
 	size_t lt_prefix_str_size = strlen(lt_prefix_str);
@@ -1093,5 +1093,5 @@ sfc_register_logtype(struct sfc_adapter *sa, const char *lt_prefix_str,
 	strncpy(lt_str, lt_prefix_str, lt_prefix_str_size);
 	lt_str[lt_prefix_str_size - 1] = '.';
-	rte_pci_device_name(&sa->pci_addr, lt_str + lt_prefix_str_size,
+	rte_pci_device_name(pci_addr, lt_str + lt_prefix_str_size,
 			    lt_str_size_max - lt_prefix_str_size);
 	lt_str[lt_str_size_max - 1] = '\0';
diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h
index a94ca8e75..f1cb83002 100644
--- a/drivers/net/sfc/sfc.h
+++ b/drivers/net/sfc/sfc.h
@@ -312,5 +312,5 @@ int sfc_dma_alloc(const struct sfc_adapter *sa, const char *name, uint16_t id,
 void sfc_dma_free(const struct sfc_adapter *sa, efsys_mem_t *esmp);
 
-uint32_t sfc_register_logtype(struct sfc_adapter *sa,
+uint32_t sfc_register_logtype(const struct rte_pci_addr *pci_addr,
 			      const char *lt_prefix_str,
 			      uint32_t ll_default);
diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index 67ce5a22f..10e032400 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -1876,5 +1876,5 @@ static const struct eth_dev_ops sfc_eth_dev_secondary_ops = {
 
 static int
-sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev)
+sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev, uint32_t logtype_main)
 {
 	/*
@@ -1890,10 +1890,12 @@ sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev)
 	dp_rx = sfc_dp_find_rx_by_name(&sfc_dp_head, sa->dp_rx_name);
 	if (dp_rx == NULL) {
-		sfc_err(sa, "cannot find %s Rx datapath", sa->dp_rx_name);
+		SFC_LOG(sa, RTE_LOG_ERR, logtype_main,
+			"cannot find %s Rx datapath", sa->dp_rx_name);
 		rc = ENOENT;
 		goto fail_dp_rx;
 	}
 	if (~dp_rx->features & SFC_DP_RX_FEAT_MULTI_PROCESS) {
-		sfc_err(sa, "%s Rx datapath does not support multi-process",
+		SFC_LOG(sa, RTE_LOG_ERR, logtype_main,
+			"%s Rx datapath does not support multi-process",
 			sa->dp_rx_name);
 		rc = EINVAL;
@@ -1903,10 +1905,12 @@ sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev)
 	dp_tx = sfc_dp_find_tx_by_name(&sfc_dp_head, sa->dp_tx_name);
 	if (dp_tx == NULL) {
-		sfc_err(sa, "cannot find %s Tx datapath", sa->dp_tx_name);
+		SFC_LOG(sa, RTE_LOG_ERR, logtype_main,
+			"cannot find %s Tx datapath", sa->dp_tx_name);
 		rc = ENOENT;
 		goto fail_dp_tx;
 	}
 	if (~dp_tx->features & SFC_DP_TX_FEAT_MULTI_PROCESS) {
-		sfc_err(sa, "%s Tx datapath does not support multi-process",
+		SFC_LOG(sa, RTE_LOG_ERR, logtype_main,
+			"%s Tx datapath does not support multi-process",
 			sa->dp_tx_name);
 		rc = EINVAL;
@@ -1956,4 +1960,5 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)
 	struct sfc_adapter *sa = dev->data->dev_private;
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+	uint32_t logtype_main;
 	int rc;
 	const efx_nic_cfg_t *encp;
@@ -1962,10 +1967,15 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)
 	sfc_register_dp();
 
+	logtype_main = sfc_register_logtype(&pci_dev->addr,
+					    SFC_LOGTYPE_MAIN_STR,
+					    RTE_LOG_NOTICE);
+
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		return -sfc_eth_dev_secondary_set_ops(dev);
+		return -sfc_eth_dev_secondary_set_ops(dev, logtype_main);
 
 	/* Required for logging */
 	sa->pci_addr = pci_dev->addr;
 	sa->port_id = dev->data->port_id;
+	sa->logtype_main = logtype_main;
 
 	sa->eth_dev = dev;
@@ -1974,7 +1984,4 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)
 	rte_eth_copy_pci_info(dev, pci_dev);
 
-	sa->logtype_main = sfc_register_logtype(sa, SFC_LOGTYPE_MAIN_STR,
-						RTE_LOG_NOTICE);
-
 	rc = sfc_kvargs_parse(sa);
 	if (rc != 0)
diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c
index 007506b4e..e485e07d6 100644
--- a/drivers/net/sfc/sfc_mcdi.c
+++ b/drivers/net/sfc/sfc_mcdi.c
@@ -257,5 +257,6 @@ sfc_mcdi_init(struct sfc_adapter *sa)
 		goto fail_dma_alloc;
 
-	mcdi->logtype = sfc_register_logtype(sa, SFC_LOGTYPE_MCDI_STR,
+	mcdi->logtype = sfc_register_logtype(&sa->pci_addr,
+					     SFC_LOGTYPE_MCDI_STR,
 					     RTE_LOG_NOTICE);
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.402905704 +0100
+++ 0005-net-sfc-fix-logging-from-secondary-process.patch	2019-04-10 14:06:07.761296601 +0100
@@ -1,12 +1,13 @@
-From e2c3639abf559866acc291e576e83916c2986a08 Mon Sep 17 00:00:00 2001
+From 347e44ad60e8984bf964fd4a8c8ada961af11bff Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Thu, 7 Feb 2019 12:17:26 +0000
 Subject: [PATCH] net/sfc: fix logging from secondary process
 
+[ upstream commit e2c3639abf559866acc291e576e83916c2986a08 ]
+
 Dynamic log type value may differ in different processes.
 
 Fixes: f28ede500c2e ("net/sfc: support multi-process")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/virtio: set offload flag for jumbo frames' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (3 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: fix logging from secondary process' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: remove forward declaration' " Kevin Traynor
                   ` (56 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Jens Freimann; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 0d2dc78c734173e9f98f08edf1cf1b3771e210dd Mon Sep 17 00:00:00 2001
From: Jens Freimann <jfreimann@redhat.com>
Date: Tue, 5 Feb 2019 12:17:02 +0100
Subject: [PATCH] net/virtio: set offload flag for jumbo frames

[ upstream commit 8b90e4358112b9e41f8eaa1ba14c783570307fea ]

Port configuration fails because offload flags don't match the expected
value when max-pkt-len is set to a value that should enable receive port
offloading but doesn't.

The .dev_infos_get callback can be called before the configure callback.
At that time we don't know the maximum packet size yet because it is
only set up when ports are started. So in virtio_dev_info_get() just
always set the jumbo packet offload flag.

Check the maximum packet length at device configure time, because then we
have access to the max-pkt-len value provided by the user. If the
max-pkt-len exceeds the maximum MTU supported by the device we remove
the VIRTIO_NET_F_MTU flag from requested features.

Fixes: a4996bd89c42 ("ethdev: new Rx/Tx offloads API")

Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_ethdev.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 2ba66d291..5f662aabe 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1821,4 +1821,6 @@ virtio_dev_configure(struct rte_eth_dev *dev)
 	const struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode;
 	struct virtio_hw *hw = dev->data->dev_private;
+	uint32_t ether_hdr_len = ETHER_HDR_LEN + VLAN_TAG_LEN +
+		hw->vtnet_hdr_size;
 	uint64_t rx_offloads = rxmode->offloads;
 	uint64_t tx_offloads = txmode->offloads;
@@ -1835,4 +1837,7 @@ virtio_dev_configure(struct rte_eth_dev *dev)
 	}
 
+	if (rxmode->max_rx_pkt_len > hw->max_mtu + ether_hdr_len)
+		req_features &= ~(1ULL << VIRTIO_NET_F_MTU);
+
 	if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
 			   DEV_RX_OFFLOAD_TCP_CKSUM))
@@ -2186,4 +2191,5 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	host_features = VTPCI_OPS(hw)->get_features(hw);
 	dev_info->rx_offload_capa = DEV_RX_OFFLOAD_VLAN_STRIP;
+	dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_JUMBO_FRAME;
 	if (host_features & (1ULL << VIRTIO_NET_F_GUEST_CSUM)) {
 		dev_info->rx_offload_capa |=
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.475025512 +0100
+++ 0006-net-virtio-set-offload-flag-for-jumbo-frames.patch	2019-04-10 14:06:07.766296487 +0100
@@ -1,8 +1,10 @@
-From 8b90e4358112b9e41f8eaa1ba14c783570307fea Mon Sep 17 00:00:00 2001
+From 0d2dc78c734173e9f98f08edf1cf1b3771e210dd Mon Sep 17 00:00:00 2001
 From: Jens Freimann <jfreimann@redhat.com>
 Date: Tue, 5 Feb 2019 12:17:02 +0100
 Subject: [PATCH] net/virtio: set offload flag for jumbo frames
 
+[ upstream commit 8b90e4358112b9e41f8eaa1ba14c783570307fea ]
+
 Port configuration fails because offload flags don't match the expected
 value when max-pkt-len is set to a value that should enable receive port
 offloading but doesn't.
@@ -18,7 +20,6 @@
 the VIRTIO_NET_F_MTU flag from requested features.
 
 Fixes: a4996bd89c42 ("ethdev: new Rx/Tx offloads API")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jens Freimann <jfreimann@redhat.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -27,17 +28,17 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
-index 7c4c1df00..7c2fe76f3 100644
+index 2ba66d291..5f662aabe 100644
 --- a/drivers/net/virtio/virtio_ethdev.c
 +++ b/drivers/net/virtio/virtio_ethdev.c
-@@ -1973,4 +1973,6 @@ virtio_dev_configure(struct rte_eth_dev *dev)
+@@ -1821,4 +1821,6 @@ virtio_dev_configure(struct rte_eth_dev *dev)
  	const struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode;
  	struct virtio_hw *hw = dev->data->dev_private;
 +	uint32_t ether_hdr_len = ETHER_HDR_LEN + VLAN_TAG_LEN +
 +		hw->vtnet_hdr_size;
  	uint64_t rx_offloads = rxmode->offloads;
  	uint64_t tx_offloads = txmode->offloads;
-@@ -1987,4 +1989,7 @@ virtio_dev_configure(struct rte_eth_dev *dev)
+@@ -1835,4 +1837,7 @@ virtio_dev_configure(struct rte_eth_dev *dev)
  	}
  
 +	if (rxmode->max_rx_pkt_len > hw->max_mtu + ether_hdr_len)
@@ -45,7 +46,7 @@
 +
  	if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
  			   DEV_RX_OFFLOAD_TCP_CKSUM))
-@@ -2340,4 +2345,5 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+@@ -2186,4 +2191,5 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
  	host_features = VTPCI_OPS(hw)->get_features(hw);
  	dev_info->rx_offload_capa = DEV_RX_OFFLOAD_VLAN_STRIP;
 +	dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_JUMBO_FRAME;

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/virtio: remove forward declaration' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (4 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: set offload flag for jumbo frames' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'mbuf: fix a typo' " Kevin Traynor
                   ` (55 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 7e55edd0ad27f6996e287fd1b8bcac1b8ddac5e1 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Wed, 23 Jan 2019 19:29:48 +0200
Subject: [PATCH] net/virtio: remove forward declaration

[ upstream commit e17697abd31251be4257d71cfadbf0e847b93bb1 ]

This minor cleanup patch removes an unnecessary forward
declaration of virtio_intr_enable() in net/virtio PMD.

Fixes: fe19d49cb525 ("net/virtio: fix Rx interrupt with VFIO")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_ethdev.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 5f662aabe..a1096287e 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -72,5 +72,4 @@ static int virtio_mac_addr_set(struct rte_eth_dev *dev,
 				struct ether_addr *mac_addr);
 
-static int virtio_intr_enable(struct rte_eth_dev *dev);
 static int virtio_intr_disable(struct rte_eth_dev *dev);
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.556910626 +0100
+++ 0007-net-virtio-remove-forward-declaration.patch	2019-04-10 14:06:07.772296350 +0100
@@ -1,13 +1,14 @@
-From e17697abd31251be4257d71cfadbf0e847b93bb1 Mon Sep 17 00:00:00 2001
+From 7e55edd0ad27f6996e287fd1b8bcac1b8ddac5e1 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Wed, 23 Jan 2019 19:29:48 +0200
 Subject: [PATCH] net/virtio: remove forward declaration
 
+[ upstream commit e17697abd31251be4257d71cfadbf0e847b93bb1 ]
+
 This minor cleanup patch removes an unnecessary forward
 declaration of virtio_intr_enable() in net/virtio PMD.
 
 Fixes: fe19d49cb525 ("net/virtio: fix Rx interrupt with VFIO")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -16,7 +17,7 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
-index 7c2fe76f3..846983a01 100644
+index 5f662aabe..a1096287e 100644
 --- a/drivers/net/virtio/virtio_ethdev.c
 +++ b/drivers/net/virtio/virtio_ethdev.c
 @@ -72,5 +72,4 @@ static int virtio_mac_addr_set(struct rte_eth_dev *dev,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'mbuf: fix a typo' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (5 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: remove forward declaration' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx5: fix Tx metadata for multi-segment packet' " Kevin Traynor
                   ` (54 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 41b3eb26eef1c27dc5e58b095a0a4179ad7d6204 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Mon, 11 Feb 2019 20:52:18 +0200
Subject: [PATCH] mbuf: fix a typo

[ upstream commit b13baac8d5ffb6b0b7a6ca0def884d3f1a82babb ]

This trivial patch fixes a typo in rte_mbuf.h.

Fixes: f20b50b946da ("mbuf: optimize refcnt update")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
---
 lib/librte_mbuf/rte_mbuf.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 3dbc6695e..795015c81 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -914,5 +914,5 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
 	/*
 	 * The atomic_add is an expensive operation, so we don't want to
-	 * call it in the case where we know we are the uniq holder of
+	 * call it in the case where we know we are the unique holder of
 	 * this mbuf (i.e. ref_cnt == 1). Otherwise, an atomic
 	 * operation has to be used because concurrent accesses on the
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.637115534 +0100
+++ 0008-mbuf-fix-a-typo.patch	2019-04-10 14:06:07.776296258 +0100
@@ -1,12 +1,13 @@
-From b13baac8d5ffb6b0b7a6ca0def884d3f1a82babb Mon Sep 17 00:00:00 2001
+From 41b3eb26eef1c27dc5e58b095a0a4179ad7d6204 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Mon, 11 Feb 2019 20:52:18 +0200
 Subject: [PATCH] mbuf: fix a typo
 
+[ upstream commit b13baac8d5ffb6b0b7a6ca0def884d3f1a82babb ]
+
 This trivial patch fixes a typo in rte_mbuf.h.
 
 Fixes: f20b50b946da ("mbuf: optimize refcnt update")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 ---
@@ -14,10 +15,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
-index a7f67023a..d961ccaf6 100644
+index 3dbc6695e..795015c81 100644
 --- a/lib/librte_mbuf/rte_mbuf.h
 +++ b/lib/librte_mbuf/rte_mbuf.h
-@@ -974,5 +974,5 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
+@@ -914,5 +914,5 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
  	/*
  	 * The atomic_add is an expensive operation, so we don't want to
 -	 * call it in the case where we know we are the uniq holder of

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/mlx5: fix Tx metadata for multi-segment packet' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (6 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'mbuf: fix a typo' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix Tx in 802.3ad mode' " Kevin Traynor
                   ` (53 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Dekel Peled; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 2664e32795d8a459f76aa691819eaf9f3fa80fa1 Mon Sep 17 00:00:00 2001
From: Dekel Peled <dekelp@mellanox.com>
Date: Wed, 30 Jan 2019 08:43:29 +0200
Subject: [PATCH] net/mlx5: fix Tx metadata for multi-segment packet

[ upstream commit 7f4019d370f6edbd9d6ef26a9bc62442b0fd80a6 ]

Original patch implemented the use of match_metadata offload in the
different burst functions.
The concurrent use of match_metadata and multi_segs offloads was
not handled.

This patch updates function txq_scatter_v(), to pass metadata value
from mbuf to wqe, when indicated by offload flags.

Fixes: 6bd7fbd03c62 ("net/mlx5: support metadata as flow rule criteria")

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 12 +++++++++---
 drivers/net/mlx5/mlx5_rxtx_vec_sse.h  | 11 ++++++++---
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
index 883fe1bf9..38e915c5c 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
@@ -105,4 +105,6 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 	unsigned int n;
 	volatile struct mlx5_wqe *wqe = NULL;
+	bool metadata_ol =
+		txq->offloads & DEV_TX_OFFLOAD_MATCH_METADATA ? true : false;
 
 	assert(elts_n > pkts_n);
@@ -128,4 +130,7 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 		uint8_t *dseg;
 		uint8x16_t ctrl;
+		rte_be32_t metadata =
+			metadata_ol && (buf->ol_flags & PKT_TX_METADATA) ?
+			buf->tx_metadata : 0;
 
 		assert(segs_n);
@@ -165,7 +170,8 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 		vst1q_u8((void *)t_wqe, ctrl);
 		/* Fill ESEG in the header. */
-		vst1q_u16((void *)(t_wqe + 1),
-			  ((uint16x8_t) { 0, 0, cs_flags, rte_cpu_to_be_16(len),
-					  0, 0, 0, 0 }));
+		vst1q_u32((void *)(t_wqe + 1),
+			  ((uint32x4_t){ 0,
+					 cs_flags << 16 | rte_cpu_to_be_16(len),
+					 metadata, 0 }));
 		txq->wqe_ci = wqe_ci;
 	}
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
index 14117c4bb..fb384efde 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
@@ -105,4 +105,6 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 	unsigned int n;
 	volatile struct mlx5_wqe *wqe = NULL;
+	bool metadata_ol =
+		txq->offloads & DEV_TX_OFFLOAD_MATCH_METADATA ? true : false;
 
 	assert(elts_n > pkts_n);
@@ -126,4 +128,7 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 		__m128i *t_wqe, *dseg;
 		__m128i ctrl;
+		rte_be32_t metadata =
+			metadata_ol && (buf->ol_flags & PKT_TX_METADATA) ?
+			buf->tx_metadata : 0;
 
 		assert(segs_n);
@@ -166,7 +171,7 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
 		/* Fill ESEG in the header. */
 		_mm_store_si128(t_wqe + 1,
-				_mm_set_epi16(0, 0, 0, 0,
-					      rte_cpu_to_be_16(len), cs_flags,
-					      0, 0));
+				_mm_set_epi32(0, metadata,
+					      (rte_cpu_to_be_16(len) << 16) |
+					      cs_flags, 0));
 		txq->wqe_ci = wqe_ci;
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.711865131 +0100
+++ 0009-net-mlx5-fix-Tx-metadata-for-multi-segment-packet.patch	2019-04-10 14:06:07.779296189 +0100
@@ -1,8 +1,10 @@
-From 7f4019d370f6edbd9d6ef26a9bc62442b0fd80a6 Mon Sep 17 00:00:00 2001
+From 2664e32795d8a459f76aa691819eaf9f3fa80fa1 Mon Sep 17 00:00:00 2001
 From: Dekel Peled <dekelp@mellanox.com>
 Date: Wed, 30 Jan 2019 08:43:29 +0200
 Subject: [PATCH] net/mlx5: fix Tx metadata for multi-segment packet
 
+[ upstream commit 7f4019d370f6edbd9d6ef26a9bc62442b0fd80a6 ]
+
 Original patch implemented the use of match_metadata offload in the
 different burst functions.
 The concurrent use of match_metadata and multi_segs offloads was
@@ -12,7 +14,6 @@
 from mbuf to wqe, when indicated by offload flags.
 
 Fixes: 6bd7fbd03c62 ("net/mlx5: support metadata as flow rule criteria")
-Cc: stable@dpdk.org
 
 Signed-off-by: Dekel Peled <dekelp@mellanox.com>
 Acked-by: Yongseok Koh <yskoh@mellanox.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bonding: fix Tx in 802.3ad mode' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (7 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx5: fix Tx metadata for multi-segment packet' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bnxt: support IOVA VA " Kevin Traynor
                   ` (52 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Chas Williams; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 0e96e17c79eb7f8e5ed41bf2e3c53218d0453ad5 Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Mon, 11 Feb 2019 11:34:36 -0500
Subject: [PATCH] net/bonding: fix Tx in 802.3ad mode

[ upstream commit bddcc1228cdb447b99ec7d245732c81c65830ca9 ]

We can transmit if there is at least one distributing slave.

Fixes: 09150784a776 ("net/bonding: burst mode hash calculation")

Signed-off-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 319215c0b..d709b077d 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1320,5 +1320,5 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	}
 
-	if (likely(dist_slave_count > 1)) {
+	if (likely(dist_slave_count > 0)) {
 
 		/*
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.789091843 +0100
+++ 0010-net-bonding-fix-Tx-in-802.3ad-mode.patch	2019-04-10 14:06:07.787296006 +0100
@@ -1,12 +1,13 @@
-From bddcc1228cdb447b99ec7d245732c81c65830ca9 Mon Sep 17 00:00:00 2001
+From 0e96e17c79eb7f8e5ed41bf2e3c53218d0453ad5 Mon Sep 17 00:00:00 2001
 From: Chas Williams <chas3@att.com>
 Date: Mon, 11 Feb 2019 11:34:36 -0500
 Subject: [PATCH] net/bonding: fix Tx in 802.3ad mode
 
+[ upstream commit bddcc1228cdb447b99ec7d245732c81c65830ca9 ]
+
 We can transmit if there is at least one distributing slave.
 
 Fixes: 09150784a776 ("net/bonding: burst mode hash calculation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Chas Williams <chas3@att.com>
 ---
@@ -14,7 +15,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 23cec2549..2304172d0 100644
+index 319215c0b..d709b077d 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
 @@ -1320,5 +1320,5 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bnxt: support IOVA VA mode' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (8 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix Tx in 802.3ad mode' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/avf: fix admin queue interrupt for ICE' " Kevin Traynor
                   ` (51 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Davide Caratti; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From fef27071b98974bb2c05c57772fc16e84428fafc Mon Sep 17 00:00:00 2001
From: Davide Caratti <dcaratti@redhat.com>
Date: Tue, 12 Feb 2019 19:30:19 +0100
Subject: [PATCH] net/bnxt: support IOVA VA mode

[ upstream commit 8fe6beed2f9e068c5329433f83704c9441a34a59 ]

Set RTE_PCI_DRV_IOVA_AS_VA in drv_flags: this allows initializing bnxt
PMD as non-root also on Linux v4.x, where /proc/self/pagemap can't be
accessed without CAP_SYS_ADMIN privileges.

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 801c6ffad..189527207 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -3549,5 +3549,5 @@ static struct rte_pci_driver bnxt_rte_pmd = {
 	.id_table = bnxt_pci_id_map,
 	.drv_flags = RTE_PCI_DRV_NEED_MAPPING |
-		RTE_PCI_DRV_INTR_LSC,
+		RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_IOVA_AS_VA,
 	.probe = bnxt_pci_probe,
 	.remove = bnxt_pci_remove,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.867590107 +0100
+++ 0011-net-bnxt-support-IOVA-VA-mode.patch	2019-04-10 14:06:07.791295915 +0100
@@ -1,14 +1,14 @@
-From 8fe6beed2f9e068c5329433f83704c9441a34a59 Mon Sep 17 00:00:00 2001
+From fef27071b98974bb2c05c57772fc16e84428fafc Mon Sep 17 00:00:00 2001
 From: Davide Caratti <dcaratti@redhat.com>
 Date: Tue, 12 Feb 2019 19:30:19 +0100
 Subject: [PATCH] net/bnxt: support IOVA VA mode
 
+[ upstream commit 8fe6beed2f9e068c5329433f83704c9441a34a59 ]
+
 Set RTE_PCI_DRV_IOVA_AS_VA in drv_flags: this allows initializing bnxt
 PMD as non-root also on Linux v4.x, where /proc/self/pagemap can't be
 accessed without CAP_SYS_ADMIN privileges.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Davide Caratti <dcaratti@redhat.com>
 Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/avf: fix admin queue interrupt for ICE' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (9 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bnxt: support IOVA VA " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix slave Tx burst for mode 4' " Kevin Traynor
                   ` (50 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Wei Zhao; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From ef1667117d077fd0867b275fc3f79904da465dca Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1@intel.com>
Date: Wed, 13 Feb 2019 16:54:13 +0800
Subject: [PATCH] net/avf: fix admin queue interrupt for ICE

[ upstream commit f9fa1bb46419b3dc29fc4267c31547d34dcb1383 ]

Enable CLEARPBA bit is required by ice NIC of A0/A1 version to
enable admin queue interrupt.
Also enable CLEARPBA bit does no impact on AVF behaviour when be
hosted by other devices, so we can make it as default.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/avf/avf_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/avf/avf_ethdev.c b/drivers/net/avf/avf_ethdev.c
index 13eec1b45..797f505a8 100644
--- a/drivers/net/avf/avf_ethdev.c
+++ b/drivers/net/avf/avf_ethdev.c
@@ -1160,5 +1160,5 @@ avf_enable_irq0(struct avf_hw *hw)
 
 	AVF_WRITE_REG(hw, AVFINT_DYN_CTL01, AVFINT_DYN_CTL01_INTENA_MASK |
-					    AVFINT_DYN_CTL01_ITR_INDX_MASK);
+		AVFINT_DYN_CTL01_CLEARPBA_MASK | AVFINT_DYN_CTL01_ITR_INDX_MASK);
 
 	AVF_WRITE_FLUSH(hw);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:08.948819494 +0100
+++ 0012-net-avf-fix-admin-queue-interrupt-for-ICE.patch	2019-04-10 14:06:07.794295846 +0100
@@ -1,15 +1,15 @@
-From f9fa1bb46419b3dc29fc4267c31547d34dcb1383 Mon Sep 17 00:00:00 2001
+From ef1667117d077fd0867b275fc3f79904da465dca Mon Sep 17 00:00:00 2001
 From: Wei Zhao <wei.zhao1@intel.com>
 Date: Wed, 13 Feb 2019 16:54:13 +0800
 Subject: [PATCH] net/avf: fix admin queue interrupt for ICE
 
+[ upstream commit f9fa1bb46419b3dc29fc4267c31547d34dcb1383 ]
+
 Enable CLEARPBA bit is required by ice NIC of A0/A1 version to
 enable admin queue interrupt.
 Also enable CLEARPBA bit does no impact on AVF behaviour when be
 hosted by other devices, so we can make it as default.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
 Acked-by: Qi Zhang <qi.z.zhang@intel.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bonding: fix slave Tx burst for mode 4' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (10 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/avf: fix admin queue interrupt for ICE' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix link status' " Kevin Traynor
                   ` (49 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Chas Williams; +Cc: Hui Zhao, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 0b58135e247bfffb9b852aa68a715e58f61a0cb4 Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Thu, 14 Feb 2019 14:09:58 -0500
Subject: [PATCH] net/bonding: fix slave Tx burst for mode 4

[ upstream commit af91947cd236ece51b026ad9648b12cb59deeee5 ]

The Tx burst routine always needs to check for pending LACPDUs
and send them if available. Do this first to prioritize the
control traffic.  We can still early exit, before calculating
the distribution slaves, if there isn't any data packets.

Fixes: 09150784a776 ("net/bonding: burst mode hash calculation")

Reported-by: Hui Zhao <zhaohui8@huawei.com>
Signed-off-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 48 +++++++++++++-------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index d709b077d..a39f72898 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1299,7 +1299,4 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	uint16_t i;
 
-	if (unlikely(nb_bufs == 0))
-		return 0;
-
 	/* Copy slave list to protect against slave up/down changes during tx
 	 * bursting */
@@ -1311,4 +1308,28 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 			sizeof(slave_port_ids[0]) * slave_count);
 
+	/* Check for LACP control packets and send if available */
+	for (i = 0; i < slave_count; i++) {
+		struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]];
+		struct rte_mbuf *ctrl_pkt = NULL;
+
+		if (likely(rte_ring_empty(port->tx_ring)))
+			continue;
+
+		if (rte_ring_dequeue(port->tx_ring,
+				     (void **)&ctrl_pkt) != -ENOENT) {
+			slave_tx_count = rte_eth_tx_burst(slave_port_ids[i],
+					bd_tx_q->queue_id, &ctrl_pkt, 1);
+			/*
+			 * re-enqueue LAG control plane packets to buffering
+			 * ring if transmission fails so the packet isn't lost.
+			 */
+			if (slave_tx_count != 1)
+				rte_ring_enqueue(port->tx_ring,	ctrl_pkt);
+		}
+	}
+
+	if (unlikely(nb_bufs == 0))
+		return 0;
+
 	dist_slave_count = 0;
 	for (i = 0; i < slave_count; i++) {
@@ -1366,25 +1387,4 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	}
 
-	/* Check for LACP control packets and send if available */
-	for (i = 0; i < slave_count; i++) {
-		struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]];
-		struct rte_mbuf *ctrl_pkt = NULL;
-
-		if (likely(rte_ring_empty(port->tx_ring)))
-			continue;
-
-		if (rte_ring_dequeue(port->tx_ring,
-				     (void **)&ctrl_pkt) != -ENOENT) {
-			slave_tx_count = rte_eth_tx_burst(slave_port_ids[i],
-					bd_tx_q->queue_id, &ctrl_pkt, 1);
-			/*
-			 * re-enqueue LAG control plane packets to buffering
-			 * ring if transmission fails so the packet isn't lost.
-			 */
-			if (slave_tx_count != 1)
-				rte_ring_enqueue(port->tx_ring,	ctrl_pkt);
-		}
-	}
-
 	return total_tx_count;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.025517511 +0100
+++ 0013-net-bonding-fix-slave-Tx-burst-for-mode-4.patch	2019-04-10 14:06:07.803295640 +0100
@@ -1,15 +1,16 @@
-From af91947cd236ece51b026ad9648b12cb59deeee5 Mon Sep 17 00:00:00 2001
+From 0b58135e247bfffb9b852aa68a715e58f61a0cb4 Mon Sep 17 00:00:00 2001
 From: Chas Williams <chas3@att.com>
 Date: Thu, 14 Feb 2019 14:09:58 -0500
 Subject: [PATCH] net/bonding: fix slave Tx burst for mode 4
 
+[ upstream commit af91947cd236ece51b026ad9648b12cb59deeee5 ]
+
 The Tx burst routine always needs to check for pending LACPDUs
 and send them if available. Do this first to prioritize the
 control traffic.  We can still early exit, before calculating
 the distribution slaves, if there isn't any data packets.
 
 Fixes: 09150784a776 ("net/bonding: burst mode hash calculation")
-Cc: stable@dpdk.org
 
 Reported-by: Hui Zhao <zhaohui8@huawei.com>
 Signed-off-by: Chas Williams <chas3@att.com>
@@ -18,7 +19,7 @@
  1 file changed, 24 insertions(+), 24 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 2304172d0..61e731a8f 100644
+index d709b077d..a39f72898 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
 @@ -1299,7 +1299,4 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bonding: fix link status' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (11 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix slave Tx burst for mode 4' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix a minor typo in testpmd guide' " Kevin Traynor
                   ` (48 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Chas Williams; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From f0f3d85815b908feac989c1f824e5287fd2259df Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Thu, 14 Feb 2019 14:11:12 -0500
Subject: [PATCH] net/bonding: fix link status

[ upstream commit d7bce0058a241a4d9b03e295bd74e6957b040d1e ]

Copying the link properties of the first slave added may copy an
invalid link status. The speed and duplex of the slave may not
be known at this time. Delay setting the properties until the
first slave reports as link up. Note that we are still ignoring
an error from link_properties_valid. For some bonding modes,
802.3ad, we should not activate the slave if it does not have
matching link properties.

Fixes: a45b288ef21a ("bond: support link status polling")

Signed-off-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_api.c     |  4 ---
 drivers/net/bonding/rte_eth_bond_pmd.c     | 31 +++++++++++++---------
 drivers/net/bonding/rte_eth_bond_private.h |  7 -----
 3 files changed, 18 insertions(+), 24 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index ac084c4fd..b55752ed3 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -491,8 +491,4 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
 		}
 
-		/* Inherit eth dev link properties from first slave */
-		link_properties_set(bonded_eth_dev,
-				&(slave_eth_dev->data->dev_link));
-
 		/* Make primary slave */
 		internals->primary_port = slave_port_id;
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index a39f72898..46ad4fe47 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1450,5 +1450,5 @@ bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs,
 }
 
-void
+static void
 link_properties_set(struct rte_eth_dev *ethdev, struct rte_eth_link *slave_link)
 {
@@ -1475,5 +1475,5 @@ link_properties_set(struct rte_eth_dev *ethdev, struct rte_eth_link *slave_link)
 }
 
-int
+static int
 link_properties_valid(struct rte_eth_dev *ethdev,
 		struct rte_eth_link *slave_link)
@@ -2694,14 +2694,4 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 			goto link_update;
 
-		/* if no active slave ports then set this port to be primary port */
-		if (internals->active_slave_count < 1) {
-			/* If first active slave, then change link status */
-			bonded_eth_dev->data->dev_link.link_status = ETH_LINK_UP;
-			internals->current_primary_port = port_id;
-			lsc_flag = 1;
-
-			mac_address_slaves_update(bonded_eth_dev);
-		}
-
 		/* check link state properties if bonded link is up*/
 		if (bonded_eth_dev->data->dev_link.link_status == ETH_LINK_UP) {
@@ -2715,7 +2705,22 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 		}
 
+		/* If no active slave ports then set this port to be
+		 * the primary port.
+		 */
+		if (internals->active_slave_count < 1) {
+			/* If first active slave, then change link status */
+			bonded_eth_dev->data->dev_link.link_status =
+								ETH_LINK_UP;
+			internals->current_primary_port = port_id;
+			lsc_flag = 1;
+
+			mac_address_slaves_update(bonded_eth_dev);
+		}
+
 		activate_slave(bonded_eth_dev, port_id);
 
-		/* If user has defined the primary port then default to using it */
+		/* If the user has defined the primary port then default to
+		 * using it.
+		 */
 		if (internals->user_defined_primary_port &&
 				internals->primary_port == port_id)
diff --git a/drivers/net/bonding/rte_eth_bond_private.h b/drivers/net/bonding/rte_eth_bond_private.h
index 3ea5d686b..032ffed02 100644
--- a/drivers/net/bonding/rte_eth_bond_private.h
+++ b/drivers/net/bonding/rte_eth_bond_private.h
@@ -223,11 +223,4 @@ void
 activate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id);
 
-void
-link_properties_set(struct rte_eth_dev *bonded_eth_dev,
-		struct rte_eth_link *slave_dev_link);
-int
-link_properties_valid(struct rte_eth_dev *bonded_eth_dev,
-		struct rte_eth_link *slave_dev_link);
-
 int
 mac_address_set(struct rte_eth_dev *eth_dev, struct ether_addr *new_mac_addr);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.122057500 +0100
+++ 0014-net-bonding-fix-link-status.patch	2019-04-10 14:06:07.811295457 +0100
@@ -1,8 +1,10 @@
-From d7bce0058a241a4d9b03e295bd74e6957b040d1e Mon Sep 17 00:00:00 2001
+From f0f3d85815b908feac989c1f824e5287fd2259df Mon Sep 17 00:00:00 2001
 From: Chas Williams <chas3@att.com>
 Date: Thu, 14 Feb 2019 14:11:12 -0500
 Subject: [PATCH] net/bonding: fix link status
 
+[ upstream commit d7bce0058a241a4d9b03e295bd74e6957b040d1e ]
+
 Copying the link properties of the first slave added may copy an
 invalid link status. The speed and duplex of the slave may not
 be known at this time. Delay setting the properties until the
@@ -12,7 +14,6 @@
 matching link properties.
 
 Fixes: a45b288ef21a ("bond: support link status polling")
-Cc: stable@dpdk.org
 
 Signed-off-by: Chas Williams <chas3@att.com>
 ---
@@ -22,10 +23,10 @@
  3 files changed, 18 insertions(+), 24 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
-index e5e146540..57ef2f001 100644
+index ac084c4fd..b55752ed3 100644
 --- a/drivers/net/bonding/rte_eth_bond_api.c
 +++ b/drivers/net/bonding/rte_eth_bond_api.c
-@@ -485,8 +485,4 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
+@@ -491,8 +491,4 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
  		}
  
 -		/* Inherit eth dev link properties from first slave */
@@ -35,7 +36,7 @@
  		/* Make primary slave */
  		internals->primary_port = slave_port_id;
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 61e731a8f..c4a2b955c 100644
+index a39f72898..46ad4fe47 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
 @@ -1450,5 +1450,5 @@ bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'doc: fix a minor typo in testpmd guide' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (12 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix link status' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'ethdev: remove unused variable' " Kevin Traynor
                   ` (47 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Wei Zhao, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 578fba50052b10c7e53500138ae0476b4826913c Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Sat, 16 Feb 2019 13:13:23 +0200
Subject: [PATCH] doc: fix a minor typo in testpmd guide

[ upstream commit 56dd3ae1952cbfabd879682daa3776b1f7c84147 ]

This patch fixes a minor typo in testpmd guide.

Fixes: 3c272b280a50 ("app/testpmd: add commands for RSS queue region")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Acked-by: Wei Zhao <wei.zhao1@intel.com>
---
 doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 854af2d5f..98be85219 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -933,5 +933,5 @@ where:
 * "on"is just an enable function which server for other configuration,
   it is for all configuration about queue region from up layer,
-  at first will only keep in DPDK softwarestored in driver,
+  at first will only keep in DPDK software stored in driver,
   only after "flush on", it commit all configuration to HW.
   "off" is just clean all configuration about queue region just now,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.199324173 +0100
+++ 0015-doc-fix-a-minor-typo-in-testpmd-guide.patch	2019-04-10 14:06:07.819295274 +0100
@@ -1,12 +1,13 @@
-From 56dd3ae1952cbfabd879682daa3776b1f7c84147 Mon Sep 17 00:00:00 2001
+From 578fba50052b10c7e53500138ae0476b4826913c Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Sat, 16 Feb 2019 13:13:23 +0200
 Subject: [PATCH] doc: fix a minor typo in testpmd guide
 
+[ upstream commit 56dd3ae1952cbfabd879682daa3776b1f7c84147 ]
+
 This patch fixes a minor typo in testpmd guide.
 
 Fixes: 3c272b280a50 ("app/testpmd: add commands for RSS queue region")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Acked-by: Wei Zhao <wei.zhao1@intel.com>
@@ -15,7 +16,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-index 029148041..5de9f1be1 100644
+index 854af2d5f..98be85219 100644
 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 @@ -933,5 +933,5 @@ where:

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'ethdev: remove unused variable' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (13 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix a minor typo in testpmd guide' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/qede: fix Tx packet prepare for tunnel packets' " Kevin Traynor
                   ` (46 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From bbca79a51b9a6b318d66a7c4cd734ae40bdde92c Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 14 Feb 2019 17:29:20 +0100
Subject: [PATCH] ethdev: remove unused variable

[ upstream commit a3a4aba4b5c54e2a81daa792f49bb9743142c444 ]

When removing the old attach function, the racy variable for getting
the last port id became unused.

Fixes: c9cce42876f5 ("ethdev: remove deprecated attach/detach functions")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_ethdev/rte_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index 9d5107dce..e901ca3d1 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -49,5 +49,4 @@ int rte_eth_dev_logtype;
 static const char *MZ_RTE_ETH_DEV_DATA = "rte_eth_dev_data";
 struct rte_eth_dev rte_eth_devices[RTE_MAX_ETHPORTS];
-static uint16_t eth_dev_last_created_port;
 
 /* spinlock for eth device callbacks */
@@ -432,6 +431,4 @@ eth_dev_get(uint16_t port_id)
 	eth_dev->data = &rte_eth_dev_shared_data->data[port_id];
 
-	eth_dev_last_created_port = port_id;
-
 	return eth_dev;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.288777161 +0100
+++ 0016-ethdev-remove-unused-variable.patch	2019-04-10 14:06:07.824295159 +0100
@@ -1,13 +1,14 @@
-From a3a4aba4b5c54e2a81daa792f49bb9743142c444 Mon Sep 17 00:00:00 2001
+From bbca79a51b9a6b318d66a7c4cd734ae40bdde92c Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Thu, 14 Feb 2019 17:29:20 +0100
 Subject: [PATCH] ethdev: remove unused variable
 
+[ upstream commit a3a4aba4b5c54e2a81daa792f49bb9743142c444 ]
+
 When removing the old attach function, the racy variable for getting
 the last port id became unused.
 
 Fixes: c9cce42876f5 ("ethdev: remove deprecated attach/detach functions")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -16,7 +17,7 @@
  1 file changed, 3 deletions(-)
 
 diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
-index 0d192a24b..85c179496 100644
+index 9d5107dce..e901ca3d1 100644
 --- a/lib/librte_ethdev/rte_ethdev.c
 +++ b/lib/librte_ethdev/rte_ethdev.c
 @@ -49,5 +49,4 @@ int rte_eth_dev_logtype;

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/qede: fix Tx packet prepare for tunnel packets' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (14 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'ethdev: remove unused variable' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: avoid warning for invalid port' " Kevin Traynor
                   ` (45 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 53ce20167034c9c0b3bb8361b6f724477cc808da Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Wed, 13 Feb 2019 09:53:33 -0800
Subject: [PATCH] net/qede: fix Tx packet prepare for tunnel packets

[ upstream commit 60f9a634578320e344d25be789afc7b462450201 ]

This patch fixes a regression introduced by
commit 49d3978d5723 ("net/qede: fix Tx tunnel offload support mask")
in which qede_xmit_prep_pkts() breaks the loop for successful
check of Tunneling offload flags instead of continuing, resulting
in tx_pkt_prepare return a failure.

Fixes: 49d3978d5723 ("net/qede: fix Tx tunnel offload support mask")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/qede/qede_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index eda19b2b1..70c32e3fc 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -1820,5 +1820,5 @@ qede_xmit_prep_pkts(__rte_unused void *p_txq, struct rte_mbuf **tx_pkts,
 				    temp == PKT_TX_TUNNEL_MPLSINUDP ||
 				    temp == PKT_TX_TUNNEL_GRE)
-					break;
+					continue;
 			}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.354769356 +0100
+++ 0017-net-qede-fix-Tx-packet-prepare-for-tunnel-packets.patch	2019-04-10 14:06:07.826295113 +0100
@@ -1,8 +1,10 @@
-From 60f9a634578320e344d25be789afc7b462450201 Mon Sep 17 00:00:00 2001
+From 53ce20167034c9c0b3bb8361b6f724477cc808da Mon Sep 17 00:00:00 2001
 From: Shahed Shaikh <shshaikh@marvell.com>
 Date: Wed, 13 Feb 2019 09:53:33 -0800
 Subject: [PATCH] net/qede: fix Tx packet prepare for tunnel packets
 
+[ upstream commit 60f9a634578320e344d25be789afc7b462450201 ]
+
 This patch fixes a regression introduced by
 commit 49d3978d5723 ("net/qede: fix Tx tunnel offload support mask")
 in which qede_xmit_prep_pkts() breaks the loop for successful
@@ -10,7 +12,6 @@
 in tx_pkt_prepare return a failure.
 
 Fixes: 49d3978d5723 ("net/qede: fix Tx tunnel offload support mask")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/bonding: avoid warning for invalid port' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (15 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/qede: fix Tx packet prepare for tunnel packets' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'test/pmd_perf: fix the way to drain the " Kevin Traynor
                   ` (44 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 20ef2c48d54ec4c27e25c211f64220e3c0062eaf Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Thu, 10 Jan 2019 02:22:34 -0800
Subject: [PATCH] net/bonding: avoid warning for invalid port

[ upstream commit 90d2eb059e665738e5b775a7d0f164356acaac04 ]

For active-backup, tlb, and alb mode,
bond_ethdev_promiscuous_{enable,disable} tries to set promisc mode on
the primary port, even when there are no slaves. It is harmless, as
rte_eth_promiscuous_{enable,disable} does nothing if the port number
is invalid. But, it does print a warning message. Here is an example
from testpmd.

testpmd> create bonded device 5 0
Created new bonded device net_bonding_testpmd_0 on (port 4).
Invalid port_id=33
testpmd> set promisc 4 off
Invalid port_id=33

33 in this case is RTE_MAX_ETHPORTS + 1, the invalid primary port
number used within the bonding driver. This warning message is
harmless but can be confusing to the user. So do not try to set
promisc on a primary port when we know it does not exist (i.e. no
slaves).

Fixes: 2efb58cbab6e ("bond: new link bonding library")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 46ad4fe47..b0d191d13 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2600,4 +2600,7 @@ bond_ethdev_promiscuous_enable(struct rte_eth_dev *eth_dev)
 	case BONDING_MODE_ALB:
 	default:
+		/* Do not touch promisc when there cannot be primary ports */
+		if (internals->slave_count == 0)
+			break;
 		rte_eth_promiscuous_enable(internals->current_primary_port);
 	}
@@ -2628,4 +2631,7 @@ bond_ethdev_promiscuous_disable(struct rte_eth_dev *dev)
 	case BONDING_MODE_ALB:
 	default:
+		/* Do not touch promisc when there cannot be primary ports */
+		if (internals->slave_count == 0)
+			break;
 		rte_eth_promiscuous_disable(internals->current_primary_port);
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.433722305 +0100
+++ 0018-net-bonding-avoid-warning-for-invalid-port.patch	2019-04-10 14:06:07.832294976 +0100
@@ -1,8 +1,10 @@
-From 90d2eb059e665738e5b775a7d0f164356acaac04 Mon Sep 17 00:00:00 2001
+From 20ef2c48d54ec4c27e25c211f64220e3c0062eaf Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Thu, 10 Jan 2019 02:22:34 -0800
 Subject: [PATCH] net/bonding: avoid warning for invalid port
 
+[ upstream commit 90d2eb059e665738e5b775a7d0f164356acaac04 ]
+
 For active-backup, tlb, and alb mode,
 bond_ethdev_promiscuous_{enable,disable} tries to set promisc mode on
 the primary port, even when there are no slaves. It is harmless, as
@@ -23,7 +25,6 @@
 slaves).
 
 Fixes: 2efb58cbab6e ("bond: new link bonding library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Acked-by: Chas Williams <chas3@att.com>
@@ -32,7 +33,7 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index c4a2b955c..f65db4410 100644
+index 46ad4fe47..b0d191d13 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
 @@ -2600,4 +2600,7 @@ bond_ethdev_promiscuous_enable(struct rte_eth_dev *eth_dev)

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'test/pmd_perf: fix the way to drain the port' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (16 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: avoid warning for invalid port' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: fix in-order Tx path for split ring' " Kevin Traynor
                   ` (43 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Julien Meunier; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From eaf3a3063c9b15f45042904bf97ca5d758dd90a2 Mon Sep 17 00:00:00 2001
From: Julien Meunier <julien.meunier@nokia.com>
Date: Wed, 20 Feb 2019 23:06:08 +0200
Subject: [PATCH] test/pmd_perf: fix the way to drain the port

[ upstream commit 4c3cd4c294f883a5cf6d75425351b855d5f4be05 ]

If the port has received less than ``pkt_per_port`` packets (for
example, the port has missed some packets), the test is in an infinite
loop.

Instead of expecting a number of packet to receive, let the port to be
drained by itself. If no more packets are received, the test can
continue.

Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx")

Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 test/test/test_pmd_perf.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/test/test/test_pmd_perf.c b/test/test/test_pmd_perf.c
index f5095c87d..ed8524a17 100644
--- a/test/test/test_pmd_perf.c
+++ b/test/test/test_pmd_perf.c
@@ -494,5 +494,6 @@ main_loop(__rte_unused void *args)
 	for (i = 0; i < conf->nb_ports; i++) {
 		portid = conf->portlist[i];
-		int nb_free = pkt_per_port;
+		int nb_free = 0;
+		uint64_t timeout = 10000;
 		do { /* dry out */
 			nb_rx = rte_eth_rx_burst(portid, 0,
@@ -501,7 +502,11 @@ main_loop(__rte_unused void *args)
 			while (nb_tx < nb_rx)
 				rte_pktmbuf_free(pkts_burst[nb_tx++]);
-			nb_free -= nb_rx;
-		} while (nb_free != 0);
-		printf("free %d mbuf left in port %u\n", pkt_per_port, portid);
+			nb_free += nb_rx;
+
+			if (unlikely(nb_rx == 0))
+				timeout--;
+		} while (nb_free != pkt_per_port && timeout != 0);
+		printf("free %d (expected %d) mbuf left in port %u\n", nb_free,
+		       pkt_per_port, portid);
 	}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.501484032 +0100
+++ 0019-test-pmd_perf-fix-the-way-to-drain-the-port.patch	2019-04-10 14:06:07.834294930 +0100
@@ -1,8 +1,10 @@
-From 4c3cd4c294f883a5cf6d75425351b855d5f4be05 Mon Sep 17 00:00:00 2001
+From eaf3a3063c9b15f45042904bf97ca5d758dd90a2 Mon Sep 17 00:00:00 2001
 From: Julien Meunier <julien.meunier@nokia.com>
 Date: Wed, 20 Feb 2019 23:06:08 +0200
 Subject: [PATCH] test/pmd_perf: fix the way to drain the port
 
+[ upstream commit 4c3cd4c294f883a5cf6d75425351b855d5f4be05 ]
+
 If the port has received less than ``pkt_per_port`` packets (for
 example, the port has missed some packets), the test is in an infinite
 loop.
@@ -12,7 +14,6 @@
 continue.
 
 Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx")
-Cc: stable@dpdk.org
 
 Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/virtio: fix in-order Tx path for split ring' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (17 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'test/pmd_perf: fix the way to drain the " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix sprintf with snprintf' " Kevin Traynor
                   ` (42 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 8cc891643229266c99063c1da606e6438ac9d9bd Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Tue, 19 Feb 2019 18:59:48 +0800
Subject: [PATCH] net/virtio: fix in-order Tx path for split ring

[ upstream commit e788032aaca7193a107ca3fcfb71b0f0ba6c3db5 ]

When IN_ORDER feature is negotiated, device may just write out a
single used ring entry for a batch of buffers:

"""
Some devices always use descriptors in the same order in which they
have been made available. These devices can offer the VIRTIO_F_IN_ORDER
feature. If negotiated, this knowledge allows devices to notify the
use of a batch of buffers to the driver by only writing out a single
used ring entry with the id corresponding to the head entry of the
descriptor chain describing the last buffer in the batch.

The device then skips forward in the ring according to the size of
the batch. Accordingly, it increments the used idx by the size of
the batch.

The driver needs to look up the used id and calculate the batch size
to be able to advance to where the next used ring entry will be written
by the device.
"""

Currently, the in-order Tx path in split ring can't handle this.
With this patch, driver will allocate desc_extra[] based on the
index in avail/used ring instead of the index in descriptor table.
And driver can just relay on the used->idx written by device to
reclaim the descriptors and Tx buffers.

Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_rxtx.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index eb891433e..7e035130f 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -193,5 +193,5 @@ static void
 virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
 {
-	uint16_t i, used_idx, desc_idx = 0, last_idx;
+	uint16_t i, idx = vq->vq_used_cons_idx;
 	int16_t free_cnt = 0;
 	struct vq_desc_extra *dxp = NULL;
@@ -201,13 +201,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
 
 	for (i = 0; i < num; i++) {
-		struct vring_used_elem *uep;
-
-		used_idx = vq->vq_used_cons_idx & (vq->vq_nentries - 1);
-		uep = &vq->vq_ring.used->ring[used_idx];
-		desc_idx = (uint16_t)uep->id;
-
-		dxp = &vq->vq_descx[desc_idx];
-		vq->vq_used_cons_idx++;
-
+		dxp = &vq->vq_descx[idx++ & (vq->vq_nentries - 1)];
+		free_cnt += dxp->ndescs;
 		if (dxp->cookie != NULL) {
 			rte_pktmbuf_free(dxp->cookie);
@@ -216,10 +209,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
 	}
 
-	last_idx = desc_idx + dxp->ndescs - 1;
-	free_cnt = last_idx - vq->vq_desc_tail_idx;
-	if (free_cnt <= 0)
-		free_cnt += vq->vq_nentries;
-
-	vq_ring_free_inorder(vq, last_idx, free_cnt);
+	vq->vq_free_cnt += free_cnt;
+	vq->vq_used_cons_idx = idx;
 }
 
@@ -422,5 +411,5 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
 	while (i < num) {
 		idx = idx & (vq->vq_nentries - 1);
-		dxp = &vq->vq_descx[idx];
+		dxp = &vq->vq_descx[vq->vq_avail_idx & (vq->vq_nentries - 1)];
 		dxp->cookie = (void *)cookies[i];
 		dxp->ndescs = 1;
@@ -473,5 +462,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 	head_idx = vq->vq_desc_head_idx;
 	idx = head_idx;
-	dxp = &vq->vq_descx[idx];
+	if (in_order)
+		dxp = &vq->vq_descx[vq->vq_avail_idx & (vq->vq_nentries - 1)];
+	else
+		dxp = &vq->vq_descx[idx];
 	dxp->cookie = (void *)cookie;
 	dxp->ndescs = needed;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.565312586 +0100
+++ 0020-net-virtio-fix-in-order-Tx-path-for-split-ring.patch	2019-04-10 14:06:07.837294862 +0100
@@ -1,8 +1,10 @@
-From e788032aaca7193a107ca3fcfb71b0f0ba6c3db5 Mon Sep 17 00:00:00 2001
+From 8cc891643229266c99063c1da606e6438ac9d9bd Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Tue, 19 Feb 2019 18:59:48 +0800
 Subject: [PATCH] net/virtio: fix in-order Tx path for split ring
 
+[ upstream commit e788032aaca7193a107ca3fcfb71b0f0ba6c3db5 ]
+
 When IN_ORDER feature is negotiated, device may just write out a
 single used ring entry for a batch of buffers:
 
@@ -30,7 +32,6 @@
 reclaim the descriptors and Tx buffers.
 
 Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -39,17 +40,17 @@
  1 file changed, 10 insertions(+), 18 deletions(-)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index b07ceac6d..407f58bce 100644
+index eb891433e..7e035130f 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -280,5 +280,5 @@ static void
+@@ -193,5 +193,5 @@ static void
  virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
  {
 -	uint16_t i, used_idx, desc_idx = 0, last_idx;
 +	uint16_t i, idx = vq->vq_used_cons_idx;
  	int16_t free_cnt = 0;
  	struct vq_desc_extra *dxp = NULL;
-@@ -288,13 +288,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
+@@ -201,13 +201,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
  
  	for (i = 0; i < num; i++) {
 -		struct vring_used_elem *uep;
@@ -65,7 +66,7 @@
 +		free_cnt += dxp->ndescs;
  		if (dxp->cookie != NULL) {
  			rte_pktmbuf_free(dxp->cookie);
-@@ -303,10 +296,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
+@@ -216,10 +209,6 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num)
  	}
  
 -	last_idx = desc_idx + dxp->ndescs - 1;
@@ -78,14 +79,14 @@
 +	vq->vq_used_cons_idx = idx;
  }
  
-@@ -557,5 +546,5 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
+@@ -422,5 +411,5 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
  	while (i < num) {
  		idx = idx & (vq->vq_nentries - 1);
 -		dxp = &vq->vq_descx[idx];
 +		dxp = &vq->vq_descx[vq->vq_avail_idx & (vq->vq_nentries - 1)];
  		dxp->cookie = (void *)cookies[i];
  		dxp->ndescs = 1;
-@@ -709,5 +698,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+@@ -473,5 +462,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  	head_idx = vq->vq_desc_head_idx;
  	idx = head_idx;
 -	dxp = &vq->vq_descx[idx];

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'vhost: fix sprintf with snprintf' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (18 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: fix in-order Tx path for split ring' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix build of shared library with libbsd' " Kevin Traynor
                   ` (41 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Pallantla Poornima; +Cc: Maxime Coquelin, Tiwei Bie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 0eadea12338d0b5db98b87e59507d2a8132673c7 Mon Sep 17 00:00:00 2001
From: Pallantla Poornima <pallantlax.poornima@intel.com>
Date: Mon, 4 Feb 2019 07:28:06 +0000
Subject: [PATCH] vhost: fix sprintf with snprintf

[ upstream commit 7c7b7562252742a6c298de64df486873336fd058 ]

sprintf function is not secure as it doesn't check the length of string.
More secure function snprintf is used.

Fixes: d7280c9fffcb ("vhost: support selective datapath")

Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
---
 lib/librte_vhost/vdpa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_vhost/vdpa.c b/lib/librte_vhost/vdpa.c
index e7d849ee0..ae721e06b 100644
--- a/lib/librte_vhost/vdpa.c
+++ b/lib/librte_vhost/vdpa.c
@@ -67,5 +67,5 @@ rte_vdpa_register_device(struct rte_vdpa_dev_addr *addr,
 		return -1;
 
-	sprintf(device_name, "vdpa-dev-%d", i);
+	snprintf(device_name, sizeof(device_name), "vdpa-dev-%d", i);
 	dev = rte_zmalloc(device_name, sizeof(struct rte_vdpa_device),
 			RTE_CACHE_LINE_SIZE);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.636535550 +0100
+++ 0021-vhost-fix-sprintf-with-snprintf.patch	2019-04-10 14:06:07.837294862 +0100
@@ -1,13 +1,14 @@
-From 7c7b7562252742a6c298de64df486873336fd058 Mon Sep 17 00:00:00 2001
+From 0eadea12338d0b5db98b87e59507d2a8132673c7 Mon Sep 17 00:00:00 2001
 From: Pallantla Poornima <pallantlax.poornima@intel.com>
 Date: Mon, 4 Feb 2019 07:28:06 +0000
 Subject: [PATCH] vhost: fix sprintf with snprintf
 
+[ upstream commit 7c7b7562252742a6c298de64df486873336fd058 ]
+
 sprintf function is not secure as it doesn't check the length of string.
 More secure function snprintf is used.
 
 Fixes: d7280c9fffcb ("vhost: support selective datapath")
-Cc: stable@dpdk.org
 
 Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -17,7 +18,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/librte_vhost/vdpa.c b/lib/librte_vhost/vdpa.c
-index 1ff9b00b8..321e11f17 100644
+index e7d849ee0..ae721e06b 100644
 --- a/lib/librte_vhost/vdpa.c
 +++ b/lib/librte_vhost/vdpa.c
 @@ -67,5 +67,5 @@ rte_vdpa_register_device(struct rte_vdpa_dev_addr *addr,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'mk: fix build of shared library with libbsd' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (19 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix sprintf with snprintf' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: add libelf dependency to build test' " Kevin Traynor
                   ` (40 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 8e843c6c7bea789291b100b02226748dd8c9321b Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 12 Feb 2019 23:07:05 +0100
Subject: [PATCH] mk: fix build of shared library with libbsd

[ upstream commit fdb3798d6f870f79d5fa40b2c3425e8285dd4e44 ]

When building DPDK with "make" and options
	CONFIG_RTE_USE_LIBBSD=y
and
	CONFIG_RTE_BUILD_SHARED_LIB=y
libbsd was not linked, resulting in compilation errors:
	undefined reference to `strlcpy'

The link option -lbsd is added in a common place for both
Linux apps and libs.
It is used in app linkage via EXECENV_LDLIBS,
and in lib linkage via the added variable EXECENV_LDLIBS-y.

Fixes: 5364de644a4b ("eal: support strlcpy function")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 mk/exec-env/linuxapp/rte.vars.mk | 6 ++++++
 mk/rte.app.mk                    | 3 ---
 mk/rte.lib.mk                    | 2 ++
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/mk/exec-env/linuxapp/rte.vars.mk b/mk/exec-env/linuxapp/rte.vars.mk
index 3129edc8c..57ee82150 100644
--- a/mk/exec-env/linuxapp/rte.vars.mk
+++ b/mk/exec-env/linuxapp/rte.vars.mk
@@ -25,4 +25,6 @@ EXECENV_LDLIBS += -lgcc_s
 endif
 
+EXECENV_LDLIBS-$(CONFIG_RTE_USE_LIBBSD) += -lbsd
+
 # force applications to link with gcc/icc instead of using ld
 LINK_USING_CC := 1
@@ -33,3 +35,7 @@ EXECENV_LDFLAGS += -export-dynamic
 EXECENV_LDLIBS  += -ldl
 
+# EXECENV_LDLIBS-y applies to lib.so and app linking
+# while EXECENV_LDLIBS applies only to app linking.
+EXECENV_LDLIBS += $(EXECENV_LDLIBS-y)
+
 export EXECENV_CFLAGS EXECENV_LDFLAGS EXECENV_ASFLAGS EXECENV_LDLIBS
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 5699d979d..c539bb9c3 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -304,7 +304,4 @@ ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lnuma
 endif
-ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_USE_LIBBSD),yy)
-_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lbsd
-endif
 _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED)          += -lm
 _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED)          += -lrt
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index c696a2174..4df8849a0 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -36,4 +36,6 @@ _INSTALL = $(INSTALL-FILES-y) $(RTE_OUTPUT)/lib/$(LIB)
 _CLEAN = doclean
 
+LDLIBS += $(EXECENV_LDLIBS-y)
+
 .PHONY: all
 all: install
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.688376126 +0100
+++ 0022-mk-fix-build-of-shared-library-with-libbsd.patch	2019-04-10 14:06:07.840294793 +0100
@@ -1,8 +1,10 @@
-From fdb3798d6f870f79d5fa40b2c3425e8285dd4e44 Mon Sep 17 00:00:00 2001
+From 8e843c6c7bea789291b100b02226748dd8c9321b Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Tue, 12 Feb 2019 23:07:05 +0100
 Subject: [PATCH] mk: fix build of shared library with libbsd
 
+[ upstream commit fdb3798d6f870f79d5fa40b2c3425e8285dd4e44 ]
+
 When building DPDK with "make" and options
 	CONFIG_RTE_USE_LIBBSD=y
 and
@@ -16,7 +18,6 @@
 and in lib linkage via the added variable EXECENV_LDLIBS-y.
 
 Fixes: 5364de644a4b ("eal: support strlcpy function")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 ---
@@ -45,10 +46,10 @@
 +
  export EXECENV_CFLAGS EXECENV_LDFLAGS EXECENV_ASFLAGS EXECENV_LDLIBS
 diff --git a/mk/rte.app.mk b/mk/rte.app.mk
-index 8a4f0f4e5..d0ab942d5 100644
+index 5699d979d..c539bb9c3 100644
 --- a/mk/rte.app.mk
 +++ b/mk/rte.app.mk
-@@ -310,7 +310,4 @@ ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy)
+@@ -304,7 +304,4 @@ ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy)
  _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lnuma
  endif
 -ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_USE_LIBBSD),yy)

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'devtools: add libelf dependency to build test' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (20 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix build of shared library with libbsd' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: test build of zlib PMD' " Kevin Traynor
                   ` (39 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From e3ae4e165d1229fe58dd85dc46c576d7a993b43f Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 12 Feb 2019 23:10:39 +0100
Subject: [PATCH] devtools: add libelf dependency to build test

[ upstream commit 814ad2a9bc0bbdbad9e4ca59728f9c0323edc513 ]

The option CONFIG_RTE_LIBRTE_BPF_ELF was never enabled
with test-build.sh.
It is fixed with the environment variable DPDK_DEP_ELF.

Fixes: 5dba93ae5f2d ("bpf: add ability to load eBPF program from ELF object file")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/test-build.sh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/devtools/test-build.sh b/devtools/test-build.sh
index 42f4ad003..ace52a776 100755
--- a/devtools/test-build.sh
+++ b/devtools/test-build.sh
@@ -10,4 +10,5 @@ default_path=$PATH
 # - DPDK_DEP_ARCHIVE
 # - DPDK_DEP_CFLAGS
+# - DPDK_DEP_ELF (y/[n])
 # - DPDK_DEP_ISAL (y/[n])
 # - DPDK_DEP_JSON (y/[n])
@@ -97,4 +98,5 @@ reset_env ()
 	unset DPDK_DEP_ARCHIVE
 	unset DPDK_DEP_CFLAGS
+	unset DPDK_DEP_ELF
 	unset DPDK_DEP_ISAL
 	unset DPDK_DEP_JSON
@@ -187,4 +189,6 @@ config () # <directory> <target> <options>
 		test -z "$LIBMUSDK_PATH" || \
 		sed -ri         's,(MVNETA_PMD=)n,\1y,' $1/.config
+		test "$DPDK_DEP_ELF" != y || \
+		sed -ri            's,(BPF_ELF=)n,\1y,' $1/.config
 		test -z "$DPDK_DEP_JSON" || \
 		sed -ri          's,(TELEMETRY=)n,\1y,' $1/.config
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.753080892 +0100
+++ 0023-devtools-add-libelf-dependency-to-build-test.patch	2019-04-10 14:06:07.842294747 +0100
@@ -1,14 +1,15 @@
-From 814ad2a9bc0bbdbad9e4ca59728f9c0323edc513 Mon Sep 17 00:00:00 2001
+From e3ae4e165d1229fe58dd85dc46c576d7a993b43f Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Tue, 12 Feb 2019 23:10:39 +0100
 Subject: [PATCH] devtools: add libelf dependency to build test
 
+[ upstream commit 814ad2a9bc0bbdbad9e4ca59728f9c0323edc513 ]
+
 The option CONFIG_RTE_LIBRTE_BPF_ELF was never enabled
 with test-build.sh.
 It is fixed with the environment variable DPDK_DEP_ELF.
 
 Fixes: 5dba93ae5f2d ("bpf: add ability to load eBPF program from ELF object file")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'devtools: test build of zlib PMD' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (21 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: add libelf dependency to build test' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix test of some build options' " Kevin Traynor
                   ` (38 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 5edd81930fa4d48664d8b143b3a218be9e4d4e1a Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 12 Feb 2019 23:18:54 +0100
Subject: [PATCH] devtools: test build of zlib PMD

[ upstream commit fbe71342344bcea09b03cb3b9760b38a1a515002 ]

The PMD zlib was not enabled in devtools/test-build.sh.
It is fixed by using the environment variable DPDK_DEP_ZLIB.

Fixes: 0c4e4c16b004 ("compress/zlib: introduce zlib PMD")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/test-build.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/devtools/test-build.sh b/devtools/test-build.sh
index ace52a776..0511ae6d0 100755
--- a/devtools/test-build.sh
+++ b/devtools/test-build.sh
@@ -159,4 +159,6 @@ config () # <directory> <target> <options>
 		sed -ri          's,(BNX2X_PMD=)n,\1y,' $1/.config
 		test "$DPDK_DEP_ZLIB" != y || \
+		sed -ri           's,(PMD_ZLIB=)n,\1y,' $1/.config
+		test "$DPDK_DEP_ZLIB" != y || \
 		sed -ri   's,(COMPRESSDEV_TEST=)n,\1y,' $1/.config
 		test "$DPDK_DEP_PCAP" != y || \
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.819852936 +0100
+++ 0024-devtools-test-build-of-zlib-PMD.patch	2019-04-10 14:06:07.842294747 +0100
@@ -1,13 +1,14 @@
-From fbe71342344bcea09b03cb3b9760b38a1a515002 Mon Sep 17 00:00:00 2001
+From 5edd81930fa4d48664d8b143b3a218be9e4d4e1a Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Tue, 12 Feb 2019 23:18:54 +0100
 Subject: [PATCH] devtools: test build of zlib PMD
 
+[ upstream commit fbe71342344bcea09b03cb3b9760b38a1a515002 ]
+
 The PMD zlib was not enabled in devtools/test-build.sh.
 It is fixed by using the environment variable DPDK_DEP_ZLIB.
 
 Fixes: 0c4e4c16b004 ("compress/zlib: introduce zlib PMD")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'devtools: fix test of some build options' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (22 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: test build of zlib PMD' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'test/compress: fix missing header include' " Kevin Traynor
                   ` (37 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From d8405f091dbde1fa11f05bf6960b8e15ad20f2d5 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 12 Feb 2019 23:20:37 +0100
Subject: [PATCH] devtools: fix test of some build options

[ upstream commit 8fdac86abd2fe5a5a7fa332066b2ceeffca52d37 ]

CONFIG_RTE_LIBRTE_PMD_ISAL was not tested because of a typo.

CONFIG_RTE_LIBRTE_PMD_QAT_SYM was not tested since it has been
introduced and made CONFIG_RTE_LIBRTE_PMD_QAT enabled by default.

While at it, DPDK_DEP_JSON is now checked for "y",
as other DPDK_DEP_* variables, instead of non-empty.

Fixes: 3c32e89f68e1 ("compress/isal: add skeleton ISA-L compression PMD")
Fixes: 7a34c2155716 ("compress/qat: add empty driver")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 devtools/test-build.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/devtools/test-build.sh b/devtools/test-build.sh
index 0511ae6d0..d37b121ca 100755
--- a/devtools/test-build.sh
+++ b/devtools/test-build.sh
@@ -151,5 +151,5 @@ config () # <directory> <target> <options>
 		sed -ri       's,(RESOURCE_TAR=)n,\1y,' $1/.config
 		test "$DPDK_DEP_ISAL" != y || \
-		sed -ri           's,(ISAL_PMD=)n,\1y,' $1/.config
+		sed -ri           's,(PMD_ISAL=)n,\1y,' $1/.config
 		test "$DPDK_DEP_MLX" != y || \
 		sed -ri           's,(MLX._PMD=)n,\1y,' $1/.config
@@ -181,5 +181,5 @@ config () # <directory> <target> <options>
 		sed -ri        's,(PMD_OPENSSL=)n,\1y,' $1/.config
 		test "$DPDK_DEP_SSL" != y || \
-		sed -ri            's,(PMD_QAT=)n,\1y,' $1/.config
+		sed -ri            's,(QAT_SYM=)n,\1y,' $1/.config
 		test -z "$FLEXRAN_SDK" || \
 		sed -ri     's,(BBDEV_TURBO_SW=)n,\1y,' $1/.config
@@ -193,5 +193,5 @@ config () # <directory> <target> <options>
 		test "$DPDK_DEP_ELF" != y || \
 		sed -ri            's,(BPF_ELF=)n,\1y,' $1/.config
-		test -z "$DPDK_DEP_JSON" || \
+		test "$DPDK_DEP_JSON" != y || \
 		sed -ri          's,(TELEMETRY=)n,\1y,' $1/.config
 		build_config_hook $1 $2 $3
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.892408075 +0100
+++ 0025-devtools-fix-test-of-some-build-options.patch	2019-04-10 14:06:07.842294747 +0100
@@ -1,8 +1,10 @@
-From 8fdac86abd2fe5a5a7fa332066b2ceeffca52d37 Mon Sep 17 00:00:00 2001
+From d8405f091dbde1fa11f05bf6960b8e15ad20f2d5 Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Tue, 12 Feb 2019 23:20:37 +0100
 Subject: [PATCH] devtools: fix test of some build options
 
+[ upstream commit 8fdac86abd2fe5a5a7fa332066b2ceeffca52d37 ]
+
 CONFIG_RTE_LIBRTE_PMD_ISAL was not tested because of a typo.
 
 CONFIG_RTE_LIBRTE_PMD_QAT_SYM was not tested since it has been
@@ -13,7 +15,6 @@
 
 Fixes: 3c32e89f68e1 ("compress/isal: add skeleton ISA-L compression PMD")
 Fixes: 7a34c2155716 ("compress/qat: add empty driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'test/compress: fix missing header include' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (23 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix test of some build options' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ip_pipeline: disable build when no epoll' " Kevin Traynor
                   ` (36 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 192f77c156fa7390aa47c4de31c969dcb7814799 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 25 Feb 2019 15:23:02 +0000
Subject: [PATCH] test/compress: fix missing header include

[ upstream commit 1fd0fa258b3eacf94b3c30c8ceb42c317572cd05 ]

usleep() is defined in unistd.h, which is missing from include list
in test_compressdev.c, causing compiler errors on FreeBSD.

Fixes: b06aa643cac4 ("test/compress: add initial unit tests")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 test/test/test_compressdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/test/test_compressdev.c b/test/test/test_compressdev.c
index 5d5e5190b..03334225d 100644
--- a/test/test/test_compressdev.c
+++ b/test/test/test_compressdev.c
@@ -5,4 +5,5 @@
 #include <zlib.h>
 #include <math.h>
+#include <unistd.h>
 
 #include <rte_cycles.h>
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:09.950515846 +0100
+++ 0026-test-compress-fix-missing-header-include.patch	2019-04-10 14:06:07.844294701 +0100
@@ -1,23 +1,24 @@
-From 1fd0fa258b3eacf94b3c30c8ceb42c317572cd05 Mon Sep 17 00:00:00 2001
+From 192f77c156fa7390aa47c4de31c969dcb7814799 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 25 Feb 2019 15:23:02 +0000
 Subject: [PATCH] test/compress: fix missing header include
 
+[ upstream commit 1fd0fa258b3eacf94b3c30c8ceb42c317572cd05 ]
+
 usleep() is defined in unistd.h, which is missing from include list
 in test_compressdev.c, causing compiler errors on FreeBSD.
 
 Fixes: b06aa643cac4 ("test/compress: add initial unit tests")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 ---
- app/test/test_compressdev.c | 1 +
+ test/test/test_compressdev.c | 1 +
  1 file changed, 1 insertion(+)
 
-diff --git a/app/test/test_compressdev.c b/app/test/test_compressdev.c
-index e8476edd2..13cf26c9a 100644
---- a/app/test/test_compressdev.c
-+++ b/app/test/test_compressdev.c
+diff --git a/test/test/test_compressdev.c b/test/test/test_compressdev.c
+index 5d5e5190b..03334225d 100644
+--- a/test/test/test_compressdev.c
++++ b/test/test/test_compressdev.c
 @@ -5,4 +5,5 @@
  #include <zlib.h>
  #include <math.h>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'examples/ip_pipeline: disable build when no epoll' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (24 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'test/compress: fix missing header include' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/vhost_crypto: fix dependency on vhost library' " Kevin Traynor
                   ` (35 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 8928f449290dc19e169bbc2f6f94117f465499eb Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 25 Feb 2019 15:23:03 +0000
Subject: [PATCH] examples/ip_pipeline: disable build when no epoll

[ upstream commit 0c56257a61ec272926c2560b60d078ba266f8564 ]

The ip_pipeline example requires the epoll.h header from linux, so
disable building the example if the header cannot be found.

Fixes: 4bbf8e30aa5e ("examples/ip_pipeline: add CLI interface")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 examples/ip_pipeline/meson.build | 1 +
 1 file changed, 1 insertion(+)

diff --git a/examples/ip_pipeline/meson.build b/examples/ip_pipeline/meson.build
index 5e5fe6479..664223c97 100644
--- a/examples/ip_pipeline/meson.build
+++ b/examples/ip_pipeline/meson.build
@@ -7,4 +7,5 @@
 # DPDK instance, use 'make'
 
+build = cc.has_header('sys/epoll.h')
 deps += ['pipeline', 'bus_pci']
 allow_experimental_apis = true
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.015767778 +0100
+++ 0027-examples-ip_pipeline-disable-build-when-no-epoll.patch	2019-04-10 14:06:07.845294678 +0100
@@ -1,13 +1,14 @@
-From 0c56257a61ec272926c2560b60d078ba266f8564 Mon Sep 17 00:00:00 2001
+From 8928f449290dc19e169bbc2f6f94117f465499eb Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 25 Feb 2019 15:23:03 +0000
 Subject: [PATCH] examples/ip_pipeline: disable build when no epoll
 
+[ upstream commit 0c56257a61ec272926c2560b60d078ba266f8564 ]
+
 The ip_pipeline example requires the epoll.h header from linux, so
 disable building the example if the header cannot be found.
 
 Fixes: 4bbf8e30aa5e ("examples/ip_pipeline: add CLI interface")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'examples/vhost_crypto: fix dependency on vhost library' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (25 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ip_pipeline: disable build when no epoll' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix build test on FreeBSD' " Kevin Traynor
                   ` (34 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 06c12966900f74f20af281f17052b05352cd7750 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 25 Feb 2019 15:23:04 +0000
Subject: [PATCH] examples/vhost_crypto: fix dependency on vhost library

[ upstream commit 27a559cfe1c72852fc6ea9f33a151896baeae743 ]

The vhost_crypto example app can't be used without the DPDK vhost
library, so disable the build of the example if the lib hasn't been
built.

Fixes: f5188211c721 ("examples/vhost_crypto: add sample application")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 examples/vhost_crypto/meson.build | 1 +
 1 file changed, 1 insertion(+)

diff --git a/examples/vhost_crypto/meson.build b/examples/vhost_crypto/meson.build
index daf19fb87..8e9860f03 100644
--- a/examples/vhost_crypto/meson.build
+++ b/examples/vhost_crypto/meson.build
@@ -7,4 +7,5 @@
 # DPDK instance, use 'make'
 
+build = dpdk_conf.has('RTE_LIBRTE_VHOST')
 allow_experimental_apis = true
 deps += ['vhost', 'cryptodev']
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.078865339 +0100
+++ 0028-examples-vhost_crypto-fix-dependency-on-vhost-librar.patch	2019-04-10 14:06:07.845294678 +0100
@@ -1,14 +1,15 @@
-From 27a559cfe1c72852fc6ea9f33a151896baeae743 Mon Sep 17 00:00:00 2001
+From 06c12966900f74f20af281f17052b05352cd7750 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 25 Feb 2019 15:23:04 +0000
 Subject: [PATCH] examples/vhost_crypto: fix dependency on vhost library
 
+[ upstream commit 27a559cfe1c72852fc6ea9f33a151896baeae743 ]
+
 The vhost_crypto example app can't be used without the DPDK vhost
 library, so disable the build of the example if the lib hasn't been
 built.
 
 Fixes: f5188211c721 ("examples/vhost_crypto: add sample application")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'devtools: fix build test on FreeBSD' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (26 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/vhost_crypto: fix dependency on vhost library' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx: prefix private structure' " Kevin Traynor
                   ` (33 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 0f36c287928dda7c24cce24e544a2a2180ff83c2 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 25 Feb 2019 15:40:01 +0000
Subject: [PATCH] devtools: fix build test on FreeBSD

[ upstream commit 3655096fb1dee33ce1e1f63da7b8b3b0c3aa3c2d ]

readlink option "-m" is not supported on FreeBSD (checked on BSD 11),
so change to the largely-equivalent "-f" flag.

Fixes: a55277a788df ("devtools: add test script for meson builds")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 3edc805f6..e59474d53 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -8,5 +8,5 @@
 # Run ninja after configuration is done.
 
-srcdir=$(dirname $(readlink -m $0))/..
+srcdir=$(dirname $(readlink -f $0))/..
 MESON=${MESON:-meson}
 use_shared="--default-library=shared"
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.142209639 +0100
+++ 0029-devtools-fix-build-test-on-FreeBSD.patch	2019-04-10 14:06:07.845294678 +0100
@@ -1,13 +1,14 @@
-From 3655096fb1dee33ce1e1f63da7b8b3b0c3aa3c2d Mon Sep 17 00:00:00 2001
+From 0f36c287928dda7c24cce24e544a2a2180ff83c2 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 25 Feb 2019 15:40:01 +0000
 Subject: [PATCH] devtools: fix build test on FreeBSD
 
+[ upstream commit 3655096fb1dee33ce1e1f63da7b8b3b0c3aa3c2d ]
+
 readlink option "-m" is not supported on FreeBSD (checked on BSD 11),
 so change to the largely-equivalent "-f" flag.
 
 Fixes: a55277a788df ("devtools: add test script for meson builds")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 ---

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/mlx: prefix private structure' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (27 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix build test on FreeBSD' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/tap: fix multi-process request' " Kevin Traynor
                   ` (32 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 7f49e70ceda3e8245753425f9ee474793152f906 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 21 Feb 2019 10:29:14 +0100
Subject: [PATCH] net/mlx: prefix private structure

[ upstream commit dbeba4cf18a5e1d9f7aaa284457bf15c351eb965 ]

The private structure stored in rte_eth_dev->data->dev_private
was named "struct priv".
In order to ease code browsing, the structure is renamed
"struct mlx[45]_priv".

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx4/mlx4.c            | 10 ++---
 drivers/net/mlx4/mlx4.h            | 21 +++++-----
 drivers/net/mlx4/mlx4_ethdev.c     | 38 +++++++++---------
 drivers/net/mlx4/mlx4_flow.c       | 28 +++++++-------
 drivers/net/mlx4/mlx4_flow.h       |  6 +--
 drivers/net/mlx4/mlx4_intr.c       | 20 +++++-----
 drivers/net/mlx4/mlx4_mr.c         | 30 +++++++--------
 drivers/net/mlx4/mlx4_rxq.c        | 20 +++++-----
 drivers/net/mlx4/mlx4_rxtx.h       | 18 ++++-----
 drivers/net/mlx4/mlx4_txq.c        |  6 +--
 drivers/net/mlx5/mlx5.c            | 14 +++----
 drivers/net/mlx5/mlx5.h            |  7 ++--
 drivers/net/mlx5/mlx5_ethdev.c     | 28 +++++++-------
 drivers/net/mlx5/mlx5_flow.c       | 45 +++++++++++-----------
 drivers/net/mlx5/mlx5_flow_dv.c    |  8 ++--
 drivers/net/mlx5/mlx5_flow_tcf.c   |  8 ++--
 drivers/net/mlx5/mlx5_flow_verbs.c |  8 ++--
 drivers/net/mlx5/mlx5_mac.c        |  4 +-
 drivers/net/mlx5/mlx5_mr.c         | 30 +++++++--------
 drivers/net/mlx5/mlx5_nl.c         | 12 +++---
 drivers/net/mlx5/mlx5_rss.c        | 10 ++---
 drivers/net/mlx5/mlx5_rxmode.c     |  8 ++--
 drivers/net/mlx5/mlx5_rxq.c        | 62 +++++++++++++++---------------
 drivers/net/mlx5/mlx5_rxtx.c       |  2 +-
 drivers/net/mlx5/mlx5_rxtx.h       |  6 +--
 drivers/net/mlx5/mlx5_rxtx_vec.c   |  4 +-
 drivers/net/mlx5/mlx5_socket.c     |  8 ++--
 drivers/net/mlx5/mlx5_stats.c      | 14 +++----
 drivers/net/mlx5/mlx5_trigger.c    | 16 ++++----
 drivers/net/mlx5/mlx5_txq.c        | 26 ++++++-------
 drivers/net/mlx5/mlx5_vlan.c       |  6 +--
 31 files changed, 263 insertions(+), 260 deletions(-)

diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 7f07b8dc0..8aa116cb7 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -82,5 +82,5 @@ static int
 mlx4_dev_configure(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow_error error;
 	int ret;
@@ -118,5 +118,5 @@ static int
 mlx4_dev_start(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow_error error;
 	int ret;
@@ -170,5 +170,5 @@ static void
 mlx4_dev_stop(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	if (!priv->started)
@@ -195,5 +195,5 @@ static void
 mlx4_dev_close(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
@@ -600,5 +600,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 		struct ibv_port_attr port_attr;
 		struct ibv_pd *pd = NULL;
-		struct priv *priv = NULL;
+		struct mlx4_priv *priv = NULL;
 		struct rte_eth_dev *eth_dev = NULL;
 		struct ether_addr mac;
diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
index e6fb934fa..180e5186c 100644
--- a/drivers/net/mlx4/mlx4.h
+++ b/drivers/net/mlx4/mlx4.h
@@ -73,10 +73,11 @@ struct txq;
 struct rte_flow;
 
-LIST_HEAD(mlx4_dev_list, priv);
+LIST_HEAD(mlx4_dev_list, mlx4_priv);
 LIST_HEAD(mlx4_mr_list, mlx4_mr);
 
 /** Private data structure. */
-struct priv {
-	LIST_ENTRY(priv) mem_event_cb; /* Called by memory event callback. */
+struct mlx4_priv {
+	LIST_ENTRY(mlx4_priv) mem_event_cb;
+	/**< Called by memory event callback. */
 	struct rte_eth_dev *dev; /**< Ethernet device. */
 	struct ibv_context *ctx; /**< Verbs context. */
@@ -115,7 +116,7 @@ struct priv {
 /* mlx4_ethdev.c */
 
-int mlx4_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE]);
-int mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]);
-int mlx4_mtu_get(struct priv *priv, uint16_t *mtu);
+int mlx4_get_ifname(const struct mlx4_priv *priv, char (*ifname)[IF_NAMESIZE]);
+int mlx4_get_mac(struct mlx4_priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]);
+int mlx4_mtu_get(struct mlx4_priv *priv, uint16_t *mtu);
 int mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
 int mlx4_dev_set_link_down(struct rte_eth_dev *dev);
@@ -144,8 +145,8 @@ int mlx4_is_removed(struct rte_eth_dev *dev);
 /* mlx4_intr.c */
 
-int mlx4_intr_uninstall(struct priv *priv);
-int mlx4_intr_install(struct priv *priv);
-int mlx4_rxq_intr_enable(struct priv *priv);
-void mlx4_rxq_intr_disable(struct priv *priv);
+int mlx4_intr_uninstall(struct mlx4_priv *priv);
+int mlx4_intr_install(struct mlx4_priv *priv);
+int mlx4_rxq_intr_enable(struct mlx4_priv *priv);
+void mlx4_rxq_intr_disable(struct mlx4_priv *priv);
 int mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx);
 int mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx);
diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c
index 195a1b6df..084b24e49 100644
--- a/drivers/net/mlx4/mlx4_ethdev.c
+++ b/drivers/net/mlx4/mlx4_ethdev.c
@@ -60,5 +60,5 @@
  */
 int
-mlx4_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE])
+mlx4_get_ifname(const struct mlx4_priv *priv, char (*ifname)[IF_NAMESIZE])
 {
 	DIR *dir;
@@ -147,5 +147,5 @@ try_dev_id:
  */
 static int
-mlx4_ifreq(const struct priv *priv, int req, struct ifreq *ifr)
+mlx4_ifreq(const struct mlx4_priv *priv, int req, struct ifreq *ifr)
 {
 	int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
@@ -177,5 +177,5 @@ mlx4_ifreq(const struct priv *priv, int req, struct ifreq *ifr)
  */
 int
-mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN])
+mlx4_get_mac(struct mlx4_priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN])
 {
 	struct ifreq request;
@@ -200,5 +200,5 @@ mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN])
  */
 int
-mlx4_mtu_get(struct priv *priv, uint16_t *mtu)
+mlx4_mtu_get(struct mlx4_priv *priv, uint16_t *mtu)
 {
 	struct ifreq request;
@@ -225,5 +225,5 @@ int
 mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct ifreq request = { .ifr_mtu = mtu, };
 	int ret = mlx4_ifreq(priv, SIOCSIFMTU, &request);
@@ -249,5 +249,5 @@ mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
  */
 static int
-mlx4_set_flags(struct priv *priv, unsigned int keep, unsigned int flags)
+mlx4_set_flags(struct mlx4_priv *priv, unsigned int keep, unsigned int flags)
 {
 	struct ifreq request;
@@ -273,5 +273,5 @@ mlx4_set_flags(struct priv *priv, unsigned int keep, unsigned int flags)
  */
 static int
-mlx4_dev_set_link(struct priv *priv, int up)
+mlx4_dev_set_link(struct mlx4_priv *priv, int up)
 {
 	int err;
@@ -301,5 +301,5 @@ int
 mlx4_dev_set_link_down(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	return mlx4_dev_set_link(priv, 0);
@@ -318,5 +318,5 @@ int
 mlx4_dev_set_link_up(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	return mlx4_dev_set_link(priv, 1);
@@ -346,5 +346,5 @@ static void
 mlx4_rxmode_toggle(struct rte_eth_dev *dev, enum rxmode_toggle toggle)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	const char *mode;
 	struct rte_flow_error error;
@@ -431,5 +431,5 @@ void
 mlx4_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow_error error;
 
@@ -467,5 +467,5 @@ mlx4_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr,
 		  uint32_t index, uint32_t vmdq)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow_error error;
 	int ret;
@@ -504,5 +504,5 @@ int
 mlx4_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow_error error;
 	unsigned int vidx = vlan_id / 64;
@@ -558,5 +558,5 @@ void
 mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	unsigned int max;
 	char ifname[IF_NAMESIZE];
@@ -689,5 +689,5 @@ int
 mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete)
 {
-	const struct priv *priv = dev->data->dev_private;
+	const struct mlx4_priv *priv = dev->data->dev_private;
 	struct ethtool_cmd edata = {
 		.cmd = ETHTOOL_GSET,
@@ -742,5 +742,5 @@ int
 mlx4_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct ifreq ifr;
 	struct ethtool_pauseparam ethpause = {
@@ -786,5 +786,5 @@ int
 mlx4_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct ifreq ifr;
 	struct ethtool_pauseparam ethpause = {
@@ -854,5 +854,5 @@ mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev)
 		RTE_PTYPE_UNKNOWN
 	};
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	if (dev->rx_pkt_burst == mlx4_rx_burst) {
@@ -878,5 +878,5 @@ mlx4_is_removed(struct rte_eth_dev *dev)
 {
 	struct ibv_device_attr device_attr;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	if (mlx4_glue->query_device(priv->ctx, &device_attr) == EIO)
diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index b40e7e5c3..f16037d1d 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -72,5 +72,5 @@ struct mlx4_drop {
 	struct ibv_qp *qp; /**< QP target. */
 	struct ibv_cq *cq; /**< CQ associated with above QP. */
-	struct priv *priv; /**< Back pointer to private data. */
+	struct mlx4_priv *priv; /**< Back pointer to private data. */
 	uint32_t refcnt; /**< Reference count. */
 };
@@ -96,5 +96,5 @@ struct mlx4_drop {
  */
 uint64_t
-mlx4_conv_rss_types(struct priv *priv, uint64_t types, int verbs_to_dpdk)
+mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types, int verbs_to_dpdk)
 {
 	enum {
@@ -658,5 +658,5 @@ static const struct mlx4_flow_proc_item mlx4_flow_proc_item_list[] = {
  */
 static int
-mlx4_flow_prepare(struct priv *priv,
+mlx4_flow_prepare(struct mlx4_priv *priv,
 		  const struct rte_flow_attr *attr,
 		  const struct rte_flow_item pattern[],
@@ -929,5 +929,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
 		   struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL);
@@ -945,5 +945,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
  */
 static struct mlx4_drop *
-mlx4_drop_get(struct priv *priv)
+mlx4_drop_get(struct mlx4_priv *priv)
 {
 	struct mlx4_drop *drop = priv->drop;
@@ -1021,5 +1021,5 @@ mlx4_drop_put(struct mlx4_drop *drop)
  */
 static int
-mlx4_flow_toggle(struct priv *priv,
+mlx4_flow_toggle(struct mlx4_priv *priv,
 		 struct rte_flow *flow,
 		 int enable,
@@ -1137,5 +1137,5 @@ mlx4_flow_create(struct rte_eth_dev *dev,
 		 struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow;
 	int err;
@@ -1178,5 +1178,5 @@ mlx4_flow_isolate(struct rte_eth_dev *dev,
 		  struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 
 	if (!!enable == !!priv->isolated)
@@ -1201,5 +1201,5 @@ mlx4_flow_destroy(struct rte_eth_dev *dev,
 		  struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	int err = mlx4_flow_toggle(priv, flow, 0, error);
 
@@ -1225,5 +1225,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
 		struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow = LIST_FIRST(&priv->flows);
 
@@ -1250,5 +1250,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
  */
 static uint16_t
-mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
+mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan)
 {
 	while (vlan < 4096) {
@@ -1290,5 +1290,5 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
  */
 static int
-mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error)
+mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
 {
 	struct rte_flow_attr attr = {
@@ -1522,5 +1522,5 @@ error:
  */
 int
-mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error)
+mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error)
 {
 	struct rte_flow *flow;
@@ -1564,5 +1564,5 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error)
  */
 void
-mlx4_flow_clean(struct priv *priv)
+mlx4_flow_clean(struct mlx4_priv *priv)
 {
 	struct rte_flow *flow;
diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
index 2917ebe95..03a4bd05e 100644
--- a/drivers/net/mlx4/mlx4_flow.h
+++ b/drivers/net/mlx4/mlx4_flow.h
@@ -49,8 +49,8 @@ struct rte_flow {
 /* mlx4_flow.c */
 
-uint64_t mlx4_conv_rss_types(struct priv *priv, uint64_t types,
+uint64_t mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types,
 			     int verbs_to_dpdk);
-int mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error);
-void mlx4_flow_clean(struct priv *priv);
+int mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error);
+void mlx4_flow_clean(struct mlx4_priv *priv);
 int mlx4_filter_ctrl(struct rte_eth_dev *dev,
 		     enum rte_filter_type filter_type,
diff --git a/drivers/net/mlx4/mlx4_intr.c b/drivers/net/mlx4/mlx4_intr.c
index eeb982a09..ec9124219 100644
--- a/drivers/net/mlx4/mlx4_intr.c
+++ b/drivers/net/mlx4/mlx4_intr.c
@@ -34,5 +34,5 @@
 #include "mlx4_utils.h"
 
-static int mlx4_link_status_check(struct priv *priv);
+static int mlx4_link_status_check(struct mlx4_priv *priv);
 
 /**
@@ -43,5 +43,5 @@ static int mlx4_link_status_check(struct priv *priv);
  */
 static void
-mlx4_rx_intr_vec_disable(struct priv *priv)
+mlx4_rx_intr_vec_disable(struct mlx4_priv *priv)
 {
 	struct rte_intr_handle *intr_handle = &priv->intr_handle;
@@ -63,5 +63,5 @@ mlx4_rx_intr_vec_disable(struct priv *priv)
  */
 static int
-mlx4_rx_intr_vec_enable(struct priv *priv)
+mlx4_rx_intr_vec_enable(struct mlx4_priv *priv)
 {
 	unsigned int i;
@@ -118,5 +118,5 @@ mlx4_rx_intr_vec_enable(struct priv *priv)
  */
 static void
-mlx4_link_status_alarm(struct priv *priv)
+mlx4_link_status_alarm(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
@@ -144,5 +144,5 @@ mlx4_link_status_alarm(struct priv *priv)
  */
 static int
-mlx4_link_status_check(struct priv *priv)
+mlx4_link_status_check(struct mlx4_priv *priv)
 {
 	struct rte_eth_link *link = &priv->dev->data->dev_link;
@@ -176,5 +176,5 @@ mlx4_link_status_check(struct priv *priv)
  */
 static void
-mlx4_interrupt_handler(struct priv *priv)
+mlx4_interrupt_handler(struct mlx4_priv *priv)
 {
 	enum { LSC, RMV, };
@@ -252,5 +252,5 @@ mlx4_arm_cq(struct rxq *rxq, int solicited)
  */
 int
-mlx4_intr_uninstall(struct priv *priv)
+mlx4_intr_uninstall(struct mlx4_priv *priv)
 {
 	int err = rte_errno; /* Make sure rte_errno remains unchanged. */
@@ -280,5 +280,5 @@ mlx4_intr_uninstall(struct priv *priv)
  */
 int
-mlx4_intr_install(struct priv *priv)
+mlx4_intr_install(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
@@ -379,5 +379,5 @@ mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx)
  */
 int
-mlx4_rxq_intr_enable(struct priv *priv)
+mlx4_rxq_intr_enable(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
@@ -398,5 +398,5 @@ error:
  */
 void
-mlx4_rxq_intr_disable(struct priv *priv)
+mlx4_rxq_intr_disable(struct mlx4_priv *priv)
 {
 	int err = rte_errno; /* Make sure rte_errno remains unchanged. */
diff --git a/drivers/net/mlx4/mlx4_mr.c b/drivers/net/mlx4/mlx4_mr.c
index a0094483a..4376ad0b6 100644
--- a/drivers/net/mlx4/mlx4_mr.c
+++ b/drivers/net/mlx4/mlx4_mr.c
@@ -349,5 +349,5 @@ static int
 mr_insert_dev_cache(struct rte_eth_dev *dev, struct mlx4_mr *mr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	unsigned int n;
 
@@ -390,5 +390,5 @@ mr_lookup_dev_list(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry,
 		   uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr *mr;
 
@@ -431,5 +431,5 @@ mr_lookup_dev(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry,
 	      uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	uint16_t idx;
 	uint32_t lkey = UINT32_MAX;
@@ -486,5 +486,5 @@ static void
 mlx4_mr_garbage_collect(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr *mr_next;
 	struct mlx4_mr_list free_list = LIST_HEAD_INITIALIZER(free_list);
@@ -544,5 +544,5 @@ mlx4_mr_create(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry,
 	       uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
 	const struct rte_memseg_list *msl;
@@ -770,5 +770,5 @@ static void
 mr_rebuild_dev_cache(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr *mr;
 
@@ -802,5 +802,5 @@ static void
 mlx4_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	const struct rte_memseg_list *msl;
 	struct mlx4_mr *mr;
@@ -890,5 +890,5 @@ mlx4_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr,
 		     size_t len, void *arg __rte_unused)
 {
-	struct priv *priv;
+	struct mlx4_priv *priv;
 
 	switch (event_type) {
@@ -927,5 +927,5 @@ mlx4_mr_lookup_dev(struct rte_eth_dev *dev, struct mlx4_mr_ctrl *mr_ctrl,
 		   struct mlx4_mr_cache *entry, uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr_btree *bt = &mr_ctrl->cache_bh;
 	uint16_t idx;
@@ -1025,5 +1025,5 @@ mlx4_rx_addr2mr_bh(struct rxq *rxq, uintptr_t addr)
 {
 	struct mlx4_mr_ctrl *mr_ctrl = &rxq->mr_ctrl;
-	struct priv *priv = rxq->priv;
+	struct mlx4_priv *priv = rxq->priv;
 
 	DEBUG("Rx queue %u: miss on top-half, mru=%u, head=%u, addr=%p",
@@ -1047,5 +1047,5 @@ mlx4_tx_addr2mr_bh(struct txq *txq, uintptr_t addr)
 {
 	struct mlx4_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
-	struct priv *priv = txq->priv;
+	struct mlx4_priv *priv = txq->priv;
 
 	DEBUG("Tx queue %u: miss on top-half, mru=%u, head=%u, addr=%p",
@@ -1123,5 +1123,5 @@ mlx4_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
 	struct mr_update_mp_data *data = opaque;
 	struct rte_eth_dev *dev = data->dev;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr_ctrl *mr_ctrl = data->mr_ctrl;
 	struct mlx4_mr *mr = NULL;
@@ -1224,5 +1224,5 @@ mlx4_tx_update_ext_mp(struct txq *txq, uintptr_t addr, struct rte_mempool *mp)
 {
 	struct mlx4_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
-	struct priv *priv = txq->priv;
+	struct mlx4_priv *priv = txq->priv;
 
 	mlx4_mr_update_ext_mp(priv->dev, mr_ctrl, mp);
@@ -1290,5 +1290,5 @@ void
 mlx4_mr_dump_dev(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr *mr;
 	int mr_n = 0;
@@ -1333,5 +1333,5 @@ void
 mlx4_mr_release(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4_mr *mr_next = LIST_FIRST(&priv->mr.mr_list);
 
diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c
index 6804c6344..3782c6baa 100644
--- a/drivers/net/mlx4/mlx4_rxq.c
+++ b/drivers/net/mlx4/mlx4_rxq.c
@@ -88,5 +88,5 @@ mlx4_rss_hash_key_default[MLX4_RSS_HASH_KEY_SIZE] = {
  */
 struct mlx4_rss *
-mlx4_rss_get(struct priv *priv, uint64_t fields,
+mlx4_rss_get(struct mlx4_priv *priv, uint64_t fields,
 	     const uint8_t key[MLX4_RSS_HASH_KEY_SIZE],
 	     uint16_t queues, const uint16_t queue_id[])
@@ -176,5 +176,5 @@ mlx4_rss_attach(struct mlx4_rss *rss)
 
 	struct ibv_wq *ind_tbl[rss->queues];
-	struct priv *priv = rss->priv;
+	struct mlx4_priv *priv = rss->priv;
 	const char *msg;
 	unsigned int i = 0;
@@ -291,5 +291,5 @@ void
 mlx4_rss_detach(struct mlx4_rss *rss)
 {
-	struct priv *priv = rss->priv;
+	struct mlx4_priv *priv = rss->priv;
 	unsigned int i;
 
@@ -328,5 +328,5 @@ mlx4_rss_detach(struct mlx4_rss *rss)
  */
 int
-mlx4_rss_init(struct priv *priv)
+mlx4_rss_init(struct mlx4_priv *priv)
 {
 	struct rte_eth_dev *dev = priv->dev;
@@ -452,5 +452,5 @@ error:
  */
 void
-mlx4_rss_deinit(struct priv *priv)
+mlx4_rss_deinit(struct mlx4_priv *priv)
 {
 	unsigned int i;
@@ -494,5 +494,5 @@ mlx4_rxq_attach(struct rxq *rxq)
 	}
 
-	struct priv *priv = rxq->priv;
+	struct mlx4_priv *priv = rxq->priv;
 	struct rte_eth_dev *dev = priv->dev;
 	const uint32_t elts_n = 1 << rxq->elts_n;
@@ -676,5 +676,5 @@ mlx4_rxq_detach(struct rxq *rxq)
  */
 uint64_t
-mlx4_get_rx_queue_offloads(struct priv *priv)
+mlx4_get_rx_queue_offloads(struct mlx4_priv *priv)
 {
 	uint64_t offloads = DEV_RX_OFFLOAD_SCATTER |
@@ -697,5 +697,5 @@ mlx4_get_rx_queue_offloads(struct priv *priv)
  */
 uint64_t
-mlx4_get_rx_port_offloads(struct priv *priv)
+mlx4_get_rx_port_offloads(struct mlx4_priv *priv)
 {
 	uint64_t offloads = DEV_RX_OFFLOAD_VLAN_FILTER;
@@ -729,5 +729,5 @@ mlx4_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		    struct rte_mempool *mp)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	uint32_t mb_len = rte_pktmbuf_data_room_size(mp);
 	struct rte_mbuf *(*elts)[rte_align32pow2(desc)];
@@ -912,5 +912,5 @@ mlx4_rx_queue_release(void *dpdk_rxq)
 {
 	struct rxq *rxq = (struct rxq *)dpdk_rxq;
-	struct priv *priv;
+	struct mlx4_priv *priv;
 	unsigned int i;
 
diff --git a/drivers/net/mlx4/mlx4_rxtx.h b/drivers/net/mlx4/mlx4_rxtx.h
index d7ec4e0c5..29389f1ea 100644
--- a/drivers/net/mlx4/mlx4_rxtx.h
+++ b/drivers/net/mlx4/mlx4_rxtx.h
@@ -39,5 +39,5 @@ struct mlx4_rxq_stats {
 /** Rx queue descriptor. */
 struct rxq {
-	struct priv *priv; /**< Back pointer to private data. */
+	struct mlx4_priv *priv; /**< Back pointer to private data. */
 	struct rte_mempool *mp; /**< Memory pool for allocations. */
 	struct ibv_cq *cq; /**< Completion queue. */
@@ -66,5 +66,5 @@ struct rxq {
 struct mlx4_rss {
 	LIST_ENTRY(mlx4_rss) next; /**< Next entry in list. */
-	struct priv *priv; /**< Back pointer to private data. */
+	struct mlx4_priv *priv; /**< Back pointer to private data. */
 	uint32_t refcnt; /**< Reference count for this object. */
 	uint32_t usecnt; /**< Number of users relying on @p qp and @p ind. */
@@ -112,5 +112,5 @@ struct txq {
 	uint8_t *bounce_buf;
 	/**< Memory used for storing the first DWORD of data TXBBs. */
-	struct priv *priv; /**< Back pointer to private data. */
+	struct mlx4_priv *priv; /**< Back pointer to private data. */
 	unsigned int socket; /**< CPU socket ID for allocations. */
 	struct ibv_cq *cq; /**< Completion queue. */
@@ -122,7 +122,7 @@ struct txq {
 
 uint8_t mlx4_rss_hash_key_default[MLX4_RSS_HASH_KEY_SIZE];
-int mlx4_rss_init(struct priv *priv);
-void mlx4_rss_deinit(struct priv *priv);
-struct mlx4_rss *mlx4_rss_get(struct priv *priv, uint64_t fields,
+int mlx4_rss_init(struct mlx4_priv *priv);
+void mlx4_rss_deinit(struct mlx4_priv *priv);
+struct mlx4_rss *mlx4_rss_get(struct mlx4_priv *priv, uint64_t fields,
 			      const uint8_t key[MLX4_RSS_HASH_KEY_SIZE],
 			      uint16_t queues, const uint16_t queue_id[]);
@@ -132,6 +132,6 @@ void mlx4_rss_detach(struct mlx4_rss *rss);
 int mlx4_rxq_attach(struct rxq *rxq);
 void mlx4_rxq_detach(struct rxq *rxq);
-uint64_t mlx4_get_rx_port_offloads(struct priv *priv);
-uint64_t mlx4_get_rx_queue_offloads(struct priv *priv);
+uint64_t mlx4_get_rx_port_offloads(struct mlx4_priv *priv);
+uint64_t mlx4_get_rx_queue_offloads(struct mlx4_priv *priv);
 int mlx4_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx,
 			uint16_t desc, unsigned int socket,
@@ -153,5 +153,5 @@ uint16_t mlx4_rx_burst_removed(void *dpdk_rxq, struct rte_mbuf **pkts,
 /* mlx4_txq.c */
 
-uint64_t mlx4_get_tx_port_offloads(struct priv *priv);
+uint64_t mlx4_get_tx_port_offloads(struct mlx4_priv *priv);
 int mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx,
 			uint16_t desc, unsigned int socket,
diff --git a/drivers/net/mlx4/mlx4_txq.c b/drivers/net/mlx4/mlx4_txq.c
index 9aa7440d3..8142775fc 100644
--- a/drivers/net/mlx4/mlx4_txq.c
+++ b/drivers/net/mlx4/mlx4_txq.c
@@ -108,5 +108,5 @@ mlx4_txq_fill_dv_obj_info(struct txq *txq, struct mlx4dv_obj *mlxdv)
  */
 uint64_t
-mlx4_get_tx_port_offloads(struct priv *priv)
+mlx4_get_tx_port_offloads(struct mlx4_priv *priv)
 {
 	uint64_t offloads = DEV_TX_OFFLOAD_MULTI_SEGS;
@@ -149,5 +149,5 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		    unsigned int socket, const struct rte_eth_txconf *conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx4_priv *priv = dev->data->dev_private;
 	struct mlx4dv_obj mlxdv;
 	struct mlx4dv_qp dv_qp;
@@ -352,5 +352,5 @@ mlx4_tx_queue_release(void *dpdk_txq)
 {
 	struct txq *txq = (struct txq *)dpdk_txq;
-	struct priv *priv;
+	struct mlx4_priv *priv;
 	unsigned int i;
 
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index e7668bd5d..40b32492b 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -201,5 +201,5 @@ static void *
 mlx5_alloc_verbs_buf(size_t size, void *data)
 {
-	struct priv *priv = data;
+	struct mlx5_priv *priv = data;
 	void *ret;
 	size_t alignment = sysconf(_SC_PAGESIZE);
@@ -249,5 +249,5 @@ static void
 mlx5_dev_close(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	int ret;
@@ -336,5 +336,5 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 		i = RTE_MIN(mlx5_dev_to_port_id(dev->device, port_id, i), i);
 		while (i--) {
-			struct priv *opriv =
+			struct mlx5_priv *opriv =
 				rte_eth_devices[port_id[i]].data->dev_private;
 
@@ -631,5 +631,5 @@ static int
 mlx5_uar_init_primary(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	void *addr = (void *)0;
 
@@ -677,5 +677,5 @@ static int
 mlx5_uar_init_secondary(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	void *addr;
 
@@ -740,5 +740,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
 	struct mlx5dv_context dv_attr = { .comp_mask = 0 };
 	struct rte_eth_dev *eth_dev = NULL;
-	struct priv *priv = NULL;
+	struct mlx5_priv *priv = NULL;
 	int err = 0;
 	unsigned int hw_padding = 0;
@@ -1002,5 +1002,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
 		i = RTE_MIN(mlx5_dev_to_port_id(dpdk_dev, port_id, i), i);
 		while (i--) {
-			const struct priv *opriv =
+			const struct mlx5_priv *opriv =
 				rte_eth_devices[port_id[i]].data->dev_private;
 
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index bc500b2bc..91efd21b9 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -63,5 +63,5 @@ struct mlx5_switch_info {
 };
 
-LIST_HEAD(mlx5_dev_list, priv);
+LIST_HEAD(mlx5_dev_list, mlx5_priv);
 
 /* Shared memory between primary and secondary processes. */
@@ -173,6 +173,7 @@ struct mlx5_drop {
 struct mlx5_flow_tcf_context;
 
-struct priv {
-	LIST_ENTRY(priv) mem_event_cb; /* Called by memory event callback. */
+struct mlx5_priv {
+	LIST_ENTRY(mlx5_priv) mem_event_cb;
+	/**< Called by memory event callback. */
 	struct rte_eth_dev_data *dev_data;  /* Pointer to device data. */
 	struct ibv_context *ctx; /* Verbs context. */
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index d178ed6a1..fb8e313a2 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -132,5 +132,5 @@ mlx5_get_master_ifname(const struct rte_eth_dev *dev,
 		       char (*ifname)[IF_NAMESIZE])
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	DIR *dir;
 	struct dirent *dent;
@@ -220,5 +220,5 @@ int
 mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[IF_NAMESIZE])
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int ifindex =
 		priv->nl_socket_rdma >= 0 ?
@@ -378,5 +378,5 @@ int
 mlx5_dev_configure(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int rxqs_n = dev->data->nb_rx_queues;
 	unsigned int txqs_n = dev->data->nb_tx_queues;
@@ -461,5 +461,5 @@ static void
 mlx5_set_default_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	/* Minimum CPU utilization. */
@@ -500,5 +500,5 @@ void
 mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_dev_config *config = &priv->config;
 	unsigned int max;
@@ -541,5 +541,5 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 		i = RTE_MIN(mlx5_dev_to_port_id(dev->device, port_id, i), i);
 		while (i--) {
-			struct priv *opriv =
+			struct mlx5_priv *opriv =
 				rte_eth_devices[port_id[i]].data->dev_private;
 
@@ -610,5 +610,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 			       struct rte_eth_link *link)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ethtool_cmd edata = {
 		.cmd = ETHTOOL_GSET /* Deprecated since Linux v4.5. */
@@ -686,5 +686,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ethtool_link_settings gcmd = { .cmd = ETHTOOL_GLINKSETTINGS };
 	struct ifreq ifr;
@@ -841,5 +841,5 @@ int
 mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint16_t kern_mtu = 0;
 	int ret;
@@ -1016,5 +1016,5 @@ static uint32_t
 mlx5_dev_status_handler(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ibv_async_event event;
 	uint32_t ret = 0;
@@ -1088,5 +1088,5 @@ void
 mlx5_dev_interrupt_handler_uninstall(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (dev->data->dev_conf.intr_conf.lsc ||
@@ -1112,5 +1112,5 @@ void
 mlx5_dev_interrupt_handler_install(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 	int flags;
@@ -1188,5 +1188,5 @@ eth_tx_burst_t
 mlx5_select_tx_function(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	eth_tx_burst_t tx_pkt_burst = mlx5_tx_burst;
 	struct mlx5_dev_config *config = &priv->config;
@@ -1272,5 +1272,5 @@ mlx5_is_removed(struct rte_eth_dev *dev)
 {
 	struct ibv_device_attr device_attr;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (mlx5_glue->query_device(priv->ctx, &device_attr) == EIO)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index ee129b97b..39ef2524c 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -388,5 +388,5 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,
 {
 	uint32_t res = 0;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	switch (priv->config.flow_prio) {
@@ -537,5 +537,5 @@ static void
 flow_drv_rxq_flags_set(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow = dev_flow->flow;
 	const int mark = !!(flow->actions &
@@ -600,5 +600,5 @@ static void
 flow_drv_rxq_flags_trim(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow = dev_flow->flow;
 	const int mark = !!(flow->actions &
@@ -662,5 +662,5 @@ static void
 flow_rxq_flags_clear(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
@@ -839,5 +839,5 @@ mlx5_flow_validate_action_queue(const struct rte_flow_action *action,
 				struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_flow_action_queue *queue = action->conf;
 
@@ -889,5 +889,5 @@ mlx5_flow_validate_action_rss(const struct rte_flow_action *action,
 			      struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_flow_action_rss *rss = action->conf;
 	unsigned int i;
@@ -999,5 +999,5 @@ mlx5_flow_validate_attributes(struct rte_eth_dev *dev,
 			      struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint32_t priority_max = priv->config.flow_prio - 1;
 
@@ -1463,5 +1463,5 @@ mlx5_flow_validate_item_vxlan_gpe(const struct rte_flow_item *item,
 				  struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_flow_item_vxlan_gpe *spec = item->spec;
 	const struct rte_flow_item_vxlan_gpe *mask = item->mask;
@@ -1617,5 +1617,5 @@ mlx5_flow_validate_item_mpls(struct rte_eth_dev *dev __rte_unused,
 #ifdef HAVE_IBV_DEVICE_MPLS_SUPPORT
 	const struct rte_flow_item_mpls *mask = item->mask;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -1748,5 +1748,5 @@ static enum mlx5_flow_drv_type
 flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	enum mlx5_flow_drv_type type = MLX5_FLOW_TYPE_MAX;
 
@@ -2122,6 +2122,7 @@ mlx5_flow_create(struct rte_eth_dev *dev,
 		 struct rte_flow_error *error)
 {
-	return flow_list_create(dev,
-				&((struct priv *)dev->data->dev_private)->flows,
+	struct mlx5_priv *priv = (struct mlx5_priv *)dev->data->dev_private;
+
+	return flow_list_create(dev, &priv->flows,
 				attr, items, actions, error);
 }
@@ -2233,5 +2234,5 @@ int
 mlx5_flow_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow;
 	int ret = 0;
@@ -2269,5 +2270,5 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev,
 		    struct rte_flow_item_vlan *vlan_mask)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_flow_attr attr = {
 		.ingress = 1,
@@ -2360,5 +2361,5 @@ mlx5_flow_destroy(struct rte_eth_dev *dev,
 		  struct rte_flow_error *error __rte_unused)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	flow_list_destroy(dev, &priv->flows, flow);
@@ -2376,5 +2377,5 @@ mlx5_flow_flush(struct rte_eth_dev *dev,
 		struct rte_flow_error *error __rte_unused)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	mlx5_flow_list_flush(dev, &priv->flows);
@@ -2393,5 +2394,5 @@ mlx5_flow_isolate(struct rte_eth_dev *dev,
 		  struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (dev->data->dev_started) {
@@ -2471,5 +2472,5 @@ flow_fdir_filter_convert(struct rte_eth_dev *dev,
 			 struct mlx5_fdir *attributes)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_eth_fdir_input *input = &fdir_filter->input;
 	const struct rte_eth_fdir_masks *mask =
@@ -2688,5 +2689,5 @@ static struct rte_flow *
 flow_fdir_filter_lookup(struct rte_eth_dev *dev, struct mlx5_fdir *fdir_flow)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow = NULL;
 
@@ -2717,5 +2718,5 @@ flow_fdir_filter_add(struct rte_eth_dev *dev,
 		     const struct rte_eth_fdir_filter *fdir_filter)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_fdir *fdir_flow;
 	struct rte_flow *flow;
@@ -2764,5 +2765,5 @@ flow_fdir_filter_delete(struct rte_eth_dev *dev,
 			const struct rte_eth_fdir_filter *fdir_filter)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow;
 	struct mlx5_fdir fdir_flow = {
@@ -2817,5 +2818,5 @@ static void
 flow_fdir_filter_flush(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	mlx5_flow_list_flush(dev, &priv->flows);
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 1f3187487..be4578d21 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -294,5 +294,5 @@ flow_dv_encap_decap_resource_register
 			 struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_dv_encap_decap_resource *cache_resource;
 
@@ -723,5 +723,5 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
 			    struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint32_t priority_max = priv->config.flow_prio - 1;
 
@@ -1801,5 +1801,5 @@ flow_dv_matcher_register(struct rte_eth_dev *dev,
 			 struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_dv_matcher *cache_matcher;
 	struct mlx5dv_flow_matcher_attr dv_attr = {
@@ -1884,5 +1884,5 @@ flow_dv_translate(struct rte_eth_dev *dev,
 		  struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow *flow = dev_flow->flow;
 	uint64_t item_flags = 0;
diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c
index 96b9dd726..92f984f96 100644
--- a/drivers/net/mlx5/mlx5_flow_tcf.c
+++ b/drivers/net/mlx5/mlx5_flow_tcf.c
@@ -2345,5 +2345,5 @@ flow_tcf_validate(struct rte_eth_dev *dev,
 	if ((action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) &&
 	    (action_flags & MLX5_FLOW_ACTION_PORT_ID) &&
-	    ((struct priv *)port_id_dev->data->dev_private)->representor)
+	    ((struct mlx5_priv *)port_id_dev->data->dev_private)->representor)
 		return rte_flow_error_set(error, ENOTSUP,
 					  RTE_FLOW_ERROR_TYPE_ACTION, actions,
@@ -5322,5 +5322,5 @@ static void
 flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
 	struct mlx5_flow *dev_flow;
@@ -5411,5 +5411,5 @@ flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
 	       struct rte_flow_error *error)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
 	struct mlx5_flow *dev_flow;
@@ -5895,5 +5895,5 @@ flow_tcf_query_count(struct rte_eth_dev *dev,
 	struct flow_tcf_stats_basic sb_data;
 	struct rte_flow_query_count *qc = data;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
 	struct mnl_socket *nl = ctx->nl;
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index 409e1cd0c..a7b3f9342 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -56,5 +56,5 @@ flow_verbs_counter_create(struct rte_eth_dev *dev,
 {
 #if defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42)
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ibv_counter_set_init_attr init = {
 			 .counter_set_id = counter->id};
@@ -67,5 +67,5 @@ flow_verbs_counter_create(struct rte_eth_dev *dev,
 	return 0;
 #elif defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45)
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ibv_counters_init_attr init = {0};
 	struct ibv_counter_attach_attr attach;
@@ -118,5 +118,5 @@ static struct mlx5_flow_counter *
 flow_verbs_counter_new(struct rte_eth_dev *dev, uint32_t shared, uint32_t id)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_flow_counter *cnt;
 	int ret;
@@ -1399,5 +1399,5 @@ flow_verbs_translate(struct rte_eth_dev *dev,
 	uint64_t priority = attr->priority;
 	uint32_t subpriority = 0;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (priority == MLX5_FLOW_PRIO_RSVD)
diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c
index 672a47619..bce026f98 100644
--- a/drivers/net/mlx5/mlx5_mac.c
+++ b/drivers/net/mlx5/mlx5_mac.c
@@ -68,5 +68,5 @@ static void
 mlx5_internal_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const int vf = priv->config.vf;
 
@@ -97,5 +97,5 @@ mlx5_internal_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac,
 			   uint32_t index)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const int vf = priv->config.vf;
 	unsigned int i;
diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c
index 442b2d232..700d83d1b 100644
--- a/drivers/net/mlx5/mlx5_mr.c
+++ b/drivers/net/mlx5/mlx5_mr.c
@@ -337,5 +337,5 @@ static int
 mr_insert_dev_cache(struct rte_eth_dev *dev, struct mlx5_mr *mr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int n;
 
@@ -378,5 +378,5 @@ mr_lookup_dev_list(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry,
 		   uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr *mr;
 
@@ -419,5 +419,5 @@ mr_lookup_dev(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry,
 	      uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint16_t idx;
 	uint32_t lkey = UINT32_MAX;
@@ -474,5 +474,5 @@ static void
 mlx5_mr_garbage_collect(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr *mr_next;
 	struct mlx5_mr_list free_list = LIST_HEAD_INITIALIZER(free_list);
@@ -534,5 +534,5 @@ mlx5_mr_create(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry,
 	       uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
 	const struct rte_memseg_list *msl;
@@ -770,5 +770,5 @@ static void
 mr_rebuild_dev_cache(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr *mr;
 
@@ -804,5 +804,5 @@ static void
 mlx5_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	const struct rte_memseg_list *msl;
 	struct mlx5_mr *mr;
@@ -889,5 +889,5 @@ mlx5_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr,
 		     size_t len, void *arg __rte_unused)
 {
-	struct priv *priv;
+	struct mlx5_priv *priv;
 	struct mlx5_dev_list *dev_list = &mlx5_shared_data->mem_event_cb_list;
 
@@ -927,5 +927,5 @@ mlx5_mr_lookup_dev(struct rte_eth_dev *dev, struct mlx5_mr_ctrl *mr_ctrl,
 		   struct mlx5_mr_cache *entry, uintptr_t addr)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr_btree *bt = &mr_ctrl->cache_bh;
 	uint16_t idx;
@@ -1027,5 +1027,5 @@ mlx5_rx_addr2mr_bh(struct mlx5_rxq_data *rxq, uintptr_t addr)
 		container_of(rxq, struct mlx5_rxq_ctrl, rxq);
 	struct mlx5_mr_ctrl *mr_ctrl = &rxq->mr_ctrl;
-	struct priv *priv = rxq_ctrl->priv;
+	struct mlx5_priv *priv = rxq_ctrl->priv;
 
 	DRV_LOG(DEBUG,
@@ -1052,5 +1052,5 @@ mlx5_tx_addr2mr_bh(struct mlx5_txq_data *txq, uintptr_t addr)
 		container_of(txq, struct mlx5_txq_ctrl, txq);
 	struct mlx5_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
-	struct priv *priv = txq_ctrl->priv;
+	struct mlx5_priv *priv = txq_ctrl->priv;
 
 	DRV_LOG(DEBUG,
@@ -1129,5 +1129,5 @@ mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
 	struct mr_update_mp_data *data = opaque;
 	struct rte_eth_dev *dev = data->dev;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr_ctrl *mr_ctrl = data->mr_ctrl;
 	struct mlx5_mr *mr = NULL;
@@ -1236,5 +1236,5 @@ mlx5_tx_update_ext_mp(struct mlx5_txq_data *txq, uintptr_t addr,
 		container_of(txq, struct mlx5_txq_ctrl, txq);
 	struct mlx5_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
-	struct priv *priv = txq_ctrl->priv;
+	struct mlx5_priv *priv = txq_ctrl->priv;
 
 	mlx5_mr_update_ext_mp(ETH_DEV(priv), mr_ctrl, mp);
@@ -1302,5 +1302,5 @@ mlx5_mr_dump_dev(struct rte_eth_dev *dev __rte_unused)
 {
 #ifndef NDEBUG
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr *mr;
 	int mr_n = 0;
@@ -1344,5 +1344,5 @@ void
 mlx5_mr_release(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_mr *mr_next = LIST_FIRST(&priv->mr.mr_list);
 
diff --git a/drivers/net/mlx5/mlx5_nl.c b/drivers/net/mlx5/mlx5_nl.c
index d61826aea..fe5a27461 100644
--- a/drivers/net/mlx5/mlx5_nl.c
+++ b/drivers/net/mlx5/mlx5_nl.c
@@ -362,5 +362,5 @@ mlx5_nl_mac_addr_list(struct rte_eth_dev *dev, struct ether_addr (*mac)[],
 		      int *mac_n)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int iface_idx = mlx5_ifindex(dev);
 	struct {
@@ -421,5 +421,5 @@ mlx5_nl_mac_addr_modify(struct rte_eth_dev *dev, struct ether_addr *mac,
 			int add)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int iface_idx = mlx5_ifindex(dev);
 	struct {
@@ -493,5 +493,5 @@ mlx5_nl_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac,
 		     uint32_t index)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -521,5 +521,5 @@ mlx5_nl_mac_addr_remove(struct rte_eth_dev *dev, struct ether_addr *mac,
 			uint32_t index)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	BITFIELD_RESET(priv->mac_own, index);
@@ -573,5 +573,5 @@ void
 mlx5_nl_mac_addr_flush(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int i;
 
@@ -600,5 +600,5 @@ static int
 mlx5_nl_device_flags(struct rte_eth_dev *dev, uint32_t flags, int enable)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int iface_idx = mlx5_ifindex(dev);
 	struct {
diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c
index b95778a8c..891d764bb 100644
--- a/drivers/net/mlx5/mlx5_rss.c
+++ b/drivers/net/mlx5/mlx5_rss.c
@@ -42,5 +42,5 @@ mlx5_rss_hash_update(struct rte_eth_dev *dev,
 		     struct rte_eth_rss_conf *rss_conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	unsigned int idx;
@@ -96,5 +96,5 @@ mlx5_rss_hash_conf_get(struct rte_eth_dev *dev,
 		       struct rte_eth_rss_conf *rss_conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (!rss_conf) {
@@ -126,5 +126,5 @@ int
 mlx5_rss_reta_index_resize(struct rte_eth_dev *dev, unsigned int reta_size)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	void *mem;
 	unsigned int old_size = priv->reta_idx_n;
@@ -166,5 +166,5 @@ mlx5_dev_rss_reta_query(struct rte_eth_dev *dev,
 			uint16_t reta_size)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int idx;
 	unsigned int i;
@@ -202,5 +202,5 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev,
 {
 	int ret;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int idx;
 	unsigned int i;
diff --git a/drivers/net/mlx5/mlx5_rxmode.c b/drivers/net/mlx5/mlx5_rxmode.c
index e74fdef8b..d5077db0d 100644
--- a/drivers/net/mlx5/mlx5_rxmode.c
+++ b/drivers/net/mlx5/mlx5_rxmode.c
@@ -33,5 +33,5 @@ void
 mlx5_promiscuous_enable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -61,5 +61,5 @@ void
 mlx5_promiscuous_disable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -82,5 +82,5 @@ void
 mlx5_allmulticast_enable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -110,5 +110,5 @@ void
 mlx5_allmulticast_disable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 10b6ce0c1..2f6099914 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -69,5 +69,5 @@ inline int
 mlx5_check_mprq_support(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	if (priv->config.mprq.enabled &&
@@ -104,5 +104,5 @@ inline int
 mlx5_mprq_enabled(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint16_t i;
 	uint16_t n = 0;
@@ -383,5 +383,5 @@ uint64_t
 mlx5_get_rx_queue_offloads(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_dev_config *config = &priv->config;
 	uint64_t offloads = (DEV_RX_OFFLOAD_SCATTER |
@@ -439,5 +439,5 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		    struct rte_mempool *mp)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq = (*priv->rxqs)[idx];
 	struct mlx5_rxq_ctrl *rxq_ctrl =
@@ -490,5 +490,5 @@ mlx5_rx_queue_release(void *dpdk_rxq)
 	struct mlx5_rxq_data *rxq = (struct mlx5_rxq_data *)dpdk_rxq;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
-	struct priv *priv;
+	struct mlx5_priv *priv;
 
 	if (rxq == NULL)
@@ -515,5 +515,5 @@ int
 mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	unsigned int rxqs_n = priv->rxqs_n;
@@ -593,5 +593,5 @@ void
 mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_intr_handle *intr_handle = dev->intr_handle;
 	unsigned int i;
@@ -665,5 +665,5 @@ int
 mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq_data;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
@@ -703,5 +703,5 @@ int
 mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq_data;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
@@ -756,5 +756,5 @@ struct mlx5_rxq_ibv *
 mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx];
 	struct mlx5_rxq_ctrl *rxq_ctrl =
@@ -1043,5 +1043,5 @@ struct mlx5_rxq_ibv *
 mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx];
 	struct mlx5_rxq_ctrl *rxq_ctrl;
@@ -1099,5 +1099,5 @@ int
 mlx5_rxq_ibv_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret = 0;
 	struct mlx5_rxq_ibv *rxq_ibv;
@@ -1150,5 +1150,5 @@ int
 mlx5_mprq_free_mp(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_mempool *mp = priv->mprq_mp;
 	unsigned int i;
@@ -1201,5 +1201,5 @@ int
 mlx5_mprq_alloc_mp(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_mempool *mp = priv->mprq_mp;
 	char name[RTE_MEMPOOL_NAMESIZE];
@@ -1320,5 +1320,5 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 	     struct rte_mempool *mp)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ctrl *tmpl;
 	unsigned int mb_len = rte_pktmbuf_data_room_size(mp);
@@ -1503,5 +1503,5 @@ struct mlx5_rxq_ctrl *
 mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ctrl *rxq_ctrl = NULL;
 
@@ -1530,5 +1530,5 @@ int
 mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
 
@@ -1564,5 +1564,5 @@ int
 mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
 
@@ -1587,5 +1587,5 @@ int
 mlx5_rxq_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ctrl *rxq_ctrl;
 	int ret = 0;
@@ -1616,5 +1616,5 @@ mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues,
 		       uint32_t queues_n)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl;
 	const unsigned int wq_n = rte_is_power_of_2(queues_n) ?
@@ -1680,5 +1680,5 @@ mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues,
 		       uint32_t queues_n)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl;
 
@@ -1742,5 +1742,5 @@ int
 mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl;
 	int ret = 0;
@@ -1784,5 +1784,5 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
 	      int tunnel __rte_unused)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_hrxq *hrxq;
 	struct mlx5_ind_table_ibv *ind_tbl;
@@ -1900,5 +1900,5 @@ mlx5_hrxq_get(struct rte_eth_dev *dev,
 	      const uint16_t *queues, uint32_t queues_n)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_hrxq *hrxq;
 
@@ -1963,5 +1963,5 @@ int
 mlx5_hrxq_ibv_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_hrxq *hrxq;
 	int ret = 0;
@@ -1988,5 +1988,5 @@ struct mlx5_rxq_ibv *
 mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct ibv_cq *cq;
 	struct ibv_wq *wq = NULL;
@@ -2047,5 +2047,5 @@ void
 mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_ibv *rxq = priv->drop_queue.rxq;
 
@@ -2070,5 +2070,5 @@ struct mlx5_ind_table_ibv *
 mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl;
 	struct mlx5_rxq_ibv *rxq;
@@ -2113,5 +2113,5 @@ void
 mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl = priv->drop_queue.hrxq->ind_table;
 
@@ -2134,5 +2134,5 @@ struct mlx5_hrxq *
 mlx5_hrxq_drop_new(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_ind_table_ibv *ind_tbl;
 	struct ibv_qp *qp;
@@ -2197,5 +2197,5 @@ void
 mlx5_hrxq_drop_release(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_hrxq *hrxq = priv->drop_queue.hrxq;
 
diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
index 6eceea5fe..baa4079c1 100644
--- a/drivers/net/mlx5/mlx5_rxtx.c
+++ b/drivers/net/mlx5/mlx5_rxtx.c
@@ -510,5 +510,5 @@ uint32_t
 mlx5_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq;
 
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index 75194a3fa..6fd2285e0 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -59,5 +59,5 @@ struct mlx5_txq_stats {
 };
 
-struct priv;
+struct mlx5_priv;
 
 /* Compressed CQE context. */
@@ -144,5 +144,5 @@ struct mlx5_rxq_ctrl {
 	rte_atomic32_t refcnt; /* Reference counter. */
 	struct mlx5_rxq_ibv *ibv; /* Verbs elements. */
-	struct priv *priv; /* Back pointer to private data. */
+	struct mlx5_priv *priv; /* Back pointer to private data. */
 	struct mlx5_rxq_data rxq; /* Data path structure. */
 	unsigned int socket; /* CPU socket ID for allocations. */
@@ -229,5 +229,5 @@ struct mlx5_txq_ctrl {
 	unsigned int max_tso_header; /* Max TSO header size. */
 	struct mlx5_txq_ibv *ibv; /* Verbs queue object. */
-	struct priv *priv; /* Back pointer to private data. */
+	struct mlx5_priv *priv; /* Back pointer to private data. */
 	struct mlx5_txq_data txq; /* Data path structure. */
 	off_t uar_mmap_offset; /* UAR mmap offset for non-primary process. */
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.c b/drivers/net/mlx5/mlx5_rxtx_vec.c
index 340292add..9a3a5ae43 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec.c
+++ b/drivers/net/mlx5/mlx5_rxtx_vec.c
@@ -274,5 +274,5 @@ int __attribute__((cold))
 mlx5_check_vec_tx_support(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint64_t offloads = dev->data->dev_conf.txmode.offloads;
 
@@ -319,5 +319,5 @@ int __attribute__((cold))
 mlx5_check_vec_rx_support(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint16_t i;
 
diff --git a/drivers/net/mlx5/mlx5_socket.c b/drivers/net/mlx5/mlx5_socket.c
index 00106171d..41cac3c6a 100644
--- a/drivers/net/mlx5/mlx5_socket.c
+++ b/drivers/net/mlx5/mlx5_socket.c
@@ -27,5 +27,5 @@ int
 mlx5_socket_init(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct sockaddr_un sun = {
 		.sun_family = AF_UNIX,
@@ -99,5 +99,5 @@ void
 mlx5_socket_uninit(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	MKSTR(path, "/var/tmp/%s_%d", MLX5_DRIVER_NAME, priv->primary_socket);
@@ -116,5 +116,5 @@ void
 mlx5_socket_handle(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int conn_sock;
 	int ret = 0;
@@ -209,5 +209,5 @@ int
 mlx5_socket_connect(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct sockaddr_un sun = {
 		.sun_family = AF_UNIX,
diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
index fccb9af0d..132bf5b49 100644
--- a/drivers/net/mlx5/mlx5_stats.c
+++ b/drivers/net/mlx5/mlx5_stats.c
@@ -144,5 +144,5 @@ static int
 mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
 	unsigned int i;
@@ -222,5 +222,5 @@ void
 mlx5_xstats_init(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
 	unsigned int i;
@@ -313,5 +313,5 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
 		unsigned int n)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	uint64_t counters[n];
@@ -354,5 +354,5 @@ int
 mlx5_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_eth_stats tmp;
 	unsigned int i;
@@ -417,5 +417,5 @@ void
 mlx5_stats_reset(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	unsigned int idx;
@@ -449,5 +449,5 @@ void
 mlx5_xstats_reset(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
 	int stats_n;
@@ -493,5 +493,5 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
 {
 	unsigned int i;
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
 	unsigned int mlx5_xstats_n = xstats_ctrl->mlx5_stats_n;
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index e2a9bb703..f874657c7 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -24,5 +24,5 @@ static void
 mlx5_txq_stop(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
@@ -43,5 +43,5 @@ static int
 mlx5_txq_start(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	int ret;
@@ -84,5 +84,5 @@ static void
 mlx5_rxq_stop(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
@@ -103,5 +103,5 @@ static int
 mlx5_rxq_start(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 	int ret = 0;
@@ -158,5 +158,5 @@ int
 mlx5_dev_start(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret;
 
@@ -222,5 +222,5 @@ void
 mlx5_dev_stop(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	dev->data->dev_started = 0;
@@ -253,5 +253,5 @@ int
 mlx5_traffic_enable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct rte_flow_item_eth bcast = {
 		.dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
@@ -380,5 +380,5 @@ void
 mlx5_traffic_disable(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 
 	mlx5_flow_list_flush(dev, &priv->ctrl_flows);
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index b01bd6754..d18561740 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -103,5 +103,5 @@ uint64_t
 mlx5_get_tx_port_offloads(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	uint64_t offloads = (DEV_TX_OFFLOAD_MULTI_SEGS |
 			     DEV_TX_OFFLOAD_VLAN_INSERT);
@@ -156,5 +156,5 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		    unsigned int socket, const struct rte_eth_txconf *conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_data *txq = (*priv->txqs)[idx];
 	struct mlx5_txq_ctrl *txq_ctrl =
@@ -214,5 +214,5 @@ mlx5_tx_queue_release(void *dpdk_txq)
 	struct mlx5_txq_data *txq = (struct mlx5_txq_data *)dpdk_txq;
 	struct mlx5_txq_ctrl *txq_ctrl;
-	struct priv *priv;
+	struct mlx5_priv *priv;
 	unsigned int i;
 
@@ -247,5 +247,5 @@ int
 mlx5_tx_uar_remap(struct rte_eth_dev *dev, int fd)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i, j;
 	uintptr_t pages[priv->txqs_n];
@@ -355,5 +355,5 @@ struct mlx5_txq_ibv *
 mlx5_txq_ibv_new(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_data *txq_data = (*priv->txqs)[idx];
 	struct mlx5_txq_ctrl *txq_ctrl =
@@ -563,5 +563,5 @@ struct mlx5_txq_ibv *
 mlx5_txq_ibv_get(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *txq_ctrl;
 
@@ -624,5 +624,5 @@ int
 mlx5_txq_ibv_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	int ret = 0;
 	struct mlx5_txq_ibv *txq_ibv;
@@ -645,5 +645,5 @@ static void
 txq_set_params(struct mlx5_txq_ctrl *txq_ctrl)
 {
-	struct priv *priv = txq_ctrl->priv;
+	struct mlx5_priv *priv = txq_ctrl->priv;
 	struct mlx5_dev_config *config = &priv->config;
 	const unsigned int max_tso_inline =
@@ -755,5 +755,5 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 	     unsigned int socket, const struct rte_eth_txconf *conf)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *tmpl;
 
@@ -810,5 +810,5 @@ struct mlx5_txq_ctrl *
 mlx5_txq_get(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *ctrl = NULL;
 
@@ -836,5 +836,5 @@ int
 mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *txq;
 	size_t page_size = sysconf(_SC_PAGESIZE);
@@ -873,5 +873,5 @@ int
 mlx5_txq_releasable(struct rte_eth_dev *dev, uint16_t idx)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *txq;
 
@@ -894,5 +894,5 @@ int
 mlx5_txq_verify(struct rte_eth_dev *dev)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_txq_ctrl *txq;
 	int ret = 0;
diff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c
index c91d08be1..6568a3a47 100644
--- a/drivers/net/mlx5/mlx5_vlan.c
+++ b/drivers/net/mlx5/mlx5_vlan.c
@@ -49,5 +49,5 @@ int
 mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
@@ -103,5 +103,5 @@ void
 mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	struct mlx5_rxq_data *rxq = (*priv->rxqs)[queue];
 	struct mlx5_rxq_ctrl *rxq_ctrl =
@@ -161,5 +161,5 @@ int
 mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 {
-	struct priv *priv = dev->data->dev_private;
+	struct mlx5_priv *priv = dev->data->dev_private;
 	unsigned int i;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.207653584 +0100
+++ 0030-net-mlx-prefix-private-structure.patch	2019-04-10 14:06:07.900293419 +0100
@@ -1,21 +1,21 @@
-From dbeba4cf18a5e1d9f7aaa284457bf15c351eb965 Mon Sep 17 00:00:00 2001
+From 7f49e70ceda3e8245753425f9ee474793152f906 Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Thu, 21 Feb 2019 10:29:14 +0100
 Subject: [PATCH] net/mlx: prefix private structure
 
+[ upstream commit dbeba4cf18a5e1d9f7aaa284457bf15c351eb965 ]
+
 The private structure stored in rte_eth_dev->data->dev_private
 was named "struct priv".
 In order to ease code browsing, the structure is renamed
 "struct mlx[45]_priv".
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Acked-by: Yongseok Koh <yskoh@mellanox.com>
 ---
  drivers/net/mlx4/mlx4.c            | 10 ++---
  drivers/net/mlx4/mlx4.h            | 21 +++++-----
- drivers/net/mlx4/mlx4_ethdev.c     | 40 +++++++++----------
+ drivers/net/mlx4/mlx4_ethdev.c     | 38 +++++++++---------
  drivers/net/mlx4/mlx4_flow.c       | 28 +++++++-------
  drivers/net/mlx4/mlx4_flow.h       |  6 +--
  drivers/net/mlx4/mlx4_intr.c       | 20 +++++-----
@@ -25,9 +25,9 @@
  drivers/net/mlx4/mlx4_txq.c        |  6 +--
  drivers/net/mlx5/mlx5.c            | 14 +++----
  drivers/net/mlx5/mlx5.h            |  7 ++--
- drivers/net/mlx5/mlx5_ethdev.c     | 30 +++++++--------
+ drivers/net/mlx5/mlx5_ethdev.c     | 28 +++++++-------
  drivers/net/mlx5/mlx5_flow.c       | 45 +++++++++++-----------
- drivers/net/mlx5/mlx5_flow_dv.c    | 16 ++++----
+ drivers/net/mlx5/mlx5_flow_dv.c    |  8 ++--
  drivers/net/mlx5/mlx5_flow_tcf.c   |  8 ++--
  drivers/net/mlx5/mlx5_flow_verbs.c |  8 ++--
  drivers/net/mlx5/mlx5_mac.c        |  4 +-
@@ -40,14 +40,14 @@
  drivers/net/mlx5/mlx5_rxtx.h       |  6 +--
  drivers/net/mlx5/mlx5_rxtx_vec.c   |  4 +-
  drivers/net/mlx5/mlx5_socket.c     |  8 ++--
- drivers/net/mlx5/mlx5_stats.c      | 16 ++++----
+ drivers/net/mlx5/mlx5_stats.c      | 14 +++----
  drivers/net/mlx5/mlx5_trigger.c    | 16 ++++----
  drivers/net/mlx5/mlx5_txq.c        | 26 ++++++-------
  drivers/net/mlx5/mlx5_vlan.c       |  6 +--
- 31 files changed, 270 insertions(+), 267 deletions(-)
+ 31 files changed, 263 insertions(+), 260 deletions(-)
 
 diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
-index 6f29e5a62..5ef2e7f41 100644
+index 7f07b8dc0..8aa116cb7 100644
 --- a/drivers/net/mlx4/mlx4.c
 +++ b/drivers/net/mlx4/mlx4.c
 @@ -82,5 +82,5 @@ static int
@@ -78,7 +78,7 @@
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	unsigned int i;
  
-@@ -601,5 +601,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
+@@ -600,5 +600,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
  		struct ibv_port_attr port_attr;
  		struct ibv_pd *pd = NULL;
 -		struct priv *priv = NULL;
@@ -86,7 +86,7 @@
  		struct rte_eth_dev *eth_dev = NULL;
  		struct ether_addr mac;
 diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
-index 6f4111582..7ac49ca67 100644
+index e6fb934fa..180e5186c 100644
 --- a/drivers/net/mlx4/mlx4.h
 +++ b/drivers/net/mlx4/mlx4.h
 @@ -73,10 +73,11 @@ struct txq;
@@ -115,7 +115,7 @@
 +int mlx4_mtu_get(struct mlx4_priv *priv, uint16_t *mtu);
  int mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
  int mlx4_dev_set_link_down(struct rte_eth_dev *dev);
-@@ -145,8 +146,8 @@ int mlx4_is_removed(struct rte_eth_dev *dev);
+@@ -144,8 +145,8 @@ int mlx4_is_removed(struct rte_eth_dev *dev);
  /* mlx4_intr.c */
  
 -int mlx4_intr_uninstall(struct priv *priv);
@@ -129,7 +129,7 @@
  int mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx);
  int mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx);
 diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c
-index d0efa7d06..4dae67a1b 100644
+index 195a1b6df..084b24e49 100644
 --- a/drivers/net/mlx4/mlx4_ethdev.c
 +++ b/drivers/net/mlx4/mlx4_ethdev.c
 @@ -60,5 +60,5 @@
@@ -230,42 +230,35 @@
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	unsigned int max;
  	char ifname[IF_NAMESIZE];
-@@ -608,5 +608,5 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
- int mlx4_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx4_priv *priv = dev->data->dev_private;
- 	struct ibv_device_attr *attr = &priv->device_attr;
- 	size_t size = strnlen(attr->fw_ver, sizeof(attr->fw_ver)) + 1;
-@@ -715,5 +715,5 @@ int
+@@ -689,5 +689,5 @@ int
  mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete)
  {
 -	const struct priv *priv = dev->data->dev_private;
 +	const struct mlx4_priv *priv = dev->data->dev_private;
  	struct ethtool_cmd edata = {
  		.cmd = ETHTOOL_GSET,
-@@ -768,5 +768,5 @@ int
+@@ -742,5 +742,5 @@ int
  mlx4_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	struct ifreq ifr;
  	struct ethtool_pauseparam ethpause = {
-@@ -812,5 +812,5 @@ int
+@@ -786,5 +786,5 @@ int
  mlx4_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	struct ifreq ifr;
  	struct ethtool_pauseparam ethpause = {
-@@ -880,5 +880,5 @@ mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev)
+@@ -854,5 +854,5 @@ mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev)
  		RTE_PTYPE_UNKNOWN
  	};
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  
  	if (dev->rx_pkt_burst == mlx4_rx_burst) {
-@@ -904,5 +904,5 @@ mlx4_is_removed(struct rte_eth_dev *dev)
+@@ -878,5 +878,5 @@ mlx4_is_removed(struct rte_eth_dev *dev)
  {
  	struct ibv_device_attr device_attr;
 -	struct priv *priv = dev->data->dev_private;
@@ -273,7 +266,7 @@
  
  	if (mlx4_glue->query_device(priv->ctx, &device_attr) == EIO)
 diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
-index 3abde3093..5c851e986 100644
+index b40e7e5c3..f16037d1d 100644
 --- a/drivers/net/mlx4/mlx4_flow.c
 +++ b/drivers/net/mlx4/mlx4_flow.c
 @@ -72,5 +72,5 @@ struct mlx4_drop {
@@ -290,84 +283,84 @@
 +mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types, int verbs_to_dpdk)
  {
  	enum {
-@@ -663,5 +663,5 @@ static const struct mlx4_flow_proc_item mlx4_flow_proc_item_list[] = {
+@@ -658,5 +658,5 @@ static const struct mlx4_flow_proc_item mlx4_flow_proc_item_list[] = {
   */
  static int
 -mlx4_flow_prepare(struct priv *priv,
 +mlx4_flow_prepare(struct mlx4_priv *priv,
  		  const struct rte_flow_attr *attr,
  		  const struct rte_flow_item pattern[],
-@@ -934,5 +934,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
+@@ -929,5 +929,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
  		   struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  
  	return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL);
-@@ -950,5 +950,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
+@@ -945,5 +945,5 @@ mlx4_flow_validate(struct rte_eth_dev *dev,
   */
  static struct mlx4_drop *
 -mlx4_drop_get(struct priv *priv)
 +mlx4_drop_get(struct mlx4_priv *priv)
  {
  	struct mlx4_drop *drop = priv->drop;
-@@ -1026,5 +1026,5 @@ mlx4_drop_put(struct mlx4_drop *drop)
+@@ -1021,5 +1021,5 @@ mlx4_drop_put(struct mlx4_drop *drop)
   */
  static int
 -mlx4_flow_toggle(struct priv *priv,
 +mlx4_flow_toggle(struct mlx4_priv *priv,
  		 struct rte_flow *flow,
  		 int enable,
-@@ -1142,5 +1142,5 @@ mlx4_flow_create(struct rte_eth_dev *dev,
+@@ -1137,5 +1137,5 @@ mlx4_flow_create(struct rte_eth_dev *dev,
  		 struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow;
  	int err;
-@@ -1183,5 +1183,5 @@ mlx4_flow_isolate(struct rte_eth_dev *dev,
+@@ -1178,5 +1178,5 @@ mlx4_flow_isolate(struct rte_eth_dev *dev,
  		  struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  
  	if (!!enable == !!priv->isolated)
-@@ -1206,5 +1206,5 @@ mlx4_flow_destroy(struct rte_eth_dev *dev,
+@@ -1201,5 +1201,5 @@ mlx4_flow_destroy(struct rte_eth_dev *dev,
  		  struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	int err = mlx4_flow_toggle(priv, flow, 0, error);
  
-@@ -1230,5 +1230,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
+@@ -1225,5 +1225,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
  		struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx4_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow = LIST_FIRST(&priv->flows);
  
-@@ -1255,5 +1255,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
+@@ -1250,5 +1250,5 @@ mlx4_flow_flush(struct rte_eth_dev *dev,
   */
  static uint16_t
 -mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
 +mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan)
  {
  	while (vlan < 4096) {
-@@ -1295,5 +1295,5 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
+@@ -1290,5 +1290,5 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan)
   */
  static int
 -mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error)
 +mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
  {
  	struct rte_flow_attr attr = {
-@@ -1527,5 +1527,5 @@ error:
+@@ -1522,5 +1522,5 @@ error:
   */
  int
 -mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error)
 +mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error)
  {
  	struct rte_flow *flow;
-@@ -1569,5 +1569,5 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error)
+@@ -1564,5 +1564,5 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error)
   */
  void
 -mlx4_flow_clean(struct priv *priv)
@@ -648,7 +641,7 @@
  	unsigned int i;
  
 diff --git a/drivers/net/mlx4/mlx4_rxtx.h b/drivers/net/mlx4/mlx4_rxtx.h
-index a5ef5c2ae..9409602b3 100644
+index d7ec4e0c5..29389f1ea 100644
 --- a/drivers/net/mlx4/mlx4_rxtx.h
 +++ b/drivers/net/mlx4/mlx4_rxtx.h
 @@ -39,5 +39,5 @@ struct mlx4_rxq_stats {
@@ -725,7 +718,7 @@
  	unsigned int i;
  
 diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
-index df71707cc..9706e351a 100644
+index e7668bd5d..40b32492b 100644
 --- a/drivers/net/mlx5/mlx5.c
 +++ b/drivers/net/mlx5/mlx5.c
 @@ -201,5 +201,5 @@ static void *
@@ -749,28 +742,28 @@
 +			struct mlx5_priv *opriv =
  				rte_eth_devices[port_id[i]].data->dev_private;
  
-@@ -635,5 +635,5 @@ static int
+@@ -631,5 +631,5 @@ static int
  mlx5_uar_init_primary(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	void *addr = (void *)0;
  
-@@ -681,5 +681,5 @@ static int
+@@ -677,5 +677,5 @@ static int
  mlx5_uar_init_secondary(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	void *addr;
  
-@@ -744,5 +744,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -740,5 +740,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
  	struct mlx5dv_context dv_attr = { .comp_mask = 0 };
  	struct rte_eth_dev *eth_dev = NULL;
 -	struct priv *priv = NULL;
 +	struct mlx5_priv *priv = NULL;
  	int err = 0;
  	unsigned int hw_padding = 0;
-@@ -1012,5 +1012,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -1002,5 +1002,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
  		i = RTE_MIN(mlx5_dev_to_port_id(dpdk_dev, port_id, i), i);
  		while (i--) {
 -			const struct priv *opriv =
@@ -778,17 +771,17 @@
  				rte_eth_devices[port_id[i]].data->dev_private;
  
 diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
-index 3193ed9ca..538445367 100644
+index bc500b2bc..91efd21b9 100644
 --- a/drivers/net/mlx5/mlx5.h
 +++ b/drivers/net/mlx5/mlx5.h
-@@ -65,5 +65,5 @@ struct mlx5_switch_info {
+@@ -63,5 +63,5 @@ struct mlx5_switch_info {
  };
  
 -LIST_HEAD(mlx5_dev_list, priv);
 +LIST_HEAD(mlx5_dev_list, mlx5_priv);
  
  /* Shared memory between primary and secondary processes. */
-@@ -187,6 +187,7 @@ struct mlx5_drop {
+@@ -173,6 +173,7 @@ struct mlx5_drop {
  struct mlx5_flow_tcf_context;
  
 -struct priv {
@@ -799,7 +792,7 @@
  	struct rte_eth_dev_data *dev_data;  /* Pointer to device data. */
  	struct ibv_context *ctx; /* Verbs context. */
 diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
-index 8158b4a9f..f84f7cf69 100644
+index d178ed6a1..fb8e313a2 100644
 --- a/drivers/net/mlx5/mlx5_ethdev.c
 +++ b/drivers/net/mlx5/mlx5_ethdev.c
 @@ -132,5 +132,5 @@ mlx5_get_master_ifname(const struct rte_eth_dev *dev,
@@ -844,63 +837,56 @@
 +			struct mlx5_priv *opriv =
  				rte_eth_devices[port_id[i]].data->dev_private;
  
-@@ -573,5 +573,5 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
- int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx5_priv *priv = dev->data->dev_private;
- 	struct ibv_device_attr *attr = &priv->device_attr.orig_attr;
- 	size_t size = strnlen(attr->fw_ver, sizeof(attr->fw_ver)) + 1;
-@@ -636,5 +636,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
+@@ -610,5 +610,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
  			       struct rte_eth_link *link)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct ethtool_cmd edata = {
  		.cmd = ETHTOOL_GSET /* Deprecated since Linux v4.5. */
-@@ -712,5 +712,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
+@@ -686,5 +686,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
  
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct ethtool_link_settings gcmd = { .cmd = ETHTOOL_GLINKSETTINGS };
  	struct ifreq ifr;
-@@ -867,5 +867,5 @@ int
+@@ -841,5 +841,5 @@ int
  mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	uint16_t kern_mtu = 0;
  	int ret;
-@@ -1042,5 +1042,5 @@ static uint32_t
+@@ -1016,5 +1016,5 @@ static uint32_t
  mlx5_dev_status_handler(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct ibv_async_event event;
  	uint32_t ret = 0;
-@@ -1114,5 +1114,5 @@ void
+@@ -1088,5 +1088,5 @@ void
  mlx5_dev_interrupt_handler_uninstall(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  
  	if (dev->data->dev_conf.intr_conf.lsc ||
-@@ -1138,5 +1138,5 @@ void
+@@ -1112,5 +1112,5 @@ void
  mlx5_dev_interrupt_handler_install(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	int ret;
  	int flags;
-@@ -1214,5 +1214,5 @@ eth_tx_burst_t
+@@ -1188,5 +1188,5 @@ eth_tx_burst_t
  mlx5_select_tx_function(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	eth_tx_burst_t tx_pkt_burst = mlx5_tx_burst;
  	struct mlx5_dev_config *config = &priv->config;
-@@ -1298,5 +1298,5 @@ mlx5_is_removed(struct rte_eth_dev *dev)
+@@ -1272,5 +1272,5 @@ mlx5_is_removed(struct rte_eth_dev *dev)
  {
  	struct ibv_device_attr device_attr;
 -	struct priv *priv = dev->data->dev_private;
@@ -908,7 +894,7 @@
  
  	if (mlx5_glue->query_device(priv->ctx, &device_attr) == EIO)
 diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
-index 11213e2ff..9314e3a86 100644
+index ee129b97b..39ef2524c 100644
 --- a/drivers/net/mlx5/mlx5_flow.c
 +++ b/drivers/net/mlx5/mlx5_flow.c
 @@ -388,5 +388,5 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,
@@ -946,42 +932,42 @@
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	const struct rte_flow_action_queue *queue = action->conf;
  
-@@ -893,5 +893,5 @@ mlx5_flow_validate_action_rss(const struct rte_flow_action *action,
+@@ -889,5 +889,5 @@ mlx5_flow_validate_action_rss(const struct rte_flow_action *action,
  			      struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	const struct rte_flow_action_rss *rss = action->conf;
  	unsigned int i;
-@@ -1011,5 +1011,5 @@ mlx5_flow_validate_attributes(struct rte_eth_dev *dev,
+@@ -999,5 +999,5 @@ mlx5_flow_validate_attributes(struct rte_eth_dev *dev,
  			      struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	uint32_t priority_max = priv->config.flow_prio - 1;
  
-@@ -1485,5 +1485,5 @@ mlx5_flow_validate_item_vxlan_gpe(const struct rte_flow_item *item,
+@@ -1463,5 +1463,5 @@ mlx5_flow_validate_item_vxlan_gpe(const struct rte_flow_item *item,
  				  struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	const struct rte_flow_item_vxlan_gpe *spec = item->spec;
  	const struct rte_flow_item_vxlan_gpe *mask = item->mask;
-@@ -1639,5 +1639,5 @@ mlx5_flow_validate_item_mpls(struct rte_eth_dev *dev __rte_unused,
+@@ -1617,5 +1617,5 @@ mlx5_flow_validate_item_mpls(struct rte_eth_dev *dev __rte_unused,
  #ifdef HAVE_IBV_DEVICE_MPLS_SUPPORT
  	const struct rte_flow_item_mpls *mask = item->mask;
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	int ret;
  
-@@ -1770,5 +1770,5 @@ static enum mlx5_flow_drv_type
+@@ -1748,5 +1748,5 @@ static enum mlx5_flow_drv_type
  flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	enum mlx5_flow_drv_type type = MLX5_FLOW_TYPE_MAX;
  
-@@ -2144,6 +2144,7 @@ mlx5_flow_create(struct rte_eth_dev *dev,
+@@ -2122,6 +2122,7 @@ mlx5_flow_create(struct rte_eth_dev *dev,
  		 struct rte_flow_error *error)
  {
 -	return flow_list_create(dev,
@@ -991,70 +977,70 @@
 +	return flow_list_create(dev, &priv->flows,
  				attr, items, actions, error);
  }
-@@ -2255,5 +2256,5 @@ int
+@@ -2233,5 +2234,5 @@ int
  mlx5_flow_verify(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow;
  	int ret = 0;
-@@ -2291,5 +2292,5 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev,
+@@ -2269,5 +2270,5 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev,
  		    struct rte_flow_item_vlan *vlan_mask)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	const struct rte_flow_attr attr = {
  		.ingress = 1,
-@@ -2381,5 +2382,5 @@ mlx5_flow_destroy(struct rte_eth_dev *dev,
+@@ -2360,5 +2361,5 @@ mlx5_flow_destroy(struct rte_eth_dev *dev,
  		  struct rte_flow_error *error __rte_unused)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  
  	flow_list_destroy(dev, &priv->flows, flow);
-@@ -2397,5 +2398,5 @@ mlx5_flow_flush(struct rte_eth_dev *dev,
+@@ -2376,5 +2377,5 @@ mlx5_flow_flush(struct rte_eth_dev *dev,
  		struct rte_flow_error *error __rte_unused)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  
  	mlx5_flow_list_flush(dev, &priv->flows);
-@@ -2414,5 +2415,5 @@ mlx5_flow_isolate(struct rte_eth_dev *dev,
+@@ -2393,5 +2394,5 @@ mlx5_flow_isolate(struct rte_eth_dev *dev,
  		  struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  
  	if (dev->data->dev_started) {
-@@ -2492,5 +2493,5 @@ flow_fdir_filter_convert(struct rte_eth_dev *dev,
+@@ -2471,5 +2472,5 @@ flow_fdir_filter_convert(struct rte_eth_dev *dev,
  			 struct mlx5_fdir *attributes)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	const struct rte_eth_fdir_input *input = &fdir_filter->input;
  	const struct rte_eth_fdir_masks *mask =
-@@ -2709,5 +2710,5 @@ static struct rte_flow *
+@@ -2688,5 +2689,5 @@ static struct rte_flow *
  flow_fdir_filter_lookup(struct rte_eth_dev *dev, struct mlx5_fdir *fdir_flow)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow = NULL;
  
-@@ -2738,5 +2739,5 @@ flow_fdir_filter_add(struct rte_eth_dev *dev,
+@@ -2717,5 +2718,5 @@ flow_fdir_filter_add(struct rte_eth_dev *dev,
  		     const struct rte_eth_fdir_filter *fdir_filter)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_fdir *fdir_flow;
  	struct rte_flow *flow;
-@@ -2785,5 +2786,5 @@ flow_fdir_filter_delete(struct rte_eth_dev *dev,
+@@ -2764,5 +2765,5 @@ flow_fdir_filter_delete(struct rte_eth_dev *dev,
  			const struct rte_eth_fdir_filter *fdir_filter)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow;
  	struct mlx5_fdir fdir_flow = {
-@@ -2838,5 +2839,5 @@ static void
+@@ -2817,5 +2818,5 @@ static void
  flow_fdir_filter_flush(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
@@ -1062,91 +1048,63 @@
  
  	mlx5_flow_list_flush(dev, &priv->flows);
 diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
-index d7ba93ab4..ebcdd154f 100644
+index 1f3187487..be4578d21 100644
 --- a/drivers/net/mlx5/mlx5_flow_dv.c
 +++ b/drivers/net/mlx5/mlx5_flow_dv.c
-@@ -588,5 +588,5 @@ flow_dv_validate_action_count(struct rte_eth_dev *dev,
- 			      struct rte_flow_error *error)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx5_priv *priv = dev->data->dev_private;
- 
- 	if (!priv->config.devx)
-@@ -809,5 +809,5 @@ flow_dv_encap_decap_resource_register
+@@ -294,5 +294,5 @@ flow_dv_encap_decap_resource_register
  			 struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_flow_dv_encap_decap_resource *cache_resource;
  
-@@ -1441,5 +1441,5 @@ flow_dv_modify_hdr_resource_register
- 			 struct rte_flow_error *error)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx5_priv *priv = dev->data->dev_private;
- 	struct mlx5_flow_dv_modify_hdr_resource *cache_resource;
- 
-@@ -1506,5 +1506,5 @@ static struct mlx5_flow_counter *
- flow_dv_counter_new(struct rte_eth_dev *dev, uint32_t shared, uint32_t id)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx5_priv *priv = dev->data->dev_private;
- 	struct mlx5_flow_counter *cnt = NULL;
- 	struct mlx5_devx_counter_set *dcs = NULL;
-@@ -1590,5 +1590,5 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
+@@ -723,5 +723,5 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
  			    struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	uint32_t priority_max = priv->config.flow_prio - 1;
  
-@@ -2749,5 +2749,5 @@ flow_dv_matcher_register(struct rte_eth_dev *dev,
+@@ -1801,5 +1801,5 @@ flow_dv_matcher_register(struct rte_eth_dev *dev,
  			 struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_flow_dv_matcher *cache_matcher;
  	struct mlx5dv_flow_matcher_attr dv_attr = {
-@@ -2832,5 +2832,5 @@ flow_dv_translate(struct rte_eth_dev *dev,
+@@ -1884,5 +1884,5 @@ flow_dv_translate(struct rte_eth_dev *dev,
  		  struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct rte_flow *flow = dev_flow->flow;
  	uint64_t item_flags = 0;
-@@ -3481,5 +3481,5 @@ flow_dv_query_count(struct rte_eth_dev *dev, struct rte_flow *flow,
- 		    void *data, struct rte_flow_error *error)
- {
--	struct priv *priv = dev->data->dev_private;
-+	struct mlx5_priv *priv = dev->data->dev_private;
- 	struct rte_flow_query_count *qc = data;
- 	uint64_t pkts = 0;
 diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c
-index 652270f74..3006f8386 100644
+index 96b9dd726..92f984f96 100644
 --- a/drivers/net/mlx5/mlx5_flow_tcf.c
 +++ b/drivers/net/mlx5/mlx5_flow_tcf.c
-@@ -2427,5 +2427,5 @@ flow_tcf_validate(struct rte_eth_dev *dev,
+@@ -2345,5 +2345,5 @@ flow_tcf_validate(struct rte_eth_dev *dev,
  	if ((action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) &&
  	    (action_flags & MLX5_FLOW_ACTION_PORT_ID) &&
 -	    ((struct priv *)port_id_dev->data->dev_private)->representor)
 +	    ((struct mlx5_priv *)port_id_dev->data->dev_private)->representor)
  		return rte_flow_error_set(error, ENOTSUP,
  					  RTE_FLOW_ERROR_TYPE_ACTION, actions,
-@@ -5567,5 +5567,5 @@ static void
+@@ -5322,5 +5322,5 @@ static void
  flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
  	struct mlx5_flow *dev_flow;
-@@ -5656,5 +5656,5 @@ flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
+@@ -5411,5 +5411,5 @@ flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
  	       struct rte_flow_error *error)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
  	struct mlx5_flow *dev_flow;
-@@ -6140,5 +6140,5 @@ flow_tcf_query_count(struct rte_eth_dev *dev,
+@@ -5895,5 +5895,5 @@ flow_tcf_query_count(struct rte_eth_dev *dev,
  	struct flow_tcf_stats_basic sb_data;
  	struct rte_flow_query_count *qc = data;
 -	struct priv *priv = dev->data->dev_private;
@@ -1154,7 +1112,7 @@
  	struct mlx5_flow_tcf_context *ctx = priv->tcf_context;
  	struct mnl_socket *nl = ctx->nl;
 diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
-index f7198e8aa..6c4f52f1e 100644
+index 409e1cd0c..a7b3f9342 100644
 --- a/drivers/net/mlx5/mlx5_flow_verbs.c
 +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
 @@ -56,5 +56,5 @@ flow_verbs_counter_create(struct rte_eth_dev *dev,
@@ -1662,7 +1620,7 @@
  	struct mlx5_rxq_data *rxq;
  
 diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
-index c2529f96b..be464e870 100644
+index 75194a3fa..6fd2285e0 100644
 --- a/drivers/net/mlx5/mlx5_rxtx.h
 +++ b/drivers/net/mlx5/mlx5_rxtx.h
 @@ -59,5 +59,5 @@ struct mlx5_txq_stats {
@@ -1737,59 +1695,52 @@
  	struct sockaddr_un sun = {
  		.sun_family = AF_UNIX,
 diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
-index 38e8915a4..6906dc81c 100644
+index fccb9af0d..132bf5b49 100644
 --- a/drivers/net/mlx5/mlx5_stats.c
 +++ b/drivers/net/mlx5/mlx5_stats.c
-@@ -138,5 +138,5 @@ static const unsigned int xstats_n = RTE_DIM(mlx5_counters_init);
- 
- static inline void
--mlx5_read_ib_stat(struct priv *priv, const char *ctr_name, uint64_t *stat)
-+mlx5_read_ib_stat(struct mlx5_priv *priv, const char *ctr_name, uint64_t *stat)
- {
- 	FILE *file;
-@@ -170,5 +170,5 @@ static int
+@@ -144,5 +144,5 @@ static int
  mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
  	unsigned int i;
-@@ -237,5 +237,5 @@ void
- mlx5_stats_init(struct rte_eth_dev *dev)
+@@ -222,5 +222,5 @@ void
+ mlx5_xstats_init(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
- 	struct mlx5_stats_ctrl *stats_ctrl = &priv->stats_ctrl;
-@@ -330,5 +330,5 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
+ 	unsigned int i;
+@@ -313,5 +313,5 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
  		unsigned int n)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	unsigned int i;
  	uint64_t counters[n];
-@@ -371,5 +371,5 @@ int
+@@ -354,5 +354,5 @@ int
  mlx5_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct rte_eth_stats tmp;
  	unsigned int i;
-@@ -436,5 +436,5 @@ void
+@@ -417,5 +417,5 @@ void
  mlx5_stats_reset(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
- 	struct mlx5_stats_ctrl *stats_ctrl = &priv->stats_ctrl;
  	unsigned int i;
-@@ -470,5 +470,5 @@ void
+ 	unsigned int idx;
+@@ -449,5 +449,5 @@ void
  mlx5_xstats_reset(struct rte_eth_dev *dev)
  {
 -	struct priv *priv = dev->data->dev_private;
 +	struct mlx5_priv *priv = dev->data->dev_private;
  	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
  	int stats_n;
-@@ -514,5 +514,5 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
+@@ -493,5 +493,5 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
  {
  	unsigned int i;
 -	struct priv *priv = dev->data->dev_private;
@@ -1797,7 +1748,7 @@
  	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
  	unsigned int mlx5_xstats_n = xstats_ctrl->mlx5_stats_n;
 diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
-index 3015edd7e..2137bdc46 100644
+index e2a9bb703..f874657c7 100644
 --- a/drivers/net/mlx5/mlx5_trigger.c
 +++ b/drivers/net/mlx5/mlx5_trigger.c
 @@ -24,5 +24,5 @@ static void

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/tap: fix multi-process request' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (28 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx: prefix private structure' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'mempool/dpaa2: fix continuous print on empty pool' " Kevin Traynor
                   ` (31 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: Rami Rosen, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 6b09b3866a82876ab3000b7235022cb830f181e3 Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Tue, 26 Feb 2019 09:50:56 +0000
Subject: [PATCH] net/tap: fix multi-process request

[ upstream commit c8d5690060aa574c540d4575473f62142aff4d23 ]

The structure was not initialized.

Fixes: c9aa56edec8e ("net/tap: access primary process queues from secondary")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
---
 drivers/net/tap/rte_eth_tap.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index a93429973..17273eb68 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -2056,4 +2056,5 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
 
 	/* Prepare the request */
+	memset(&request, 0, sizeof(request));
 	strlcpy(request.name, TAP_MP_KEY, sizeof(request.name));
 	strlcpy(request_param->port_name, port_name,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.306874621 +0100
+++ 0031-net-tap-fix-multi-process-request.patch	2019-04-10 14:06:07.903293350 +0100
@@ -1,12 +1,13 @@
-From c8d5690060aa574c540d4575473f62142aff4d23 Mon Sep 17 00:00:00 2001
+From 6b09b3866a82876ab3000b7235022cb830f181e3 Mon Sep 17 00:00:00 2001
 From: Raslan Darawsheh <rasland@mellanox.com>
 Date: Tue, 26 Feb 2019 09:50:56 +0000
 Subject: [PATCH] net/tap: fix multi-process request
 
+[ upstream commit c8d5690060aa574c540d4575473f62142aff4d23 ]
+
 The structure was not initialized.
 
 Fixes: c9aa56edec8e ("net/tap: access primary process queues from secondary")
-Cc: stable@dpdk.org
 
 Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
 Reviewed-by: Rami Rosen <ramirose@gmail.com>
@@ -15,10 +16,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
-index 586c8a952..6f5109fca 100644
+index a93429973..17273eb68 100644
 --- a/drivers/net/tap/rte_eth_tap.c
 +++ b/drivers/net/tap/rte_eth_tap.c
-@@ -2087,4 +2087,5 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
+@@ -2056,4 +2056,5 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
  
  	/* Prepare the request */
 +	memset(&request, 0, sizeof(request));

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'mempool/dpaa2: fix continuous print on empty pool' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (29 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/tap: fix multi-process request' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: restore mbuf first when freeing zmbuf' " Kevin Traynor
                   ` (30 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 261a9831bd69033289f4aaaba54eda0950a0e64d Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Fri, 22 Feb 2019 11:15:59 +0000
Subject: [PATCH] mempool/dpaa2: fix continuous print on empty pool

[ upstream commit f8f9f645226ed63f3b55dd487faa22f766078e53 ]

Changing the print to DP_DEBUG to avoid continuous prints when
buffer pools runs out of buffers

Fixes: 3646ccf0b036 ("mempool/dpaa2: support dynamic logging")

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 790cded80..e26b0ba15 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -317,6 +317,6 @@ rte_dpaa2_mbuf_alloc_bulk(struct rte_mempool *pool,
 		 */
 		if (ret <= 0) {
-			DPAA2_MEMPOOL_ERR("Buffer acquire failed with"
-					  " err code: %d", ret);
+			DPAA2_MEMPOOL_DP_DEBUG(
+				"Buffer acquire failed with err code: %d", ret);
 			/* The API expect the exact number of requested bufs */
 			/* Releasing all buffers allocated */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.382606757 +0100
+++ 0032-mempool-dpaa2-fix-continuous-print-on-empty-pool.patch	2019-04-10 14:06:07.903293350 +0100
@@ -1,13 +1,14 @@
-From f8f9f645226ed63f3b55dd487faa22f766078e53 Mon Sep 17 00:00:00 2001
+From 261a9831bd69033289f4aaaba54eda0950a0e64d Mon Sep 17 00:00:00 2001
 From: Hemant Agrawal <hemant.agrawal@nxp.com>
 Date: Fri, 22 Feb 2019 11:15:59 +0000
 Subject: [PATCH] mempool/dpaa2: fix continuous print on empty pool
 
+[ upstream commit f8f9f645226ed63f3b55dd487faa22f766078e53 ]
+
 Changing the print to DP_DEBUG to avoid continuous prints when
 buffer pools runs out of buffers
 
 Fixes: 3646ccf0b036 ("mempool/dpaa2: support dynamic logging")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
 ---
@@ -15,10 +16,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
-index 335eae40e..da66577cc 100644
+index 790cded80..e26b0ba15 100644
 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
 +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
-@@ -327,6 +327,6 @@ rte_dpaa2_mbuf_alloc_bulk(struct rte_mempool *pool,
+@@ -317,6 +317,6 @@ rte_dpaa2_mbuf_alloc_bulk(struct rte_mempool *pool,
  		 */
  		if (ret <= 0) {
 -			DPAA2_MEMPOOL_ERR("Buffer acquire failed with"

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'vhost: restore mbuf first when freeing zmbuf' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (30 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'mempool/dpaa2: fix continuous print on empty pool' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for zero copy mbuf' " Kevin Traynor
                   ` (29 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 17b72dcd5c6f0ea86bb76a867789e34c218500a0 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Fri, 22 Feb 2019 10:42:06 +0800
Subject: [PATCH] vhost: restore mbuf first when freeing zmbuf

[ upstream commit 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 ]

The mbufs should also be restored in free_zmbufs().

Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
Fixes: 3ebd930588b7 ("vhost: fix mbuf free")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.h      | 16 ++++++++++++++++
 lib/librte_vhost/vhost_user.c |  1 +
 lib/librte_vhost/virtio_net.c | 16 ----------------
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 552b9298d..d4f34c34a 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -756,3 +756,19 @@ kick:
 }
 
+static __rte_always_inline void
+restore_mbuf(struct rte_mbuf *m)
+{
+	uint32_t mbuf_size, priv_size;
+
+	while (m) {
+		priv_size = rte_pktmbuf_priv_size(m->pool);
+		mbuf_size = sizeof(struct rte_mbuf) + priv_size;
+		/* start of buffer is after mbuf structure and priv data */
+
+		m->buf_addr = (char *)m + mbuf_size;
+		m->buf_iova = rte_mempool_virt2iova(m) + mbuf_size;
+		m = m->next;
+	}
+}
+
 #endif /* _VHOST_NET_CDEV_H_ */
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 19e04c953..e078473ec 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1219,4 +1219,5 @@ free_zmbufs(struct vhost_virtqueue *vq)
 		next = TAILQ_NEXT(zmbuf, next);
 
+		restore_mbuf(zmbuf->mbuf);
 		rte_pktmbuf_free(zmbuf->mbuf);
 		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index 15d682c3c..d8b6bdea5 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -1344,20 +1344,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
 }
 
-static __rte_always_inline void
-restore_mbuf(struct rte_mbuf *m)
-{
-	uint32_t mbuf_size, priv_size;
-
-	while (m) {
-		priv_size = rte_pktmbuf_priv_size(m->pool);
-		mbuf_size = sizeof(struct rte_mbuf) + priv_size;
-		/* start of buffer is after mbuf structure and priv data */
-
-		m->buf_addr = (char *)m + mbuf_size;
-		m->buf_iova = rte_mempool_virt2iova(m) + mbuf_size;
-		m = m->next;
-	}
-}
-
 static __rte_always_inline uint16_t
 virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.447418507 +0100
+++ 0033-vhost-restore-mbuf-first-when-freeing-zmbuf.patch	2019-04-10 14:06:07.911293167 +0100
@@ -1,13 +1,14 @@
-From 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 Mon Sep 17 00:00:00 2001
+From 17b72dcd5c6f0ea86bb76a867789e34c218500a0 Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Fri, 22 Feb 2019 10:42:06 +0800
 Subject: [PATCH] vhost: restore mbuf first when freeing zmbuf
 
+[ upstream commit 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 ]
+
 The mbufs should also be restored in free_zmbufs().
 
 Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
 Fixes: 3ebd930588b7 ("vhost: fix mbuf free")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -18,10 +19,10 @@
  3 files changed, 17 insertions(+), 16 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
-index fc31796bf..bcfce274b 100644
+index 552b9298d..d4f34c34a 100644
 --- a/lib/librte_vhost/vhost.h
 +++ b/lib/librte_vhost/vhost.h
-@@ -742,3 +742,19 @@ free_ind_table(void *idesc)
+@@ -756,3 +756,19 @@ kick:
  }
  
 +static __rte_always_inline void
@@ -42,7 +43,7 @@
 +
  #endif /* _VHOST_NET_CDEV_H_ */
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index b086ad95f..e3ddf2589 100644
+index 19e04c953..e078473ec 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
 @@ -1219,4 +1219,5 @@ free_zmbufs(struct vhost_virtqueue *vq)
@@ -52,10 +53,10 @@
  		rte_pktmbuf_free(zmbuf->mbuf);
  		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 37a4c00d2..862ca5e1a 100644
+index 15d682c3c..d8b6bdea5 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -1319,20 +1319,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
+@@ -1344,20 +1344,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
  }
  
 -static __rte_always_inline void

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'vhost: fix potential use-after-free for zero copy mbuf' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (31 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: restore mbuf first when freeing zmbuf' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for memory region' " Kevin Traynor
                   ` (28 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 006278a264ba147aa6f613f2313541b38b105f7b Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Fri, 22 Feb 2019 10:42:07 +0800
Subject: [PATCH] vhost: fix potential use-after-free for zero copy mbuf

[ upstream commit d767436ee5d26d1d417ae17d1a2a47879bf632a6 ]

Don't free the zero copy mbufs before they have been consumed,
otherwise there could be use-after-free.

Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.h      | 12 ++++++++++++
 lib/librte_vhost/vhost_user.c |  3 +++
 lib/librte_vhost/virtio_net.c | 12 ------------
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index d4f34c34a..24702b4a1 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -772,3 +772,15 @@ restore_mbuf(struct rte_mbuf *m)
 }
 
+static __rte_always_inline bool
+mbuf_is_consumed(struct rte_mbuf *m)
+{
+	while (m) {
+		if (rte_mbuf_refcnt_read(m) > 1)
+			return false;
+		m = m->next;
+	}
+
+	return true;
+}
+
 #endif /* _VHOST_NET_CDEV_H_ */
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index e078473ec..d19c09cbe 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1219,4 +1219,7 @@ free_zmbufs(struct vhost_virtqueue *vq)
 		next = TAILQ_NEXT(zmbuf, next);
 
+		while (!mbuf_is_consumed(zmbuf->mbuf))
+			usleep(1000);
+
 		restore_mbuf(zmbuf->mbuf);
 		rte_pktmbuf_free(zmbuf->mbuf);
diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index d8b6bdea5..206c1f125 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -1332,16 +1332,4 @@ again:
 }
 
-static __rte_always_inline bool
-mbuf_is_consumed(struct rte_mbuf *m)
-{
-	while (m) {
-		if (rte_mbuf_refcnt_read(m) > 1)
-			return false;
-		m = m->next;
-	}
-
-	return true;
-}
-
 static __rte_always_inline uint16_t
 virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.520594931 +0100
+++ 0034-vhost-fix-potential-use-after-free-for-zero-copy-mbu.patch	2019-04-10 14:06:07.918293007 +0100
@@ -1,13 +1,14 @@
-From d767436ee5d26d1d417ae17d1a2a47879bf632a6 Mon Sep 17 00:00:00 2001
+From 006278a264ba147aa6f613f2313541b38b105f7b Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Fri, 22 Feb 2019 10:42:07 +0800
 Subject: [PATCH] vhost: fix potential use-after-free for zero copy mbuf
 
+[ upstream commit d767436ee5d26d1d417ae17d1a2a47879bf632a6 ]
+
 Don't free the zero copy mbufs before they have been consumed,
 otherwise there could be use-after-free.
 
 Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -18,10 +19,10 @@
  3 files changed, 15 insertions(+), 12 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
-index bcfce274b..044651b19 100644
+index d4f34c34a..24702b4a1 100644
 --- a/lib/librte_vhost/vhost.h
 +++ b/lib/librte_vhost/vhost.h
-@@ -758,3 +758,15 @@ restore_mbuf(struct rte_mbuf *m)
+@@ -772,3 +772,15 @@ restore_mbuf(struct rte_mbuf *m)
  }
  
 +static __rte_always_inline bool
@@ -38,7 +39,7 @@
 +
  #endif /* _VHOST_NET_CDEV_H_ */
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index e3ddf2589..6d8253514 100644
+index e078473ec..d19c09cbe 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
 @@ -1219,4 +1219,7 @@ free_zmbufs(struct vhost_virtqueue *vq)
@@ -50,10 +51,10 @@
  		restore_mbuf(zmbuf->mbuf);
  		rte_pktmbuf_free(zmbuf->mbuf);
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 862ca5e1a..40a292364 100644
+index d8b6bdea5..206c1f125 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -1307,16 +1307,4 @@ again:
+@@ -1332,16 +1332,4 @@ again:
  }
  
 -static __rte_always_inline bool

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'vhost: fix potential use-after-free for memory region' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (32 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for zero copy mbuf' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'app/pdump: remove only created vdevs' " Kevin Traynor
                   ` (27 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 33e48fdb4e408df754a8d668bfdd0b77dceba0e4 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Fri, 22 Feb 2019 10:42:08 +0800
Subject: [PATCH] vhost: fix potential use-after-free for memory region

[ upstream commit 2a2904fa9cc44493bcea495bab944b032b24f7cb ]

Reclaim outstanding zmbufs first before freeing memory regions,
otherwise there could be use-after-free.

Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.h      |  6 +++++
 lib/librte_vhost/vhost_user.c | 46 +++++++++++++++++++++++++----------
 lib/librte_vhost/virtio_net.c |  6 -----
 3 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 24702b4a1..0f9fc9edd 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -784,3 +784,9 @@ mbuf_is_consumed(struct rte_mbuf *m)
 }
 
+static __rte_always_inline void
+put_zmbuf(struct zcopy_mbuf *zmbuf)
+{
+	zmbuf->in_use = 0;
+}
+
 #endif /* _VHOST_NET_CDEV_H_ */
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index d19c09cbe..be4f3c6c8 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -94,4 +94,27 @@ get_blk_size(int fd)
 }
 
+/*
+ * Reclaim all the outstanding zmbufs for a virtqueue.
+ */
+static void
+drain_zmbuf_list(struct vhost_virtqueue *vq)
+{
+	struct zcopy_mbuf *zmbuf, *next;
+
+	for (zmbuf = TAILQ_FIRST(&vq->zmbuf_list);
+	     zmbuf != NULL; zmbuf = next) {
+		next = TAILQ_NEXT(zmbuf, next);
+
+		while (!mbuf_is_consumed(zmbuf->mbuf))
+			usleep(1000);
+
+		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
+		restore_mbuf(zmbuf->mbuf);
+		rte_pktmbuf_free(zmbuf->mbuf);
+		put_zmbuf(zmbuf);
+		vq->nr_zmbuf -= 1;
+	}
+}
+
 static void
 free_mem_region(struct virtio_net *dev)
@@ -99,8 +122,17 @@ free_mem_region(struct virtio_net *dev)
 	uint32_t i;
 	struct rte_vhost_mem_region *reg;
+	struct vhost_virtqueue *vq;
 
 	if (!dev || !dev->mem)
 		return;
 
+	if (dev->dequeue_zero_copy) {
+		for (i = 0; i < dev->nr_vring; i++) {
+			vq = dev->virtqueue[i];
+			if (vq)
+				drain_zmbuf_list(vq);
+		}
+	}
+
 	for (i = 0; i < dev->mem->nregions; i++) {
 		reg = &dev->mem->regions[i];
@@ -1213,17 +1245,5 @@ static void
 free_zmbufs(struct vhost_virtqueue *vq)
 {
-	struct zcopy_mbuf *zmbuf, *next;
-
-	for (zmbuf = TAILQ_FIRST(&vq->zmbuf_list);
-	     zmbuf != NULL; zmbuf = next) {
-		next = TAILQ_NEXT(zmbuf, next);
-
-		while (!mbuf_is_consumed(zmbuf->mbuf))
-			usleep(1000);
-
-		restore_mbuf(zmbuf->mbuf);
-		rte_pktmbuf_free(zmbuf->mbuf);
-		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
-	}
+	drain_zmbuf_list(vq);
 
 	rte_free(vq->zmbufs);
diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index 206c1f125..a6576891a 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -1089,10 +1089,4 @@ vhost_dequeue_offload(struct virtio_net_hdr *hdr, struct rte_mbuf *m)
 }
 
-static __rte_always_inline void
-put_zmbuf(struct zcopy_mbuf *zmbuf)
-{
-	zmbuf->in_use = 0;
-}
-
 static __rte_always_inline int
 copy_desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.595605800 +0100
+++ 0035-vhost-fix-potential-use-after-free-for-memory-region.patch	2019-04-10 14:06:07.925292847 +0100
@@ -1,13 +1,14 @@
-From 2a2904fa9cc44493bcea495bab944b032b24f7cb Mon Sep 17 00:00:00 2001
+From 33e48fdb4e408df754a8d668bfdd0b77dceba0e4 Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Fri, 22 Feb 2019 10:42:08 +0800
 Subject: [PATCH] vhost: fix potential use-after-free for memory region
 
+[ upstream commit 2a2904fa9cc44493bcea495bab944b032b24f7cb ]
+
 Reclaim outstanding zmbufs first before freeing memory regions,
 otherwise there could be use-after-free.
 
 Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -18,10 +19,10 @@
  3 files changed, 39 insertions(+), 19 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
-index 044651b19..f008ec43b 100644
+index 24702b4a1..0f9fc9edd 100644
 --- a/lib/librte_vhost/vhost.h
 +++ b/lib/librte_vhost/vhost.h
-@@ -770,3 +770,9 @@ mbuf_is_consumed(struct rte_mbuf *m)
+@@ -784,3 +784,9 @@ mbuf_is_consumed(struct rte_mbuf *m)
  }
  
 +static __rte_always_inline void
@@ -32,7 +33,7 @@
 +
  #endif /* _VHOST_NET_CDEV_H_ */
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index 6d8253514..36c0c676d 100644
+index d19c09cbe..be4f3c6c8 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
 @@ -94,4 +94,27 @@ get_blk_size(int fd)
@@ -101,10 +102,10 @@
  
  	rte_free(vq->zmbufs);
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 40a292364..a6a33a101 100644
+index 206c1f125..a6576891a 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -1064,10 +1064,4 @@ vhost_dequeue_offload(struct virtio_net_hdr *hdr, struct rte_mbuf *m)
+@@ -1089,10 +1089,4 @@ vhost_dequeue_offload(struct virtio_net_hdr *hdr, struct rte_mbuf *m)
  }
  
 -static __rte_always_inline void

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'app/pdump: remove only created vdevs' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (33 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for memory region' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'crypto/virtio: use local log type' " Kevin Traynor
                   ` (26 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Gage Eads; +Cc: Reshma Pattan, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 35abe5bc24c40c288dc5898e292f6e80fab4b8c9 Mon Sep 17 00:00:00 2001
From: Gage Eads <gage.eads@intel.com>
Date: Tue, 26 Feb 2019 10:04:37 -0600
Subject: [PATCH] app/pdump: remove only created vdevs

[ upstream commit 499ca6161007d95d6727c4236b53fe8036efda00 ]

This commit fixes a bug in which a unidirectional pdump could attempt to
remove devices it didn't create.

Fixes: 35cb223ab7be ("app/pdump: fix vdev cleanup")

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
---
 app/pdump/main.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/app/pdump/main.c b/app/pdump/main.c
index 5e183ea90..ccf2a1d2f 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -513,10 +513,17 @@ cleanup_pdump_resources(void)
 			free_ring_data(pt->tx_ring, pt->tx_vdev_id, &pt->stats);
 
-		/* Remove the vdev created */
-		rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name);
-		rte_eal_hotplug_remove("vdev", name);
+		/* Remove the vdev(s) created */
+		if (pt->dir & RTE_PDUMP_FLAG_RX) {
+			rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name);
+			rte_eal_hotplug_remove("vdev", name);
+		}
 
-		rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name);
-		rte_eal_hotplug_remove("vdev", name);
+		if (pt->single_pdump_dev)
+			continue;
+
+		if (pt->dir & RTE_PDUMP_FLAG_TX) {
+			rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name);
+			rte_eal_hotplug_remove("vdev", name);
+		}
 
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.654856069 +0100
+++ 0036-app-pdump-remove-only-created-vdevs.patch	2019-04-10 14:06:07.928292778 +0100
@@ -1,13 +1,14 @@
-From 499ca6161007d95d6727c4236b53fe8036efda00 Mon Sep 17 00:00:00 2001
+From 35abe5bc24c40c288dc5898e292f6e80fab4b8c9 Mon Sep 17 00:00:00 2001
 From: Gage Eads <gage.eads@intel.com>
 Date: Tue, 26 Feb 2019 10:04:37 -0600
 Subject: [PATCH] app/pdump: remove only created vdevs
 
+[ upstream commit 499ca6161007d95d6727c4236b53fe8036efda00 ]
+
 This commit fixes a bug in which a unidirectional pdump could attempt to
 remove devices it didn't create.
 
 Fixes: 35cb223ab7be ("app/pdump: fix vdev cleanup")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gage Eads <gage.eads@intel.com>
 Acked-by: Reshma Pattan <reshma.pattan@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'crypto/virtio: use local log type' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (34 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'app/pdump: remove only created vdevs' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/softnic: fix possible buffer overflow' " Kevin Traynor
                   ` (25 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 1ddc48638299d9dec319f120958e26313609c195 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 26 Feb 2019 13:34:21 -0800
Subject: [PATCH] crypto/virtio: use local log type

[ upstream commit 85016c7735d9b328fddd296ea3a473d6a242b847 ]

The virtio crypto driver was using PMD log type and it should
be using the local log type.

Fixes: 25500d4b8076 ("crypto/virtio: support device init")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/crypto/virtio/virtio_logs.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/virtio/virtio_logs.h b/drivers/crypto/virtio/virtio_logs.h
index 26a286cf8..1ee381930 100644
--- a/drivers/crypto/virtio/virtio_logs.h
+++ b/drivers/crypto/virtio/virtio_logs.h
@@ -8,6 +8,8 @@
 #include <rte_log.h>
 
+extern int virtio_crypto_logtype_init;
+
 #define PMD_INIT_LOG(level, fmt, args...) \
-	rte_log(RTE_LOG_ ## level, RTE_LOGTYPE_PMD, \
+	rte_log(RTE_LOG_ ## level, virtio_crypto_logtype_init, \
 		"PMD: %s(): " fmt "\n", __func__, ##args)
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.714828221 +0100
+++ 0037-crypto-virtio-use-local-log-type.patch	2019-04-10 14:06:07.928292778 +0100
@@ -1,13 +1,14 @@
-From 85016c7735d9b328fddd296ea3a473d6a242b847 Mon Sep 17 00:00:00 2001
+From 1ddc48638299d9dec319f120958e26313609c195 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Tue, 26 Feb 2019 13:34:21 -0800
 Subject: [PATCH] crypto/virtio: use local log type
 
+[ upstream commit 85016c7735d9b328fddd296ea3a473d6a242b847 ]
+
 The virtio crypto driver was using PMD log type and it should
 be using the local log type.
 
 Fixes: 25500d4b8076 ("crypto/virtio: support device init")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/softnic: fix possible buffer overflow' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (35 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'crypto/virtio: use local log type' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'drivers/net: fix shifting 32-bit signed variable 31 times' " Kevin Traynor
                   ` (24 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Pallantla Poornima; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 111ed81e6a13a08afeb2464034ae080dfc8e2e74 Mon Sep 17 00:00:00 2001
From: Pallantla Poornima <pallantlax.poornima@intel.com>
Date: Mon, 4 Feb 2019 07:23:48 +0000
Subject: [PATCH] net/softnic: fix possible buffer overflow

[ upstream commit fef6b216390f33c066ea15e9de7845dfc3ab6d6a ]

sprintf function is not secure as it doesn't check the length of string.
More secure function snprintf is used.

Fixes: daabf2fb949b ("net/softnic: map flow action to table action")

Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/softnic/rte_eth_softnic_flow.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/softnic/rte_eth_softnic_flow.c b/drivers/net/softnic/rte_eth_softnic_flow.c
index 21e753001..aefc384dc 100644
--- a/drivers/net/softnic/rte_eth_softnic_flow.c
+++ b/drivers/net/softnic/rte_eth_softnic_flow.c
@@ -1284,5 +1284,6 @@ flow_rule_action_get(struct pmd_internals *softnic,
 					"QUEUE: Invalid RX queue ID");
 
-			sprintf(name, "RXQ%u", (uint32_t)conf->index);
+			snprintf(name, sizeof(name), "RXQ%u",
+					(uint32_t)conf->index);
 
 			status = softnic_pipeline_port_out_find(softnic,
@@ -1374,5 +1375,5 @@ flow_rule_action_get(struct pmd_internals *softnic,
 						"RSS: Invalid RX queue ID");
 
-				sprintf(name, "RXQ%u",
+				snprintf(name, sizeof(name), "RXQ%u",
 					(uint32_t)conf->queue[i]);
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.788597868 +0100
+++ 0038-net-softnic-fix-possible-buffer-overflow.patch	2019-04-10 14:06:07.931292710 +0100
@@ -1,13 +1,14 @@
-From fef6b216390f33c066ea15e9de7845dfc3ab6d6a Mon Sep 17 00:00:00 2001
+From 111ed81e6a13a08afeb2464034ae080dfc8e2e74 Mon Sep 17 00:00:00 2001
 From: Pallantla Poornima <pallantlax.poornima@intel.com>
 Date: Mon, 4 Feb 2019 07:23:48 +0000
 Subject: [PATCH] net/softnic: fix possible buffer overflow
 
+[ upstream commit fef6b216390f33c066ea15e9de7845dfc3ab6d6a ]
+
 sprintf function is not secure as it doesn't check the length of string.
 More secure function snprintf is used.
 
 Fixes: daabf2fb949b ("net/softnic: map flow action to table action")
-Cc: stable@dpdk.org
 
 Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'drivers/net: fix shifting 32-bit signed variable 31 times' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (36 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'net/softnic: fix possible buffer overflow' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix result of svg include check' " Kevin Traynor
                   ` (23 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Andrius Sirvys; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From be5e309d7a10a99ba49a16d6853f422576d5ad37 Mon Sep 17 00:00:00 2001
From: Andrius Sirvys <andrius.sirvys@intel.com>
Date: Tue, 19 Feb 2019 13:24:50 +0000
Subject: [PATCH] drivers/net: fix shifting 32-bit signed variable 31 times

[ upstream commit 902f389f9b4cad1feba320e8b779432eeb76cada ]

Shifting signed 32-bit values by 31-bits has the potential for
unexpected  outcomes as compiler can overwrite a bit.
Specified that values are unsigned.

Errors are observed from running cppcheck.

Bugzilla ID: 58
Fixes: 69e209be5464 ("net/axgbe: add register map and related macros")
Fixes: b5bf7719221d ("bnx2x: driver support routines")
Fixes: ed2ced6fe927 ("net/bnxt: check initialization before accessing stats")
Fixes: 6fda3f0ddda9 ("net/cxgbe: add API to program hardware MPS table")
Fixes: bdb244b96920 ("e1000: whitespace changes")
Fixes: 5a32a257f957 ("e1000: more NICs in base driver")
Fixes: 2fe669f4bcd2 ("net/nfp: support MAC address change")
Fixes: defb9a5dd156 ("nfp: introduce driver initialization")
Fixes: ec94dbc57362 ("qede: add base driver")
Fixes: d2e7d931d0ad ("net/qede/base: formatting changes")
Fixes: cdc07e83bb24 ("net/tap: add eBPF program file")

Signed-off-by: Andrius Sirvys <andrius.sirvys@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/axgbe/axgbe_common.h         | 4 ++--
 drivers/net/bnx2x/ecore_hsi.h            | 2 +-
 drivers/net/bnx2x/ecore_reg.h            | 2 +-
 drivers/net/bnx2x/elink.h                | 2 +-
 drivers/net/bnxt/bnxt.h                  | 2 +-
 drivers/net/cxgbe/base/t4_hw.c           | 2 +-
 drivers/net/e1000/base/e1000_82575.h     | 4 ++--
 drivers/net/e1000/base/e1000_ich8lan.c   | 2 +-
 drivers/net/nfp/nfp_net_ctrl.h           | 4 ++--
 drivers/net/qede/base/common_hsi.h       | 4 ++--
 drivers/net/qede/base/ecore_hsi_common.h | 2 +-
 drivers/net/qede/base/ecore_hsi_eth.h    | 2 +-
 drivers/net/qede/base/ecore_hw_defs.h    | 2 +-
 drivers/net/tap/tap_bpf_program.c        | 2 +-
 14 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_common.h
index d25d54cac..34f60f156 100644
--- a/drivers/net/axgbe/axgbe_common.h
+++ b/drivers/net/axgbe/axgbe_common.h
@@ -1352,7 +1352,7 @@ do {									\
 #define SET_BITS_LE(_var, _index, _width, _val)				\
 do {									\
-	(_var) &= rte_cpu_to_le_32(~(((0x1 << (_width)) - 1) << (_index)));\
+	(_var) &= rte_cpu_to_le_32(~(((0x1U << (_width)) - 1) << (_index)));\
 	(_var) |= rte_cpu_to_le_32((((_val) &				\
-			      ((0x1 << (_width)) - 1)) << (_index)));	\
+			      ((0x1U << (_width)) - 1)) << (_index)));	\
 } while (0)
 
diff --git a/drivers/net/bnx2x/ecore_hsi.h b/drivers/net/bnx2x/ecore_hsi.h
index 1192e5dd8..74189eed6 100644
--- a/drivers/net/bnx2x/ecore_hsi.h
+++ b/drivers/net/bnx2x/ecore_hsi.h
@@ -3546,5 +3546,5 @@ struct igu_regular
 #define IGU_REGULAR_CLEANUP_SET (0x1<<30) /* BitField sb_id_and_flags	 */
 #define IGU_REGULAR_CLEANUP_SET_SHIFT 30
-#define IGU_REGULAR_BCLEANUP (0x1<<31) /* BitField sb_id_and_flags	 */
+#define IGU_REGULAR_BCLEANUP (0x1U<<31) /* BitField sb_id_and_flags	 */
 #define IGU_REGULAR_BCLEANUP_SHIFT 31
 	uint32_t reserved_2;
diff --git a/drivers/net/bnx2x/ecore_reg.h b/drivers/net/bnx2x/ecore_reg.h
index d69e857bf..7af9a2d81 100644
--- a/drivers/net/bnx2x/ecore_reg.h
+++ b/drivers/net/bnx2x/ecore_reg.h
@@ -1982,5 +1982,5 @@
 #define AEU_INPUTS_ATTN_BITS_BRB_HW_INTERRUPT		      (0x1<<19)
 #define AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR		      (0x1<<18)
-#define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT		      (0x1<<31)
+#define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT		      (0x1U<<31)
 #define AEU_INPUTS_ATTN_BITS_CCM_PARITY_ERROR		      (0x1<<30)
 #define AEU_INPUTS_ATTN_BITS_CDU_HW_INTERRUPT		      (0x1<<9)
diff --git a/drivers/net/bnx2x/elink.h b/drivers/net/bnx2x/elink.h
index c8b08bc35..dd70ac6c6 100644
--- a/drivers/net/bnx2x/elink.h
+++ b/drivers/net/bnx2x/elink.h
@@ -441,5 +441,5 @@ struct elink_params {
 #define ELINK_EEE_MODE_OVERRIDE_NVRAM		(1 << 29)
 #define ELINK_EEE_MODE_ENABLE_LPI		(1 << 30)
-#define ELINK_EEE_MODE_ADV_LPI			(1 << 31)
+#define ELINK_EEE_MODE_ADV_LPI			(1U << 31)
 
 	uint16_t hw_led_mode; /* part of the hw_config read from the shmem */
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index f75b0ad3c..5535c376e 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -264,5 +264,5 @@ struct bnxt {
 #define BNXT_FLAG_DFLT_VNIC_SET	(1 << 12)
 #define BNXT_FLAG_NEW_RM	(1 << 30)
-#define BNXT_FLAG_INIT_DONE	(1 << 31)
+#define BNXT_FLAG_INIT_DONE	(1U << 31)
 #define BNXT_PF(bp)		(!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)		((bp)->flags & BNXT_FLAG_VF)
diff --git a/drivers/net/cxgbe/base/t4_hw.c b/drivers/net/cxgbe/base/t4_hw.c
index 701e0b1fe..774dd082d 100644
--- a/drivers/net/cxgbe/base/t4_hw.c
+++ b/drivers/net/cxgbe/base/t4_hw.c
@@ -4247,5 +4247,5 @@ int t4_free_raw_mac_filt(struct adapter *adap, unsigned int viid,
 				   V_FW_VI_MAC_CMD_VIID(viid));
 	raw = V_FW_VI_MAC_CMD_ENTRY_TYPE(FW_VI_MAC_TYPE_RAW);
-	c.freemacs_to_len16 = cpu_to_be32(V_FW_VI_MAC_CMD_FREEMACS(0) |
+	c.freemacs_to_len16 = cpu_to_be32(V_FW_VI_MAC_CMD_FREEMACS(0U) |
 					  raw |
 					  V_FW_CMD_LEN16(1));
diff --git a/drivers/net/e1000/base/e1000_82575.h b/drivers/net/e1000/base/e1000_82575.h
index 4133cdd82..6f2b22c13 100644
--- a/drivers/net/e1000/base/e1000_82575.h
+++ b/drivers/net/e1000/base/e1000_82575.h
@@ -384,5 +384,5 @@ struct e1000_adv_tx_context_desc {
 #define E1000_ETQF_IMM_INT		(1 << 29)
 #define E1000_ETQF_1588			(1 << 30)
-#define E1000_ETQF_QUEUE_ENABLE		(1 << 31)
+#define E1000_ETQF_QUEUE_ENABLE		(1U << 31)
 /*
  * ETQF filter list: one static filter per filter consumer. This is
@@ -411,5 +411,5 @@ struct e1000_adv_tx_context_desc {
 #define E1000_DTXSWC_VLAN_SPOOF_SHIFT	8
 #define E1000_DTXSWC_LLE_SHIFT		16
-#define E1000_DTXSWC_VMDQ_LOOPBACK_EN	(1 << 31)  /* global VF LB enable */
+#define E1000_DTXSWC_VMDQ_LOOPBACK_EN	(1U << 31)  /* global VF LB enable */
 
 /* Easy defines for setting default pool, would normally be left a zero */
diff --git a/drivers/net/e1000/base/e1000_ich8lan.c b/drivers/net/e1000/base/e1000_ich8lan.c
index 92ab6fc6c..2654a18ad 100644
--- a/drivers/net/e1000/base/e1000_ich8lan.c
+++ b/drivers/net/e1000/base/e1000_ich8lan.c
@@ -5167,5 +5167,5 @@ STATIC void e1000_initialize_hw_bits_ich8lan(struct e1000_hw *hw)
 	if (hw->mac.type == e1000_ich8lan) {
 		reg = E1000_READ_REG(hw, E1000_STATUS);
-		reg &= ~(1 << 31);
+		reg &= ~(1U << 31);
 		E1000_WRITE_REG(hw, E1000_STATUS, reg);
 	}
diff --git a/drivers/net/nfp/nfp_net_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h
index 21e17da1c..fc3540a2e 100644
--- a/drivers/net/nfp/nfp_net_ctrl.h
+++ b/drivers/net/nfp/nfp_net_ctrl.h
@@ -123,5 +123,5 @@
 #define   NFP_NET_CFG_CTRL_LSO2           (0x1 << 28) /* LSO/TSO (version 2) */
 #define   NFP_NET_CFG_CTRL_RSS2           (0x1 << 29) /* RSS (version 2) */
-#define   NFP_NET_CFG_CTRL_LIVE_ADDR      (0x1 << 31) /* live MAC addr change */
+#define   NFP_NET_CFG_CTRL_LIVE_ADDR      (0x1U << 31)/* live MAC addr change */
 #define NFP_NET_CFG_UPDATE              0x0004
 #define   NFP_NET_CFG_UPDATE_GEN          (0x1 <<  0) /* General update */
@@ -136,5 +136,5 @@
 #define   NFP_NET_CFG_UPDATE_VXLAN        (0x1 <<  9) /* VXLAN port change */
 #define   NFP_NET_CFG_UPDATE_MACADDR      (0x1 << 11) /* MAC address change */
-#define   NFP_NET_CFG_UPDATE_ERR          (0x1 << 31) /* A error occurred */
+#define   NFP_NET_CFG_UPDATE_ERR          (0x1U << 31) /* A error occurred */
 #define NFP_NET_CFG_TXRS_ENABLE         0x0008
 #define NFP_NET_CFG_RXRS_ENABLE         0x0010
diff --git a/drivers/net/qede/base/common_hsi.h b/drivers/net/qede/base/common_hsi.h
index 2aaf298f1..7047eb9f8 100644
--- a/drivers/net/qede/base/common_hsi.h
+++ b/drivers/net/qede/base/common_hsi.h
@@ -401,7 +401,7 @@
 #define QM_BYTE_CRD_REG_SIGN_BIT	(1 << (QM_BYTE_CRD_REG_WIDTH - 1))
 #define QM_WFQ_CRD_REG_WIDTH		32
-#define QM_WFQ_CRD_REG_SIGN_BIT		(1 << (QM_WFQ_CRD_REG_WIDTH - 1))
+#define QM_WFQ_CRD_REG_SIGN_BIT		(1U << (QM_WFQ_CRD_REG_WIDTH - 1))
 #define QM_RL_CRD_REG_WIDTH		32
-#define QM_RL_CRD_REG_SIGN_BIT		(1 << (QM_RL_CRD_REG_WIDTH - 1))
+#define QM_RL_CRD_REG_SIGN_BIT		(1U << (QM_RL_CRD_REG_WIDTH - 1))
 
 /*****************/
diff --git a/drivers/net/qede/base/ecore_hsi_common.h b/drivers/net/qede/base/ecore_hsi_common.h
index 6d4a4dd70..2ce0ea9e5 100644
--- a/drivers/net/qede/base/ecore_hsi_common.h
+++ b/drivers/net/qede/base/ecore_hsi_common.h
@@ -2251,5 +2251,5 @@ struct igu_cleanup {
 #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
 /* must always be set (use enum command_type_bit) */
-#define IGU_CLEANUP_COMMAND_TYPE_MASK  0x1
+#define IGU_CLEANUP_COMMAND_TYPE_MASK  0x1U
 #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
 	__le32 reserved1;
diff --git a/drivers/net/qede/base/ecore_hsi_eth.h b/drivers/net/qede/base/ecore_hsi_eth.h
index 158ca673b..7bc094792 100644
--- a/drivers/net/qede/base/ecore_hsi_eth.h
+++ b/drivers/net/qede/base/ecore_hsi_eth.h
@@ -2421,5 +2421,5 @@ struct gft_ram_line {
 #define GFT_RAM_LINE_DST_PORT_MASK                 0x1
 #define GFT_RAM_LINE_DST_PORT_SHIFT                30
-#define GFT_RAM_LINE_SRC_PORT_MASK                 0x1
+#define GFT_RAM_LINE_SRC_PORT_MASK                 0x1U
 #define GFT_RAM_LINE_SRC_PORT_SHIFT                31
 	__le32 hi;
diff --git a/drivers/net/qede/base/ecore_hw_defs.h b/drivers/net/qede/base/ecore_hw_defs.h
index b8c2686fc..92361e79c 100644
--- a/drivers/net/qede/base/ecore_hw_defs.h
+++ b/drivers/net/qede/base/ecore_hw_defs.h
@@ -52,5 +52,5 @@ struct igu_ctrl_reg {
 #define IGU_CTRL_REG_RESERVED_MASK	0x1
 #define IGU_CTRL_REG_RESERVED_SHIFT	28
-#define IGU_CTRL_REG_TYPE_MASK		0x1 /* use enum igu_ctrl_cmd */
+#define IGU_CTRL_REG_TYPE_MASK		0x1U /* use enum igu_ctrl_cmd */
 #define IGU_CTRL_REG_TYPE_SHIFT		31
 };
diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/tap_bpf_program.c
index 1cb73822f..532e8838f 100644
--- a/drivers/net/tap/tap_bpf_program.c
+++ b/drivers/net/tap/tap_bpf_program.c
@@ -107,5 +107,5 @@ rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
 #pragma unroll
 		for (i = 0; i < 32; i++) {
-			if (input_tuple[j] & (1 << (31 - i))) {
+			if (input_tuple[j] & (1U << (31 - i))) {
 				hash ^= ((const __u32 *)def_rss_key)[j] << i |
 				(__u32)((uint64_t)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.862942440 +0100
+++ 0039-drivers-net-fix-shifting-32-bit-signed-variable-31-t.patch	2019-04-10 14:06:07.976291679 +0100
@@ -1,8 +1,10 @@
-From 902f389f9b4cad1feba320e8b779432eeb76cada Mon Sep 17 00:00:00 2001
+From be5e309d7a10a99ba49a16d6853f422576d5ad37 Mon Sep 17 00:00:00 2001
 From: Andrius Sirvys <andrius.sirvys@intel.com>
 Date: Tue, 19 Feb 2019 13:24:50 +0000
 Subject: [PATCH] drivers/net: fix shifting 32-bit signed variable 31 times
 
+[ upstream commit 902f389f9b4cad1feba320e8b779432eeb76cada ]
+
 Shifting signed 32-bit values by 31-bits has the potential for
 unexpected  outcomes as compiler can overwrite a bit.
 Specified that values are unsigned.
@@ -21,7 +23,6 @@
 Fixes: ec94dbc57362 ("qede: add base driver")
 Fixes: d2e7d931d0ad ("net/qede/base: formatting changes")
 Fixes: cdc07e83bb24 ("net/tap: add eBPF program file")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrius Sirvys <andrius.sirvys@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -101,7 +102,7 @@
  #define BNXT_PF(bp)		(!((bp)->flags & BNXT_FLAG_VF))
  #define BNXT_VF(bp)		((bp)->flags & BNXT_FLAG_VF)
 diff --git a/drivers/net/cxgbe/base/t4_hw.c b/drivers/net/cxgbe/base/t4_hw.c
-index 796e2f7f8..71ad1cb0f 100644
+index 701e0b1fe..774dd082d 100644
 --- a/drivers/net/cxgbe/base/t4_hw.c
 +++ b/drivers/net/cxgbe/base/t4_hw.c
 @@ -4247,5 +4247,5 @@ int t4_free_raw_mac_filt(struct adapter *adap, unsigned int viid,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'devtools: fix result of svg include check' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (37 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'drivers/net: fix shifting 32-bit signed variable 31 times' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: remove reference to rte.doc.mk in programmers guide' " Kevin Traynor
                   ` (22 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Michael Santana; +Cc: Bruce Richardson, David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From d52b406e77e462c832d7aa9400416b1a3a93251e Mon Sep 17 00:00:00 2001
From: Michael Santana <msantana@redhat.com>
Date: Mon, 4 Mar 2019 14:07:16 -0500
Subject: [PATCH] devtools: fix result of svg include check

[ upstream commit 1f6168503e882a37efbc8746e42c8af01a342405 ]

Fix trivial bug. In sh shell, 'foo = 1' is not the same as
'foo=1'. Using 'foo = 1' makes the shell attempt to interpret foo
as a command, rather than a simple variable assignment.

Fixes: dafc04c15174 ("devtools: fix return of forbidden addition checks")

Signed-off-by: Michael Santana <msantana@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
 devtools/checkpatches.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
index 3b03b7ef2..02d1c303e 100755
--- a/devtools/checkpatches.sh
+++ b/devtools/checkpatches.sh
@@ -63,5 +63,5 @@ check_forbidden_additions() { # <patch>
 		-v MESSAGE='Using explicit .svg extension instead of .*' \
 		-f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \
-		"$1" || res = 1
+		"$1" || res=1
 
 	return $res
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.977419953 +0100
+++ 0040-devtools-fix-result-of-svg-include-check.patch	2019-04-10 14:06:07.976291679 +0100
@@ -1,14 +1,15 @@
-From 1f6168503e882a37efbc8746e42c8af01a342405 Mon Sep 17 00:00:00 2001
+From d52b406e77e462c832d7aa9400416b1a3a93251e Mon Sep 17 00:00:00 2001
 From: Michael Santana <msantana@redhat.com>
 Date: Mon, 4 Mar 2019 14:07:16 -0500
 Subject: [PATCH] devtools: fix result of svg include check
 
+[ upstream commit 1f6168503e882a37efbc8746e42c8af01a342405 ]
+
 Fix trivial bug. In sh shell, 'foo = 1' is not the same as
 'foo=1'. Using 'foo = 1' makes the shell attempt to interpret foo
 as a command, rather than a simple variable assignment.
 
 Fixes: dafc04c15174 ("devtools: fix return of forbidden addition checks")
-Cc: stable@dpdk.org
 
 Signed-off-by: Michael Santana <msantana@redhat.com>
 Acked-by: Bruce Richardson <bruce.richardson@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
-index 2cf2404ba..327277464 100755
+index 3b03b7ef2..02d1c303e 100755
 --- a/devtools/checkpatches.sh
 +++ b/devtools/checkpatches.sh
-@@ -74,5 +74,5 @@ check_forbidden_additions() { # <patch>
+@@ -63,5 +63,5 @@ check_forbidden_additions() { # <patch>
  		-v MESSAGE='Using explicit .svg extension instead of .*' \
  		-f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \
 -		"$1" || res = 1

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'doc: remove reference to rte.doc.mk in programmers guide' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (38 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix result of svg include check' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ethtool: fix two typos' " Kevin Traynor
                   ` (21 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 5909b98bbbface634ee907b5f462bcafb96c6ce1 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Mon, 25 Feb 2019 17:37:03 +0200
Subject: [PATCH] doc: remove reference to rte.doc.mk in programmers guide

[ upstream commit f959f1148a7605cfad26bb9a50bd0266011dd929 ]

This patch removes the reference to rte.doc.mk in
DPDK programmers guide.

Fixes: ee801f6cc7b8 ("mk: clean dead doc rules")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/guides/prog_guide/dev_kit_build_system.rst | 2 --
 1 file changed, 2 deletions(-)

diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/prog_guide/dev_kit_build_system.rst
index da83a31ee..002d973a4 100644
--- a/doc/guides/prog_guide/dev_kit_build_system.rst
+++ b/doc/guides/prog_guide/dev_kit_build_system.rst
@@ -217,6 +217,4 @@ Misc
 ^^^^
 
-*   rte.doc.mk: Documentation in the development kit framework
-
 *   rte.gnuconfigure.mk: Build an application that is configure-based.
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.052170391 +0100
+++ 0041-doc-remove-reference-to-rte.doc.mk-in-programmers-gu.patch	2019-04-10 14:06:07.978291633 +0100
@@ -1,13 +1,14 @@
-From f959f1148a7605cfad26bb9a50bd0266011dd929 Mon Sep 17 00:00:00 2001
+From 5909b98bbbface634ee907b5f462bcafb96c6ce1 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Mon, 25 Feb 2019 17:37:03 +0200
 Subject: [PATCH] doc: remove reference to rte.doc.mk in programmers guide
 
+[ upstream commit f959f1148a7605cfad26bb9a50bd0266011dd929 ]
+
 This patch removes the reference to rte.doc.mk in
 DPDK programmers guide.
 
 Fixes: ee801f6cc7b8 ("mk: clean dead doc rules")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -16,10 +17,10 @@
  1 file changed, 2 deletions(-)
 
 diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/prog_guide/dev_kit_build_system.rst
-index 855b5da53..8cb63c9a0 100644
+index da83a31ee..002d973a4 100644
 --- a/doc/guides/prog_guide/dev_kit_build_system.rst
 +++ b/doc/guides/prog_guide/dev_kit_build_system.rst
-@@ -174,6 +174,4 @@ Misc
+@@ -217,6 +217,4 @@ Misc
  ^^^^
  
 -*   rte.doc.mk: Documentation in the development kit framework

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'examples/ethtool: fix two typos' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (39 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: remove reference to rte.doc.mk in programmers guide' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix link in Linux getting started guide' " Kevin Traynor
                   ` (20 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Remy Horton, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 5e866deb2e415a5bdddef953fd1265fe9066ce22 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Mon, 25 Feb 2019 21:21:37 +0200
Subject: [PATCH] examples/ethtool: fix two typos

[ upstream commit ea43e995799aaa7b15914c3e8237e932a854d6b6 ]

This patch fixes 2 typos in examples/ethtool:

There is no such thing as ethtool_ops::get_driverinfo
It should be get_drvinfo:
see include/linux/ethtool.h in the kernel tree.

rte_net_change_mtu should be ndo_change_mtu:
see include/linux/netdevice.h in the kernel tree.

Fixes: bda68ab9d1e7 ("examples/ethtool: add user-space ethtool sample application")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Acked-by: Remy Horton <remy.horton@intel.com>
---
 examples/ethtool/lib/rte_ethtool.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/ethtool/lib/rte_ethtool.h b/examples/ethtool/lib/rte_ethtool.h
index 43adc97a3..31cd5ae4e 100644
--- a/examples/ethtool/lib/rte_ethtool.h
+++ b/examples/ethtool/lib/rte_ethtool.h
@@ -10,5 +10,5 @@
  * Ethtool and Netdevice op API.
  *
- * rte_ethtool_get_driver:          ethtool_ops::get_driverinfo
+ * rte_ethtool_get_driver:          ethtool_ops::get_drvinfo
  * rte_ethtool_get_link:            ethtool_ops::get_link
  * rte_ethtool_get_regs_len:        ethtool_ops::get_regs_len
@@ -24,5 +24,5 @@
  * rte_ethtool_net_set_mac_addr:    net_device_ops::ndo_set_mac_address
  * rte_ethtool_net_validate_addr:   net_device_ops::ndo_validate_addr
- * rte_ethtool_net_change_mtu:      net_device_ops::rte_net_change_mtu
+ * rte_ethtool_net_change_mtu:      net_device_ops::ndo_change_mtu
  * rte_ethtool_net_get_stats64:     net_device_ops::ndo_get_stats64
  * rte_ethtool_net_vlan_rx_add_vid  net_device_ops::ndo_vlan_rx_add_vid
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.129084033 +0100
+++ 0042-examples-ethtool-fix-two-typos.patch	2019-04-10 14:06:07.978291633 +0100
@@ -1,8 +1,10 @@
-From ea43e995799aaa7b15914c3e8237e932a854d6b6 Mon Sep 17 00:00:00 2001
+From 5e866deb2e415a5bdddef953fd1265fe9066ce22 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Mon, 25 Feb 2019 21:21:37 +0200
 Subject: [PATCH] examples/ethtool: fix two typos
 
+[ upstream commit ea43e995799aaa7b15914c3e8237e932a854d6b6 ]
+
 This patch fixes 2 typos in examples/ethtool:
 
 There is no such thing as ethtool_ops::get_driverinfo
@@ -13,7 +15,6 @@
 see include/linux/netdevice.h in the kernel tree.
 
 Fixes: bda68ab9d1e7 ("examples/ethtool: add user-space ethtool sample application")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Acked-by: Remy Horton <remy.horton@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'doc: fix link in Linux getting started guide' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (40 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ethtool: fix two typos' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix PCI whitelist typo in prog " Kevin Traynor
                   ` (19 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From ec9025fa447e71a18815dea19d693c53242d6250 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Fri, 1 Mar 2019 13:50:13 +0200
Subject: [PATCH] doc: fix link in Linux getting started guide

[ upstream commit e91ae7e0381e8deff3fc11df80abbe9ce2d3f9c4 ]

This patch fixes a wrong link in gsg. The
Documentation/kernel-parameters.txt file from the kernel
source tree was moved quite a time ago to
Documentation/admin-guide/kernel-parameters.txt.

Fixes: 1ab07743b21b ("doc: getting started guide for linux")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/guides/linux_gsg/sys_reqs.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index 1c6f86a20..735bc6ee5 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -185,5 +185,5 @@ the number of hugepages reserved at boot time is generally divided equally betwe
 (on the assumption that sufficient memory is present on both sockets).
 
-See the Documentation/kernel-parameters.txt file in your Linux source tree for further details of these and other kernel options.
+See the Documentation/admin-guide/kernel-parameters.txt file in your Linux source tree for further details of these and other kernel options.
 
 **Alternative:**
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.193397517 +0100
+++ 0043-doc-fix-link-in-Linux-getting-started-guide.patch	2019-04-10 14:06:07.980291587 +0100
@@ -1,15 +1,16 @@
-From e91ae7e0381e8deff3fc11df80abbe9ce2d3f9c4 Mon Sep 17 00:00:00 2001
+From ec9025fa447e71a18815dea19d693c53242d6250 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Fri, 1 Mar 2019 13:50:13 +0200
 Subject: [PATCH] doc: fix link in Linux getting started guide
 
+[ upstream commit e91ae7e0381e8deff3fc11df80abbe9ce2d3f9c4 ]
+
 This patch fixes a wrong link in gsg. The
 Documentation/kernel-parameters.txt file from the kernel
 source tree was moved quite a time ago to
 Documentation/admin-guide/kernel-parameters.txt.
 
 Fixes: 1ab07743b21b ("doc: getting started guide for linux")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
-index d0cb66f6b..10b01e318 100644
+index 1c6f86a20..735bc6ee5 100644
 --- a/doc/guides/linux_gsg/sys_reqs.rst
 +++ b/doc/guides/linux_gsg/sys_reqs.rst
-@@ -179,5 +179,5 @@ the number of hugepages reserved at boot time is generally divided equally betwe
+@@ -185,5 +185,5 @@ the number of hugepages reserved at boot time is generally divided equally betwe
  (on the assumption that sufficient memory is present on both sockets).
  
 -See the Documentation/kernel-parameters.txt file in your Linux source tree for further details of these and other kernel options.

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'doc: fix PCI whitelist typo in prog guide' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (41 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix link in Linux getting started guide' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix AVX512 disabled warning on non x86' " Kevin Traynor
                   ` (18 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Rami Rosen, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From c410c93c55a36d89452736e01c0e0bdfae4de842 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Sun, 24 Feb 2019 23:32:59 +0100
Subject: [PATCH] doc: fix PCI whitelist typo in prog guide

[ upstream commit 5a10413c5812be50a0c03c5ea5622a7b3cd7dbad ]

The placeholder for PCI address should be named DBDF
which stands for Domain/Bus/Device/Function.

Fixes: 33af337773ac ("ethdev: add common devargs parser")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
---
 doc/guides/prog_guide/poll_mode_drv.rst | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/guides/prog_guide/poll_mode_drv.rst b/doc/guides/prog_guide/poll_mode_drv.rst
index b2cf48354..6fae39f90 100644
--- a/doc/guides/prog_guide/poll_mode_drv.rst
+++ b/doc/guides/prog_guide/poll_mode_drv.rst
@@ -375,7 +375,7 @@ parameters to those ports.
   representors for.::
 
-   -w BDBF,representor=0
-   -w BDBF,representor=[0,4,6,9]
-   -w BDBF,representor=[0-31]
+   -w DBDF,representor=0
+   -w DBDF,representor=[0,4,6,9]
+   -w DBDF,representor=[0-31]
 
 Note: PMDs are not required to support the standard device arguments and users
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.261019171 +0100
+++ 0044-doc-fix-PCI-whitelist-typo-in-prog-guide.patch	2019-04-10 14:06:07.983291519 +0100
@@ -1,13 +1,14 @@
-From 5a10413c5812be50a0c03c5ea5622a7b3cd7dbad Mon Sep 17 00:00:00 2001
+From c410c93c55a36d89452736e01c0e0bdfae4de842 Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Sun, 24 Feb 2019 23:32:59 +0100
 Subject: [PATCH] doc: fix PCI whitelist typo in prog guide
 
+[ upstream commit 5a10413c5812be50a0c03c5ea5622a7b3cd7dbad ]
+
 The placeholder for PCI address should be named DBDF
 which stands for Domain/Bus/Device/Function.
 
 Fixes: 33af337773ac ("ethdev: add common devargs parser")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Reviewed-by: Rami Rosen <ramirose@gmail.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'mk: fix AVX512 disabled warning on non x86' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (42 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix PCI whitelist typo in prog " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix debug message on probing' " Kevin Traynor
                   ` (17 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From d6d558dd0f8babb7fa31d56e821b15b1fafce9bf Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Sun, 24 Feb 2019 18:27:10 +0000
Subject: [PATCH] mk: fix AVX512 disabled warning on non x86

[ upstream commit 0c3b8a2c7d7d8ea713d252127059d1bd08eb0f5e ]

AVX512 is a x86 specific feature, So, enable AVX512
warning only on x86.

Fixes: a32ca9a4ebc1 ("mk: fix scope of disabling AVX512F support")

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 mk/toolchain/gcc/rte.toolchain-compat.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk
index dbddc986e..df71e4a8b 100644
--- a/mk/toolchain/gcc/rte.toolchain-compat.mk
+++ b/mk/toolchain/gcc/rte.toolchain-compat.mk
@@ -23,4 +23,5 @@ HOST_GCC_VERSION = $(HOST_GCC_MAJOR)$(HOST_GCC_MINOR)
 LD_VERSION = $(shell $(LD) -v)
 # disable AVX512F support for GCC & binutils 2.30 as a workaround for Bug 97
+ifeq ($(CONFIG_RTE_ARCH_X86), y)
 ifneq ($(filter 2.30%,$(LD_VERSION)),)
 FORCE_DISABLE_AVX512 := y
@@ -30,4 +31,5 @@ $(warning AVX512 support disabled because of ld 2.30. See Bug 97)
 endif
 endif
+endif
 
 # if GCC is older than 4.x
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.337744096 +0100
+++ 0045-mk-fix-AVX512-disabled-warning-on-non-x86.patch	2019-04-10 14:06:07.984291496 +0100
@@ -1,13 +1,14 @@
-From 0c3b8a2c7d7d8ea713d252127059d1bd08eb0f5e Mon Sep 17 00:00:00 2001
+From d6d558dd0f8babb7fa31d56e821b15b1fafce9bf Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerinj@marvell.com>
 Date: Sun, 24 Feb 2019 18:27:10 +0000
 Subject: [PATCH] mk: fix AVX512 disabled warning on non x86
 
+[ upstream commit 0c3b8a2c7d7d8ea713d252127059d1bd08eb0f5e ]
+
 AVX512 is a x86 specific feature, So, enable AVX512
 warning only on x86.
 
 Fixes: a32ca9a4ebc1 ("mk: fix scope of disabling AVX512F support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerinj@marvell.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'bus/vdev: fix debug message on probing' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (43 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix AVX512 disabled warning on non x86' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix hotplug twice' " Kevin Traynor
                   ` (16 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Rami Rosen, Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 7d591e5568119f2856e41a1164fe42ba61aed56c Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 21 Feb 2019 20:01:24 +0100
Subject: [PATCH] bus/vdev: fix debug message on probing

[ upstream commit 4169ed6ed1c31b75f070cdccf3ee82561d4b79ce ]

The log was printing the device name two times,
first one being supposed to be the driver name.
As we don't know yet the driver name, the log is simplified.

Fixes: 9bf4901d1a11 ("bus/vdev: remove probe with driver name option")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/bus/vdev/vdev.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 2c03ca418..722541179 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -145,7 +145,5 @@ vdev_probe_all_drivers(struct rte_vdev_device *dev)
 
 	name = rte_vdev_device_name(dev);
-
-	VDEV_LOG(DEBUG, "Search driver %s to probe device %s", name,
-		rte_vdev_device_name(dev));
+	VDEV_LOG(DEBUG, "Search driver to probe device %s", name);
 
 	if (vdev_parse(name, &driver))
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.418649236 +0100
+++ 0046-bus-vdev-fix-debug-message-on-probing.patch	2019-04-10 14:06:07.985291473 +0100
@@ -1,14 +1,15 @@
-From 4169ed6ed1c31b75f070cdccf3ee82561d4b79ce Mon Sep 17 00:00:00 2001
+From 7d591e5568119f2856e41a1164fe42ba61aed56c Mon Sep 17 00:00:00 2001
 From: Thomas Monjalon <thomas@monjalon.net>
 Date: Thu, 21 Feb 2019 20:01:24 +0100
 Subject: [PATCH] bus/vdev: fix debug message on probing
 
+[ upstream commit 4169ed6ed1c31b75f070cdccf3ee82561d4b79ce ]
+
 The log was printing the device name two times,
 first one being supposed to be the driver name.
 As we don't know yet the driver name, the log is simplified.
 
 Fixes: 9bf4901d1a11 ("bus/vdev: remove probe with driver name option")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Reviewed-by: Rami Rosen <ramirose@gmail.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'bus/vdev: fix hotplug twice' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (44 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix debug message on probing' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix check when retrieving current CPU affinity' " Kevin Traynor
                   ` (15 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: Thomas Monjalon, Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From b7990ead49884629573a644041748d4b455b873b Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Thu, 21 Feb 2019 20:01:25 +0100
Subject: [PATCH] bus/vdev: fix hotplug twice

[ upstream commit e892fa595e19b5cce315045444b3b7e31130ef19 ]

In case vdev was already probed, it shouldn't be probed again,
and it should return -EEXIST as error.
There are some checks in vdev_probe() and insert_vdev(),
but a check was missing in vdev_plug().
The check is moved in vdev_probe_all_drivers() which is called
in all code paths.

Fixes: e9d159c3d534 ("eal: allow probing a device again")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/bus/vdev/vdev.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 722541179..87f0e2b6b 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -144,4 +144,7 @@ vdev_probe_all_drivers(struct rte_vdev_device *dev)
 	int ret;
 
+	if (rte_dev_is_probed(&dev->device))
+		return -EEXIST;
+
 	name = rte_vdev_device_name(dev);
 	VDEV_LOG(DEBUG, "Search driver to probe device %s", name);
@@ -481,5 +484,5 @@ vdev_probe(void)
 {
 	struct rte_vdev_device *dev;
-	int ret = 0;
+	int r, ret = 0;
 
 	/* call the init function for each virtual device */
@@ -490,8 +493,8 @@ vdev_probe(void)
 		 */
 
-		if (rte_dev_is_probed(&dev->device))
-			continue;
-
-		if (vdev_probe_all_drivers(dev)) {
+		r = vdev_probe_all_drivers(dev);
+		if (r != 0) {
+			if (r == -EEXIST)
+				continue;
 			VDEV_LOG(ERR, "failed to initialize %s device",
 				rte_vdev_device_name(dev));
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.488146624 +0100
+++ 0047-bus-vdev-fix-hotplug-twice.patch	2019-04-10 14:06:07.986291450 +0100
@@ -1,8 +1,10 @@
-From e892fa595e19b5cce315045444b3b7e31130ef19 Mon Sep 17 00:00:00 2001
+From b7990ead49884629573a644041748d4b455b873b Mon Sep 17 00:00:00 2001
 From: Raslan Darawsheh <rasland@mellanox.com>
 Date: Thu, 21 Feb 2019 20:01:25 +0100
 Subject: [PATCH] bus/vdev: fix hotplug twice
 
+[ upstream commit e892fa595e19b5cce315045444b3b7e31130ef19 ]
+
 In case vdev was already probed, it shouldn't be probed again,
 and it should return -EEXIST as error.
 There are some checks in vdev_probe() and insert_vdev(),
@@ -11,7 +13,6 @@
 in all code paths.
 
 Fixes: e9d159c3d534 ("eal: allow probing a device again")
-Cc: stable@dpdk.org
 
 Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'eal: fix check when retrieving current CPU affinity' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (45 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix hotplug twice' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix control threads pinnning' " Kevin Traynor
                   ` (14 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: David Marchand; +Cc: Anatoly Burakov, Rami Rosen, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From c5ba174479d9d0aa3ba7bf0ba64e06929b17fc48 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 19 Feb 2019 21:38:13 +0100
Subject: [PATCH] eal: fix check when retrieving current CPU affinity

[ upstream commit b206376438f1cb2ccd389f3be4e6b2e459c99ea9 ]

pthread_getaffinity_np returns a >0 value when failing.

This is mainly for the sake of correctness.
The only case where it could fail is when passing an incorrect cpuset
size wrt to the kernel.

Fixes: 2eba8d21f3c9 ("eal: restrict cores auto detection")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
---
 lib/librte_eal/common/eal_common_options.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index f6dfbc73a..fb966780f 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -1343,8 +1343,7 @@ eal_auto_detect_cores(struct rte_config *cfg)
 	unsigned int removed = 0;
 	rte_cpuset_t affinity_set;
-	pthread_t tid = pthread_self();
 
-	if (pthread_getaffinity_np(tid, sizeof(rte_cpuset_t),
-				&affinity_set) < 0)
+	if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
+				&affinity_set))
 		CPU_ZERO(&affinity_set);
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.573315631 +0100
+++ 0048-eal-fix-check-when-retrieving-current-CPU-affinity.patch	2019-04-10 14:06:07.989291382 +0100
@@ -1,8 +1,10 @@
-From b206376438f1cb2ccd389f3be4e6b2e459c99ea9 Mon Sep 17 00:00:00 2001
+From c5ba174479d9d0aa3ba7bf0ba64e06929b17fc48 Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 19 Feb 2019 21:38:13 +0100
 Subject: [PATCH] eal: fix check when retrieving current CPU affinity
 
+[ upstream commit b206376438f1cb2ccd389f3be4e6b2e459c99ea9 ]
+
 pthread_getaffinity_np returns a >0 value when failing.
 
 This is mainly for the sake of correctness.
@@ -10,7 +12,6 @@
 size wrt to the kernel.
 
 Fixes: 2eba8d21f3c9 ("eal: restrict cores auto detection")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
@@ -20,10 +21,10 @@
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
-index 6c96f459c..1f45f82f3 100644
+index f6dfbc73a..fb966780f 100644
 --- a/lib/librte_eal/common/eal_common_options.c
 +++ b/lib/librte_eal/common/eal_common_options.c
-@@ -1344,8 +1344,7 @@ eal_auto_detect_cores(struct rte_config *cfg)
+@@ -1343,8 +1343,7 @@ eal_auto_detect_cores(struct rte_config *cfg)
  	unsigned int removed = 0;
  	rte_cpuset_t affinity_set;
 -	pthread_t tid = pthread_self();

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'eal: fix control threads pinnning' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (46 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix check when retrieving current CPU affinity' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: restrict control threads to startup CPU affinity' " Kevin Traynor
                   ` (13 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: David Marchand; +Cc: Anatoly Burakov, Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 380430e471720ddd2c6c23418b8b11226740b155 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 19 Feb 2019 21:41:10 +0100
Subject: [PATCH] eal: fix control threads pinnning

[ upstream commit 759b9be661222768356ee50d8d15dc4d33646432 ]

pthread_setaffinity_np returns a >0 value on error.
We could end up letting the ctrl threads on the current process cpu
affinity.

Fixes: d651ee4919cd ("eal: set affinity for control threads")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_eal/common/eal_common_thread.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/eal_common_thread.c b/lib/librte_eal/common/eal_common_thread.c
index 48ef4d6de..a3985ce86 100644
--- a/lib/librte_eal/common/eal_common_thread.c
+++ b/lib/librte_eal/common/eal_common_thread.c
@@ -210,5 +210,5 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
 
 	ret = pthread_setaffinity_np(*thread, sizeof(cpuset), &cpuset);
-	if (ret < 0)
+	if (ret)
 		goto fail;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.654487276 +0100
+++ 0049-eal-fix-control-threads-pinnning.patch	2019-04-10 14:06:07.990291359 +0100
@@ -1,14 +1,15 @@
-From 759b9be661222768356ee50d8d15dc4d33646432 Mon Sep 17 00:00:00 2001
+From 380430e471720ddd2c6c23418b8b11226740b155 Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 19 Feb 2019 21:41:10 +0100
 Subject: [PATCH] eal: fix control threads pinnning
 
+[ upstream commit 759b9be661222768356ee50d8d15dc4d33646432 ]
+
 pthread_setaffinity_np returns a >0 value on error.
 We could end up letting the ctrl threads on the current process cpu
 affinity.
 
 Fixes: d651ee4919cd ("eal: set affinity for control threads")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'eal: restrict control threads to startup CPU affinity' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (47 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix control threads pinnning' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: remove dead code in core list parsing' " Kevin Traynor
                   ` (12 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: David Marchand; +Cc: Anatoly Burakov, Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 23a9f69ed3d9c98b1912df305552ed6dbc639e8f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 19 Feb 2019 21:41:11 +0100
Subject: [PATCH] eal: restrict control threads to startup CPU affinity

[ upstream commit c3568ea376700df061abcbeabc40ddaed7841e1a ]

Spawning the ctrl threads on anything that is not part of the eal
coremask is not that polite to the rest of the system, especially
when you took good care to pin your processes on cpu resources with
tools like taskset (linux) / cpuset (freebsd).

Rather than introduce yet another eal options to control on which cpu
those ctrl threads are created, let's take the startup cpu affinity
as a reference and remove the eal coremask from it.
If no cpu is left, then we default to the master core.

The cpuset is computed once at init before the original cpu affinity
is lost.

Introduced a RTE_CPU_AND macro to abstract the differences between linux
and freebsd respective macros.

Examples in a 4 cores FreeBSD vm:

$ ./build/app/testpmd -l 2,3 --no-huge --no-pci -m 512 \
 -- -i --total-num-mbufs=2048

$ procstat -S 1057
  PID    TID COMM                TDNAME              CPU CSID CPU MASK
 1057 100131 testpmd             -                     2    1 2
 1057 100140 testpmd             eal-intr-thread       1    1 0-1
 1057 100141 testpmd             rte_mp_handle         1    1 0-1
 1057 100142 testpmd             lcore-slave-3         3    1 3

$ cpuset -l 1,2,3 ./build/app/testpmd -l 2,3 --no-huge --no-pci -m 512 \
 -- -i --total-num-mbufs=2048

$ procstat -S 1061
  PID    TID COMM                TDNAME              CPU CSID CPU MASK
 1061 100131 testpmd             -                     2    2 2
 1061 100144 testpmd             eal-intr-thread       1    2 1
 1061 100145 testpmd             rte_mp_handle         1    2 1
 1061 100147 testpmd             lcore-slave-3         3    2 3

$ cpuset -l 2,3 ./build/app/testpmd -l 2,3 --no-huge --no-pci -m 512 \
 -- -i --total-num-mbufs=2048

$ procstat -S 1065
  PID    TID COMM                TDNAME              CPU CSID CPU MASK
 1065 100131 testpmd             -                     2    2 2
 1065 100148 testpmd             eal-intr-thread       2    2 2
 1065 100149 testpmd             rte_mp_handle         2    2 2
 1065 100150 testpmd             lcore-slave-3         3    2 3

Fixes: d651ee4919cd ("eal: set affinity for control threads")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
---
 .../prog_guide/env_abstraction_layer.rst      | 22 +++++++++++++++
 lib/librte_eal/common/eal_common_options.c    | 28 +++++++++++++++++++
 lib/librte_eal/common/eal_common_thread.c     | 21 +++-----------
 lib/librte_eal/common/eal_internal_cfg.h      |  3 ++
 lib/librte_eal/common/include/rte_lcore.h     | 17 ++++++++---
 5 files changed, 70 insertions(+), 21 deletions(-)

diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 426acfc28..888ce7801 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -442,4 +442,26 @@ Those TLS include *_cpuset* and *_socket_id*:
 
 
+Control Thread API
+~~~~~~~~~~~~~~~~~~
+
+It is possible to create Control Threads using the public API
+``rte_ctrl_thread_create()``.
+Those threads can be used for management/infrastructure tasks and are used
+internally by DPDK for multi process support and interrupt handling.
+
+Those threads will be scheduled on CPUs part of the original process CPU
+affinity from which the dataplane and service lcores are excluded.
+
+For example, on a 8 CPUs system, starting a dpdk application with -l 2,3
+(dataplane cores), then depending on the affinity configuration which can be
+controlled with tools like taskset (Linux) or cpuset (FreeBSD),
+
+- with no affinity configuration, the Control Threads will end up on
+  0-1,4-7 CPUs.
+- with affinity restricted to 2-4, the Control Threads will end up on
+  CPU 4.
+- with affinity restricted to 2-3, the Control Threads will end up on
+  CPU 2 (master lcore, which is the default when no CPU is available).
+
 .. _known_issue_label:
 
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index fb966780f..7ba1c449b 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -217,4 +217,5 @@ eal_reset_internal_config(struct internal_config *internal_cfg)
 	internal_cfg->iova_mode = RTE_IOVA_DC;
 	internal_cfg->user_mbuf_pool_ops_name = NULL;
+	CPU_ZERO(&internal_cfg->ctrl_cpuset);
 	internal_cfg->init_complete = 0;
 }
@@ -1359,4 +1360,29 @@ eal_auto_detect_cores(struct rte_config *cfg)
 }
 
+static void
+compute_ctrl_threads_cpuset(struct internal_config *internal_cfg)
+{
+	rte_cpuset_t *cpuset = &internal_cfg->ctrl_cpuset;
+	rte_cpuset_t default_set;
+	unsigned int lcore_id;
+
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		if (eal_cpu_detected(lcore_id) &&
+				rte_lcore_has_role(lcore_id, ROLE_OFF)) {
+			CPU_SET(lcore_id, cpuset);
+		}
+	}
+
+	if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
+				&default_set))
+		CPU_ZERO(&default_set);
+
+	RTE_CPU_AND(cpuset, cpuset, &default_set);
+
+	/* if no detected CPU is off, use master core */
+	if (!CPU_COUNT(cpuset))
+		CPU_SET(rte_get_master_lcore(), cpuset);
+}
+
 int
 eal_cleanup_config(struct internal_config *internal_cfg)
@@ -1392,4 +1418,6 @@ eal_adjust_config(struct internal_config *internal_cfg)
 	}
 
+	compute_ctrl_threads_cpuset(internal_cfg);
+
 	/* if no memory amounts were requested, this will result in 0 and
 	 * will be overridden later, right after eal_hugepage_info_init() */
diff --git a/lib/librte_eal/common/eal_common_thread.c b/lib/librte_eal/common/eal_common_thread.c
index a3985ce86..14f206c04 100644
--- a/lib/librte_eal/common/eal_common_thread.c
+++ b/lib/librte_eal/common/eal_common_thread.c
@@ -17,4 +17,5 @@
 #include <rte_log.h>
 
+#include "eal_internal_cfg.h"
 #include "eal_private.h"
 #include "eal_thread.h"
@@ -169,8 +170,7 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
 		void *(*start_routine)(void *), void *arg)
 {
+	rte_cpuset_t *cpuset = &internal_config.ctrl_cpuset;
 	struct rte_thread_ctrl_params *params;
-	unsigned int lcore_id;
-	rte_cpuset_t cpuset;
-	int cpu_found, ret;
+	int ret;
 
 	params = malloc(sizeof(*params));
@@ -196,18 +196,5 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
 	}
 
-	cpu_found = 0;
-	CPU_ZERO(&cpuset);
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
-		if (eal_cpu_detected(lcore_id) &&
-				rte_lcore_has_role(lcore_id, ROLE_OFF)) {
-			CPU_SET(lcore_id, &cpuset);
-			cpu_found = 1;
-		}
-	}
-	/* if no detected cpu is off, use master core */
-	if (!cpu_found)
-		CPU_SET(rte_get_master_lcore(), &cpuset);
-
-	ret = pthread_setaffinity_np(*thread, sizeof(cpuset), &cpuset);
+	ret = pthread_setaffinity_np(*thread, sizeof(*cpuset), cpuset);
 	if (ret)
 		goto fail;
diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h
index 783ce7de8..189d4f5b2 100644
--- a/lib/librte_eal/common/eal_internal_cfg.h
+++ b/lib/librte_eal/common/eal_internal_cfg.h
@@ -14,4 +14,6 @@
 #include <rte_pci_dev_feature_defs.h>
 
+#include "eal_thread.h"
+
 #define MAX_HUGEPAGE_SIZES 3  /**< support up to 3 page sizes */
 
@@ -72,4 +74,5 @@ struct internal_config {
 	struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
 	enum rte_iova_mode iova_mode ;    /**< Set IOVA mode on this system  */
+	rte_cpuset_t ctrl_cpuset;         /**< cpuset for ctrl threads */
 	volatile unsigned int init_complete;
 	/**< indicates whether EAL has completed initialization */
diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h
index 6e09d9181..dea17f500 100644
--- a/lib/librte_eal/common/include/rte_lcore.h
+++ b/lib/librte_eal/common/include/rte_lcore.h
@@ -24,8 +24,16 @@ extern "C" {
 
 #if defined(__linux__)
-	typedef	cpu_set_t rte_cpuset_t;
+typedef	cpu_set_t rte_cpuset_t;
+#define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2)
 #elif defined(__FreeBSD__)
 #include <pthread_np.h>
-	typedef cpuset_t rte_cpuset_t;
+typedef cpuset_t rte_cpuset_t;
+#define RTE_CPU_AND(dst, src1, src2) do \
+{ \
+	cpuset_t tmp; \
+	CPU_COPY(src1, &tmp); \
+	CPU_AND(&tmp, src2); \
+	CPU_COPY(&tmp, dst); \
+} while (0)
 #endif
 
@@ -281,6 +289,7 @@ int rte_thread_setname(pthread_t id, const char *name);
  *
  * Wrapper to pthread_create(), pthread_setname_np() and
- * pthread_setaffinity_np(). The dataplane and service lcores are
- * excluded from the affinity of the new thread.
+ * pthread_setaffinity_np(). The affinity of the new thread is based
+ * on the CPU affinity retrieved at the time rte_eal_init() was called,
+ * the dataplane and service lcores are then excluded.
  *
  * @param thread
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.726379211 +0100
+++ 0050-eal-restrict-control-threads-to-startup-CPU-affinity.patch	2019-04-10 14:06:07.997291198 +0100
@@ -1,8 +1,10 @@
-From c3568ea376700df061abcbeabc40ddaed7841e1a Mon Sep 17 00:00:00 2001
+From 23a9f69ed3d9c98b1912df305552ed6dbc639e8f Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 19 Feb 2019 21:41:11 +0100
 Subject: [PATCH] eal: restrict control threads to startup CPU affinity
 
+[ upstream commit c3568ea376700df061abcbeabc40ddaed7841e1a ]
+
 Spawning the ctrl threads on anything that is not part of the eal
 coremask is not that polite to the rest of the system, especially
 when you took good care to pin your processes on cpu resources with
@@ -52,7 +54,6 @@
  1065 100150 testpmd             lcore-slave-3         3    2 3
 
 Fixes: d651ee4919cd ("eal: set affinity for control threads")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
@@ -66,10 +67,10 @@
  5 files changed, 70 insertions(+), 21 deletions(-)
 
 diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
-index 929d76dba..67b45ba7d 100644
+index 426acfc28..888ce7801 100644
 --- a/doc/guides/prog_guide/env_abstraction_layer.rst
 +++ b/doc/guides/prog_guide/env_abstraction_layer.rst
-@@ -499,4 +499,26 @@ Those TLS include *_cpuset* and *_socket_id*:
+@@ -442,4 +442,26 @@ Those TLS include *_cpuset* and *_socket_id*:
  
  
 +Control Thread API
@@ -97,16 +98,16 @@
  .. _known_issue_label:
  
 diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
-index 1f45f82f3..9e61ee436 100644
+index fb966780f..7ba1c449b 100644
 --- a/lib/librte_eal/common/eal_common_options.c
 +++ b/lib/librte_eal/common/eal_common_options.c
-@@ -218,4 +218,5 @@ eal_reset_internal_config(struct internal_config *internal_cfg)
+@@ -217,4 +217,5 @@ eal_reset_internal_config(struct internal_config *internal_cfg)
  	internal_cfg->iova_mode = RTE_IOVA_DC;
  	internal_cfg->user_mbuf_pool_ops_name = NULL;
 +	CPU_ZERO(&internal_cfg->ctrl_cpuset);
  	internal_cfg->init_complete = 0;
  }
-@@ -1360,4 +1361,29 @@ eal_auto_detect_cores(struct rte_config *cfg)
+@@ -1359,4 +1360,29 @@ eal_auto_detect_cores(struct rte_config *cfg)
  }
  
 +static void
@@ -136,7 +137,7 @@
 +
  int
  eal_cleanup_config(struct internal_config *internal_cfg)
-@@ -1393,4 +1419,6 @@ eal_adjust_config(struct internal_config *internal_cfg)
+@@ -1392,4 +1418,6 @@ eal_adjust_config(struct internal_config *internal_cfg)
  	}
  
 +	compute_ctrl_threads_cpuset(internal_cfg);
@@ -185,7 +186,7 @@
  	if (ret)
  		goto fail;
 diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h
-index 60eaead8f..edff09d07 100644
+index 783ce7de8..189d4f5b2 100644
 --- a/lib/librte_eal/common/eal_internal_cfg.h
 +++ b/lib/librte_eal/common/eal_internal_cfg.h
 @@ -14,4 +14,6 @@
@@ -195,7 +196,7 @@
 +
  #define MAX_HUGEPAGE_SIZES 3  /**< support up to 3 page sizes */
  
-@@ -74,4 +76,5 @@ struct internal_config {
+@@ -72,4 +74,5 @@ struct internal_config {
  	struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
  	enum rte_iova_mode iova_mode ;    /**< Set IOVA mode on this system  */
 +	rte_cpuset_t ctrl_cpuset;         /**< cpuset for ctrl threads */

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'eal: remove dead code in core list parsing' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (48 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: restrict control threads to startup CPU affinity' " Kevin Traynor
@ 2019-04-10 16:43 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'eal: fix core list validation with disabled cores' " Kevin Traynor
                   ` (11 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:43 UTC (permalink / raw)
  To: David Marchand; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 95f7e35132236e3ed15ce542fcc92d4d9211048d Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 13 Feb 2019 21:06:58 +0100
Subject: [PATCH] eal: remove dead code in core list parsing

[ upstream commit 33df941d79ad7966b82d882ad277e625f6c3a017 ]

We don't need to look for trailing spaces.
This is a copy/paste block from eal_parse_coremask().
Remove it and the associated comment.

Fixes: d888cb8b9613 ("eal: add core list input format")

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_eal/common/eal_common_options.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 7ba1c449b..74ca26340 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -567,8 +567,8 @@ eal_parse_corelist(const char *corelist)
 {
 	struct rte_config *cfg = rte_eal_get_configuration();
-	int i, idx = 0;
 	unsigned count = 0;
 	char *end = NULL;
 	int min, max;
+	int idx;
 
 	if (eal_service_cores_parsed())
@@ -580,10 +580,7 @@ eal_parse_corelist(const char *corelist)
 		return -1;
 
-	/* Remove all blank characters ahead and after */
+	/* Remove all blank characters ahead */
 	while (isblank(*corelist))
 		corelist++;
-	i = strlen(corelist);
-	while ((i > 0) && isblank(corelist[i - 1]))
-		i--;
 
 	/* Reset config */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.810869665 +0100
+++ 0051-eal-remove-dead-code-in-core-list-parsing.patch	2019-04-10 14:06:08.000291130 +0100
@@ -1,14 +1,15 @@
-From 33df941d79ad7966b82d882ad277e625f6c3a017 Mon Sep 17 00:00:00 2001
+From 95f7e35132236e3ed15ce542fcc92d4d9211048d Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Wed, 13 Feb 2019 21:06:58 +0100
 Subject: [PATCH] eal: remove dead code in core list parsing
 
+[ upstream commit 33df941d79ad7966b82d882ad277e625f6c3a017 ]
+
 We don't need to look for trailing spaces.
 This is a copy/paste block from eal_parse_coremask().
 Remove it and the associated comment.
 
 Fixes: d888cb8b9613 ("eal: add core list input format")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 ---
@@ -16,10 +17,10 @@
  1 file changed, 2 insertions(+), 5 deletions(-)
 
 diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
-index 9e61ee436..8a431457b 100644
+index 7ba1c449b..74ca26340 100644
 --- a/lib/librte_eal/common/eal_common_options.c
 +++ b/lib/librte_eal/common/eal_common_options.c
-@@ -568,8 +568,8 @@ eal_parse_corelist(const char *corelist)
+@@ -567,8 +567,8 @@ eal_parse_corelist(const char *corelist)
  {
  	struct rte_config *cfg = rte_eal_get_configuration();
 -	int i, idx = 0;
@@ -29,7 +30,7 @@
 +	int idx;
  
  	if (eal_service_cores_parsed())
-@@ -581,10 +581,7 @@ eal_parse_corelist(const char *corelist)
+@@ -580,10 +580,7 @@ eal_parse_corelist(const char *corelist)
  		return -1;
  
 -	/* Remove all blank characters ahead and after */

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'eal: fix core list validation with disabled cores' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (49 preceding siblings ...)
  2019-04-10 16:43 ` [dpdk-stable] patch 'eal: remove dead code in core list parsing' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix flow director SCTP matching' " Kevin Traynor
                   ` (10 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: David Marchand; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 6beb539dd41db01cdf10f61767d93eff2e16f08f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 13 Feb 2019 21:06:59 +0100
Subject: [PATCH] eal: fix core list validation with disabled cores

[ upstream commit 1598c729595d8d59ebb9dce190401846da16c09c ]

-l and -c options are two ways to select the cores used by DPDK.
Their format differs, but the checks on the selected cores are the same.
Use an intermediate array to separate the specific parsing checks from
the common consistency checks.
The parsing functions now concentrate on validating the passed string
and do nothing more.

We can report all invalid core indexes rather than only the first error.
In the error log message, reporting [0, cfg->lcore_count - 1] as a valid
range is then wrong when the core list is not continuous.

Example on my 8 cpus laptop with core 2 and 6 disabled.
echo 0 > /sys/devices/system/cpu/cpu2/online
echo 0 > /sys/devices/system/cpu/cpu6/online

Before:
./master/app/testpmd -l 0-7 --no-huge -m 512 -- --total-num-mbufs 2048
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: invalid core list, please check core numbers are in [0, 5] range
...

After:
./master/app/testpmd -l 0-7 --no-huge -m 512 -- --total-num-mbufs 2048
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: lcore 2 unavailable
EAL: lcore 6 unavailable
EAL: invalid core list, please check specified cores are part of 0-1,3-5,7
...

Fixes: d888cb8b9613 ("eal: add core list input format")
Fixes: b38693b612b4 ("eal: fix core number validation")

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_eal/common/eal_common_options.c | 203 +++++++++++++++------
 1 file changed, 145 insertions(+), 58 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 74ca26340..d4ab5e235 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -419,19 +419,42 @@ eal_service_cores_parsed(void)
 
 static int
-eal_parse_coremask(const char *coremask)
+update_lcore_config(int *cores)
 {
 	struct rte_config *cfg = rte_eal_get_configuration();
-	int i, j, idx = 0;
+	unsigned int count = 0;
+	unsigned int i;
+	int ret = 0;
+
+	for (i = 0; i < RTE_MAX_LCORE; i++) {
+		if (cores[i] != -1) {
+			if (!lcore_config[i].detected) {
+				RTE_LOG(ERR, EAL, "lcore %u unavailable\n", i);
+				ret = -1;
+				continue;
+			}
+			cfg->lcore_role[i] = ROLE_RTE;
+			count++;
+		} else {
+			cfg->lcore_role[i] = ROLE_OFF;
+		}
+		lcore_config[i].core_index = cores[i];
+	}
+	if (!ret)
+		cfg->lcore_count = count;
+	return ret;
+}
+
+static int
+eal_parse_coremask(const char *coremask, int *cores)
+{
 	unsigned count = 0;
-	char c;
+	int i, j, idx;
 	int val;
+	char c;
 
-	if (eal_service_cores_parsed())
-		RTE_LOG(WARNING, EAL,
-			"Service cores parsed before dataplane cores. "
-			"Please ensure -c is before -s or -S\n");
+	for (idx = 0; idx < RTE_MAX_LCORE; idx++)
+		cores[idx] = -1;
+	idx = 0;
 
-	if (coremask == NULL)
-		return -1;
 	/* Remove all blank characters ahead and after .
 	 * Remove 0x/0X if exists.
@@ -458,16 +481,6 @@ eal_parse_coremask(const char *coremask)
 		{
 			if ((1 << j) & val) {
-				if (!lcore_config[idx].detected) {
-					RTE_LOG(ERR, EAL, "lcore %u "
-					        "unavailable\n", idx);
-					return -1;
-				}
-
-				cfg->lcore_role[idx] = ROLE_RTE;
-				lcore_config[idx].core_index = count;
+				cores[idx] = count;
 				count++;
-			} else {
-				cfg->lcore_role[idx] = ROLE_OFF;
-				lcore_config[idx].core_index = -1;
 			}
 		}
@@ -476,12 +489,6 @@ eal_parse_coremask(const char *coremask)
 		if (coremask[i] != '0')
 			return -1;
-	for (; idx < RTE_MAX_LCORE; idx++) {
-		cfg->lcore_role[idx] = ROLE_OFF;
-		lcore_config[idx].core_index = -1;
-	}
 	if (count == 0)
 		return -1;
-	/* Update the count of enabled logical cores of the EAL configuration */
-	cfg->lcore_count = count;
 	return 0;
 }
@@ -564,7 +571,6 @@ eal_parse_service_corelist(const char *corelist)
 
 static int
-eal_parse_corelist(const char *corelist)
+eal_parse_corelist(const char *corelist, int *cores)
 {
-	struct rte_config *cfg = rte_eal_get_configuration();
 	unsigned count = 0;
 	char *end = NULL;
@@ -572,11 +578,6 @@ eal_parse_corelist(const char *corelist)
 	int idx;
 
-	if (eal_service_cores_parsed())
-		RTE_LOG(WARNING, EAL,
-			"Service cores parsed before dataplane cores. "
-			"Please ensure -l is before -s or -S\n");
-
-	if (corelist == NULL)
-		return -1;
+	for (idx = 0; idx < RTE_MAX_LCORE; idx++)
+		cores[idx] = -1;
 
 	/* Remove all blank characters ahead */
@@ -584,10 +585,4 @@ eal_parse_corelist(const char *corelist)
 		corelist++;
 
-	/* Reset config */
-	for (idx = 0; idx < RTE_MAX_LCORE; idx++) {
-		cfg->lcore_role[idx] = ROLE_OFF;
-		lcore_config[idx].core_index = -1;
-	}
-
 	/* Get list of cores */
 	min = RTE_MAX_LCORE;
@@ -599,8 +594,8 @@ eal_parse_corelist(const char *corelist)
 		errno = 0;
 		idx = strtol(corelist, &end, 10);
-		if (idx < 0 || idx >= (int)cfg->lcore_count)
-			return -1;
 		if (errno || end == NULL)
 			return -1;
+		if (idx < 0 || idx >= RTE_MAX_LCORE)
+			return -1;
 		while (isblank(*end))
 			end++;
@@ -612,7 +607,6 @@ eal_parse_corelist(const char *corelist)
 				min = idx;
 			for (idx = min; idx <= max; idx++) {
-				if (cfg->lcore_role[idx] != ROLE_RTE) {
-					cfg->lcore_role[idx] = ROLE_RTE;
-					lcore_config[idx].core_index = count;
+				if (cores[idx] == -1) {
+					cores[idx] = count;
 					count++;
 				}
@@ -626,8 +620,4 @@ eal_parse_corelist(const char *corelist)
 	if (count == 0)
 		return -1;
-
-	/* Update the count of enabled logical cores of the EAL configuration */
-	cfg->lcore_count = count;
-
 	return 0;
 }
@@ -1105,4 +1095,73 @@ eal_parse_iova_mode(const char *name)
 }
 
+/* caller is responsible for freeing the returned string */
+static char *
+available_cores(void)
+{
+	char *str = NULL;
+	int previous;
+	int sequence;
+	char *tmp;
+	int idx;
+
+	/* find the first available cpu */
+	for (idx = 0; idx < RTE_MAX_LCORE; idx++) {
+		if (!lcore_config[idx].detected)
+			continue;
+		break;
+	}
+	if (idx >= RTE_MAX_LCORE)
+		return NULL;
+
+	/* first sequence */
+	if (asprintf(&str, "%d", idx) < 0)
+		return NULL;
+	previous = idx;
+	sequence = 0;
+
+	for (idx++ ; idx < RTE_MAX_LCORE; idx++) {
+		if (!lcore_config[idx].detected)
+			continue;
+
+		if (idx == previous + 1) {
+			previous = idx;
+			sequence = 1;
+			continue;
+		}
+
+		/* finish current sequence */
+		if (sequence) {
+			if (asprintf(&tmp, "%s-%d", str, previous) < 0) {
+				free(str);
+				return NULL;
+			}
+			free(str);
+			str = tmp;
+		}
+
+		/* new sequence */
+		if (asprintf(&tmp, "%s,%d", str, idx) < 0) {
+			free(str);
+			return NULL;
+		}
+		free(str);
+		str = tmp;
+		previous = idx;
+		sequence = 0;
+	}
+
+	/* finish last sequence */
+	if (sequence) {
+		if (asprintf(&tmp, "%s-%d", str, previous) < 0) {
+			free(str);
+			return NULL;
+		}
+		free(str);
+		str = tmp;
+	}
+
+	return str;
+}
+
 int
 eal_parse_common_option(int opt, const char *optarg,
@@ -1111,5 +1170,4 @@ eal_parse_common_option(int opt, const char *optarg,
 	static int b_used;
 	static int w_used;
-	struct rte_config *cfg = rte_eal_get_configuration();
 
 	switch (opt) {
@@ -1135,7 +1193,21 @@ eal_parse_common_option(int opt, const char *optarg,
 		break;
 	/* coremask */
-	case 'c':
-		if (eal_parse_coremask(optarg) < 0) {
-			RTE_LOG(ERR, EAL, "invalid coremask\n");
+	case 'c': {
+		int lcore_indexes[RTE_MAX_LCORE];
+
+		if (eal_service_cores_parsed())
+			RTE_LOG(WARNING, EAL,
+				"Service cores parsed before dataplane cores. Please ensure -c is before -s or -S\n");
+		if (eal_parse_coremask(optarg, lcore_indexes) < 0) {
+			RTE_LOG(ERR, EAL, "invalid coremask syntax\n");
+			return -1;
+		}
+		if (update_lcore_config(lcore_indexes) < 0) {
+			char *available = available_cores();
+
+			RTE_LOG(ERR, EAL,
+				"invalid coremask, please check specified cores are part of %s\n",
+				available);
+			free(available);
 			return -1;
 		}
@@ -1151,10 +1223,24 @@ eal_parse_common_option(int opt, const char *optarg,
 		core_parsed = LCORE_OPT_MSK;
 		break;
+	}
 	/* corelist */
-	case 'l':
-		if (eal_parse_corelist(optarg) < 0) {
+	case 'l': {
+		int lcore_indexes[RTE_MAX_LCORE];
+
+		if (eal_service_cores_parsed())
+			RTE_LOG(WARNING, EAL,
+				"Service cores parsed before dataplane cores. Please ensure -l is before -s or -S\n");
+
+		if (eal_parse_corelist(optarg, lcore_indexes) < 0) {
+			RTE_LOG(ERR, EAL, "invalid core list syntax\n");
+			return -1;
+		}
+		if (update_lcore_config(lcore_indexes) < 0) {
+			char *available = available_cores();
+
 			RTE_LOG(ERR, EAL,
-				"invalid core list, please check core numbers are in [0, %u] range\n",
-					cfg->lcore_count-1);
+				"invalid core list, please check specified cores are part of %s\n",
+				available);
+			free(available);
 			return -1;
 		}
@@ -1170,4 +1256,5 @@ eal_parse_common_option(int opt, const char *optarg,
 		core_parsed = LCORE_OPT_LST;
 		break;
+	}
 	/* service coremask */
 	case 's':
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.883745285 +0100
+++ 0052-eal-fix-core-list-validation-with-disabled-cores.patch	2019-04-10 14:06:08.003291061 +0100
@@ -1,8 +1,10 @@
-From 1598c729595d8d59ebb9dce190401846da16c09c Mon Sep 17 00:00:00 2001
+From 6beb539dd41db01cdf10f61767d93eff2e16f08f Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Wed, 13 Feb 2019 21:06:59 +0100
 Subject: [PATCH] eal: fix core list validation with disabled cores
 
+[ upstream commit 1598c729595d8d59ebb9dce190401846da16c09c ]
+
 -l and -c options are two ways to select the cores used by DPDK.
 Their format differs, but the checks on the selected cores are the same.
 Use an intermediate array to separate the specific parsing checks from
@@ -36,7 +38,6 @@
 
 Fixes: d888cb8b9613 ("eal: add core list input format")
 Fixes: b38693b612b4 ("eal: fix core number validation")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 ---
@@ -44,10 +45,10 @@
  1 file changed, 145 insertions(+), 58 deletions(-)
 
 diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
-index 8a431457b..8dcfeb9b2 100644
+index 74ca26340..d4ab5e235 100644
 --- a/lib/librte_eal/common/eal_common_options.c
 +++ b/lib/librte_eal/common/eal_common_options.c
-@@ -420,19 +420,42 @@ eal_service_cores_parsed(void)
+@@ -419,19 +419,42 @@ eal_service_cores_parsed(void)
  
  static int
 -eal_parse_coremask(const char *coremask)
@@ -99,7 +100,7 @@
 -		return -1;
  	/* Remove all blank characters ahead and after .
  	 * Remove 0x/0X if exists.
-@@ -459,16 +482,6 @@ eal_parse_coremask(const char *coremask)
+@@ -458,16 +481,6 @@ eal_parse_coremask(const char *coremask)
  		{
  			if ((1 << j) & val) {
 -				if (!lcore_config[idx].detected) {
@@ -117,7 +118,7 @@
 -				lcore_config[idx].core_index = -1;
  			}
  		}
-@@ -477,12 +490,6 @@ eal_parse_coremask(const char *coremask)
+@@ -476,12 +489,6 @@ eal_parse_coremask(const char *coremask)
  		if (coremask[i] != '0')
  			return -1;
 -	for (; idx < RTE_MAX_LCORE; idx++) {
@@ -130,7 +131,7 @@
 -	cfg->lcore_count = count;
  	return 0;
  }
-@@ -565,7 +572,6 @@ eal_parse_service_corelist(const char *corelist)
+@@ -564,7 +571,6 @@ eal_parse_service_corelist(const char *corelist)
  
  static int
 -eal_parse_corelist(const char *corelist)
@@ -139,7 +140,7 @@
 -	struct rte_config *cfg = rte_eal_get_configuration();
  	unsigned count = 0;
  	char *end = NULL;
-@@ -573,11 +579,6 @@ eal_parse_corelist(const char *corelist)
+@@ -572,11 +578,6 @@ eal_parse_corelist(const char *corelist)
  	int idx;
  
 -	if (eal_service_cores_parsed())
@@ -153,7 +154,7 @@
 +		cores[idx] = -1;
  
  	/* Remove all blank characters ahead */
-@@ -585,10 +586,4 @@ eal_parse_corelist(const char *corelist)
+@@ -584,10 +585,4 @@ eal_parse_corelist(const char *corelist)
  		corelist++;
  
 -	/* Reset config */
@@ -164,7 +165,7 @@
 -
  	/* Get list of cores */
  	min = RTE_MAX_LCORE;
-@@ -600,8 +595,8 @@ eal_parse_corelist(const char *corelist)
+@@ -599,8 +594,8 @@ eal_parse_corelist(const char *corelist)
  		errno = 0;
  		idx = strtol(corelist, &end, 10);
 -		if (idx < 0 || idx >= (int)cfg->lcore_count)
@@ -175,7 +176,7 @@
 +			return -1;
  		while (isblank(*end))
  			end++;
-@@ -613,7 +608,6 @@ eal_parse_corelist(const char *corelist)
+@@ -612,7 +607,6 @@ eal_parse_corelist(const char *corelist)
  				min = idx;
  			for (idx = min; idx <= max; idx++) {
 -				if (cfg->lcore_role[idx] != ROLE_RTE) {
@@ -185,7 +186,7 @@
 +					cores[idx] = count;
  					count++;
  				}
-@@ -627,8 +621,4 @@ eal_parse_corelist(const char *corelist)
+@@ -626,8 +620,4 @@ eal_parse_corelist(const char *corelist)
  	if (count == 0)
  		return -1;
 -
@@ -194,7 +195,7 @@
 -
  	return 0;
  }
-@@ -1106,4 +1096,73 @@ eal_parse_iova_mode(const char *name)
+@@ -1105,4 +1095,73 @@ eal_parse_iova_mode(const char *name)
  }
  
 +/* caller is responsible for freeing the returned string */
@@ -268,13 +269,13 @@
 +
  int
  eal_parse_common_option(int opt, const char *optarg,
-@@ -1112,5 +1171,4 @@ eal_parse_common_option(int opt, const char *optarg,
+@@ -1111,5 +1170,4 @@ eal_parse_common_option(int opt, const char *optarg,
  	static int b_used;
  	static int w_used;
 -	struct rte_config *cfg = rte_eal_get_configuration();
  
  	switch (opt) {
-@@ -1136,7 +1194,21 @@ eal_parse_common_option(int opt, const char *optarg,
+@@ -1135,7 +1193,21 @@ eal_parse_common_option(int opt, const char *optarg,
  		break;
  	/* coremask */
 -	case 'c':
@@ -299,7 +300,7 @@
 +			free(available);
  			return -1;
  		}
-@@ -1152,10 +1224,24 @@ eal_parse_common_option(int opt, const char *optarg,
+@@ -1151,10 +1223,24 @@ eal_parse_common_option(int opt, const char *optarg,
  		core_parsed = LCORE_OPT_MSK;
  		break;
 +	}
@@ -328,7 +329,7 @@
 +			free(available);
  			return -1;
  		}
-@@ -1171,4 +1257,5 @@ eal_parse_common_option(int opt, const char *optarg,
+@@ -1170,4 +1256,5 @@ eal_parse_common_option(int opt, const char *optarg,
  		core_parsed = LCORE_OPT_LST;
  		break;
 +	}

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: fix flow director SCTP matching' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (50 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'eal: fix core list validation with disabled cores' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix SCTP match for flow API' " Kevin Traynor
                   ` (9 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 525f72852cd2aa4f8e582bf4fb2ac2c2d69b22b6 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:40 -0800
Subject: [PATCH] net/enic: fix flow director SCTP matching

[ upstream commit 4182ee7f0239563916b1f730d5a58f534769ee5e ]

The firmware filter API does not have flags indicating "match SCTP
packet". Instead, the driver needs to explicitly add an IP match and
set the protocol number (132 for SCTP) in the IP header.

The existing code (copy_fltr_v2) has two bugs.

1. It sets the protocol number (132) in the match value, but not the
mask. The mask remains 0, so the match becomes a wildcard match. The
NIC ends up matching all protocol numbers (i.e. thinks non-SCTP
packets are SCTP).

2. It modifies the input argument (rte_eth_fdir_input). The driver
tracks filters using rte_hash_{add,del}_key(input). So, addding
(RTE_ETH_FILTER_ADD) and deleting (RTE_ETH_FILTER_DELETE) must use the
same input argument for the same filter. But, overwriting the protocol
number while adding the filter breaks this assumption, and causes
delete operation to fail.

So, set the mask as well as protocol value. Do not modify the input
argument, and use const in function signatures to make the intention
clear. Also move a couple function declarations to enic_clsf.c from
enic.h as they are strictly local.

Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic.h      |  8 ++------
 drivers/net/enic/enic_clsf.c | 38 ++++++++++++++++++++++++------------
 2 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
index 7bca3cad2..e57f90985 100644
--- a/drivers/net/enic/enic.h
+++ b/drivers/net/enic/enic.h
@@ -79,6 +79,6 @@ struct enic_fdir {
 	u32 types_mask;
 	void (*copy_fltr_fn)(struct filter_v2 *filt,
-			     struct rte_eth_fdir_input *input,
-			     struct rte_eth_fdir_masks *masks);
+			     const struct rte_eth_fdir_input *input,
+			     const struct rte_eth_fdir_masks *masks);
 };
 
@@ -341,8 +341,4 @@ bool enic_use_vector_rx_handler(struct enic *enic);
 void enic_fdir_info(struct enic *enic);
 void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *stats);
-void copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
-		  struct rte_eth_fdir_masks *masks);
-void copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
-		  struct rte_eth_fdir_masks *masks);
 extern const struct rte_flow_ops enic_flow_ops;
 #endif /* _ENIC_H_ */
diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
index 9e9e548c2..48c8e6264 100644
--- a/drivers/net/enic/enic_clsf.c
+++ b/drivers/net/enic/enic_clsf.c
@@ -37,4 +37,11 @@
 #define ENICPMD_CLSF_HASH_ENTRIES       ENICPMD_FDIR_MAX
 
+static void copy_fltr_v1(struct filter_v2 *fltr,
+		const struct rte_eth_fdir_input *input,
+		const struct rte_eth_fdir_masks *masks);
+static void copy_fltr_v2(struct filter_v2 *fltr,
+		const struct rte_eth_fdir_input *input,
+		const struct rte_eth_fdir_masks *masks);
+
 void enic_fdir_stats_get(struct enic *enic, struct rte_eth_fdir_stats *stats)
 {
@@ -80,7 +87,7 @@ enic_set_layer(struct filter_generic_1 *gp, unsigned int flag,
  * without advanced filter support.
  */
-void
-copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
-	     __rte_unused struct rte_eth_fdir_masks *masks)
+static void
+copy_fltr_v1(struct filter_v2 *fltr, const struct rte_eth_fdir_input *input,
+	     __rte_unused const struct rte_eth_fdir_masks *masks)
 {
 	fltr->type = FILTER_IPV4_5TUPLE;
@@ -105,7 +112,7 @@ copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
  * filter support.
  */
-void
-copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
-	     struct rte_eth_fdir_masks *masks)
+static void
+copy_fltr_v2(struct filter_v2 *fltr, const struct rte_eth_fdir_input *input,
+	     const struct rte_eth_fdir_masks *masks)
 {
 	struct filter_generic_1 *gp = &fltr->u.generic_1;
@@ -164,7 +171,9 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
 		}
 
-		/* v4 proto should be 132, override ip4_flow.proto */
-		input->flow.ip4_flow.proto = 132;
-
+		/*
+		 * Unlike UDP/TCP (FILTER_GENERIC_1_{UDP,TCP}), the firmware
+		 * has no "packet is SCTP" flag. Use flag=0 (generic L4) and
+		 * manually set proto_id=sctp below.
+		 */
 		enic_set_layer(gp, 0, FILTER_GENERIC_1_L4, &sctp_mask,
 			       &sctp_val, sizeof(struct sctp_hdr));
@@ -190,4 +199,8 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
 			ip4_mask.next_proto_id = masks->ipv4_mask.proto;
 			ip4_val.next_proto_id = input->flow.ip4_flow.proto;
+		} else if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV4_SCTP) {
+			/* Explicitly match the SCTP protocol number */
+			ip4_mask.next_proto_id = 0xff;
+			ip4_val.next_proto_id = IPPROTO_SCTP;
 		}
 		if (input->flow.ip4_flow.src_ip) {
@@ -252,7 +265,4 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
 		}
 
-		/* v4 proto should be 132, override ipv6_flow.proto */
-		input->flow.ipv6_flow.proto = 132;
-
 		enic_set_layer(gp, 0, FILTER_GENERIC_1_L4, &sctp_mask,
 			       &sctp_val, sizeof(struct sctp_hdr));
@@ -270,4 +280,8 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
 			ipv6_mask.proto = masks->ipv6_mask.proto;
 			ipv6_val.proto = input->flow.ipv6_flow.proto;
+		} else if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV6_SCTP) {
+			/* See comments for IPv4 SCTP above. */
+			ipv6_mask.proto = 0xff;
+			ipv6_val.proto = IPPROTO_SCTP;
 		}
 		memcpy(ipv6_mask.src_addr, masks->ipv6_mask.src_ip,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:11.944925628 +0100
+++ 0053-net-enic-fix-flow-director-SCTP-matching.patch	2019-04-10 14:06:08.004291038 +0100
@@ -1,8 +1,10 @@
-From 4182ee7f0239563916b1f730d5a58f534769ee5e Mon Sep 17 00:00:00 2001
+From 525f72852cd2aa4f8e582bf4fb2ac2c2d69b22b6 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:40 -0800
 Subject: [PATCH] net/enic: fix flow director SCTP matching
 
+[ upstream commit 4182ee7f0239563916b1f730d5a58f534769ee5e ]
+
 The firmware filter API does not have flags indicating "match SCTP
 packet". Instead, the driver needs to explicitly add an IP match and
 set the protocol number (132 for SCTP) in the IP header.
@@ -27,7 +29,6 @@
 enic.h as they are strictly local.
 
 Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>
@@ -37,10 +38,10 @@
  2 files changed, 28 insertions(+), 18 deletions(-)
 
 diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
-index 6c497e9a2..fa4d5590e 100644
+index 7bca3cad2..e57f90985 100644
 --- a/drivers/net/enic/enic.h
 +++ b/drivers/net/enic/enic.h
-@@ -77,6 +77,6 @@ struct enic_fdir {
+@@ -79,6 +79,6 @@ struct enic_fdir {
  	u32 types_mask;
  	void (*copy_fltr_fn)(struct filter_v2 *filt,
 -			     struct rte_eth_fdir_input *input,
@@ -49,7 +50,7 @@
 +			     const struct rte_eth_fdir_masks *masks);
  };
  
-@@ -343,8 +343,4 @@ bool enic_use_vector_rx_handler(struct enic *enic);
+@@ -341,8 +341,4 @@ bool enic_use_vector_rx_handler(struct enic *enic);
  void enic_fdir_info(struct enic *enic);
  void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *stats);
 -void copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: fix SCTP match for flow API' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (51 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix flow director SCTP matching' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: allow flow mark ID 0' " Kevin Traynor
                   ` (8 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 4ce5b801084779d85e00d77b526edaf9c76463f8 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:41 -0800
Subject: [PATCH] net/enic: fix SCTP match for flow API

[ upstream commit 3a1c3cd01b8bce9203e96520f2715b7fd8d93f02 ]

The driver needs to explicitly set the protocol number (132) in the IP
header pattern, as the current firmware filter API lacks "match SCTP
packet" flag. Otherwise, the resulting NIC filter may lead to false
positives (i.e. NIC reporting non-SCTP packets as SCTP packets). The
flow director handler does the same (enic_clsf.c).

Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_flow.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index bb9ed037a..55d8d50a1 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -71,5 +71,4 @@ static enic_copy_item_fn enic_copy_item_udp_v2;
 static enic_copy_item_fn enic_copy_item_tcp_v2;
 static enic_copy_item_fn enic_copy_item_sctp_v2;
-static enic_copy_item_fn enic_copy_item_sctp_v2;
 static enic_copy_item_fn enic_copy_item_vxlan_v2;
 static copy_action_fn enic_copy_action_v1;
@@ -238,5 +237,5 @@ static const struct enic_items enic_items_v3[] = {
 	[RTE_FLOW_ITEM_TYPE_SCTP] = {
 		.copy_item = enic_copy_item_sctp_v2,
-		.valid_start_item = 1,
+		.valid_start_item = 0,
 		.prev_items = (const enum rte_flow_item_type[]) {
 			       RTE_FLOW_ITEM_TYPE_IPV4,
@@ -820,4 +819,6 @@ enic_copy_item_sctp_v2(const struct rte_flow_item *item,
 	const struct rte_flow_item_sctp *mask = item->mask;
 	struct filter_generic_1 *gp = &enic_filter->u.generic_1;
+	uint8_t *ip_proto_mask = NULL;
+	uint8_t *ip_proto = NULL;
 
 	FLOW_TRACE();
@@ -826,4 +827,27 @@ enic_copy_item_sctp_v2(const struct rte_flow_item *item,
 		return ENOTSUP;
 
+	/*
+	 * The NIC filter API has no flags for "match sctp", so explicitly set
+	 * the protocol number in the IP pattern.
+	 */
+	if (gp->val_flags & FILTER_GENERIC_1_IPV4) {
+		struct ipv4_hdr *ip;
+		ip = (struct ipv4_hdr *)gp->layer[FILTER_GENERIC_1_L3].mask;
+		ip_proto_mask = &ip->next_proto_id;
+		ip = (struct ipv4_hdr *)gp->layer[FILTER_GENERIC_1_L3].val;
+		ip_proto = &ip->next_proto_id;
+	} else if (gp->val_flags & FILTER_GENERIC_1_IPV6) {
+		struct ipv6_hdr *ip;
+		ip = (struct ipv6_hdr *)gp->layer[FILTER_GENERIC_1_L3].mask;
+		ip_proto_mask = &ip->proto;
+		ip = (struct ipv6_hdr *)gp->layer[FILTER_GENERIC_1_L3].val;
+		ip_proto = &ip->proto;
+	} else {
+		/* Need IPv4/IPv6 pattern first */
+		return EINVAL;
+	}
+	*ip_proto = IPPROTO_SCTP;
+	*ip_proto_mask = 0xff;
+
 	/* Match all if no spec */
 	if (!spec)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.021238680 +0100
+++ 0054-net-enic-fix-SCTP-match-for-flow-API.patch	2019-04-10 14:06:08.006290993 +0100
@@ -1,8 +1,10 @@
-From 3a1c3cd01b8bce9203e96520f2715b7fd8d93f02 Mon Sep 17 00:00:00 2001
+From 4ce5b801084779d85e00d77b526edaf9c76463f8 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:41 -0800
 Subject: [PATCH] net/enic: fix SCTP match for flow API
 
+[ upstream commit 3a1c3cd01b8bce9203e96520f2715b7fd8d93f02 ]
+
 The driver needs to explicitly set the protocol number (132) in the IP
 header pattern, as the current firmware filter API lacks "match SCTP
 packet" flag. Otherwise, the resulting NIC filter may lead to false
@@ -10,7 +12,6 @@
 flow director handler does the same (enic_clsf.c).
 
 Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: allow flow mark ID 0' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (52 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix SCTP match for flow API' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: check for unsupported flow item types' " Kevin Traynor
                   ` (7 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 8403c0848e8058657c5ce63a9090200d2748b43c Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:42 -0800
Subject: [PATCH] net/enic: allow flow mark ID 0

[ upstream commit e7347a8aff483f22c75491ca1d59e1f822318500 ]

The driver currently accepts mark ID 0 but does not report it in
matching packet's mbuf. For example, the following testpmd command
succeeds. But, the mbuf of a matching IPv4 UDP packet does not have
PKT_RX_FDIR_ID set.

flow create 0 ingress pattern ... actions mark id 0 / queue index 0 / end

The problem has to do with mapping mark IDs (32-bit) to NIC filter
IDs. Filter ID is currently 16-bit, so values greater than 0xffff are
rejected. The firmware reserves filter ID 0 for filters that do not
mark (e.g. steer w/o mark). And, the driver reserves 0xffff for the
flag action. This leaves 1...0xfffe for app use.

It is possible to simply reject mark ID 0 as unsupported. But, 0 is
commonly used (e.g. OVS-DPDK and VPP). So, when adding a filter, set
filter ID = mark ID + 1 to support mark ID 0. The receive handler
subtracts 1 from filter ID to get back the original mark ID.

Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 doc/guides/nics/enic.rst            |  1 +
 drivers/net/enic/enic_flow.c        | 15 +++++++++++----
 drivers/net/enic/enic_rxtx_common.h |  3 ++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
index bc38f51aa..e456e6c2d 100644
--- a/doc/guides/nics/enic.rst
+++ b/doc/guides/nics/enic.rst
@@ -451,4 +451,5 @@ PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the
     were added. Since there currently is no grouping or priority support,
     'catch-all' filters should be added last.
+  - The supported range of IDs for the 'MARK' action is 0 - 0xFFFD.
 
 - **Statistics**
diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index 55d8d50a1..e12a6ec73 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -1082,10 +1082,16 @@ enic_copy_action_v2(const struct rte_flow_action actions[],
 				return ENOTSUP;
 			overlap |= MARK;
-			/* ENIC_MAGIC_FILTER_ID is reserved and is the highest
-			 * in the range of allows mark ids.
+			/*
+			 * Map mark ID (32-bit) to filter ID (16-bit):
+			 * - Reject values > 16 bits
+			 * - Filter ID 0 is reserved for filters that steer
+			 *   but not mark. So add 1 to the mark ID to avoid
+			 *   using 0.
+			 * - Filter ID (ENIC_MAGIC_FILTER_ID = 0xffff) is
+			 *   reserved for the "flag" action below.
 			 */
-			if (mark->id >= ENIC_MAGIC_FILTER_ID)
+			if (mark->id >= ENIC_MAGIC_FILTER_ID - 1)
 				return EINVAL;
-			enic_action->filter_id = mark->id;
+			enic_action->filter_id = mark->id + 1;
 			enic_action->flags |= FILTER_ACTION_FILTER_ID_FLAG;
 			break;
@@ -1095,4 +1101,5 @@ enic_copy_action_v2(const struct rte_flow_action actions[],
 				return ENOTSUP;
 			overlap |= MARK;
+			/* ENIC_MAGIC_FILTER_ID is reserved for flagging */
 			enic_action->filter_id = ENIC_MAGIC_FILTER_ID;
 			enic_action->flags |= FILTER_ACTION_FILTER_ID_FLAG;
diff --git a/drivers/net/enic/enic_rxtx_common.h b/drivers/net/enic/enic_rxtx_common.h
index bfbb4909e..66f631dfe 100644
--- a/drivers/net/enic/enic_rxtx_common.h
+++ b/drivers/net/enic/enic_rxtx_common.h
@@ -227,5 +227,6 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
 			pkt_flags |= PKT_RX_FDIR;
 			if (filter_id != ENIC_MAGIC_FILTER_ID) {
-				mbuf->hash.fdir.hi = clsf_cqd->filter_id;
+				/* filter_id = mark id + 1, so subtract 1 */
+				mbuf->hash.fdir.hi = filter_id - 1;
 				pkt_flags |= PKT_RX_FDIR_ID;
 			}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.090386556 +0100
+++ 0055-net-enic-allow-flow-mark-ID-0.patch	2019-04-10 14:06:08.009290924 +0100
@@ -1,8 +1,10 @@
-From e7347a8aff483f22c75491ca1d59e1f822318500 Mon Sep 17 00:00:00 2001
+From 8403c0848e8058657c5ce63a9090200d2748b43c Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:42 -0800
 Subject: [PATCH] net/enic: allow flow mark ID 0
 
+[ upstream commit e7347a8aff483f22c75491ca1d59e1f822318500 ]
+
 The driver currently accepts mark ID 0 but does not report it in
 matching packet's mbuf. For example, the following testpmd command
 succeeds. But, the mbuf of a matching IPv4 UDP packet does not have
@@ -22,7 +24,6 @@
 subtracts 1 from filter ID to get back the original mark ID.
 
 Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: check for unsupported flow item types' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (53 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: allow flow mark ID 0' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: reset VXLAN port regardless of overlay offload' " Kevin Traynor
                   ` (6 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 946cb3b1ca679b2e964cf1a3ceebc7e8d8764629 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:43 -0800
Subject: [PATCH] net/enic: check for unsupported flow item types

[ upstream commit 4d8e9aa48328edb58f8a843a8e6bee327e12d181 ]

Currently a pattern with an unsupported item type causes segfault,
because the flow handler is using the type as an array index without
checking bounds. Add an explicit check for unsupported item types and
avoid out-of-bound accesses.

Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_flow.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index e12a6ec73..c60476c8c 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -41,4 +41,6 @@ struct enic_filter_cap {
 	/** list of valid items and their handlers and attributes. */
 	const struct enic_items *item_info;
+	/* Max type in the above list, used to detect unsupported types */
+	enum rte_flow_item_type max_item_type;
 };
 
@@ -258,10 +260,13 @@ static const struct enic_filter_cap enic_filter_cap[] = {
 	[FILTER_IPV4_5TUPLE] = {
 		.item_info = enic_items_v1,
+		.max_item_type = RTE_FLOW_ITEM_TYPE_TCP,
 	},
 	[FILTER_USNIC_IP] = {
 		.item_info = enic_items_v2,
+		.max_item_type = RTE_FLOW_ITEM_TYPE_VXLAN,
 	},
 	[FILTER_DPDK_1] = {
 		.item_info = enic_items_v3,
+		.max_item_type = RTE_FLOW_ITEM_TYPE_VXLAN,
 	},
 };
@@ -947,5 +952,5 @@ item_stacking_valid(enum rte_flow_item_type prev_item,
 static int
 enic_copy_filter(const struct rte_flow_item pattern[],
-		 const struct enic_items *items_info,
+		 const struct enic_filter_cap *cap,
 		 struct filter_v2 *enic_filter,
 		 struct rte_flow_error *error)
@@ -970,5 +975,12 @@ enic_copy_filter(const struct rte_flow_item pattern[],
 			continue;
 
-		item_info = &items_info[item->type];
+		item_info = &cap->item_info[item->type];
+		if (item->type > cap->max_item_type ||
+		    item_info->copy_item == NULL) {
+			rte_flow_error_set(error, ENOTSUP,
+				RTE_FLOW_ERROR_TYPE_ITEM,
+				NULL, "Unsupported item.");
+			return -rte_errno;
+		}
 
 		/* check to see if item stacking is valid */
@@ -1424,5 +1436,5 @@ enic_flow_parse(struct rte_eth_dev *dev,
 	}
 	enic_filter->type = enic->flow_filter_mode;
-	ret = enic_copy_filter(pattern, enic_filter_cap->item_info,
+	ret = enic_copy_filter(pattern, enic_filter_cap,
 				       enic_filter, error);
 	return ret;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.160587523 +0100
+++ 0056-net-enic-check-for-unsupported-flow-item-types.patch	2019-04-10 14:06:08.010290901 +0100
@@ -1,15 +1,16 @@
-From 4d8e9aa48328edb58f8a843a8e6bee327e12d181 Mon Sep 17 00:00:00 2001
+From 946cb3b1ca679b2e964cf1a3ceebc7e8d8764629 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:43 -0800
 Subject: [PATCH] net/enic: check for unsupported flow item types
 
+[ upstream commit 4d8e9aa48328edb58f8a843a8e6bee327e12d181 ]
+
 Currently a pattern with an unsupported item type causes segfault,
 because the flow handler is using the type as an array index without
 checking bounds. Add an explicit check for unsupported item types and
 avoid out-of-bound accesses.
 
 Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: reset VXLAN port regardless of overlay offload' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (54 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: check for unsupported flow item types' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix VXLAN match' " Kevin Traynor
                   ` (5 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 023e75645afa6e7d356cb7c006786c04ccfad267 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:48 -0800
Subject: [PATCH] net/enic: reset VXLAN port regardless of overlay offload

[ upstream commit af3a16282aaae67224f0220a29f663b8b1b0fb0a ]

Currently, the driver resets the vxlan port register only if overlay
offload is enabled. But, the register is actually tied to hardware
vxlan parsing, which is an independent feature and is always enabled
even if overlay offload is disabled. If left uninitialized, it can
affect flow rules that match vxlan. So always reset the port number
when HW vxlan parsing is available.

Fixes: 8a4efd17410c ("net/enic: add handlers to add/delete vxlan port number")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
---
 drivers/net/enic/enic_main.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index 406f92a80..098a18d63 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1716,6 +1716,13 @@ static int enic_dev_init(struct enic *enic)
 			PKT_TX_TUNNEL_MASK;
 		enic->overlay_offload = true;
-		enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT;
 		dev_info(enic, "Overlay offload is enabled\n");
+	}
+	/*
+	 * Reset the vxlan port if HW vxlan parsing is available. It
+	 * is always enabled regardless of overlay offload
+	 * enable/disable.
+	 */
+	if (enic->vxlan) {
+		enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT;
 		/*
 		 * Reset the vxlan port to the default, as the NIC firmware
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.235563028 +0100
+++ 0057-net-enic-reset-VXLAN-port-regardless-of-overlay-offl.patch	2019-04-10 14:06:08.013290832 +0100
@@ -1,8 +1,10 @@
-From af3a16282aaae67224f0220a29f663b8b1b0fb0a Mon Sep 17 00:00:00 2001
+From 023e75645afa6e7d356cb7c006786c04ccfad267 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:48 -0800
 Subject: [PATCH] net/enic: reset VXLAN port regardless of overlay offload
 
+[ upstream commit af3a16282aaae67224f0220a29f663b8b1b0fb0a ]
+
 Currently, the driver resets the vxlan port register only if overlay
 offload is enabled. But, the register is actually tied to hardware
 vxlan parsing, which is an independent feature and is always enabled
@@ -11,7 +13,6 @@
 when HW vxlan parsing is available.
 
 Fixes: 8a4efd17410c ("net/enic: add handlers to add/delete vxlan port number")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 ---
@@ -19,10 +20,10 @@
  1 file changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
-index 2652949a2..ea9eb2edf 100644
+index 406f92a80..098a18d63 100644
 --- a/drivers/net/enic/enic_main.c
 +++ b/drivers/net/enic/enic_main.c
-@@ -1715,6 +1715,13 @@ static int enic_dev_init(struct enic *enic)
+@@ -1716,6 +1716,13 @@ static int enic_dev_init(struct enic *enic)
  			PKT_TX_TUNNEL_MASK;
  		enic->overlay_offload = true;
 -		enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT;

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: fix VXLAN match' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (55 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: reset VXLAN port regardless of overlay offload' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix endianness in VLAN " Kevin Traynor
                   ` (4 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 1ed7874a2952ca605eb3449b383b27e5bf602802 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:49 -0800
Subject: [PATCH] net/enic: fix VXLAN match

[ upstream commit d7316eae1a8ab1d8dfb7ac7f2c8804f1a98f2144 ]

The filter API does not have flags for "match VXLAN". Explicitly set
the UDP destination port and mask in the L4 pattern. Otherwise, UDP
packets with non-VXLAN ports may be falsely reported as VXLAN.

1400 series VIC adapters have hardware VXLAN parsing. The L5 buffer on
the NIC starts with the inner Ethernet header, and the VXLAN header is
now in the L4 buffer following the UDP header. So the VXLAN spec/mask
needs to be in the L4 pattern, not L5. Older models still expect the
VXLAN spec/mask in the L5 pattern. Fix up the L4/L5 patterns
accordingly.

Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
---
 drivers/net/enic/enic_flow.c | 46 +++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index c60476c8c..4d4d4b315 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -886,4 +886,5 @@ enic_copy_item_vxlan_v2(const struct rte_flow_item *item,
 	const struct rte_flow_item_vxlan *mask = item->mask;
 	struct filter_generic_1 *gp = &enic_filter->u.generic_1;
+	struct udp_hdr *udp;
 
 	FLOW_TRACE();
@@ -892,4 +893,14 @@ enic_copy_item_vxlan_v2(const struct rte_flow_item *item,
 		return EINVAL;
 
+	/*
+	 * The NIC filter API has no flags for "match vxlan". Set UDP port to
+	 * avoid false positives.
+	 */
+	gp->mask_flags |= FILTER_GENERIC_1_UDP;
+	gp->val_flags |= FILTER_GENERIC_1_UDP;
+	udp = (struct udp_hdr *)gp->layer[FILTER_GENERIC_1_L4].mask;
+	udp->dst_port = 0xffff;
+	udp = (struct udp_hdr *)gp->layer[FILTER_GENERIC_1_L4].val;
+	udp->dst_port = RTE_BE16(4789);
 	/* Match all if no spec */
 	if (!spec)
@@ -939,4 +950,34 @@ item_stacking_valid(enum rte_flow_item_type prev_item,
 }
 
+/*
+ * Fix up the L5 layer.. HW vxlan parsing removes vxlan header from L5.
+ * Instead it is in L4 following the UDP header. Append the vxlan
+ * pattern to L4 (udp) and shift any inner packet pattern in L5.
+ */
+static void
+fixup_l5_layer(struct enic *enic, struct filter_generic_1 *gp,
+	       uint8_t inner_ofst)
+{
+	uint8_t layer[FILTER_GENERIC_1_KEY_LEN];
+	uint8_t inner;
+	uint8_t vxlan;
+
+	if (!(inner_ofst > 0 && enic->vxlan))
+		return;
+	FLOW_TRACE();
+	vxlan = sizeof(struct vxlan_hdr);
+	memcpy(gp->layer[FILTER_GENERIC_1_L4].mask + sizeof(struct udp_hdr),
+	       gp->layer[FILTER_GENERIC_1_L5].mask, vxlan);
+	memcpy(gp->layer[FILTER_GENERIC_1_L4].val + sizeof(struct udp_hdr),
+	       gp->layer[FILTER_GENERIC_1_L5].val, vxlan);
+	inner = inner_ofst - vxlan;
+	memset(layer, 0, sizeof(layer));
+	memcpy(layer, gp->layer[FILTER_GENERIC_1_L5].mask + vxlan, inner);
+	memcpy(gp->layer[FILTER_GENERIC_1_L5].mask, layer, sizeof(layer));
+	memset(layer, 0, sizeof(layer));
+	memcpy(layer, gp->layer[FILTER_GENERIC_1_L5].val + vxlan, inner);
+	memcpy(gp->layer[FILTER_GENERIC_1_L5].val, layer, sizeof(layer));
+}
+
 /**
  * Build the intenal enic filter structure from the provided pattern. The
@@ -953,4 +994,5 @@ static int
 enic_copy_filter(const struct rte_flow_item pattern[],
 		 const struct enic_filter_cap *cap,
+		 struct enic *enic,
 		 struct filter_v2 *enic_filter,
 		 struct rte_flow_error *error)
@@ -994,4 +1036,6 @@ enic_copy_filter(const struct rte_flow_item pattern[],
 		is_first_item = 0;
 	}
+	fixup_l5_layer(enic, &enic_filter->u.generic_1, inner_ofst);
+
 	return 0;
 
@@ -1436,5 +1480,5 @@ enic_flow_parse(struct rte_eth_dev *dev,
 	}
 	enic_filter->type = enic->flow_filter_mode;
-	ret = enic_copy_filter(pattern, enic_filter_cap,
+	ret = enic_copy_filter(pattern, enic_filter_cap, enic,
 				       enic_filter, error);
 	return ret;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.310638188 +0100
+++ 0058-net-enic-fix-VXLAN-match.patch	2019-04-10 14:06:08.016290764 +0100
@@ -1,8 +1,10 @@
-From d7316eae1a8ab1d8dfb7ac7f2c8804f1a98f2144 Mon Sep 17 00:00:00 2001
+From 1ed7874a2952ca605eb3449b383b27e5bf602802 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:49 -0800
 Subject: [PATCH] net/enic: fix VXLAN match
 
+[ upstream commit d7316eae1a8ab1d8dfb7ac7f2c8804f1a98f2144 ]
+
 The filter API does not have flags for "match VXLAN". Explicitly set
 the UDP destination port and mask in the L4 pattern. Otherwise, UDP
 packets with non-VXLAN ports may be falsely reported as VXLAN.
@@ -15,7 +17,6 @@
 accordingly.
 
 Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 ---
@@ -23,16 +24,16 @@
  1 file changed, 45 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
-index ffc6ce1da..da43b31dc 100644
+index c60476c8c..4d4d4b315 100644
 --- a/drivers/net/enic/enic_flow.c
 +++ b/drivers/net/enic/enic_flow.c
-@@ -831,4 +831,5 @@ enic_copy_item_vxlan_v2(struct copy_item_args *arg)
+@@ -886,4 +886,5 @@ enic_copy_item_vxlan_v2(const struct rte_flow_item *item,
  	const struct rte_flow_item_vxlan *mask = item->mask;
  	struct filter_generic_1 *gp = &enic_filter->u.generic_1;
 +	struct udp_hdr *udp;
  
  	FLOW_TRACE();
-@@ -837,4 +838,14 @@ enic_copy_item_vxlan_v2(struct copy_item_args *arg)
+@@ -892,4 +893,14 @@ enic_copy_item_vxlan_v2(const struct rte_flow_item *item,
  		return EINVAL;
  
 +	/*
@@ -47,7 +48,7 @@
 +	udp->dst_port = RTE_BE16(4789);
  	/* Match all if no spec */
  	if (!spec)
-@@ -932,4 +943,34 @@ item_stacking_valid(enum rte_flow_item_type prev_item,
+@@ -939,4 +950,34 @@ item_stacking_valid(enum rte_flow_item_type prev_item,
  }
  
 +/*
@@ -82,20 +83,20 @@
 +
  /**
   * Build the intenal enic filter structure from the provided pattern. The
-@@ -946,4 +987,5 @@ static int
+@@ -953,4 +994,5 @@ static int
  enic_copy_filter(const struct rte_flow_item pattern[],
  		 const struct enic_filter_cap *cap,
 +		 struct enic *enic,
  		 struct filter_v2 *enic_filter,
  		 struct rte_flow_error *error)
-@@ -990,4 +1032,6 @@ enic_copy_filter(const struct rte_flow_item pattern[],
+@@ -994,4 +1036,6 @@ enic_copy_filter(const struct rte_flow_item pattern[],
  		is_first_item = 0;
  	}
 +	fixup_l5_layer(enic, &enic_filter->u.generic_1, inner_ofst);
 +
  	return 0;
  
-@@ -1482,5 +1526,5 @@ enic_flow_parse(struct rte_eth_dev *dev,
+@@ -1436,5 +1480,5 @@ enic_flow_parse(struct rte_eth_dev *dev,
  	}
  	enic_filter->type = enic->flow_filter_mode;
 -	ret = enic_copy_filter(pattern, enic_filter_cap,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/enic: fix endianness in VLAN match' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (56 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix VXLAN match' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'doc: fix tag for inner RSS feature' " Kevin Traynor
                   ` (3 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 09b076a2010d458f8b4f020d3054acab6f5ee7dc Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Sat, 2 Mar 2019 02:42:50 -0800
Subject: [PATCH] net/enic: fix endianness in VLAN match

[ upstream commit 593f17668f5ba3445bdedaa0edc5d308ca43e061 ]

The VLAN fields in the NIC filter use little endian. The VLAN item is
in big endian, so swap bytes.

Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
---
 doc/guides/nics/enic.rst     | 10 ++++++++--
 drivers/net/enic/enic_flow.c | 12 ++++++++----
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
index e456e6c2d..3b45b3b3f 100644
--- a/doc/guides/nics/enic.rst
+++ b/doc/guides/nics/enic.rst
@@ -248,5 +248,5 @@ Generic Flow API is supported. The baseline support is:
 
   - Attributes: ingress
-  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp
+  - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, inner eth, vlan, ipv4, ipv6, udp, tcp
   - Actions: queue and void
   - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported
@@ -256,5 +256,5 @@ Generic Flow API is supported. The baseline support is:
 
   - Attributes: ingress
-  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp
+  - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, inner eth, vlan, ipv4, ipv6, udp, tcp
   - Actions: queue, mark, drop, flag and void
   - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported
@@ -267,4 +267,10 @@ Generic Flow API is supported. The baseline support is:
   - Action: count
 
+The VIC performs packet matching after applying VLAN strip. If VLAN
+stripping is enabled, EtherType in the ETH item corresponds to the
+stripped VLAN header's EtherType. Stripping does not affect the VLAN
+item. TCI and EtherType in the VLAN item are matched against those in
+the (stripped) VLAN header whether stripping is enabled or disabled.
+
 More features may be added in future firmware and new versions of the VIC.
 Please refer to the release notes.
diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index 4d4d4b315..30ea42e15 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -587,10 +587,14 @@ enic_copy_item_vlan_v2(const struct rte_flow_item *item,
 		if (eth_mask->ether_type)
 			return ENOTSUP;
+		/*
+		 * When packet matching, the VIC always compares vlan-stripped
+		 * L2, regardless of vlan stripping settings. So, the inner type
+		 * from vlan becomes the ether type of the eth header.
+		 */
 		eth_mask->ether_type = mask->inner_type;
 		eth_val->ether_type = spec->inner_type;
-
-		/* Outer header. Use the vlan mask/val fields */
-		gp->mask_vlan = mask->tci;
-		gp->val_vlan = spec->tci;
+		/* For TCI, use the vlan mask/val fields (little endian). */
+		gp->mask_vlan = rte_be_to_cpu_16(mask->tci);
+		gp->val_vlan = rte_be_to_cpu_16(spec->tci);
 	} else {
 		/* Inner header. Mask/Val start at *inner_ofst into L5 */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.400071277 +0100
+++ 0059-net-enic-fix-endianness-in-VLAN-match.patch	2019-04-10 14:06:08.020290672 +0100
@@ -1,13 +1,14 @@
-From 593f17668f5ba3445bdedaa0edc5d308ca43e061 Mon Sep 17 00:00:00 2001
+From 09b076a2010d458f8b4f020d3054acab6f5ee7dc Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Sat, 2 Mar 2019 02:42:50 -0800
 Subject: [PATCH] net/enic: fix endianness in VLAN match
 
+[ upstream commit 593f17668f5ba3445bdedaa0edc5d308ca43e061 ]
+
 The VLAN fields in the NIC filter use little endian. The VLAN item is
 in big endian, so swap bytes.
 
 Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 ---
@@ -16,7 +17,7 @@
  2 files changed, 16 insertions(+), 6 deletions(-)
 
 diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
-index c1415dc0d..d4241ef45 100644
+index e456e6c2d..3b45b3b3f 100644
 --- a/doc/guides/nics/enic.rst
 +++ b/doc/guides/nics/enic.rst
 @@ -248,5 +248,5 @@ Generic Flow API is supported. The baseline support is:
@@ -29,9 +30,9 @@
 @@ -256,5 +256,5 @@ Generic Flow API is supported. The baseline support is:
  
    - Attributes: ingress
--  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, raw, inner eth, ipv4, ipv6, udp, tcp
-+  - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, raw, inner eth, vlan, ipv4, ipv6, udp, tcp
-   - Actions: queue, mark, drop, flag, rss, passthru, and void
+-  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp
++  - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, inner eth, vlan, ipv4, ipv6, udp, tcp
+   - Actions: queue, mark, drop, flag and void
    - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported
 @@ -267,4 +267,10 @@ Generic Flow API is supported. The baseline support is:
    - Action: count
@@ -45,10 +46,10 @@
  More features may be added in future firmware and new versions of the VIC.
  Please refer to the release notes.
 diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
-index da43b31dc..b3172e7be 100644
+index 4d4d4b315..30ea42e15 100644
 --- a/drivers/net/enic/enic_flow.c
 +++ b/drivers/net/enic/enic_flow.c
-@@ -580,10 +580,14 @@ enic_copy_item_vlan_v2(struct copy_item_args *arg)
+@@ -587,10 +587,14 @@ enic_copy_item_vlan_v2(const struct rte_flow_item *item,
  		if (eth_mask->ether_type)
  			return ENOTSUP;
 +		/*

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'doc: fix tag for inner RSS feature' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (57 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix endianness in VLAN " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix flow priorities probing error path' " Kevin Traynor
                   ` (2 subsequent siblings)
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 1427033953d8c6d39539b9837537511543985f86 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Fri, 1 Mar 2019 13:10:10 +0200
Subject: [PATCH] doc: fix tag for inner RSS feature

[ upstream commit 1b01d0589dda1834ec6599a9c4fe9aa20f7360ad ]

This patch fixes a wrong tag in guides/nics/features.rst.
The features tags should be, according to the
"Features Overview" section in this doc, one of the following:
"uses", "implements", "provides", or "related".
Hence in Inner RSS section, it should be "uses"
instead of "users".

Fixes: d0a87d9aa8de ("doc: update mlx5 guide on tunnel offloading")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/guides/nics/features.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index d3f904839..c5bf32222 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -286,5 +286,5 @@ Inner RSS
 Supports RX RSS hashing on Inner headers.
 
-* **[users]    rte_flow_action_rss**: ``level``.
+* **[uses]    rte_flow_action_rss**: ``level``.
 * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_RSS_HASH``, ``mbuf.rss``.
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.469904898 +0100
+++ 0060-doc-fix-tag-for-inner-RSS-feature.patch	2019-04-10 14:06:08.021290649 +0100
@@ -1,8 +1,10 @@
-From 1b01d0589dda1834ec6599a9c4fe9aa20f7360ad Mon Sep 17 00:00:00 2001
+From 1427033953d8c6d39539b9837537511543985f86 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Fri, 1 Mar 2019 13:10:10 +0200
 Subject: [PATCH] doc: fix tag for inner RSS feature
 
+[ upstream commit 1b01d0589dda1834ec6599a9c4fe9aa20f7360ad ]
+
 This patch fixes a wrong tag in guides/nics/features.rst.
 The features tags should be, according to the
 "Features Overview" section in this doc, one of the following:
@@ -11,7 +13,6 @@
 instead of "users".
 
 Fixes: d0a87d9aa8de ("doc: update mlx5 guide on tunnel offloading")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/mlx5: fix flow priorities probing error path' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (58 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'doc: fix tag for inner RSS feature' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix hex dump of error completion' " Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix sync when handling Tx completions' " Kevin Traynor
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Viacheslav Ovsiienko; +Cc: Shahaf Shuler, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From dc25766efa7158d4e0611821f5a4ae9dc7646d18 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Date: Thu, 21 Feb 2019 09:02:16 +0000
Subject: [PATCH] net/mlx5: fix flow priorities probing error path

[ upstream commit 4fb27c1dfe054972bec62fdeb6fc91680ccb3f3c ]

The mlx5 PMD probes the Verbs flow priorities supported with
ibv_create_flow() function. If rdma-core or kernel fails for
some reason, the returned error causes the drop queue is not
destroyed, and pd is locked by not freed resource.

Also the mlx5_flow_discover_priorities() returned negative value
as error, and this code was reported "as is", without sign
changing (eventually causing assert(err > 0)).

Fixes: 2815702baea7 ("net/mlx5: replace verbs priorities by flow")

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5.c      | 4 +++-
 drivers/net/mlx5/mlx5_flow.c | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 40b32492b..80a27da89 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1234,6 +1234,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
 	/* Supported Verbs flow priority number detection. */
 	err = mlx5_flow_discover_priorities(eth_dev);
-	if (err < 0)
+	if (err < 0) {
+		err = -err;
 		goto error;
+	}
 	priv->config.flow_prio = err;
 	/*
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 39ef2524c..5bf7d7ba4 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -351,4 +351,5 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev)
 		priority = vprio[i];
 	}
+	mlx5_hrxq_drop_release(dev);
 	switch (priority) {
 	case 8:
@@ -362,8 +363,7 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev)
 		DRV_LOG(ERR,
 			"port %u verbs maximum priority: %d expected 8/16",
-			dev->data->port_id, vprio[i]);
+			dev->data->port_id, priority);
 		return -rte_errno;
 	}
-	mlx5_hrxq_drop_release(dev);
 	DRV_LOG(INFO, "port %u flow maximum priority: %d",
 		dev->data->port_id, priority);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.546553703 +0100
+++ 0061-net-mlx5-fix-flow-priorities-probing-error-path.patch	2019-04-10 14:06:08.028290489 +0100
@@ -1,8 +1,10 @@
-From 4fb27c1dfe054972bec62fdeb6fc91680ccb3f3c Mon Sep 17 00:00:00 2001
+From dc25766efa7158d4e0611821f5a4ae9dc7646d18 Mon Sep 17 00:00:00 2001
 From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 Date: Thu, 21 Feb 2019 09:02:16 +0000
 Subject: [PATCH] net/mlx5: fix flow priorities probing error path
 
+[ upstream commit 4fb27c1dfe054972bec62fdeb6fc91680ccb3f3c ]
+
 The mlx5 PMD probes the Verbs flow priorities supported with
 ibv_create_flow() function. If rdma-core or kernel fails for
 some reason, the returned error causes the drop queue is not
@@ -13,7 +15,6 @@
 changing (eventually causing assert(err > 0)).
 
 Fixes: 2815702baea7 ("net/mlx5: replace verbs priorities by flow")
-Cc: stable@dpdk.org
 
 Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 Acked-by: Shahaf Shuler <shahafs@mellanox.com>
@@ -23,10 +24,10 @@
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
-index 9706e351a..740c5e273 100644
+index 40b32492b..80a27da89 100644
 --- a/drivers/net/mlx5/mlx5.c
 +++ b/drivers/net/mlx5/mlx5.c
-@@ -1244,6 +1244,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -1234,6 +1234,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
  	/* Supported Verbs flow priority number detection. */
  	err = mlx5_flow_discover_priorities(eth_dev);
 -	if (err < 0)
@@ -37,7 +38,7 @@
  	priv->config.flow_prio = err;
  	/*
 diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
-index 9314e3a86..dea38e260 100644
+index 39ef2524c..5bf7d7ba4 100644
 --- a/drivers/net/mlx5/mlx5_flow.c
 +++ b/drivers/net/mlx5/mlx5_flow.c
 @@ -351,4 +351,5 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev)

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/mlx5: fix hex dump of error completion' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (59 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix flow priorities probing error path' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix sync when handling Tx completions' " Kevin Traynor
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Dekel Peled; +Cc: Shahaf Shuler, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 829c97a85f4d4a217df5aa4a8fff5a0d4aeac9ec Mon Sep 17 00:00:00 2001
From: Dekel Peled <dekelp@mellanox.com>
Date: Thu, 28 Feb 2019 17:18:45 +0200
Subject: [PATCH] net/mlx5: fix hex dump of error completion

[ upstream commit 38f0a160b5fe1c9e8451dea2cab9a78ebfe86675 ]

struct mlx5_cqe is defined in MLX5 PMD code (mlx5_prm.h).
It includes 64 bytes padding in case of (RTE_CACHE_LINE_SIZE == 128).

struct mlx5_err_cqe is defined in kernel, and doesn't include padding.

When running in debug mode, in case an error CQE is detected
it is printed using rte_hexdump().

The size of data to print should be sizeof(*cqe) instead of
sizeof(*err_cqe), to handle the case of (RTE_CACHE_LINE_SIZE == 128),
and print the full data in any case.

Fixes: c7714992092f ("net/mlx5: extend debug logs verbosity")

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index 6fd2285e0..e58baaa35 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -492,5 +492,5 @@ check_cqe(volatile struct mlx5_cqe *cqe,
 			rte_hexdump(stderr, "MLX5 Error CQE:",
 				    (const void *)((uintptr_t)err_cqe),
-				    sizeof(*err_cqe));
+				    sizeof(*cqe));
 		}
 		return 1;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.618878551 +0100
+++ 0062-net-mlx5-fix-hex-dump-of-error-completion.patch	2019-04-10 14:06:08.031290420 +0100
@@ -1,8 +1,10 @@
-From 38f0a160b5fe1c9e8451dea2cab9a78ebfe86675 Mon Sep 17 00:00:00 2001
+From 829c97a85f4d4a217df5aa4a8fff5a0d4aeac9ec Mon Sep 17 00:00:00 2001
 From: Dekel Peled <dekelp@mellanox.com>
 Date: Thu, 28 Feb 2019 17:18:45 +0200
 Subject: [PATCH] net/mlx5: fix hex dump of error completion
 
+[ upstream commit 38f0a160b5fe1c9e8451dea2cab9a78ebfe86675 ]
+
 struct mlx5_cqe is defined in MLX5 PMD code (mlx5_prm.h).
 It includes 64 bytes padding in case of (RTE_CACHE_LINE_SIZE == 128).
 
@@ -16,7 +18,6 @@
 and print the full data in any case.
 
 Fixes: c7714992092f ("net/mlx5: extend debug logs verbosity")
-Cc: stable@dpdk.org
 
 Signed-off-by: Dekel Peled <dekelp@mellanox.com>
 Acked-by: Shahaf Shuler <shahafs@mellanox.com>
@@ -25,7 +26,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
-index be464e870..c0e1adf14 100644
+index 6fd2285e0..e58baaa35 100644
 --- a/drivers/net/mlx5/mlx5_rxtx.h
 +++ b/drivers/net/mlx5/mlx5_rxtx.h
 @@ -492,5 +492,5 @@ check_cqe(volatile struct mlx5_cqe *cqe,

^ permalink raw reply	[flat|nested] 63+ messages in thread

* [dpdk-stable] patch 'net/mlx5: fix sync when handling Tx completions' has been queued to LTS release 18.11.2
  2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
                   ` (60 preceding siblings ...)
  2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix hex dump of error completion' " Kevin Traynor
@ 2019-04-10 16:44 ` Kevin Traynor
  61 siblings, 0 replies; 63+ messages in thread
From: Kevin Traynor @ 2019-04-10 16:44 UTC (permalink / raw)
  To: Dekel Peled; +Cc: Shahaf Shuler, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/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.

Thanks.

Kevin Traynor

---
From 92dcc157c4d29a23ee31c646f7597eaea83200e8 Mon Sep 17 00:00:00 2001
From: Dekel Peled <dekelp@mellanox.com>
Date: Thu, 28 Feb 2019 17:20:30 +0200
Subject: [PATCH] net/mlx5: fix sync when handling Tx completions

[ upstream commit fd350d3c9a13b5ebcb41741870c3f09b6920033f ]

Function mlx5_tx_complete() reads completion entry information
from Tx queue.
For some processors not having strongly-ordered memory model,
there has to be a memory barrier between reading the entry index
and the entry fields, in order to guarantee data is valid.

Fixes: 54d3fe948dba ("net/mlx5: poll completion queue once per a call")

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index e58baaa35..820675b82 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -569,4 +569,5 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 #endif /* NDEBUG */
 	++cq_ci;
+	rte_cio_rmb();
 	txq->wqe_pi = rte_be_to_cpu_16(cqe->wqe_counter);
 	ctrl = (volatile struct mlx5_wqe_ctrl *)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:12.688048845 +0100
+++ 0063-net-mlx5-fix-sync-when-handling-Tx-completions.patch	2019-04-10 14:06:08.033290374 +0100
@@ -1,8 +1,10 @@
-From fd350d3c9a13b5ebcb41741870c3f09b6920033f Mon Sep 17 00:00:00 2001
+From 92dcc157c4d29a23ee31c646f7597eaea83200e8 Mon Sep 17 00:00:00 2001
 From: Dekel Peled <dekelp@mellanox.com>
 Date: Thu, 28 Feb 2019 17:20:30 +0200
 Subject: [PATCH] net/mlx5: fix sync when handling Tx completions
 
+[ upstream commit fd350d3c9a13b5ebcb41741870c3f09b6920033f ]
+
 Function mlx5_tx_complete() reads completion entry information
 from Tx queue.
 For some processors not having strongly-ordered memory model,
@@ -10,7 +12,6 @@
 and the entry fields, in order to guarantee data is valid.
 
 Fixes: 54d3fe948dba ("net/mlx5: poll completion queue once per a call")
-Cc: stable@dpdk.org
 
 Signed-off-by: Dekel Peled <dekelp@mellanox.com>
 Acked-by: Shahaf Shuler <shahafs@mellanox.com>
@@ -19,7 +20,7 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
-index c0e1adf14..53115dde3 100644
+index e58baaa35..820675b82 100644
 --- a/drivers/net/mlx5/mlx5_rxtx.h
 +++ b/drivers/net/mlx5/mlx5_rxtx.h
 @@ -569,4 +569,5 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2019-04-10 16:46 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-10 16:43 [dpdk-stable] patch 'net/pcap: fix memory leak' has been queued to LTS release 18.11.2 Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix values of descriptor limits' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: log port ID as 16-bit unsigned integer on panic' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: remove control path logging from Rx queue count' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/sfc: fix logging from secondary process' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: set offload flag for jumbo frames' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: remove forward declaration' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'mbuf: fix a typo' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx5: fix Tx metadata for multi-segment packet' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix Tx in 802.3ad mode' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bnxt: support IOVA VA " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/avf: fix admin queue interrupt for ICE' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix slave Tx burst for mode 4' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: fix link status' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix a minor typo in testpmd guide' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'ethdev: remove unused variable' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/qede: fix Tx packet prepare for tunnel packets' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/bonding: avoid warning for invalid port' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'test/pmd_perf: fix the way to drain the " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/virtio: fix in-order Tx path for split ring' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix sprintf with snprintf' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix build of shared library with libbsd' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: add libelf dependency to build test' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: test build of zlib PMD' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix test of some build options' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'test/compress: fix missing header include' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ip_pipeline: disable build when no epoll' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'examples/vhost_crypto: fix dependency on vhost library' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix build test on FreeBSD' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/mlx: prefix private structure' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/tap: fix multi-process request' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'mempool/dpaa2: fix continuous print on empty pool' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: restore mbuf first when freeing zmbuf' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for zero copy mbuf' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'vhost: fix potential use-after-free for memory region' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'app/pdump: remove only created vdevs' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'crypto/virtio: use local log type' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'net/softnic: fix possible buffer overflow' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'drivers/net: fix shifting 32-bit signed variable 31 times' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'devtools: fix result of svg include check' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'doc: remove reference to rte.doc.mk in programmers guide' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'examples/ethtool: fix two typos' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix link in Linux getting started guide' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'doc: fix PCI whitelist typo in prog " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'mk: fix AVX512 disabled warning on non x86' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix debug message on probing' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'bus/vdev: fix hotplug twice' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix check when retrieving current CPU affinity' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'eal: fix control threads pinnning' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'eal: restrict control threads to startup CPU affinity' " Kevin Traynor
2019-04-10 16:43 ` [dpdk-stable] patch 'eal: remove dead code in core list parsing' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'eal: fix core list validation with disabled cores' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix flow director SCTP matching' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix SCTP match for flow API' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: allow flow mark ID 0' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: check for unsupported flow item types' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: reset VXLAN port regardless of overlay offload' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix VXLAN match' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/enic: fix endianness in VLAN " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'doc: fix tag for inner RSS feature' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix flow priorities probing error path' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix hex dump of error completion' " Kevin Traynor
2019-04-10 16:44 ` [dpdk-stable] patch 'net/mlx5: fix sync when handling Tx completions' " Kevin Traynor

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).