patches for DPDK stable branches
 help / color / Atom feed
* [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6
@ 2019-11-22 14:40 Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' " Kevin Traynor
                   ` (43 more replies)
  0 siblings, 44 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: David Marchand; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 349544cdf8e8c4c076b123387b2ac7bdf37861af Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 10 Apr 2019 14:53:46 +0200
Subject: [PATCH] net/bonding: fix out of bound access in LACP mode

[ upstream commit 8ff0003c19412b04f70bfbe59fa52822417f86c3 ]

We'd better consolidate the fast queue and the normal tx burst functions
under a common inline wrapper for maintenance.

But looking closer at the bufs_slave_port_idxs[] mapping array in those
tx burst functions, its size is invalid since up to nb_bufs are handled
here.
A previous patch [1] fixed this issue for balance tx burst function
without mentioning it.

802.3ad and balance modes are functionally equivalent on transmit.
The only difference is on the slave id distribution.
Add an additional inline wrapper to consolidate even more and fix this
issue.

[1]: https://git.dpdk.org/dpdk/commit/?id=c5224f623431

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

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 219 ++++++-------------------
 1 file changed, 54 insertions(+), 165 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 64518200e..5fd04db17 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -3,4 +3,5 @@
  */
 #include <stdlib.h>
+#include <stdbool.h>
 #include <netinet/in.h>
 
@@ -291,95 +292,4 @@ bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
 }
 
-static uint16_t
-bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
-		uint16_t nb_bufs)
-{
-	struct bond_tx_queue *bd_tx_q = (struct bond_tx_queue *)queue;
-	struct bond_dev_private *internals = bd_tx_q->dev_private;
-
-	uint16_t slave_port_ids[RTE_MAX_ETHPORTS];
-	uint16_t slave_count;
-
-	uint16_t dist_slave_port_ids[RTE_MAX_ETHPORTS];
-	uint16_t dist_slave_count;
-
-	/* 2-D array to sort mbufs for transmission on each slave into */
-	struct rte_mbuf *slave_bufs[RTE_MAX_ETHPORTS][nb_bufs];
-	/* Number of mbufs for transmission on each slave */
-	uint16_t slave_nb_bufs[RTE_MAX_ETHPORTS] = { 0 };
-	/* Mapping array generated by hash function to map mbufs to slaves */
-	uint16_t bufs_slave_port_idxs[RTE_MAX_ETHPORTS] = { 0 };
-
-	uint16_t slave_tx_count;
-	uint16_t total_tx_count = 0, total_tx_fail_count = 0;
-
-	uint16_t i;
-
-	if (unlikely(nb_bufs == 0))
-		return 0;
-
-	/* Copy slave list to protect against slave up/down changes during tx
-	 * bursting */
-	slave_count = internals->active_slave_count;
-	if (unlikely(slave_count < 1))
-		return 0;
-
-	memcpy(slave_port_ids, internals->active_slaves,
-			sizeof(slave_port_ids[0]) * slave_count);
-
-
-	dist_slave_count = 0;
-	for (i = 0; i < slave_count; i++) {
-		struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]];
-
-		if (ACTOR_STATE(port, DISTRIBUTING))
-			dist_slave_port_ids[dist_slave_count++] =
-					slave_port_ids[i];
-	}
-
-	if (unlikely(dist_slave_count < 1))
-		return 0;
-
-	/*
-	 * Populate slaves mbuf with the packets which are to be sent on it
-	 * selecting output slave using hash based on xmit policy
-	 */
-	internals->burst_xmit_hash(bufs, nb_bufs, dist_slave_count,
-			bufs_slave_port_idxs);
-
-	for (i = 0; i < nb_bufs; i++) {
-		/* Populate slave mbuf arrays with mbufs for that slave. */
-		uint16_t slave_idx = bufs_slave_port_idxs[i];
-
-		slave_bufs[slave_idx][slave_nb_bufs[slave_idx]++] = bufs[i];
-	}
-
-
-	/* Send packet burst on each slave device */
-	for (i = 0; i < dist_slave_count; i++) {
-		if (slave_nb_bufs[i] == 0)
-			continue;
-
-		slave_tx_count = rte_eth_tx_burst(dist_slave_port_ids[i],
-				bd_tx_q->queue_id, slave_bufs[i],
-				slave_nb_bufs[i]);
-
-		total_tx_count += slave_tx_count;
-
-		/* If tx burst fails move packets to end of bufs */
-		if (unlikely(slave_tx_count < slave_nb_bufs[i])) {
-			int slave_tx_fail_count = slave_nb_bufs[i] -
-					slave_tx_count;
-			total_tx_fail_count += slave_tx_fail_count;
-			memcpy(&bufs[nb_bufs - total_tx_fail_count],
-			       &slave_bufs[i][slave_tx_count],
-			       slave_tx_fail_count * sizeof(bufs[0]));
-		}
-	}
-
-	return total_tx_count;
-}
-
-
 static uint16_t
 bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
@@ -1197,14 +1107,11 @@ bond_ethdev_tx_burst_alb(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 }
 
-static uint16_t
-bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
-		uint16_t nb_bufs)
+static inline uint16_t
+tx_burst_balance(void *queue, struct rte_mbuf **bufs, uint16_t nb_bufs,
+		 uint16_t *slave_port_ids, uint16_t slave_count)
 {
 	struct bond_tx_queue *bd_tx_q = (struct bond_tx_queue *)queue;
 	struct bond_dev_private *internals = bd_tx_q->dev_private;
 
-	uint16_t slave_port_ids[RTE_MAX_ETHPORTS];
-	uint16_t slave_count;
-
 	/* Array to sort mbufs for transmission on each slave into */
 	struct rte_mbuf *slave_bufs[RTE_MAX_ETHPORTS][nb_bufs];
@@ -1219,16 +1126,4 @@ bond_ethdev_tx_burst_balance(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 */
-	slave_count = internals->active_slave_count;
-	if (unlikely(slave_count < 1))
-		return 0;
-
-	memcpy(slave_port_ids, internals->active_slaves,
-			sizeof(slave_port_ids[0]) * slave_count);
-
 	/*
 	 * Populate slaves mbuf with the packets which are to be sent on it
@@ -1271,5 +1166,5 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
 
 static uint16_t
-bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
 		uint16_t nb_bufs)
 {
@@ -1280,16 +1175,34 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	uint16_t slave_count;
 
+	if (unlikely(nb_bufs == 0))
+		return 0;
+
+	/* Copy slave list to protect against slave up/down changes during tx
+	 * bursting
+	 */
+	slave_count = internals->active_slave_count;
+	if (unlikely(slave_count < 1))
+		return 0;
+
+	memcpy(slave_port_ids, internals->active_slaves,
+			sizeof(slave_port_ids[0]) * slave_count);
+	return tx_burst_balance(queue, bufs, nb_bufs, slave_port_ids,
+				slave_count);
+}
+
+static inline uint16_t
+tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_bufs,
+		bool dedicated_txq)
+{
+	struct bond_tx_queue *bd_tx_q = (struct bond_tx_queue *)queue;
+	struct bond_dev_private *internals = bd_tx_q->dev_private;
+
+	uint16_t slave_port_ids[RTE_MAX_ETHPORTS];
+	uint16_t slave_count;
+
 	uint16_t dist_slave_port_ids[RTE_MAX_ETHPORTS];
 	uint16_t dist_slave_count;
 
-	/* 2-D array to sort mbufs for transmission on each slave into */
-	struct rte_mbuf *slave_bufs[RTE_MAX_ETHPORTS][nb_bufs];
-	/* Number of mbufs for transmission on each slave */
-	uint16_t slave_nb_bufs[RTE_MAX_ETHPORTS] = { 0 };
-	/* Mapping array generated by hash function to map mbufs to slaves */
-	uint16_t bufs_slave_port_idxs[RTE_MAX_ETHPORTS] = { 0 };
-
 	uint16_t slave_tx_count;
-	uint16_t total_tx_count = 0, total_tx_fail_count = 0;
 
 	uint16_t i;
@@ -1304,4 +1217,7 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 			sizeof(slave_port_ids[0]) * slave_count);
 
+	if (dedicated_txq)
+		goto skip_tx_ring;
+
 	/* Check for LACP control packets and send if available */
 	for (i = 0; i < slave_count; i++) {
@@ -1325,4 +1241,5 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	}
 
+skip_tx_ring:
 	if (unlikely(nb_bufs == 0))
 		return 0;
@@ -1337,51 +1254,23 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	}
 
-	if (likely(dist_slave_count > 0)) {
-
-		/*
-		 * Populate slaves mbuf with the packets which are to be sent
-		 * on it, selecting output slave using hash based on xmit policy
-		 */
-		internals->burst_xmit_hash(bufs, nb_bufs, dist_slave_count,
-				bufs_slave_port_idxs);
-
-		for (i = 0; i < nb_bufs; i++) {
-			/*
-			 * Populate slave mbuf arrays with mbufs for that
-			 * slave
-			 */
-			uint16_t slave_idx = bufs_slave_port_idxs[i];
-
-			slave_bufs[slave_idx][slave_nb_bufs[slave_idx]++] =
-					bufs[i];
-		}
-
-
-		/* Send packet burst on each slave device */
-		for (i = 0; i < dist_slave_count; i++) {
-			if (slave_nb_bufs[i] == 0)
-				continue;
-
-			slave_tx_count = rte_eth_tx_burst(
-					dist_slave_port_ids[i],
-					bd_tx_q->queue_id, slave_bufs[i],
-					slave_nb_bufs[i]);
-
-			total_tx_count += slave_tx_count;
-
-			/* If tx burst fails move packets to end of bufs */
-			if (unlikely(slave_tx_count < slave_nb_bufs[i])) {
-				int slave_tx_fail_count = slave_nb_bufs[i] -
-						slave_tx_count;
-				total_tx_fail_count += slave_tx_fail_count;
-
-				memcpy(&bufs[nb_bufs - total_tx_fail_count],
-				       &slave_bufs[i][slave_tx_count],
-				       slave_tx_fail_count * sizeof(bufs[0]));
-			}
-		}
-	}
-
-	return total_tx_count;
+	if (unlikely(dist_slave_count < 1))
+		return 0;
+
+	return tx_burst_balance(queue, bufs, nb_bufs, dist_slave_port_ids,
+				dist_slave_count);
+}
+
+static uint16_t
+bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+		uint16_t nb_bufs)
+{
+	return tx_burst_8023ad(queue, bufs, nb_bufs, false);
+}
+
+static uint16_t
+bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
+		uint16_t nb_bufs)
+{
+	return tx_burst_8023ad(queue, bufs, nb_bufs, true);
 }
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.274092073 +0000
+++ 0001-net-bonding-fix-out-of-bound-access-in-LACP-mode.patch	2019-11-22 14:36:55.105151252 +0000
@@ -1 +1 @@
-From 8ff0003c19412b04f70bfbe59fa52822417f86c3 Mon Sep 17 00:00:00 2001
+From 349544cdf8e8c4c076b123387b2ac7bdf37861af Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8ff0003c19412b04f70bfbe59fa52822417f86c3 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index 6a6ed890a..6abd9581c 100644
+index 64518200e..5fd04db17 100644
@@ -41 +42 @@
-@@ -293,95 +294,4 @@ bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
+@@ -291,95 +292,4 @@ bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
@@ -137 +138 @@
-@@ -1213,14 +1123,11 @@ bond_ethdev_tx_burst_alb(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+@@ -1197,14 +1107,11 @@ bond_ethdev_tx_burst_alb(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
@@ -155 +156 @@
-@@ -1235,16 +1142,4 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
+@@ -1219,16 +1126,4 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
@@ -172 +173 @@
-@@ -1287,5 +1182,5 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
+@@ -1271,5 +1166,5 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
@@ -179 +180 @@
-@@ -1296,16 +1191,34 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -1280,16 +1175,34 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
@@ -222 +223 @@
-@@ -1320,4 +1233,7 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -1304,4 +1217,7 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
@@ -230 +231 @@
-@@ -1341,4 +1257,5 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -1325,4 +1241,5 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
@@ -236 +237 @@
-@@ -1353,51 +1270,23 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -1337,51 +1254,23 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs,


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

* [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " Kevin Traynor
                   ` (42 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: David Marchand; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 33cd77ef2677973cd2cdfdacede1d1396b48e7c5 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 10 Apr 2019 14:53:47 +0200
Subject: [PATCH] net/bonding: fix LACP fast queue Rx handler

[ upstream commit 58729b54949598cc43d56e22ef813b620651bb6a ]

Fast queue Rx burst function is missing checks on promisc and the
slave collecting state.
Define an inline wrapper to have a common base.

Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 73 ++++++++++----------------
 1 file changed, 27 insertions(+), 46 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 5fd04db17..3f8d3ba87 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -253,46 +253,7 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
 }
 
-static uint16_t
-bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
-		uint16_t nb_pkts)
-{
-	struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
-	struct bond_dev_private *internals = bd_rx_q->dev_private;
-	uint16_t num_rx_total = 0;	/* Total number of received packets */
-	uint16_t slaves[RTE_MAX_ETHPORTS];
-	uint16_t slave_count;
-	uint16_t active_slave;
-	uint16_t i;
-
-	/* Copy slave list to protect against slave up/down changes during tx
-	 * bursting */
-	slave_count = internals->active_slave_count;
-	active_slave = internals->active_slave;
-	memcpy(slaves, internals->active_slaves,
-			sizeof(internals->active_slaves[0]) * slave_count);
-
-	for (i = 0; i < slave_count && nb_pkts; i++) {
-		uint16_t num_rx_slave;
-
-		/* Read packets from this slave */
-		num_rx_slave = rte_eth_rx_burst(slaves[active_slave],
-						bd_rx_q->queue_id,
-						bufs + num_rx_total, nb_pkts);
-		num_rx_total += num_rx_slave;
-		nb_pkts -= num_rx_slave;
-
-		if (++active_slave == slave_count)
-			active_slave = 0;
-	}
-
-	if (++internals->active_slave >= slave_count)
-		internals->active_slave = 0;
-
-	return num_rx_total;
-}
-
-static uint16_t
-bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
-		uint16_t nb_pkts)
+static inline uint16_t
+rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,
+		bool dedicated_rxq)
 {
 	/* Cast to structure, containing bonded device's port id and queue id */
@@ -354,8 +315,14 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 			subtype = ((struct slow_protocol_frame *)hdr)->slow_protocol.subtype;
 
-			/* Remove packet from array if it is slow packet or slave is not
-			 * in collecting state or bonding interface is not in promiscuous
-			 * mode and packet address does not match. */
-			if (unlikely(is_lacp_packets(hdr->ether_type, subtype, bufs[j]) ||
+			/* Remove packet from array if:
+			 * - it is slow packet but no dedicated rxq is present,
+			 * - slave is not in collecting state,
+			 * - bonding interface is not in promiscuous mode and
+			 *   packet is not multicast and address does not match,
+			 */
+			if (unlikely(
+				(!dedicated_rxq &&
+				 is_lacp_packets(hdr->ether_type, subtype,
+						 bufs[j])) ||
 				!collecting ||
 				(!promisc &&
@@ -389,4 +356,18 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 }
 
+static uint16_t
+bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+		uint16_t nb_pkts)
+{
+	return rx_burst_8023ad(queue, bufs, nb_pkts, false);
+}
+
+static uint16_t
+bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
+		uint16_t nb_pkts)
+{
+	return rx_burst_8023ad(queue, bufs, nb_pkts, true);
+}
+
 #if defined(RTE_LIBRTE_BOND_DEBUG_ALB) || defined(RTE_LIBRTE_BOND_DEBUG_ALB_L1)
 uint32_t burstnumberRX;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.327770946 +0000
+++ 0002-net-bonding-fix-LACP-fast-queue-Rx-handler.patch	2019-11-22 14:36:55.109151167 +0000
@@ -1 +1 @@
-From 58729b54949598cc43d56e22ef813b620651bb6a Mon Sep 17 00:00:00 2001
+From 33cd77ef2677973cd2cdfdacede1d1396b48e7c5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 58729b54949598cc43d56e22ef813b620651bb6a ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 6abd9581c..44af5ade1 100644
+index 5fd04db17..3f8d3ba87 100644
@@ -23 +24 @@
-@@ -255,46 +255,7 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
+@@ -253,46 +253,7 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
@@ -73 +74 @@
-@@ -357,8 +318,14 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -354,8 +315,14 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
@@ -92 +93 @@
-@@ -392,4 +359,18 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+@@ -389,4 +356,18 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,


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

* [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: fix VF runtime queues RSS config' " Kevin Traynor
                   ` (41 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: David Marchand; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 1707c309ae28077a9db58a52aee3e5a14100f9c6 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 10 Apr 2019 14:53:48 +0200
Subject: [PATCH] net/bonding: fix unicast packets filtering

[ upstream commit 0ec234460b9282c96033282a9679e88d2df5e58e ]

By default, the 802.3ad code enables promisc mode on all slaves.
To avoid all packets going to the application (unless the application
asked for promiscuous mode), all frames are supposed to be filtered in
the rx burst handler.

However the incriminated commit broke this because non pure ethernet
frames (basically any unicast Ether()/IP() packet) are not filtered
anymore.

Fixes: 71b7b37ec959 ("net/bonding: use ptype flags for LACP Rx filtering")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 3f8d3ba87..2fc19fbb1 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -302,11 +302,4 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,
 		/* Handle slow protocol packets. */
 		while (j < num_rx_total) {
-
-			/* If packet is not pure L2 and is known, skip it */
-			if ((bufs[j]->packet_type & ~RTE_PTYPE_L2_ETHER) != 0) {
-				j++;
-				continue;
-			}
-
 			if (j + 3 < num_rx_total)
 				rte_prefetch0(rte_pktmbuf_mtod(bufs[j + 3], void *));
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.380431474 +0000
+++ 0003-net-bonding-fix-unicast-packets-filtering.patch	2019-11-22 14:36:55.113151081 +0000
@@ -1 +1 @@
-From 0ec234460b9282c96033282a9679e88d2df5e58e Mon Sep 17 00:00:00 2001
+From 1707c309ae28077a9db58a52aee3e5a14100f9c6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0ec234460b9282c96033282a9679e88d2df5e58e ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 44af5ade1..49e38f6b1 100644
+index 3f8d3ba87..2fc19fbb1 100644
@@ -28 +29 @@
-@@ -305,11 +305,4 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,
+@@ -302,11 +302,4 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,


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

* [dpdk-stable] patch 'net/i40e: fix VF runtime queues RSS config' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'ethdev: fix doc reference to FDIR disabled mode' " Kevin Traynor
                   ` (40 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 87a7d973dc3bab38be39a6abd0c611ff549594b0 Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Wed, 14 Aug 2019 06:17:45 +0800
Subject: [PATCH] net/i40e: fix VF runtime queues RSS config

[ upstream commit 2da3ba7467955bce812f5f2c79c6c57859689bb6 ]

I40evf queue can not work properly with kernel pf driver for X722 vf.
Eg. when configure 8 queues pair, only 4 queues can receive packets,
and half packets will be lost if using 2 queues pair.

This issue is caused by misconfiguration of look up table, the original
code of LUT configuration did not work for X722 vf, use aq command to
setup the LUT to make it work properly.

Fixes: cea7a51c1750 ("i40evf: support RSS")

Acked-by: Beilei Xing <beilei.xing@intel.com>
Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 32 +++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 49bdeb329..0f7aa5a72 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -2527,5 +2527,8 @@ i40evf_config_rss(struct i40e_vf *vf)
 	struct rte_eth_rss_conf rss_conf;
 	uint32_t i, j, lut = 0, nb_q = (I40E_VFQF_HLUT_MAX_INDEX + 1) * 4;
+	uint32_t rss_lut_size = (I40E_VFQF_HLUT1_MAX_INDEX + 1) * 4;
 	uint16_t num;
+	uint8_t *lut_info;
+	int ret;
 
 	if (vf->dev_data->dev_conf.rxmode.mq_mode != ETH_MQ_RX_RSS) {
@@ -2537,10 +2540,27 @@ i40evf_config_rss(struct i40e_vf *vf)
 	num = RTE_MIN(vf->dev_data->nb_rx_queues, I40E_MAX_QP_NUM_PER_VF);
 	/* Fill out the look up table */
-	for (i = 0, j = 0; i < nb_q; i++, j++) {
-		if (j >= num)
-			j = 0;
-		lut = (lut << 8) | j;
-		if ((i & 3) == 3)
-			I40E_WRITE_REG(hw, I40E_VFQF_HLUT(i >> 2), lut);
+	if (!(vf->flags & I40E_FLAG_RSS_AQ_CAPABLE)) {
+		for (i = 0, j = 0; i < nb_q; i++, j++) {
+			if (j >= num)
+				j = 0;
+			lut = (lut << 8) | j;
+			if ((i & 3) == 3)
+				I40E_WRITE_REG(hw, I40E_VFQF_HLUT(i >> 2), lut);
+		}
+	} else {
+		lut_info = rte_zmalloc("i40e_rss_lut", rss_lut_size, 0);
+		if (!lut_info) {
+			PMD_DRV_LOG(ERR, "No memory can be allocated");
+			return -ENOMEM;
+		}
+
+		for (i = 0; i < rss_lut_size; i++)
+			lut_info[i] = i % vf->num_queue_pairs;
+
+		ret = i40evf_set_rss_lut(&vf->vsi, lut_info,
+					 rss_lut_size);
+		rte_free(lut_info);
+		if (ret)
+			return ret;
 	}
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.434465970 +0000
+++ 0004-net-i40e-fix-VF-runtime-queues-RSS-config.patch	2019-11-22 14:36:55.116151017 +0000
@@ -1 +1 @@
-From 2da3ba7467955bce812f5f2c79c6c57859689bb6 Mon Sep 17 00:00:00 2001
+From 87a7d973dc3bab38be39a6abd0c611ff549594b0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2da3ba7467955bce812f5f2c79c6c57859689bb6 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 308fb9835..c77b30c54 100644
+index 49bdeb329..0f7aa5a72 100644
@@ -27 +28 @@
-@@ -2599,5 +2599,8 @@ i40evf_config_rss(struct i40e_vf *vf)
+@@ -2527,5 +2527,8 @@ i40evf_config_rss(struct i40e_vf *vf)
@@ -36 +37 @@
-@@ -2609,10 +2612,27 @@ i40evf_config_rss(struct i40e_vf *vf)
+@@ -2537,10 +2540,27 @@ i40evf_config_rss(struct i40e_vf *vf)


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

* [dpdk-stable] patch 'ethdev: fix doc reference to FDIR disabled mode' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (2 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: fix VF runtime queues RSS config' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " Kevin Traynor
                   ` (39 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 79888759a451364bbf5893a2a3c65ba988afef14 Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Sun, 18 Aug 2019 10:37:46 +0100
Subject: [PATCH] ethdev: fix doc reference to FDIR disabled mode

[ upstream commit 3c5f2cdb56d769755962a6c184e2a0a0ad70d93f ]

There is no RTE_FDIR_DISABLE. The right name is RTE_FDIR_MODE_NONE.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_ethdev/rte_ethdev.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index ec4b7752c..9fbf65069 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -856,5 +856,5 @@ enum rte_fdir_status_mode {
  * of an Ethernet port.
  *
- * If mode is RTE_FDIR_DISABLE, the pballoc value is ignored.
+ * If mode is RTE_FDIR_MODE_NONE, the pballoc value is ignored.
  */
 struct rte_fdir_conf {
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.484787099 +0000
+++ 0005-ethdev-fix-doc-reference-to-FDIR-disabled-mode.patch	2019-11-22 14:36:55.122150889 +0000
@@ -1 +1 @@
-From 3c5f2cdb56d769755962a6c184e2a0a0ad70d93f Mon Sep 17 00:00:00 2001
+From 79888759a451364bbf5893a2a3c65ba988afef14 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3c5f2cdb56d769755962a6c184e2a0a0ad70d93f ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index dc6596bc9..8fa89bf76 100644
+index ec4b7752c..9fbf65069 100644
@@ -20 +21 @@
-@@ -912,5 +912,5 @@ enum rte_fdir_status_mode {
+@@ -856,5 +856,5 @@ enum rte_fdir_status_mode {


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

* [dpdk-stable] patch 'net/af_packet: fix stale sockets' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (3 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'ethdev: fix doc reference to FDIR disabled mode' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'app/testpmd: remove duplicated Rx offload commands' " Kevin Traynor
                   ` (38 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Abhishek Sachan; +Cc: John W . Linville, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 007d5fe26392de60cef606f254a6b94318f740c4 Mon Sep 17 00:00:00 2001
From: Abhishek Sachan <abhishek.sachan@altran.com>
Date: Thu, 22 Aug 2019 11:55:36 +0530
Subject: [PATCH] net/af_packet: fix stale sockets

[ upstream commit 7c3bcc7b6dc14623bd17960fa3236e6fa9e2711b ]

af_packet driver is leaving stale socket after device is removed.

Ring buffers are memory mapped when device is added using rte_dev_probe.
There is no corresponding munmap call when device is removed/closed.

This commit fixes the issue by calling munmap
from rte_pmd_af_packet_remove().

Bugzilla ID: 339
Fixes: e6ee4db01b4d ("af_packet: make the device detachable")

Signed-off-by: Abhishek Sachan <abhishek.sachan@altran.com>
Reviewed-by: John W. Linville <linville@tuxdriver.com>
---
 drivers/net/af_packet/rte_eth_af_packet.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index cca223952..2e32b3d3c 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -971,4 +971,5 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
 	struct rte_eth_dev *eth_dev = NULL;
 	struct pmd_internals *internals;
+	struct tpacket_req *req;
 	unsigned q;
 
@@ -991,5 +992,8 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
 
 	internals = eth_dev->data->dev_private;
+	req = &internals->req;
 	for (q = 0; q < internals->nb_queues; q++) {
+		munmap(internals->rx_queue[q].map,
+			2 * req->tp_block_size * req->tp_block_nr);
 		rte_free(internals->rx_queue[q].rd);
 		rte_free(internals->tx_queue[q].rd);
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.539745133 +0000
+++ 0006-net-af_packet-fix-stale-sockets.patch	2019-11-22 14:36:55.123150867 +0000
@@ -1 +1 @@
-From 7c3bcc7b6dc14623bd17960fa3236e6fa9e2711b Mon Sep 17 00:00:00 2001
+From 007d5fe26392de60cef606f254a6b94318f740c4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7c3bcc7b6dc14623bd17960fa3236e6fa9e2711b ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 82bf2cd58..6df09f282 100644
+index cca223952..2e32b3d3c 100644
@@ -28 +29 @@
-@@ -973,4 +973,5 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
+@@ -971,4 +971,5 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
@@ -34 +35 @@
-@@ -993,5 +994,8 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
+@@ -991,5 +992,8 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)


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

* [dpdk-stable] patch 'app/testpmd: remove duplicated Rx offload commands' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (4 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/atlantic: remove double function declaration' " Kevin Traynor
                   ` (37 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Flavia Musatescu; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 403ef11322447c78bd574911455643d3efa9cfae Mon Sep 17 00:00:00 2001
From: Flavia Musatescu <flavia.musatescu@intel.com>
Date: Tue, 27 Aug 2019 17:43:15 +0100
Subject: [PATCH] app/testpmd: remove duplicated Rx offload commands
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit e5db17a1e54e419419751f83bb804ef34eb15bff ]

The testpmd application provides two sets of commands for RX offload
flags configuration. The purpose of this patch is to eliminate this
duplication by removing the old set of commands:
“port config all crc-strip|scatter|rx-cksum|rx-timestamp|hw-vlan|
hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off”

The other commands set that can be used instead in order to enable
or disable the same RX offloading flags on all RX queues of a port is:
"port config <port_id> rx_offload crc_strip|scatter|ipv4_cksum|
udp_cksum|tcp_cksum|timestamp|vlan_strip|vlan_filter|vlan_extend on|off"

This patch also fixes the "drop-en" command, which enables packets
dropping on all RX queues of all ports when no receive buffers available
“port config all drop-en on|off”

Fixes: 384161e00627 ("app/testpmd: adjust on the fly VLAN configuration")

Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/test-pmd/cmdline.c                      | 120 +++-----------------
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  81 +------------
 2 files changed, 16 insertions(+), 185 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 8a6f246b4..fe9792643 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -797,9 +797,7 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"    Set the max packet length.\n\n"
 
-			"port config all (crc-strip|scatter|rx-cksum|rx-timestamp|hw-vlan|hw-vlan-filter|"
-			"hw-vlan-strip|hw-vlan-extend|drop-en)"
-			" (on|off)\n"
-			"    Set crc-strip/scatter/rx-checksum/hardware-vlan/drop_en"
-			" for ports.\n\n"
+			"port config all drop-en (on|off)\n"
+			"    Enable or disable packet drop on all RX queues of all ports when no "
+			"receive buffers available.\n\n"
 
 			"port config all rss (all|default|ip|tcp|udp|sctp|"
@@ -2042,6 +2040,4 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
 {
 	struct cmd_config_rx_mode_flag *res = parsed_result;
-	portid_t pid;
-	int k;
 
 	if (!all_ports_stopped()) {
@@ -2050,102 +2046,16 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
 	}
 
-	RTE_ETH_FOREACH_DEV(pid) {
-		struct rte_port *port;
-		uint64_t rx_offloads;
-
-		port = &ports[pid];
-		rx_offloads = port->dev_conf.rxmode.offloads;
-		if (!strcmp(res->name, "crc-strip")) {
-			if (!strcmp(res->value, "on")) {
-				rx_offloads &= ~DEV_RX_OFFLOAD_KEEP_CRC;
-			} else if (!strcmp(res->value, "off")) {
-				rx_offloads |= DEV_RX_OFFLOAD_KEEP_CRC;
-			} else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "scatter")) {
-			if (!strcmp(res->value, "on")) {
-				rx_offloads |= DEV_RX_OFFLOAD_SCATTER;
-			} else if (!strcmp(res->value, "off")) {
-				rx_offloads &= ~DEV_RX_OFFLOAD_SCATTER;
-			} else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "rx-cksum")) {
-			if (!strcmp(res->value, "on"))
-				rx_offloads |= DEV_RX_OFFLOAD_CHECKSUM;
-			else if (!strcmp(res->value, "off"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_CHECKSUM;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "rx-timestamp")) {
-			if (!strcmp(res->value, "on"))
-				rx_offloads |= DEV_RX_OFFLOAD_TIMESTAMP;
-			else if (!strcmp(res->value, "off"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_TIMESTAMP;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "hw-vlan")) {
-			if (!strcmp(res->value, "on")) {
-				rx_offloads |= (DEV_RX_OFFLOAD_VLAN_FILTER |
-						DEV_RX_OFFLOAD_VLAN_STRIP);
-			} else if (!strcmp(res->value, "off")) {
-				rx_offloads &= ~(DEV_RX_OFFLOAD_VLAN_FILTER |
-						DEV_RX_OFFLOAD_VLAN_STRIP);
-			} else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "hw-vlan-filter")) {
-			if (!strcmp(res->value, "on"))
-				rx_offloads |= DEV_RX_OFFLOAD_VLAN_FILTER;
-			else if (!strcmp(res->value, "off"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_FILTER;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "hw-vlan-strip")) {
-			if (!strcmp(res->value, "on"))
-				rx_offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;
-			else if (!strcmp(res->value, "off"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "hw-vlan-extend")) {
-			if (!strcmp(res->value, "on"))
-				rx_offloads |= DEV_RX_OFFLOAD_VLAN_EXTEND;
-			else if (!strcmp(res->value, "off"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_EXTEND;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else if (!strcmp(res->name, "drop-en")) {
-			if (!strcmp(res->value, "on"))
-				rx_drop_en = 1;
-			else if (!strcmp(res->value, "off"))
-				rx_drop_en = 0;
-			else {
-				printf("Unknown parameter\n");
-				return;
-			}
-		} else {
+	if (!strcmp(res->name, "drop-en")) {
+		if (!strcmp(res->value, "on"))
+			rx_drop_en = 1;
+		else if (!strcmp(res->value, "off"))
+			rx_drop_en = 0;
+		else {
 			printf("Unknown parameter\n");
 			return;
 		}
-		port->dev_conf.rxmode.offloads = rx_offloads;
-		/* Apply Rx offloads configuration */
-		for (k = 0; k < port->dev_info.max_rx_queues; k++)
-			port->rx_conf[k].offloads =
-				port->dev_conf.rxmode.offloads;
+	} else {
+		printf("Unknown parameter\n");
+		return;
 	}
 
@@ -2164,6 +2074,5 @@ cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
 cmdline_parse_token_string_t cmd_config_rx_mode_flag_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, name,
-					"crc-strip#scatter#rx-cksum#rx-timestamp#hw-vlan#"
-					"hw-vlan-filter#hw-vlan-strip#hw-vlan-extend");
+					"drop-en");
 cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, value,
@@ -2173,6 +2082,5 @@ cmdline_parse_inst_t cmd_config_rx_mode_flag = {
 	.f = cmd_config_rx_mode_flag_parsed,
 	.data = NULL,
-	.help_str = "port config all crc-strip|scatter|rx-cksum|rx-timestamp|hw-vlan|"
-		"hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off",
+	.help_str = "port config all drop-en on|off",
 	.tokens = {
 		(void *)&cmd_config_rx_mode_flag_port,
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 81f10727f..787355bae 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -2010,89 +2010,12 @@ Set the maximum packet length::
 This is equivalent to the ``--max-pkt-len`` command-line option.
 
-port config - CRC Strip
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Set hardware CRC stripping on or off for all ports::
-
-   testpmd> port config all crc-strip (on|off)
-
-CRC stripping is on by default.
-
-The ``off`` option is equivalent to the ``--disable-crc-strip`` command-line option.
-
-port config - scatter
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Set RX scatter mode on or off for all ports::
-
-   testpmd> port config all scatter (on|off)
-
-RX scatter mode is off by default.
-
-The ``on`` option is equivalent to the ``--enable-scatter`` command-line option.
-
-port config - RX Checksum
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set hardware RX checksum offload to on or off for all ports::
-
-   testpmd> port config all rx-cksum (on|off)
-
-Checksum offload is off by default.
-
-The ``on`` option is equivalent to the ``--enable-rx-cksum`` command-line option.
-
-port config - VLAN
-~~~~~~~~~~~~~~~~~~
-
-Set hardware VLAN on or off for all ports::
-
-   testpmd> port config all hw-vlan (on|off)
-
-Hardware VLAN is off by default.
-
-The ``on`` option is equivalent to the ``--enable-hw-vlan`` command-line option.
-
-port config - VLAN filter
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set hardware VLAN filter on or off for all ports::
-
-   testpmd> port config all hw-vlan-filter (on|off)
-
-Hardware VLAN filter is off by default.
-
-The ``on`` option is equivalent to the ``--enable-hw-vlan-filter`` command-line option.
-
-port config - VLAN strip
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set hardware VLAN strip on or off for all ports::
-
-   testpmd> port config all hw-vlan-strip (on|off)
-
-Hardware VLAN strip is off by default.
-
-The ``on`` option is equivalent to the ``--enable-hw-vlan-strip`` command-line option.
-
-port config - VLAN extend
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set hardware VLAN extend on or off for all ports::
-
-   testpmd> port config all hw-vlan-extend (on|off)
-
-Hardware VLAN extend is off by default.
-
-The ``on`` option is equivalent to the ``--enable-hw-vlan-extend`` command-line option.
-
 port config - Drop Packets
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Set packet drop for packets with no descriptors on or off for all ports::
+Enable or disable packet drop on all RX queues of all ports when no receive buffers available::
 
    testpmd> port config all drop-en (on|off)
 
-Packet dropping for packets with no descriptors is off by default.
+Packet dropping when no receive buffers available is off by default.
 
 The ``on`` option is equivalent to the ``--enable-drop-en`` command-line option.
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.591670759 +0000
+++ 0007-app-testpmd-remove-duplicated-Rx-offload-commands.patch	2019-11-22 14:36:55.149150312 +0000
@@ -1 +1 @@
-From e5db17a1e54e419419751f83bb804ef34eb15bff Mon Sep 17 00:00:00 2001
+From 403ef11322447c78bd574911455643d3efa9cfae Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit e5db17a1e54e419419751f83bb804ef34eb15bff ]
+
@@ -25 +26,0 @@
-Cc: stable@dpdk.org
@@ -31 +31,0 @@
- doc/guides/rel_notes/release_19_11.rst      |   9 ++
@@ -33 +33 @@
- 3 files changed, 25 insertions(+), 185 deletions(-)
+ 2 files changed, 16 insertions(+), 185 deletions(-)
@@ -36 +36 @@
-index 56783aa13..b6bc34b4d 100644
+index 8a6f246b4..fe9792643 100644
@@ -39 +39 @@
-@@ -779,9 +779,7 @@ static void cmd_help_long_parsed(void *parsed_result,
+@@ -797,9 +797,7 @@ static void cmd_help_long_parsed(void *parsed_result,
@@ -52 +52 @@
-@@ -2110,6 +2108,4 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
+@@ -2042,6 +2040,4 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
@@ -59 +59 @@
-@@ -2118,102 +2114,16 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
+@@ -2050,102 +2046,16 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
@@ -171 +171 @@
-@@ -2232,6 +2142,5 @@ cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
+@@ -2164,6 +2074,5 @@ cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
@@ -179 +179 @@
-@@ -2241,6 +2150,5 @@ cmdline_parse_inst_t cmd_config_rx_mode_flag = {
+@@ -2173,6 +2082,5 @@ cmdline_parse_inst_t cmd_config_rx_mode_flag = {
@@ -187,18 +186,0 @@
-diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
-index 8490d897c..27cfbd9e3 100644
---- a/doc/guides/rel_notes/release_19_11.rst
-+++ b/doc/guides/rel_notes/release_19_11.rst
-@@ -70,4 +70,13 @@ Removed Items
-    =========================================================
- 
-+   * Removed duplicated set of commands for RX offloading configuration from app/testpmd:
-+     “port config all crc-strip|scatter|rx-cksum|rx-timestamp|hw-vlan|hw-vlan-filter|
-+     hw-vlan-strip|hw-vlan-extend on|off”.
-+
-+     The testpmd commands set that can be used instead in order to enable or disable Rx
-+     offloading on all Rx queues of a port is:
-+     "port config <port_id> rx_offload crc_strip|scatter|ipv4_cksum|udp_cksum|tcp_cksum|
-+     timestamp|vlan_strip|vlan_filter|vlan_extend on|off"
-+
- 
- API Changes
@@ -206 +188 @@
-index 313e0707e..67f4339ca 100644
+index 81f10727f..787355bae 100644
@@ -209 +191 @@
-@@ -2100,89 +2100,12 @@ Set the maximum packet length::
+@@ -2010,89 +2010,12 @@ Set the maximum packet length::


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

* [dpdk-stable] patch 'net/atlantic: remove double function declaration' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (5 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'app/testpmd: remove duplicated Rx offload commands' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " Kevin Traynor
                   ` (36 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Ivan Ilchenko; +Cc: Andrew Rybchenko, Igor Russkikh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From dba3230859f697c0e2078a2f1ba65b492cd690da Mon Sep 17 00:00:00 2001
From: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Date: Sun, 1 Sep 2019 15:36:43 +0100
Subject: [PATCH] net/atlantic: remove double function declaration

[ upstream commit 5fdd61136babc3ec4a371ed09372c551da3e79b3 ]

atl_dev_info_get() is declared twice in atl_ethdev.c.
Delete one of these declarations.

Fixes: bb42aa9ffe4e ("net/atlantic: configure device start/stop")

Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Igor Russkikh <igor.russkikh@aquantia.com>
---
 drivers/net/atlantic/atl_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c
index 06d4f2eae..623c7166e 100644
--- a/drivers/net/atlantic/atl_ethdev.c
+++ b/drivers/net/atlantic/atl_ethdev.c
@@ -44,7 +44,4 @@ static int atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version,
 			      size_t fw_size);
 
-static void atl_dev_info_get(struct rte_eth_dev *dev,
-			       struct rte_eth_dev_info *dev_info);
-
 static const uint32_t *atl_dev_supported_ptypes_get(struct rte_eth_dev *dev);
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.665864988 +0000
+++ 0008-net-atlantic-remove-double-function-declaration.patch	2019-11-22 14:36:55.151150269 +0000
@@ -1 +1 @@
-From 5fdd61136babc3ec4a371ed09372c551da3e79b3 Mon Sep 17 00:00:00 2001
+From dba3230859f697c0e2078a2f1ba65b492cd690da Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5fdd61136babc3ec4a371ed09372c551da3e79b3 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 3c1b349df..4a99699ad 100644
+index 06d4f2eae..623c7166e 100644
@@ -23 +24 @@
-@@ -46,7 +46,4 @@ static int atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version,
+@@ -44,7 +44,4 @@ static int atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version,


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

* [dpdk-stable] patch 'net/mlx4: fix build on ppc64' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (6 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/atlantic: remove double function declaration' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " Kevin Traynor
                   ` (35 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Christian Ehrhardt; +Cc: David Christensen, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From c78fa03e94cfce26cbc492455b76422b66355770 Mon Sep 17 00:00:00 2001
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Date: Tue, 13 Aug 2019 13:28:43 +0200
Subject: [PATCH] net/mlx4: fix build on ppc64

[ upstream commit ceadf1a405d9951c6d15ed27e010f5b1a80dbdf5 ]

The AltiVec header file breaks boolean type:

error: incompatible types when initializing type
'__vector _bool int' {aka '_vector(4) __bool int'} using type 'int'

If __APPLE_ALTIVEC__ is defined, then bool type is redefined
and conflicts with stdbool.h.

There is no good solution to fix it for the whole project without
breaking something else, so a workaround is inserted in mlx5 PMD.
This workaround is not compatible with C++ but there is no C++ in DPDK.

Related to: 725f5dd0bfb5 ("net/mlx5: fix build on PPC64")

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Tested-by: David Christensen <drc@linux.vnet.ibm.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx4/mlx4_utils.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/mlx4/mlx4_utils.h b/drivers/net/mlx4/mlx4_utils.h
index 86abb3b7e..2a550df88 100644
--- a/drivers/net/mlx4/mlx4_utils.h
+++ b/drivers/net/mlx4/mlx4_utils.h
@@ -16,4 +16,14 @@
 #include "mlx4.h"
 
+/*
+ * Compilation workaround for PPC64 when AltiVec is fully enabled, e.g. std=c11.
+ * Otherwise there would be a type conflict between stdbool and altivec.
+ */
+#if defined(__PPC64__) && !defined(__APPLE_ALTIVEC__)
+#undef bool
+/* redefine as in stdbool.h */
+#define bool _Bool
+#endif
+
 #ifndef NDEBUG
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.714735760 +0000
+++ 0009-net-mlx4-fix-build-on-ppc64.patch	2019-11-22 14:36:55.152150248 +0000
@@ -1 +1 @@
-From ceadf1a405d9951c6d15ed27e010f5b1a80dbdf5 Mon Sep 17 00:00:00 2001
+From c78fa03e94cfce26cbc492455b76422b66355770 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ceadf1a405d9951c6d15ed27e010f5b1a80dbdf5 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index a49190252..74b9d2ecd 100644
+index 86abb3b7e..2a550df88 100644
@@ -45 +46 @@
- extern int mlx4_logtype;
+ #ifndef NDEBUG


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

* [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (7 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove compiler " Kevin Traynor
                   ` (34 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Gavin Hu; +Cc: Ruifeng Wang, Steve Capper, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 8628a3a9bf8c8c144062dc5ead06ac5be9061ff0 Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu@arm.com>
Date: Tue, 13 Aug 2019 18:43:30 +0800
Subject: [PATCH] net/i40e: remove memory barrier from NEON Rx

[ upstream commit 78b50591c8e7ae3d010e8f4005e0e95c17800941 ]

For x86, the descriptors needs to be loaded in order, so in between two
descriptors loading, there is a compiler barrier in place.[1]
For aarch64, a patch [2] is in place to survive with discontinuous DD
bits, the barriers can be removed to take full advantage of out-of-order
execution.

50% performance gain in the RFC2544 NDR test was measured on ThunderX2.
12.50% performance gain in the RFC2544 NDR test was measured on Ampere
eMAG80 platform.

[1] http://inbox.dpdk.org/users/039ED4275CED7440929022BC67E7061153D71548@
SHSMSX105.ccr.corp.intel.com/
[2] https://mails.dpdk.org/archives/stable/2017-October/003324.html

Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
---
 drivers/net/i40e/i40e_rxtx_vec_neon.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
index 83572ef84..5555e9b5c 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -286,5 +286,4 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		/* A.1 load 4 pkts desc */
 		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));
-		rte_rmb();
 
 		/* B.2 copy 2 mbuf point into rx_pkts  */
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.766493759 +0000
+++ 0010-net-i40e-remove-memory-barrier-from-NEON-Rx.patch	2019-11-22 14:36:55.153150226 +0000
@@ -1 +1 @@
-From 78b50591c8e7ae3d010e8f4005e0e95c17800941 Mon Sep 17 00:00:00 2001
+From 8628a3a9bf8c8c144062dc5ead06ac5be9061ff0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 78b50591c8e7ae3d010e8f4005e0e95c17800941 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org


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

* [dpdk-stable] patch 'net/i40e: remove compiler barrier from NEON Rx' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (8 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove memory " Kevin Traynor
                   ` (33 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Gavin Hu; +Cc: Ruifeng Wang, Steve Capper, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 397f9da5cbd4c093e69d8d6470a10aed20e85c2b Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu@arm.com>
Date: Tue, 13 Aug 2019 18:43:31 +0800
Subject: [PATCH] net/i40e: remove compiler barrier from NEON Rx

[ upstream commit f1f0f39806d97a9a4d74d47ce7fb04e9b4943e08 ]

As packet length extraction code was simplified,the ordering
was not necessary any more.[1]

2% performance gain was measured on Marvell ThunderX2.
4.3% performance gain was measured on Ampere eMAG80

[1] http://mails.dpdk.org/archives/dev/2016-April/037529.html

Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
---
 drivers/net/i40e/i40e_rxtx_vec_neon.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
index 5555e9b5c..864eb9a32 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -308,7 +308,4 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		}
 
-		/* avoid compiler reorder optimization */
-		rte_compiler_barrier();
-
 		/* pkt 3,4 shift the pktlen field to be 16-bit aligned*/
 		uint32x4_t len3 = vshlq_u32(vreinterpretq_u32_u64(descs[3]),
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.815365859 +0000
+++ 0011-net-i40e-remove-compiler-barrier-from-NEON-Rx.patch	2019-11-22 14:36:55.153150226 +0000
@@ -1 +1 @@
-From f1f0f39806d97a9a4d74d47ce7fb04e9b4943e08 Mon Sep 17 00:00:00 2001
+From 397f9da5cbd4c093e69d8d6470a10aed20e85c2b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1f0f39806d97a9a4d74d47ce7fb04e9b4943e08 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org


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

* [dpdk-stable] patch 'net/ixgbe: remove memory barrier from NEON Rx' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (9 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove compiler " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " Kevin Traynor
                   ` (32 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Ruifeng Wang; +Cc: Gavin Hu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 4f0b4165a401061e93e7155bf6936b88281718e7 Mon Sep 17 00:00:00 2001
From: Ruifeng Wang <ruifeng.wang@arm.com>
Date: Wed, 28 Aug 2019 16:24:53 +0800
Subject: [PATCH] net/ixgbe: remove memory barrier from NEON Rx

[ upstream commit 18b7d4eb3dca9e24208c8be59a8972e7f9d7d1cf ]

The memory barrier was intended for descriptor data integrity (see
comments in [1]). As later NEON loads were implemented and a whole
entry is loaded in one-run and atomic, that makes the ordering of
partial loading unnecessary. Remove it accordingly.

Corrected couple of code comments.

In terms of performance, observed slightly higher average throughput
in tests with 82599ES NIC.

[1] http://patches.dpdk.org/patch/18153/

Fixes: 989a84050542 ("net/ixgbe: fix received packets number for ARM NEON")

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index edb138354..86fb3afdb 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -215,5 +215,5 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		uint32_t stat;
 
-		/* B.1 load 1 mbuf point */
+		/* B.1 load 2 mbuf point */
 		mbp1 = vld1q_u64((uint64_t *)&sw_ring[pos]);
 
@@ -221,5 +221,5 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		vst1q_u64((uint64_t *)&rx_pkts[pos], mbp1);
 
-		/* B.1 load 1 mbuf point */
+		/* B.1 load 2 mbuf point */
 		mbp2 = vld1q_u64((uint64_t *)&sw_ring[pos + 2]);
 
@@ -229,5 +229,4 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		descs[2] =  vld1q_u64((uint64_t *)(rxdp + 2));
 		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));
-		rte_smp_rmb();
 
 		/* B.2 copy 2 mbuf point into rx_pkts  */
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.867853769 +0000
+++ 0012-net-ixgbe-remove-memory-barrier-from-NEON-Rx.patch	2019-11-22 14:36:55.154150205 +0000
@@ -1 +1 @@
-From 18b7d4eb3dca9e24208c8be59a8972e7f9d7d1cf Mon Sep 17 00:00:00 2001
+From 4f0b4165a401061e93e7155bf6936b88281718e7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 18b7d4eb3dca9e24208c8be59a8972e7f9d7d1cf ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org


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

* [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (10 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove memory " Kevin Traynor
@ 2019-11-22 14:40 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/vmxnet3: remove IP checksum from capabilities' " Kevin Traynor
                   ` (31 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:40 UTC (permalink / raw)
  To: Yong Wang; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From f1452d08c30ee2b9faaa018e20b6ff1f27696aba Mon Sep 17 00:00:00 2001
From: Yong Wang <wang.yong19@zte.com.cn>
Date: Fri, 30 Aug 2019 16:45:29 +0800
Subject: [PATCH] net/ixgbe: remove redundant assignment

[ upstream commit e573264c71de3de67e8fa81b0872c10bf4650f15 ]

Since "link.link_duplex" has been assigned to ETH_LINK_FULL_DUPLEX just
before switch statement, the assignment in switch-case statement is
redundant. Remove it.

Fixes: 82113036e4e5 ("ethdev: redesign link speed config")

Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 00a06ef67..794bb0125 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -4115,5 +4115,4 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
 	default:
 	case IXGBE_LINK_SPEED_UNKNOWN:
-		link.link_duplex = ETH_LINK_FULL_DUPLEX;
 		link.link_speed = ETH_SPEED_NUM_100M;
 		break;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.916562564 +0000
+++ 0013-net-ixgbe-remove-redundant-assignment.patch	2019-11-22 14:36:55.163150013 +0000
@@ -1 +1 @@
-From e573264c71de3de67e8fa81b0872c10bf4650f15 Mon Sep 17 00:00:00 2001
+From f1452d08c30ee2b9faaa018e20b6ff1f27696aba Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e573264c71de3de67e8fa81b0872c10bf4650f15 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 03fc1f717..f328d7c03 100644
+index 00a06ef67..794bb0125 100644
@@ -23,3 +24,3 @@
-@@ -4139,5 +4139,4 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
- 		else
- 			link.link_speed = ETH_SPEED_NUM_100M;
+@@ -4115,5 +4115,4 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
+ 	default:
+ 	case IXGBE_LINK_SPEED_UNKNOWN:
@@ -26,0 +28 @@
+ 		link.link_speed = ETH_SPEED_NUM_100M;
@@ -28 +29,0 @@
- 


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

* [dpdk-stable] patch 'net/vmxnet3: remove IP checksum from capabilities' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (11 preceding siblings ...)
  2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " Kevin Traynor
                   ` (30 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Maxime Leroy; +Cc: Yong Wang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From bdc587ea58e70d0c678b9a08dfeac210e2bf4cb5 Mon Sep 17 00:00:00 2001
From: Maxime Leroy <maxime.leroy@6wind.com>
Date: Tue, 13 Aug 2019 15:29:47 +0200
Subject: [PATCH] net/vmxnet3: remove IP checksum from capabilities

[ upstream commit 86536da001c03d2bcbdb38ccdcd023e6d744f5b8 ]

The vmxnet3_prep_pkts function set rte_errno to ENOTSUP for any packets
having PKT_TX_IP_CHECKSUM set in ol_flags. But the vmxnet3 has
DEV_TX_OFFLOAD_IPV4_CKSUM set in this tx offload capa.

This issue has been introduced with the new Rx offload
API. DEV_TX_OFFLOAD_IPV4_CKSUM and DEV_RX_OFFLOAD_IPV4_CKSUM has been
added to the tx/rx offloads capa, but the vmxnet3 driver doesn't support
it.

To fix the issue, DEV_TX/RX_OFFLOAD_IPV4_CKSUM needs to be removed from
tx/rx offload capa.

Fixes: 95e4a96ccbf1 ("net/vmxnet3: convert to new Rx offload API")

Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com>
Acked-by: Yong Wang <yongwang@vmware.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index c856b77f8..c5c1b24c5 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -45,5 +45,4 @@
 #define VMXNET3_TX_OFFLOAD_CAP		\
 	(DEV_TX_OFFLOAD_VLAN_INSERT |	\
-	 DEV_TX_OFFLOAD_IPV4_CKSUM |	\
 	 DEV_TX_OFFLOAD_TCP_CKSUM |	\
 	 DEV_TX_OFFLOAD_UDP_CKSUM |	\
@@ -55,5 +54,4 @@
 	 DEV_RX_OFFLOAD_VLAN_FILTER |   \
 	 DEV_RX_OFFLOAD_SCATTER |	\
-	 DEV_RX_OFFLOAD_IPV4_CKSUM |	\
 	 DEV_RX_OFFLOAD_UDP_CKSUM |	\
 	 DEV_RX_OFFLOAD_TCP_CKSUM |	\
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:55.975127963 +0000
+++ 0014-net-vmxnet3-remove-IP-checksum-from-capabilities.patch	2019-11-22 14:36:55.165149970 +0000
@@ -1 +1 @@
-From 86536da001c03d2bcbdb38ccdcd023e6d744f5b8 Mon Sep 17 00:00:00 2001
+From bdc587ea58e70d0c678b9a08dfeac210e2bf4cb5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 86536da001c03d2bcbdb38ccdcd023e6d744f5b8 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 57feb3773..9cd5eb65b 100644
+index c856b77f8..c5c1b24c5 100644


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

* [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (12 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/vmxnet3: remove IP checksum from capabilities' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " Kevin Traynor
                   ` (29 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Xiaolong Ye; +Cc: Stephen Hemminger, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From c8462445aaed2cbd92fa56f90500d0cce8151749 Mon Sep 17 00:00:00 2001
From: Xiaolong Ye <xiaolong.ye@intel.com>
Date: Wed, 4 Sep 2019 22:05:31 +0800
Subject: [PATCH] ethdev: fix typos for ENOTSUP

[ upstream commit e8c7df5d7d3a47446aa3f90d5ee1ca2662fd0531 ]

Fixes: af75078fece3 ("first public release")

Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_ethdev/rte_ethdev.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 9fbf65069..5d447bc12 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -2317,5 +2317,5 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
  * @return
  *   - (0) if successful.
- *   - (-ENOSUP) if hardware-assisted VLAN filtering not configured.
+ *   - (-ENOTSUP) if hardware-assisted VLAN filtering not configured.
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EIO) if device is removed.
@@ -2340,5 +2340,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
  * @return
  *   - (0) if successful.
- *   - (-ENOSUP) if hardware-assisted VLAN stripping not configured.
+ *   - (-ENOTSUP) if hardware-assisted VLAN stripping not configured.
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EINVAL) if *rx_queue_id* invalid.
@@ -2360,5 +2360,5 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
  * @return
  *   - (0) if successful.
- *   - (-ENOSUP) if hardware-assisted VLAN TPID setup is not supported.
+ *   - (-ENOTSUP) if hardware-assisted VLAN TPID setup is not supported.
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EIO) if device is removed.
@@ -2385,5 +2385,5 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
  * @return
  *   - (0) if successful.
- *   - (-ENOSUP) if hardware-assisted VLAN filtering not configured.
+ *   - (-ENOTSUP) if hardware-assisted VLAN filtering not configured.
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EIO) if device is removed.
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.024101252 +0000
+++ 0015-ethdev-fix-typos-for-ENOTSUP.patch	2019-11-22 14:36:55.170149863 +0000
@@ -1 +1 @@
-From e8c7df5d7d3a47446aa3f90d5ee1ca2662fd0531 Mon Sep 17 00:00:00 2001
+From c8462445aaed2cbd92fa56f90500d0cce8151749 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e8c7df5d7d3a47446aa3f90d5ee1ca2662fd0531 ]
+
@@ -7 +8,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index 8fa89bf76..d9871782e 100644
+index 9fbf65069..5d447bc12 100644
@@ -20 +21 @@
-@@ -2478,5 +2478,5 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
+@@ -2317,5 +2317,5 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
@@ -27 +28 @@
-@@ -2501,5 +2501,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
+@@ -2340,5 +2340,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
@@ -34 +35 @@
-@@ -2521,5 +2521,5 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
+@@ -2360,5 +2360,5 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
@@ -41 +42 @@
-@@ -2547,5 +2547,5 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
+@@ -2385,5 +2385,5 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,


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

* [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (13 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " Kevin Traynor
                   ` (28 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Junyu Jiang; +Cc: Qiming Yang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From ff11a3b5421a25b6456392240aec8779a56f3e14 Mon Sep 17 00:00:00 2001
From: Junyu Jiang <junyux.jiang@intel.com>
Date: Wed, 4 Sep 2019 03:31:47 +0000
Subject: [PATCH] net/ixgbe: fix queue interrupt for X552/557

[ upstream commit f26f416d4c3ac8b77cd8dd84f72628b37fec7283 ]

Interrupt mode is not working on X552/557 device because
this device doesn't enable the queue interrupt mapping,
this patch fixed the issue.

Fixes: d2e72774e58c ("ixgbe/base: support X550")

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 794bb0125..1eb1315c9 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -5871,5 +5871,6 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
 	} else if ((hw->mac.type == ixgbe_mac_82599EB) ||
 			(hw->mac.type == ixgbe_mac_X540) ||
-			(hw->mac.type == ixgbe_mac_X550)) {
+			(hw->mac.type == ixgbe_mac_X550) ||
+			(hw->mac.type == ixgbe_mac_X550EM_x)) {
 		if (direction == -1) {
 			/* other causes */
@@ -6001,4 +6002,5 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
 		case ixgbe_mac_X540:
 		case ixgbe_mac_X550:
+		case ixgbe_mac_X550EM_x:
 			ixgbe_set_ivar_map(hw, -1, 1, IXGBE_MISC_VEC_ID);
 			break;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.079553491 +0000
+++ 0016-net-ixgbe-fix-queue-interrupt-for-X552-557.patch	2019-11-22 14:36:55.178149692 +0000
@@ -1 +1 @@
-From f26f416d4c3ac8b77cd8dd84f72628b37fec7283 Mon Sep 17 00:00:00 2001
+From ff11a3b5421a25b6456392240aec8779a56f3e14 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f26f416d4c3ac8b77cd8dd84f72628b37fec7283 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index f328d7c03..e985053d6 100644
+index 794bb0125..1eb1315c9 100644
@@ -23 +24 @@
-@@ -5896,5 +5896,6 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
+@@ -5871,5 +5871,6 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
@@ -31 +32 @@
-@@ -6026,4 +6027,5 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
+@@ -6001,4 +6002,5 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)


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

* [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (14 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " Kevin Traynor
                   ` (27 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Wei Zhao; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 411e16651fb261f7d7cf3694d9e4df712e4d7f4a Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1@intel.com>
Date: Wed, 28 Aug 2019 16:16:52 +0800
Subject: [PATCH] net/ixgbe: enable new PF host mbox version

[ upstream commit 5e0a2c935bf6724b8419ad8f9237c48a564bb2ff ]

A new mail box version of ixgbe_mbox_api_13 need to be enabled for PF
host, in order that it can communicate with VF for queue number.

Fixes: 46b14c231106 ("ixgbe: get VF queue number")

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ixgbe/ixgbe_pf.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c
index be0c0768c..22d826cbf 100644
--- a/drivers/net/ixgbe/ixgbe_pf.c
+++ b/drivers/net/ixgbe/ixgbe_pf.c
@@ -633,4 +633,5 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	case ixgbe_mbox_api_11:
 	case ixgbe_mbox_api_12:
+	case ixgbe_mbox_api_13:
 		break;
 	default:
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.137656029 +0000
+++ 0017-net-ixgbe-enable-new-PF-host-mbox-version.patch	2019-11-22 14:36:55.179149671 +0000
@@ -1 +1 @@
-From 5e0a2c935bf6724b8419ad8f9237c48a564bb2ff Mon Sep 17 00:00:00 2001
+From 411e16651fb261f7d7cf3694d9e4df712e4d7f4a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5e0a2c935bf6724b8419ad8f9237c48a564bb2ff ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index c88d56e24..be729ba2d 100644
+index be0c0768c..22d826cbf 100644
@@ -22 +23 @@
-@@ -619,4 +619,5 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
+@@ -633,4 +633,5 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)


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

* [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (15 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/virtio: remove remaining simple Tx related stuff' " Kevin Traynor
                   ` (26 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Wei Zhao; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 5d24e09dc4267eb8a6c5f321740cac21ae55d750 Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1@intel.com>
Date: Wed, 4 Sep 2019 16:40:54 +0800
Subject: [PATCH] net/ixgbe: fix VF RSS offloads configuration

[ upstream commit 9594db99c73b62c398310d812726cc90889297af ]

x550 NIC VF port has the capacity to set RSS hash,
so device info get function should report that.

Fixes: 2144f6630fca ("ixgbe: add redirection table size in device info")

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 1eb1315c9..16d68fb2a 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3910,4 +3910,5 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
 	dev_info->hash_key_size = IXGBE_HKEY_MAX_INDEX * sizeof(uint32_t);
 	dev_info->reta_size = ixgbe_reta_size_get(hw->mac.type);
+	dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;
 
 	dev_info->default_rxconf = (struct rte_eth_rxconf) {
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.189774158 +0000
+++ 0018-net-ixgbe-fix-VF-RSS-offloads-configuration.patch	2019-11-22 14:36:55.187149500 +0000
@@ -1 +1 @@
-From 9594db99c73b62c398310d812726cc90889297af Mon Sep 17 00:00:00 2001
+From 5d24e09dc4267eb8a6c5f321740cac21ae55d750 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9594db99c73b62c398310d812726cc90889297af ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index e985053d6..7eb3d0567 100644
+index 1eb1315c9..16d68fb2a 100644
@@ -22 +23 @@
-@@ -3929,4 +3929,5 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
+@@ -3910,4 +3910,5 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,


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

* [dpdk-stable] patch 'net/virtio: remove remaining simple Tx related stuff' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (16 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix typo in virtio in-order Rx function name' " Kevin Traynor
                   ` (25 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 038f992817028b24cbfd3e676ec6d3d61b779d72 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Tue, 13 Aug 2019 10:07:25 +0800
Subject: [PATCH] net/virtio: remove remaining simple Tx related stuff

[ upstream commit 1d2aa48b876148715680c9a1d69c195a929bad14 ]

The simple Tx path in virtio has been removed in below commit.
This patch removes an undefined function declaration of simple
Tx and all related descriptions in the doc.

Fixes: 57f818963d80 ("net/virtio: remove simple Tx path")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 doc/guides/nics/virtio.rst         | 15 ++-------------
 drivers/net/virtio/virtio_ethdev.h |  3 ---
 2 files changed, 2 insertions(+), 16 deletions(-)

diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
index 2ae875cb4..da9cd6ba6 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -202,5 +202,5 @@ Virtio PMD Rx/Tx Callbacks
 --------------------------
 
-Virtio driver has 4 Rx callbacks and 3 Tx callbacks.
+Virtio driver has 4 Rx callbacks and 2 Tx callbacks.
 
 Rx callbacks:
@@ -224,7 +224,4 @@ Tx callbacks:
    Regular version.
 
-#. ``virtio_xmit_pkts_simple``:
-   Vector version fixes the available ring indexes to optimize performance.
-
 #. ``virtio_xmit_pkts_inorder``:
    In-order version.
@@ -240,10 +237,4 @@ By default, the non-vector callbacks are used:
 Vector callbacks will be used when:
 
-*   ``txmode.offloads`` is set to ``0x0``, which implies:
-
-    *   Single segment is specified.
-
-    *   No offload support is needed.
-
 *   Mergeable Rx buffers is disabled.
 
@@ -252,11 +243,9 @@ The corresponding callbacks are:
 *   For Rx: ``virtio_recv_pkts_vec``.
 
-*   For Tx: ``virtio_xmit_pkts_simple``.
-
 
 Example of using the vector version of the virtio poll mode driver in
 ``testpmd``::
 
-   testpmd -l 0-2 -n 4 -- -i --tx-offloads=0x0 --rxq=1 --txq=1 --nb-cores=1
+   testpmd -l 0-2 -n 4 -- -i --rxq=1 --txq=1 --nb-cores=1
 
 In-order callbacks only work on simulated virtio user vdev.
diff --git a/drivers/net/virtio/virtio_ethdev.h b/drivers/net/virtio/virtio_ethdev.h
index 8eb866073..758f2309e 100644
--- a/drivers/net/virtio/virtio_ethdev.h
+++ b/drivers/net/virtio/virtio_ethdev.h
@@ -95,7 +95,4 @@ uint16_t virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 		uint16_t nb_pkts);
 
-uint16_t virtio_xmit_pkts_simple(void *tx_queue, struct rte_mbuf **tx_pkts,
-		uint16_t nb_pkts);
-
 int eth_virtio_dev_init(struct rte_eth_dev *eth_dev);
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.247972042 +0000
+++ 0019-net-virtio-remove-remaining-simple-Tx-related-stuff.patch	2019-11-22 14:36:55.188149479 +0000
@@ -1 +1 @@
-From 1d2aa48b876148715680c9a1d69c195a929bad14 Mon Sep 17 00:00:00 2001
+From 038f992817028b24cbfd3e676ec6d3d61b779d72 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1d2aa48b876148715680c9a1d69c195a929bad14 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -64 +65 @@
-index 20d331795..a10111758 100644
+index 8eb866073..758f2309e 100644
@@ -67 +68 @@
-@@ -104,7 +104,4 @@ uint16_t virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -95,7 +95,4 @@ uint16_t virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,


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

* [dpdk-stable] patch 'doc: fix typo in virtio in-order Rx function name' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (17 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/virtio: remove remaining simple Tx related stuff' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " Kevin Traynor
                   ` (24 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From ef42cce19947f725f6e3439e7ae30e1fff1a447c Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Tue, 13 Aug 2019 10:07:26 +0800
Subject: [PATCH] doc: fix typo in virtio in-order Rx function name

[ upstream commit 3afba6e92e1797934181093879b2f4bd2f23ad1b ]

The Rx function that will be used when in-order is enabled
should be virtio_recv_mergeable_pkts_inorder() instead of
virtio_xmit_pkts_inorder().

Fixes: 8f3bd7e8702d ("net/virtio: add in-order Rx/Tx into selection")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 doc/guides/nics/virtio.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
index da9cd6ba6..08438d064 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -252,5 +252,5 @@ In-order callbacks only work on simulated virtio user vdev.
 
 *   For Rx: If mergeable Rx buffers is enabled and in-order is enabled then
-    ``virtio_xmit_pkts_inorder`` is used.
+    ``virtio_recv_mergeable_pkts_inorder`` is used.
 
 *   For Tx: If in-order is enabled then ``virtio_xmit_pkts_inorder`` is used.
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.308388879 +0000
+++ 0020-doc-fix-typo-in-virtio-in-order-Rx-function-name.patch	2019-11-22 14:36:55.189149457 +0000
@@ -1 +1 @@
-From 3afba6e92e1797934181093879b2f4bd2f23ad1b Mon Sep 17 00:00:00 2001
+From ef42cce19947f725f6e3439e7ae30e1fff1a447c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3afba6e92e1797934181093879b2f4bd2f23ad1b ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org


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

* [dpdk-stable] patch 'doc: fix format in virtio guide' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (18 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix typo in virtio in-order Rx function name' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'build: remove redundant libs from pkgconfig' " Kevin Traynor
                   ` (23 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From c705f5bf52fcb87fd4f6b54b6abce032d0989c72 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Tue, 13 Aug 2019 10:07:30 +0800
Subject: [PATCH] doc: fix format in virtio guide

[ upstream commit 2afa82430f0a60824fa4e0bf2a23191a5bc32a6d ]

This patch removes an unwanted empty line in a sentence.

Fixes: 71afcefbd53e ("doc: update virtio ring size and header size")

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 doc/guides/nics/virtio.rst | 1 -
 1 file changed, 1 deletion(-)

diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
index 08438d064..417cd9937 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -8,5 +8,4 @@ Virtio is a para-virtualization framework initiated by IBM, and supported by KVM
 In the Data Plane Development Kit (DPDK),
 we provide a virtio Poll Mode Driver (PMD) as a software solution, comparing to SRIOV hardware solution,
-
 for fast guest VM to guest VM communication and guest VM to host communication.
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.359120256 +0000
+++ 0021-doc-fix-format-in-virtio-guide.patch	2019-11-22 14:36:55.190149436 +0000
@@ -1 +1 @@
-From 2afa82430f0a60824fa4e0bf2a23191a5bc32a6d Mon Sep 17 00:00:00 2001
+From c705f5bf52fcb87fd4f6b54b6abce032d0989c72 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2afa82430f0a60824fa4e0bf2a23191a5bc32a6d ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 011954ff6..bd0116176 100644
+index 08438d064..417cd9937 100644


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

* [dpdk-stable] patch 'build: remove redundant libs from pkgconfig' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (19 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix meson build with custom dependency path' " Kevin Traynor
                   ` (22 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Luca Boccassi, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From dc0b5308e3f03c6c2ffb92122e4a58610cc5fd5e Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 13 Aug 2019 01:03:53 +0200
Subject: [PATCH] build: remove redundant libs from pkgconfig

[ upstream commit 167d9c67975fb2207e03644ce7b5e23d56b73e70 ]

As explained in drivers/meson.build,
"
  For the find_library() case (but not with dependency()) we also
  need to specify the "-l" flags in pkgconfig_extra_libs variable
  too, so that it can be reflected in the pkgconfig output for
  static builds.
"

The commit e30b4e566f47 ("build: improve dependency handling")
must be followed up with this one in order to remove more
occurences of pkgconfig_extra_libs redundant with use of dependency().

Fixes: f1debd77efaf ("net/af_xdp: introduce AF_XDP PMD")
Fixes: 3c32e89f68e1 ("compress/isal: add skeleton ISA-L compression PMD")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Luca Boccassi <bluca@debian.org>
---
 drivers/compress/isal/meson.build | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/compress/isal/meson.build b/drivers/compress/isal/meson.build
index 94c10fd60..70eee68f7 100644
--- a/drivers/compress/isal/meson.build
+++ b/drivers/compress/isal/meson.build
@@ -10,5 +10,4 @@ deps += 'bus_vdev'
 sources = files('isal_compress_pmd.c', 'isal_compress_pmd_ops.c')
 ext_deps += dep
-pkgconfig_extra_libs += '-lisal'
 
 allow_experimental_apis = true
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.406503589 +0000
+++ 0022-build-remove-redundant-libs-from-pkgconfig.patch	2019-11-22 14:36:55.190149436 +0000
@@ -1 +1 @@
-From 167d9c67975fb2207e03644ce7b5e23d56b73e70 Mon Sep 17 00:00:00 2001
+From dc0b5308e3f03c6c2ffb92122e4a58610cc5fd5e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 167d9c67975fb2207e03644ce7b5e23d56b73e70 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -26,2 +27 @@
- drivers/net/af_xdp/meson.build    | 1 -
- 2 files changed, 2 deletions(-)
+ 1 file changed, 1 deletion(-)
@@ -30 +30 @@
-index 67b5c4aae..25578880d 100644
+index 94c10fd60..70eee68f7 100644
@@ -33 +33 @@
-@@ -11,5 +11,4 @@ deps += 'bus_vdev'
+@@ -10,5 +10,4 @@ deps += 'bus_vdev'
@@ -39,10 +38,0 @@
-diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build
-index ac679b92b..307aa0e38 100644
---- a/drivers/net/af_xdp/meson.build
-+++ b/drivers/net/af_xdp/meson.build
-@@ -11,5 +11,4 @@ endif
- if bpf_dep.found() and cc.has_header('bpf/xsk.h') and cc.has_header('linux/if_xdp.h')
- 	ext_deps += bpf_dep
--	pkgconfig_extra_libs += '-lbpf'
- else
- 	build = false


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

* [dpdk-stable] patch 'net/mlx: fix meson build with custom dependency path' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (20 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'build: remove redundant libs from pkgconfig' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " Kevin Traynor
                   ` (21 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Luca Boccassi, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From eadf2e59e4b2fee0af198aab2fd2d49961323d40 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 13 Aug 2019 01:03:55 +0200
Subject: [PATCH] net/mlx: fix meson build with custom dependency path

[ upstream commit de38dd8cf5e60d9d87eefe9f2cb60a35d4d86705 ]

If rdma-core is not installed in a standard directory of the system,
it is possible to specify the location of the pkgconfig file via
an environment variable:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:~/rdma-core/build/lib/pkgconfig

In this case, the dependency may become mandatory to specify
for the configuration tests (checking dependency symbols or fields).

Some spacing is also fixed around.

Fixes: 8e4937640022 ("net/mlx4: add external allocator for Verbs object")
Fixes: 1dd7c7e38c19 ("net/mlx4: support meson build")
Fixes: 96d7c62a70c7 ("net/mlx5: support meson build")

Suggested-by: Luca Boccassi <bluca@debian.org>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx4/meson.build | 6 +++---
 drivers/net/mlx5/meson.build | 7 ++++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/mlx4/meson.build b/drivers/net/mlx4/meson.build
index 7de571e2a..a416c68f3 100644
--- a/drivers/net/mlx4/meson.build
+++ b/drivers/net/mlx4/meson.build
@@ -65,5 +65,5 @@ if build
 	# input array for meson member search:
 	# [ "MACRO to define if found", "header for the search",
-	#   "symbol to search","struct member to search" ]
+	#   "symbol to search", "struct member to search" ]
 	#
 	has_member_args = [
@@ -73,7 +73,7 @@ if build
 	config = configuration_data()
 	foreach arg:has_member_args
-		file_prefix = '#include<' + arg[1] + '>'
+		file_prefix = '#include <' + arg[1] + '>'
 		config.set(arg[0], cc.has_member(arg[2], arg[3],
-			prefix : file_prefix))
+			prefix: file_prefix, dependencies: libs))
 	endforeach
 	configure_file(output : 'mlx4_autoconf.h', configuration : config)
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index de0c32bcf..81965bddc 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -250,10 +250,11 @@ if build
 	config = configuration_data()
 	foreach arg:has_sym_args
-		config.set(arg[0], cc.has_header_symbol(arg[1], arg[2]))
+		config.set(arg[0], cc.has_header_symbol(arg[1], arg[2],
+			dependencies: libs))
 	endforeach
 	foreach arg:has_member_args
-		file_prefix = '#include<' + arg[1] + '>'
+		file_prefix = '#include <' + arg[1] + '>'
 		config.set(arg[0], cc.has_member(arg[2], arg[3],
-			prefix : file_prefix))
+			prefix : file_prefix, dependencies: libs))
 	endforeach
 	configure_file(output : 'mlx5_autoconf.h', configuration : config)
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.456686712 +0000
+++ 0023-net-mlx-fix-meson-build-with-custom-dependency-path.patch	2019-11-22 14:36:55.191149414 +0000
@@ -1 +1 @@
-From de38dd8cf5e60d9d87eefe9f2cb60a35d4d86705 Mon Sep 17 00:00:00 2001
+From eadf2e59e4b2fee0af198aab2fd2d49961323d40 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit de38dd8cf5e60d9d87eefe9f2cb60a35d4d86705 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
- drivers/net/mlx4/meson.build | 9 +++++----
+ drivers/net/mlx4/meson.build | 6 +++---
@@ -28 +29 @@
- 2 files changed, 9 insertions(+), 7 deletions(-)
+ 2 files changed, 7 insertions(+), 6 deletions(-)
@@ -31 +32 @@
-index 028cd97fa..efee45776 100644
+index 7de571e2a..a416c68f3 100644
@@ -34 +35 @@
-@@ -77,5 +77,5 @@ if build
+@@ -65,5 +65,5 @@ if build
@@ -41 +42 @@
-@@ -94,10 +94,11 @@ if build
+@@ -73,7 +73,7 @@ if build
@@ -43,5 +43,0 @@
- 	foreach arg:has_sym_args
--		config.set(arg[0], cc.has_header_symbol(arg[1], arg[2]))
-+		config.set(arg[0], cc.has_header_symbol(arg[1], arg[2],
-+			dependencies: libs))
- 	endforeach
@@ -57 +53 @@
-index 62b41caf1..3c5144c9b 100644
+index de0c32bcf..81965bddc 100644
@@ -60 +56 @@
-@@ -178,10 +178,11 @@ if build
+@@ -250,10 +250,11 @@ if build


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

* [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (21 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix meson build with custom dependency path' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " Kevin Traynor
                   ` (20 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Luca Boccassi, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From d0690d9eeb8a85fe0db5231c7d66dabe80f3faf0 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 13 Aug 2019 01:03:56 +0200
Subject: [PATCH] net/mlx: fix build with make and recent gcc

[ upstream commit b38a54aeb16cb36e42d638c4335b8314aa0b1794 ]

With VERBOSE=1, this error was seen in debug mode with gcc 9.1:

In file included from /tmp/dpdk.auto-config-h.sh.c.w0VWMi:1:
In file included from rdma-core/build/include/infiniband/mlx5dv.h:47:
In file included from rdma-core/build/include/infiniband/verbs.h:46:
In file included from rdma-core/build/include/infiniband/verbs_api.h:66:
In file included from rdma-core/build/include/infiniband/ib_user_ioctl_verbs.h:38:
include/rdma/ib_user_verbs.h:161:28: fatal error:
zero size arrays are an extension [-Wzero-length-array]
__aligned_u64 driver_data0;
^
1 error generated.

As a result, buildtools/auto-config-h.sh was not generating
a correct autoconf file, so the compilation was generating such error:

fatal error: redefinition of 'mlx5_ib_uapi_flow_action_packet_reformat_type'

It is fixed by disabling -pedantic option when calling auto-config-h.sh
from the makefile-based system.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx4/Makefile | 3 ++-
 drivers/net/mlx5/Makefile | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
index 92e932250..df20c83d5 100644
--- a/drivers/net/mlx4/Makefile
+++ b/drivers/net/mlx4/Makefile
@@ -66,4 +66,5 @@ endif
 ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
 CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
@@ -75,5 +76,5 @@ include $(RTE_SDK)/mk/rte.lib.mk
 
 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
-export AUTO_CONFIG_CFLAGS = -Wno-error
+export AUTO_CONFIG_CFLAGS += -Wno-error
 
 ifndef V
diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index 63dfa45b2..3b2f626d4 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -84,4 +84,5 @@ endif
 ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y)
 CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
@@ -93,5 +94,5 @@ include $(RTE_SDK)/mk/rte.lib.mk
 
 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
-export AUTO_CONFIG_CFLAGS = -Wno-error
+export AUTO_CONFIG_CFLAGS += -Wno-error
 
 ifndef V
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.506383252 +0000
+++ 0024-net-mlx-fix-build-with-make-and-recent-gcc.patch	2019-11-22 14:36:55.192149393 +0000
@@ -1 +1 @@
-From b38a54aeb16cb36e42d638c4335b8314aa0b1794 Mon Sep 17 00:00:00 2001
+From d0690d9eeb8a85fe0db5231c7d66dabe80f3faf0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b38a54aeb16cb36e42d638c4335b8314aa0b1794 ]
+
@@ -27,2 +28,0 @@
-Cc: stable@dpdk.org
-
@@ -38 +38 @@
-index 8126b0dfc..25d7c7555 100644
+index 92e932250..df20c83d5 100644
@@ -41 +41 @@
-@@ -69,4 +69,5 @@ endif
+@@ -66,4 +66,5 @@ endif
@@ -47 +47 @@
-@@ -78,5 +79,5 @@ include $(RTE_SDK)/mk/rte.lib.mk
+@@ -75,5 +76,5 @@ include $(RTE_SDK)/mk/rte.lib.mk
@@ -55 +55 @@
-index dbb2a4e80..299cf3afe 100644
+index 63dfa45b2..3b2f626d4 100644


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

* [dpdk-stable] patch 'test/interrupt: account for race with callback' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (22 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " Kevin Traynor
                   ` (19 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Aaron Conole; +Cc: David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From a9a4cf75229f132db7280e8441d6293a39de43d7 Mon Sep 17 00:00:00 2001
From: Aaron Conole <aconole@redhat.com>
Date: Thu, 8 Aug 2019 13:38:35 -0400
Subject: [PATCH] test/interrupt: account for race with callback

[ upstream commit 73afc9df00d8ba4ff58d4a7a86691ca10520d462 ]

Because the eal interrupt framework can race when invoking the callback
and a separate unregister call, the test needs to accommodate the chance
that the two collide.  Do this by checking the return value of unregister
against the race-condition flag (EAGAIN).

Fixes: f1a6c22424ce ("app/test: update interrupts test")

Signed-off-by: Aaron Conole <aconole@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
 test/test/test_interrupts.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/test/test/test_interrupts.c b/test/test/test_interrupts.c
index 4e82e9a22..32ef0a208 100644
--- a/test/test/test_interrupts.c
+++ b/test/test/test_interrupts.c
@@ -371,7 +371,11 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type)
 
 	rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
-	if (rte_intr_callback_unregister(&test_intr_handle,
-			test_interrupt_callback, &test_intr_handle) < 0)
-		return -1;
+	while ((count =
+		rte_intr_callback_unregister(&test_intr_handle,
+					     test_interrupt_callback,
+					     &test_intr_handle)) < 0) {
+		if (count != -EAGAIN)
+			return -1;
+	}
 
 	if (flag == 0) {
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.565927899 +0000
+++ 0025-test-interrupt-account-for-race-with-callback.patch	2019-11-22 14:36:55.193149372 +0000
@@ -1 +1 @@
-From 73afc9df00d8ba4ff58d4a7a86691ca10520d462 Mon Sep 17 00:00:00 2001
+From a9a4cf75229f132db7280e8441d6293a39de43d7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 73afc9df00d8ba4ff58d4a7a86691ca10520d462 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- app/test/test_interrupts.c | 10 +++++++---
+ test/test/test_interrupts.c | 10 +++++++---
@@ -20,4 +21,4 @@
-diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
-index d8c2d8124..233b14a70 100644
---- a/app/test/test_interrupts.c
-+++ b/app/test/test_interrupts.c
+diff --git a/test/test/test_interrupts.c b/test/test/test_interrupts.c
+index 4e82e9a22..32ef0a208 100644
+--- a/test/test/test_interrupts.c
++++ b/test/test/test_interrupts.c


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

* [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (23 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix unchecked return value' " Kevin Traynor
                   ` (18 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From a87111e546a52f567b0bc9df129d89f4738e2932 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 13 Aug 2019 08:38:22 -0700
Subject: [PATCH] bus/pci: fix Intel IOMMU sysfs access check

[ upstream commit 2e8d5cf7631cbc5efb4b3abf7393d2526dee0424 ]

Just open the sysfs file and handle failure, rather than using access().
This eliminates Coverity warnings about TOCTOU
"time of check versus time of use"; although for this sysfs file that is
not really an issue anyway.

Coverity issue: 347276
Fixes: 54a328f552ff ("bus/pci: forbid IOVA mode if IOMMU address width too small")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
 drivers/bus/pci/linux/pci.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index 74794a3ba..9b1c7c839 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -593,16 +593,17 @@ pci_one_device_iommu_support_va(struct rte_pci_device *dev)
 		 rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
 		 addr->function);
-	if (access(filename, F_OK) == -1) {
-		/* We don't have an Intel IOMMU, assume VA supported*/
-		return true;
-	}
 
-	/* We have an intel IOMMU */
 	fp = fopen(filename, "r");
 	if (fp == NULL) {
-		RTE_LOG(ERR, EAL, "%s(): can't open %s\n", __func__, filename);
+		/* We don't have an Intel IOMMU, assume VA supported */
+		if (errno == ENOENT)
+			return true;
+
+		RTE_LOG(ERR, EAL, "%s(): can't open %s: %s\n",
+			__func__, filename, strerror(errno));
 		return false;
 	}
 
+	/* We have an Intel IOMMU */
 	if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) {
 		RTE_LOG(ERR, EAL, "%s(): can't read %s\n", __func__, filename);
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.618889629 +0000
+++ 0026-bus-pci-fix-Intel-IOMMU-sysfs-access-check.patch	2019-11-22 14:36:55.194149350 +0000
@@ -1 +1 @@
-From 2e8d5cf7631cbc5efb4b3abf7393d2526dee0424 Mon Sep 17 00:00:00 2001
+From a87111e546a52f567b0bc9df129d89f4738e2932 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2e8d5cf7631cbc5efb4b3abf7393d2526dee0424 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 1ac2bff77..318db1953 100644
+index 74794a3ba..9b1c7c839 100644
@@ -25 +26 @@
-@@ -512,16 +512,17 @@ pci_device_iommu_support_va(const struct rte_pci_device *dev)
+@@ -593,16 +593,17 @@ pci_one_device_iommu_support_va(struct rte_pci_device *dev)


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

* [dpdk-stable] patch 'examples/ipsec-secgw: fix unchecked return value' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (24 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix access to freed packet' " Kevin Traynor
                   ` (17 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Bernard Iremonger; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 03f8a9270eb03b0706a4cc151a847064f5678533 Mon Sep 17 00:00:00 2001
From: Bernard Iremonger <bernard.iremonger@intel.com>
Date: Wed, 7 Aug 2019 13:30:12 +0100
Subject: [PATCH] examples/ipsec-secgw: fix unchecked return value

[ upstream commit 23742f21f74a9d8380367c39b8ee4561e6dd1526 ]

Check the return value of the rte_eth_dev_rss_hash_conf_get function.

Coverity issue: 344970
Fixes: 3a690d5a65e2 ("examples/ipsec-secgw: fix first packet with inline crypto")

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 examples/ipsec-secgw/ipsec.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c
index 872a8b819..0f94a76a9 100644
--- a/examples/ipsec-secgw/ipsec.c
+++ b/examples/ipsec-secgw/ipsec.c
@@ -201,6 +201,12 @@ create_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa)
 				sa->action[1].type = RTE_FLOW_ACTION_TYPE_RSS;
 				sa->action[1].conf = &action_rss;
-				rte_eth_dev_rss_hash_conf_get(sa->portid,
+				ret = rte_eth_dev_rss_hash_conf_get(sa->portid,
 							      &rss_conf);
+				if (ret != 0) {
+					RTE_LOG(ERR, IPSEC,
+						"rte_eth_dev_rss_hash_conf_get:ret=%d\n",
+						ret);
+					return -1;
+				}
 				for (i = 0, j = 0;
 				     i < dev_info.nb_rx_queues; ++i)
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.667222285 +0000
+++ 0027-examples-ipsec-secgw-fix-unchecked-return-value.patch	2019-11-22 14:36:55.195149329 +0000
@@ -1 +1 @@
-From 23742f21f74a9d8380367c39b8ee4561e6dd1526 Mon Sep 17 00:00:00 2001
+From 03f8a9270eb03b0706a4cc151a847064f5678533 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 23742f21f74a9d8380367c39b8ee4561e6dd1526 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -15,2 +16,2 @@
- examples/ipsec-secgw/ipsec.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
+ examples/ipsec-secgw/ipsec.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
@@ -19 +20 @@
-index dc85adfe5..5f9d560dd 100644
+index 872a8b819..0f94a76a9 100644
@@ -22,14 +23,14 @@
-@@ -249,5 +249,12 @@ create_inline_session(struct socket_ctx *skt_ctx, struct ipsec_sa *sa)
- 			sa->action[1].type = RTE_FLOW_ACTION_TYPE_RSS;
- 			sa->action[1].conf = &action_rss;
--			rte_eth_dev_rss_hash_conf_get(sa->portid, &rss_conf);
-+			ret = rte_eth_dev_rss_hash_conf_get(sa->portid,
-+					&rss_conf);
-+			if (ret != 0) {
-+				RTE_LOG(ERR, IPSEC,
-+					"rte_eth_dev_rss_hash_conf_get:ret=%d\n",
-+					ret);
-+				return -1;
-+			}
- 			for (i = 0, j = 0; i < dev_info.nb_rx_queues; ++i)
- 				queue[j++] = i;
+@@ -201,6 +201,12 @@ create_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa)
+ 				sa->action[1].type = RTE_FLOW_ACTION_TYPE_RSS;
+ 				sa->action[1].conf = &action_rss;
+-				rte_eth_dev_rss_hash_conf_get(sa->portid,
++				ret = rte_eth_dev_rss_hash_conf_get(sa->portid,
+ 							      &rss_conf);
++				if (ret != 0) {
++					RTE_LOG(ERR, IPSEC,
++						"rte_eth_dev_rss_hash_conf_get:ret=%d\n",
++						ret);
++					return -1;
++				}
+ 				for (i = 0, j = 0;
+ 				     i < dev_info.nb_rx_queues; ++i)


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

* [dpdk-stable] patch 'examples/ipsec-secgw: fix access to freed packet' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (25 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix unchecked return value' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'security: fix doxygen fields' " Kevin Traynor
                   ` (16 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Anoob Joseph; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 7824c471ad33c02eb1c85c63880e699bb20ca2c9 Mon Sep 17 00:00:00 2001
From: Anoob Joseph <anoobj@marvell.com>
Date: Thu, 22 Aug 2019 13:58:55 +0530
Subject: [PATCH] examples/ipsec-secgw: fix access to freed packet

[ upstream commit 1f868d90241cc6be2b378faa9dd43002b218226a ]

For unknown/unsupported packets, the packet would get checked for inline
offloads after the packet is freed.

Fixes: 0ccfd14bc10d ("examples/ipsec-secgw: support inline protocol")

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 examples/ipsec-secgw/ipsec-secgw.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index dfb93375a..c55606e07 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -259,4 +259,5 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)
 			rte_be_to_cpu_16(eth->ether_type));
 		rte_pktmbuf_free(pkt);
+		return;
 	}
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.719220771 +0000
+++ 0028-examples-ipsec-secgw-fix-access-to-freed-packet.patch	2019-11-22 14:36:55.197149286 +0000
@@ -1 +1 @@
-From 1f868d90241cc6be2b378faa9dd43002b218226a Mon Sep 17 00:00:00 2001
+From 7824c471ad33c02eb1c85c63880e699bb20ca2c9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1f868d90241cc6be2b378faa9dd43002b218226a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 0d1fd6af6..fcd656b04 100644
+index dfb93375a..c55606e07 100644
@@ -22 +23 @@
-@@ -354,4 +354,5 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)
+@@ -259,4 +259,5 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)


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

* [dpdk-stable] patch 'security: fix doxygen fields' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (26 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix access to freed packet' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " Kevin Traynor
                   ` (15 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Radu Nicolau; +Cc: Akhil Goyal, Anoob Joseph, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 6e8289a7d814b23aee84972279b16978d8b524db Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Wed, 4 Sep 2019 12:03:11 +0100
Subject: [PATCH] security: fix doxygen fields

[ upstream commit 382df9dfb6a8449b595e80d7ec391f90e3420d15 ]

Replace /**< with /** for multiline doxygen comments.

Fixes: c261d1431bd8 ("security: introduce security API and framework")

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
---
 lib/librte_security/rte_security.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/librte_security/rte_security.h b/lib/librte_security/rte_security.h
index 7e6ced4e4..ad7898c72 100644
--- a/lib/librte_security/rte_security.h
+++ b/lib/librte_security/rte_security.h
@@ -116,5 +116,5 @@ struct rte_security_ipsec_tunnel_param {
  */
 struct rte_security_ipsec_sa_options {
-	/**< Extended Sequence Numbers (ESN)
+	/** Extended Sequence Numbers (ESN)
 	 *
 	 * * 1: Use extended (64 bit) sequence numbers
@@ -123,5 +123,5 @@ struct rte_security_ipsec_sa_options {
 	uint32_t esn : 1;
 
-	/**< UDP encapsulation
+	/** UDP encapsulation
 	 *
 	 * * 1: Do UDP encapsulation/decapsulation so that IPSEC packets can
@@ -131,5 +131,5 @@ struct rte_security_ipsec_sa_options {
 	uint32_t udp_encap : 1;
 
-	/**< Copy DSCP bits
+	/** Copy DSCP bits
 	 *
 	 * * 1: Copy IPv4 or IPv6 DSCP bits from inner IP header to
@@ -140,5 +140,5 @@ struct rte_security_ipsec_sa_options {
 	uint32_t copy_dscp : 1;
 
-	/**< Copy IPv6 Flow Label
+	/** Copy IPv6 Flow Label
 	 *
 	 * * 1: Copy IPv6 flow label from inner IPv6 header to the
@@ -148,5 +148,5 @@ struct rte_security_ipsec_sa_options {
 	uint32_t copy_flabel : 1;
 
-	/**< Copy IPv4 Don't Fragment bit
+	/** Copy IPv4 Don't Fragment bit
 	 *
 	 * * 1: Copy the DF bit from the inner IPv4 header to the outer
@@ -156,5 +156,5 @@ struct rte_security_ipsec_sa_options {
 	uint32_t copy_df : 1;
 
-	/**< Decrement inner packet Time To Live (TTL) field
+	/** Decrement inner packet Time To Live (TTL) field
 	 *
 	 * * 1: In tunnel mode, decrement inner packet IPv4 TTL or
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.769642871 +0000
+++ 0029-security-fix-doxygen-fields.patch	2019-11-22 14:36:55.198149265 +0000
@@ -1 +1 @@
-From 382df9dfb6a8449b595e80d7ec391f90e3420d15 Mon Sep 17 00:00:00 2001
+From 6e8289a7d814b23aee84972279b16978d8b524db Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 382df9dfb6a8449b595e80d7ec391f90e3420d15 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -15,2 +16,2 @@
- lib/librte_security/rte_security.h | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ lib/librte_security/rte_security.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
@@ -19 +20 @@
-index 242c908d1..2d064f4d0 100644
+index 7e6ced4e4..ad7898c72 100644
@@ -64,7 +64,0 @@
-@@ -165,5 +165,5 @@ struct rte_security_ipsec_sa_options {
- 	uint32_t dec_ttl : 1;
- 
--	/**< Explicit Congestion Notification (ECN)
-+	/** Explicit Congestion Notification (ECN)
- 	 *
- 	 * * 1: In tunnel mode, enable outer header ECN Field copied from


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

* [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (27 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'security: fix doxygen fields' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/dpaa_sec: fix IOVA table' " Kevin Traynor
                   ` (14 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Fiona Trahe; +Cc: Arek Kusztal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From cde0c9ce68d3a5975a57ef09a28252c44cfe4ac6 Mon Sep 17 00:00:00 2001
From: Fiona Trahe <fiona.trahe@intel.com>
Date: Tue, 10 Sep 2019 17:32:10 +0100
Subject: [PATCH] crypto/qat: fix digest length in XCBC capability

[ upstream commit 0996ed0d5ad65b6419e3ce66a420199c3ed45ca9 ]

Digest length in RTE_CRYPTO_AUTH_AES_XCBC_MAC capability
was incorrectly marked 16 bytes, should be 12.

Fixes: 6a3c87bc6a6c ("crypto/qat: refactor capabilities infrastructure")

Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
---
 drivers/crypto/qat/qat_sym_capabilities.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/qat/qat_sym_capabilities.h b/drivers/crypto/qat/qat_sym_capabilities.h
index 7cba87d69..d1f82c073 100644
--- a/drivers/crypto/qat/qat_sym_capabilities.h
+++ b/drivers/crypto/qat/qat_sym_capabilities.h
@@ -146,6 +146,6 @@
 				},					\
 				.digest_size = {			\
-					.min = 16,			\
-					.max = 16,			\
+					.min = 12,			\
+					.max = 12,			\
 					.increment = 0			\
 				},					\
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.819791784 +0000
+++ 0030-crypto-qat-fix-digest-length-in-XCBC-capability.patch	2019-11-22 14:36:55.198149265 +0000
@@ -1 +1 @@
-From 0996ed0d5ad65b6419e3ce66a420199c3ed45ca9 Mon Sep 17 00:00:00 2001
+From cde0c9ce68d3a5975a57ef09a28252c44cfe4ac6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0996ed0d5ad65b6419e3ce66a420199c3ed45ca9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 6df12b944..a7fb6a0da 100644
+index 7cba87d69..d1f82c073 100644


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

* [dpdk-stable] patch 'crypto/dpaa_sec: fix IOVA table' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (28 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/octeontx: enable unbinding' " Kevin Traynor
                   ` (13 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: Hemant Agrawal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 88696d511ff6edafe41bc74aa1d1de3e917986d6 Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Thu, 12 Sep 2019 10:38:21 +0200
Subject: [PATCH] crypto/dpaa_sec: fix IOVA table

[ upstream commit 12e5842945bf6debe431adbdbefd9a5a53c72003 ]

dpaa_sec needs translations between physical and virtual addresses.
V to P translation is relatively fast, as memory is managed in
contiguous segments.

The result of each V to P translation is used to update the DPAA iova
table, which should be updated by a Mem event callback, but is not.
Then the DPAA iova table has entries for all needed memory ranges.

With this patch, dpaa_mem_ptov will always use dpaax_iova_table_get_va,
which ensures optimal performance.

Fixes: 5a7dbb934d75 ("dpaa: enable dpaax library")

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/crypto/dpaa_sec/dpaa_sec.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c
index 742e24c52..c0602ce39 100644
--- a/drivers/crypto/dpaa_sec/dpaa_sec.c
+++ b/drivers/crypto/dpaa_sec/dpaa_sec.c
@@ -38,4 +38,5 @@
 #include <dpaa_sec.h>
 #include <dpaa_sec_log.h>
+#include <dpaax_iova_table.h>
 
 enum rta_sec_era rta_sec_era;
@@ -100,6 +101,8 @@ dpaa_mem_vtop(void *vaddr)
 
 	ms = rte_mem_virt2memseg(vaddr, NULL);
-	if (ms)
+	if (ms) {
+		dpaax_iova_table_update(ms->iova, ms->addr, ms->len);
 		return ms->iova + RTE_PTR_DIFF(vaddr, ms->addr);
+	}
 	return (size_t)NULL;
 }
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.868827379 +0000
+++ 0031-crypto-dpaa_sec-fix-IOVA-table.patch	2019-11-22 14:36:55.201149201 +0000
@@ -1 +1 @@
-From 12e5842945bf6debe431adbdbefd9a5a53c72003 Mon Sep 17 00:00:00 2001
+From 88696d511ff6edafe41bc74aa1d1de3e917986d6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 12e5842945bf6debe431adbdbefd9a5a53c72003 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index fd5b24840..39c9271ff 100644
+index 742e24c52..c0602ce39 100644
@@ -30 +31 @@
-@@ -39,4 +39,5 @@
+@@ -38,4 +38,5 @@
@@ -36 +37 @@
-@@ -101,6 +102,8 @@ dpaa_mem_vtop(void *vaddr)
+@@ -100,6 +101,8 @@ dpaa_mem_vtop(void *vaddr)


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

* [dpdk-stable] patch 'crypto/octeontx: enable unbinding' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (29 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/dpaa_sec: fix IOVA table' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " Kevin Traynor
                   ` (12 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: Anoob Joseph, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From c17bff13a741be46a107b78784b006dba544eaea Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Fri, 13 Sep 2019 08:40:03 +0200
Subject: [PATCH] crypto/octeontx: enable unbinding

[ upstream commit 1378ddce50eaa482891fcb7ee28c5a9248335bc6 ]

Like for Ethernet ports, the OCTEON TX crypto engines must
first be unbound from their kernel module, then rebound to
vfio-pci, before being used in DPDK.

As this capability is detected at runtime by dpdk-pmdinfo,
add the info in the PMD registering directives.

Then an external script can be used for bind and unbind.

Fixes: bfe2ae495ee2 ("crypto/octeontx: add PMD skeleton")

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
---
 drivers/crypto/octeontx/otx_cryptodev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/crypto/octeontx/otx_cryptodev.c b/drivers/crypto/octeontx/otx_cryptodev.c
index b201e0a1b..c3076487f 100644
--- a/drivers/crypto/octeontx/otx_cryptodev.c
+++ b/drivers/crypto/octeontx/otx_cryptodev.c
@@ -122,4 +122,5 @@ static struct cryptodev_driver otx_cryptodev_drv;
 RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_OCTEONTX_PMD, otx_cryptodev_pmd);
 RTE_PMD_REGISTER_PCI_TABLE(CRYPTODEV_NAME_OCTEONTX_PMD, pci_id_cpt_table);
+RTE_PMD_REGISTER_KMOD_DEP(CRYPTODEV_NAME_OCTEONTX_PMD, "vfio-pci");
 RTE_PMD_REGISTER_CRYPTO_DRIVER(otx_cryptodev_drv, otx_cryptodev_pmd.driver,
 		otx_cryptodev_driver_id);
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.922083008 +0000
+++ 0032-crypto-octeontx-enable-unbinding.patch	2019-11-22 14:36:55.201149201 +0000
@@ -1 +1 @@
-From 1378ddce50eaa482891fcb7ee28c5a9248335bc6 Mon Sep 17 00:00:00 2001
+From c17bff13a741be46a107b78784b006dba544eaea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1378ddce50eaa482891fcb7ee28c5a9248335bc6 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index fc64a5f30..8df4b710c 100644
+index b201e0a1b..c3076487f 100644
@@ -28 +29 @@
-@@ -119,4 +119,5 @@ static struct cryptodev_driver otx_cryptodev_drv;
+@@ -122,4 +122,5 @@ static struct cryptodev_driver otx_cryptodev_drv;


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

* [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (30 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/octeontx: enable unbinding' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/fips_validation: fix null dereferences' " Kevin Traynor
                   ` (11 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Fan Zhang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 327f9e3917f3928530911d1cb3552d7c7b20ab38 Mon Sep 17 00:00:00 2001
From: Fan Zhang <roy.fan.zhang@intel.com>
Date: Tue, 17 Sep 2019 13:06:46 +0100
Subject: [PATCH] doc: fix AESNI-GCM limitations in crypto guide

[ upstream commit 185059c0f3ebdf396aa12877689e51880d47027e ]

This patch fixes the aesni-gcm cryptodev documentation by
filling the lacked unsupported chained mbuf description.

Fixes: 6f16aab09a91 ("crypto/aesni_gcm: migrate to Multi-buffer library")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
---
 doc/guides/cryptodevs/aesni_gcm.rst | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/guides/cryptodevs/aesni_gcm.rst b/doc/guides/cryptodevs/aesni_gcm.rst
index e0346080a..fb74179b8 100644
--- a/doc/guides/cryptodevs/aesni_gcm.rst
+++ b/doc/guides/cryptodevs/aesni_gcm.rst
@@ -23,9 +23,10 @@ AEAD algorithms:
 * RTE_CRYPTO_AEAD_AES_GCM
 
-
 Limitations
 -----------
 
 * Chained mbufs are supported but only out-of-place (destination mbuf must be contiguous).
+* Chained mbufs are only supported by RTE_CRYPTO_AEAD_AES_GCM algorithm,
+  not RTE_CRYPTO_AUTH_AES_GMAC.
 * Cipher only is not supported.
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:56.973036287 +0000
+++ 0033-doc-fix-AESNI-GCM-limitations-in-crypto-guide.patch	2019-11-22 14:36:55.202149179 +0000
@@ -1 +1 @@
-From 185059c0f3ebdf396aa12877689e51880d47027e Mon Sep 17 00:00:00 2001
+From 327f9e3917f3928530911d1cb3552d7c7b20ab38 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 185059c0f3ebdf396aa12877689e51880d47027e ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 9a8bc9323..15002aba7 100644
+index e0346080a..fb74179b8 100644


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

* [dpdk-stable] patch 'examples/fips_validation: fix null dereferences' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (31 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " Kevin Traynor
                   ` (10 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Chaitanya Babu Talluri; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 516d5762d5dc008885d084d659c6b62d86f50cbe Mon Sep 17 00:00:00 2001
From: Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>
Date: Wed, 25 Sep 2019 07:31:34 +0100
Subject: [PATCH] examples/fips_validation: fix null dereferences

[ upstream commit 75b3dddf95ea0d5a1356115f748e1cc43de67886 ]

One issue caught by Coverity 343408
*deref_parm: Directly dereferencing parameter val->val.

In writeback_tdes_hex_str(), tmp_val is initialised to null.
tmp_val.val is updated only if keys are found.
If keys are not found,it doesn't fails but continues
to invoke writeback_hex_str(),where val->val is accessed
without null check.

The fix is to return the error,
if keys are not found in writeback_tdes_hex_str().

Coverity issue: 343408
Fixes: 527cbf3d5e ("examples/fips_validation: support TDES parsing")

Signed-off-by: Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 examples/fips_validation/fips_validation_tdes.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/examples/fips_validation/fips_validation_tdes.c b/examples/fips_validation/fips_validation_tdes.c
index 15ee434e1..2b262c9a0 100644
--- a/examples/fips_validation/fips_validation_tdes.c
+++ b/examples/fips_validation/fips_validation_tdes.c
@@ -213,4 +213,6 @@ writeback_tdes_hex_str(const char *key, char *dst, struct fips_val *val)
 	else if (strstr(key, KEY3_STR))
 		tmp_val.val = val->val + 16;
+	else
+		return -EINVAL;
 
 	return writeback_hex_str(key, dst, &tmp_val);
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.022847702 +0000
+++ 0034-examples-fips_validation-fix-null-dereferences.patch	2019-11-22 14:36:55.202149179 +0000
@@ -1 +1 @@
-From 75b3dddf95ea0d5a1356115f748e1cc43de67886 Mon Sep 17 00:00:00 2001
+From 516d5762d5dc008885d084d659c6b62d86f50cbe Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 75b3dddf95ea0d5a1356115f748e1cc43de67886 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org


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

* [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (32 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'examples/fips_validation: fix null dereferences' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " Kevin Traynor
                   ` (9 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Julien Meunier; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 8dec9eab6ac4eca67cb8df2dcdd5a09eaf86bc8e Mon Sep 17 00:00:00 2001
From: Julien Meunier <julien.meunier@nokia.com>
Date: Wed, 7 Aug 2019 11:39:23 +0300
Subject: [PATCH] cryptodev: fix initialization on multi-process

[ upstream commit 1a60db7f354a52add0c1ea66e55ba7beba1a9716 ]

Primary process is responsible to initialize the data struct of each
crypto devices.

Secondary process should not override this data during the
initialization.

Fixes: d11b0f30df88 ("cryptodev: introduce API and framework for crypto devices")

Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 lib/librte_cryptodev/rte_cryptodev.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
index ff8520cf7..9c35e6d9c 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -685,10 +685,12 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
 		cryptodev->data = cryptodev_data;
 
-		snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
-				"%s", name);
+		if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+			snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
+					"%s", name);
 
-		cryptodev->data->dev_id = dev_id;
-		cryptodev->data->socket_id = socket_id;
-		cryptodev->data->dev_started = 0;
+			cryptodev->data->dev_id = dev_id;
+			cryptodev->data->socket_id = socket_id;
+			cryptodev->data->dev_started = 0;
+		}
 
 		/* init user callbacks */
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.075638984 +0000
+++ 0035-cryptodev-fix-initialization-on-multi-process.patch	2019-11-22 14:36:55.204149137 +0000
@@ -1 +1 @@
-From 1a60db7f354a52add0c1ea66e55ba7beba1a9716 Mon Sep 17 00:00:00 2001
+From 8dec9eab6ac4eca67cb8df2dcdd5a09eaf86bc8e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1a60db7f354a52add0c1ea66e55ba7beba1a9716 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 43bc335f5..b16ef7b2c 100644
+index ff8520cf7..9c35e6d9c 100644
@@ -25,2 +26,2 @@
-@@ -726,10 +726,12 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
- 		cryptodev->data = *cryptodev_data;
+@@ -685,10 +685,12 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
+ 		cryptodev->data = cryptodev_data;
@@ -28,2 +29,2 @@
--		strlcpy(cryptodev->data->name, name,
--			RTE_CRYPTODEV_NAME_MAX_LEN);
+-		snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
+-				"%s", name);
@@ -31,2 +32,2 @@
-+			strlcpy(cryptodev->data->name, name,
-+				RTE_CRYPTODEV_NAME_MAX_LEN);
++			snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
++					"%s", name);


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

* [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (33 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " Kevin Traynor
                   ` (8 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 581832663f2bb04c4eb46295febe520bf3464b2d Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Mon, 30 Sep 2019 09:51:44 +0200
Subject: [PATCH] drivers/crypto: remove some invalid comments

[ upstream commit 310d2ea6328c6146ccca6eac42426e060a99fedc ]

A comment valid in AESNI PMD was copied and pasted in other code

Fixes: 8a61c83af2fa ("crypto/mrvl: add mrvl crypto driver")
Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors")
Fixes: d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library")

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 drivers/crypto/armv8/rte_armv8_pmd.c     | 1 -
 drivers/crypto/mvsam/rte_mrvl_pmd.c      | 1 -
 drivers/crypto/openssl/rte_openssl_pmd.c | 1 -
 3 files changed, 3 deletions(-)

diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c
index 9d15fee53..42b4795c7 100644
--- a/drivers/crypto/armv8/rte_armv8_pmd.c
+++ b/drivers/crypto/armv8/rte_armv8_pmd.c
@@ -776,5 +776,4 @@ cryptodev_armv8_crypto_create(const char *name,
 			RTE_CRYPTODEV_FF_CPU_ARM_CE;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
diff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c b/drivers/crypto/mvsam/rte_mrvl_pmd.c
index c2ae82a26..41301d7ec 100644
--- a/drivers/crypto/mvsam/rte_mrvl_pmd.c
+++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c
@@ -787,5 +787,4 @@ cryptodev_mrvl_crypto_create(const char *name,
 			RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 29f4ed6a0..406e6211f 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -2126,5 +2126,4 @@ cryptodev_openssl_create(const char *name,
 			RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.124545779 +0000
+++ 0036-drivers-crypto-remove-some-invalid-comments.patch	2019-11-22 14:36:55.207149073 +0000
@@ -1 +1 @@
-From 310d2ea6328c6146ccca6eac42426e060a99fedc Mon Sep 17 00:00:00 2001
+From 581832663f2bb04c4eb46295febe520bf3464b2d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 310d2ea6328c6146ccca6eac42426e060a99fedc ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 0d4649adc..711701a97 100644
+index 9d15fee53..42b4795c7 100644
@@ -25 +26 @@
-@@ -778,5 +778,4 @@ cryptodev_armv8_crypto_create(const char *name,
+@@ -776,5 +776,4 @@ cryptodev_armv8_crypto_create(const char *name,
@@ -32 +33 @@
-index ef2e5ed00..0aafcc150 100644
+index c2ae82a26..41301d7ec 100644
@@ -35 +36 @@
-@@ -822,5 +822,4 @@ cryptodev_mrvl_crypto_create(const char *name,
+@@ -787,5 +787,4 @@ cryptodev_mrvl_crypto_create(const char *name,
@@ -42 +43 @@
-index 2f5552840..b05f6adb9 100644
+index 29f4ed6a0..406e6211f 100644
@@ -45,2 +46,2 @@
-@@ -2128,5 +2128,4 @@ cryptodev_openssl_create(const char *name,
- 			RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT;
+@@ -2126,5 +2126,4 @@ cryptodev_openssl_create(const char *name,
+ 			RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO;


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

* [dpdk-stable] patch 'net/i40e: downgrade error log' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (34 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " Kevin Traynor
                   ` (7 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Eelco Chaudron; +Cc: David Marchand, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From f4aa2636a30b5c6e0cce7c361b21215996f6c795 Mon Sep 17 00:00:00 2001
From: Eelco Chaudron <echaudro@redhat.com>
Date: Thu, 12 Sep 2019 06:38:35 -0400
Subject: [PATCH] net/i40e: downgrade error log

[ upstream commit 9763595925aa0488392035dbb15522dc2200c6d4 ]

When receiving the unsupported AQ messages, it's taken as an
error. It's not appropriate and triggers too much unnecessary print.

This commit is similar to
commit e130425300b0 ("net/i40e: downgrade unnecessary error log")
which made the same change for the PF instance.

Fixes: ae19955e7c86 ("i40evf: support reporting PF reset")

Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 0f7aa5a72..4f6a1975f 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1360,5 +1360,5 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)
 			break;
 		default:
-			PMD_DRV_LOG(ERR, "Request %u is not supported yet",
+			PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
 				    aq_opc);
 			break;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.180092511 +0000
+++ 0037-net-i40e-downgrade-error-log.patch	2019-11-22 14:36:55.210149008 +0000
@@ -1 +1 @@
-From 9763595925aa0488392035dbb15522dc2200c6d4 Mon Sep 17 00:00:00 2001
+From f4aa2636a30b5c6e0cce7c361b21215996f6c795 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9763595925aa0488392035dbb15522dc2200c6d4 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index c77b30c54..7b1d485c6 100644
+index 0f7aa5a72..4f6a1975f 100644
@@ -27 +28 @@
-@@ -1412,5 +1412,5 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)
+@@ -1360,5 +1360,5 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)


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

* [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (35 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: refactor Rx and Tx queue setup' " Kevin Traynor
                   ` (6 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Phil Yang; +Cc: Gavin Hu, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From accb06f7dca969ee93204bd1d41f1214a5e604ca Mon Sep 17 00:00:00 2001
From: Phil Yang <phil.yang@arm.com>
Date: Thu, 5 Sep 2019 18:55:07 +0800
Subject: [PATCH] net/mlx5: fix Rx CQ doorbell synchronization on aarch64

[ upstream commit 94a24aaf6c5bd0a03c2828e7411d30a4fc0ac075 ]

The Rx completion queue doorbell field needs to be updated after
the last CQE decompressed. For the weaker memory model processors,
the compiler barrier is not sufficient to guarantee the order of
these operations, so use the coherent I/O memory barrier to make
sure these fields are updated in order.

Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM")

Suggested-by: Gavin Hu <gavin.hu@arm.com>
Signed-off-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
index b1e0e8f3d..cdf9c65f1 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
@@ -1015,5 +1015,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
 		}
 	}
-	rte_compiler_barrier();
+	rte_cio_wmb();
 	*rxq->cq_db = rte_cpu_to_be_32(rxq->cq_ci);
 	return rcvd_pkt;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.230925863 +0000
+++ 0038-net-mlx5-fix-Rx-CQ-doorbell-synchronization-on-aarch.patch	2019-11-22 14:36:55.211148987 +0000
@@ -1 +1 @@
-From 94a24aaf6c5bd0a03c2828e7411d30a4fc0ac075 Mon Sep 17 00:00:00 2001
+From accb06f7dca969ee93204bd1d41f1214a5e604ca Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 94a24aaf6c5bd0a03c2828e7411d30a4fc0ac075 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 99302869a..e914d017d 100644
+index b1e0e8f3d..cdf9c65f1 100644
@@ -27 +28 @@
-@@ -728,5 +728,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
+@@ -1015,5 +1015,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,


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

* [dpdk-stable] patch 'net/qede: refactor Rx and Tx queue setup' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (36 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix odd number of queues usage in 100G mode' " Kevin Traynor
                   ` (5 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 13b44f308adbfc118afec6f7329e1dcf6e6cd9e4 Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Thu, 12 Sep 2019 08:24:12 -0700
Subject: [PATCH] net/qede: refactor Rx and Tx queue setup

[ upstream commit 642f25da9c561f6e831cb5ea6f7d79c04d804081 ]

This patch refactors Rx and Tx queue setup flow required to allow
odd number of queues to be configured in next patch.

This is the first patch of the series required to fix an issue
where qede port initialization in ovs-dpdk fails due to 1 Rx/Tx queue
configuration. Detailed explanation is given in next patch.

Fixes: 2af14ca79c0a ("net/qede: support 100G")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/qede/qede_rxtx.c | 228 ++++++++++++++++++++++-------------
 1 file changed, 141 insertions(+), 87 deletions(-)

diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 03f7785b6..64fd9e063 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -125,34 +125,18 @@ qede_calc_rx_buf_size(struct rte_eth_dev *dev, uint16_t mbufsz,
 }
 
-int
-qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
-		    uint16_t nb_desc, unsigned int socket_id,
-		    __rte_unused const struct rte_eth_rxconf *rx_conf,
-		    struct rte_mempool *mp)
+static struct qede_rx_queue *
+qede_alloc_rx_queue_mem(struct rte_eth_dev *dev,
+			uint16_t queue_idx,
+			uint16_t nb_desc,
+			unsigned int socket_id,
+			struct rte_mempool *mp,
+			uint16_t bufsz)
 {
 	struct qede_dev *qdev = QEDE_INIT_QDEV(dev);
 	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
-	struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
 	struct qede_rx_queue *rxq;
-	uint16_t max_rx_pkt_len;
-	uint16_t bufsz;
 	size_t size;
 	int rc;
 
-	PMD_INIT_FUNC_TRACE(edev);
-
-	/* Note: Ring size/align is controlled by struct rte_eth_desc_lim */
-	if (!rte_is_power_of_2(nb_desc)) {
-		DP_ERR(edev, "Ring size %u is not power of 2\n",
-			  nb_desc);
-		return -EINVAL;
-	}
-
-	/* Free memory prior to re-allocation if needed... */
-	if (dev->data->rx_queues[queue_idx] != NULL) {
-		qede_rx_queue_release(dev->data->rx_queues[queue_idx]);
-		dev->data->rx_queues[queue_idx] = NULL;
-	}
-
 	/* First allocate the rx queue data structure */
 	rxq = rte_zmalloc_socket("qede_rx_queue", sizeof(struct qede_rx_queue),
@@ -162,5 +146,5 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 		DP_ERR(edev, "Unable to allocate memory for rxq on socket %u",
 			  socket_id);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -171,25 +155,6 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 	rxq->port_id = dev->data->port_id;
 
-	max_rx_pkt_len = (uint16_t)rxmode->max_rx_pkt_len;
 
-	/* Fix up RX buffer size */
-	bufsz = (uint16_t)rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM;
-	/* cache align the mbuf size to simplfy rx_buf_size calculation */
-	bufsz = QEDE_FLOOR_TO_CACHE_LINE_SIZE(bufsz);
-	if ((rxmode->offloads & DEV_RX_OFFLOAD_SCATTER)	||
-	    (max_rx_pkt_len + QEDE_ETH_OVERHEAD) > bufsz) {
-		if (!dev->data->scattered_rx) {
-			DP_INFO(edev, "Forcing scatter-gather mode\n");
-			dev->data->scattered_rx = 1;
-		}
-	}
-
-	rc = qede_calc_rx_buf_size(dev, bufsz, max_rx_pkt_len);
-	if (rc < 0) {
-		rte_free(rxq);
-		return rc;
-	}
-
-	rxq->rx_buf_size = rc;
+	rxq->rx_buf_size = bufsz;
 
 	DP_INFO(edev, "mtu %u mbufsz %u bd_max_bytes %u scatter_mode %d\n",
@@ -204,5 +169,5 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 		       " socket %u\n", socket_id);
 		rte_free(rxq);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -222,5 +187,5 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -241,12 +206,69 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
+		return NULL;
+	}
+
+	return rxq;
+}
+
+int
+qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qid,
+		    uint16_t nb_desc, unsigned int socket_id,
+		    __rte_unused const struct rte_eth_rxconf *rx_conf,
+		    struct rte_mempool *mp)
+{
+	struct qede_dev *qdev = QEDE_INIT_QDEV(dev);
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
+	struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
+	struct qede_rx_queue *rxq;
+	uint16_t max_rx_pkt_len;
+	uint16_t bufsz;
+	int rc;
+
+	PMD_INIT_FUNC_TRACE(edev);
+
+	/* Note: Ring size/align is controlled by struct rte_eth_desc_lim */
+	if (!rte_is_power_of_2(nb_desc)) {
+		DP_ERR(edev, "Ring size %u is not power of 2\n",
+			  nb_desc);
+		return -EINVAL;
+	}
+
+	/* Free memory prior to re-allocation if needed... */
+	if (dev->data->rx_queues[qid] != NULL) {
+		qede_rx_queue_release(dev->data->rx_queues[qid]);
+		dev->data->rx_queues[qid] = NULL;
+	}
+
+	max_rx_pkt_len = (uint16_t)rxmode->max_rx_pkt_len;
+
+	/* Fix up RX buffer size */
+	bufsz = (uint16_t)rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM;
+	/* cache align the mbuf size to simplfy rx_buf_size calculation */
+	bufsz = QEDE_FLOOR_TO_CACHE_LINE_SIZE(bufsz);
+	if ((rxmode->offloads & DEV_RX_OFFLOAD_SCATTER)	||
+	    (max_rx_pkt_len + QEDE_ETH_OVERHEAD) > bufsz) {
+		if (!dev->data->scattered_rx) {
+			DP_INFO(edev, "Forcing scatter-gather mode\n");
+			dev->data->scattered_rx = 1;
+		}
+	}
+
+	rc = qede_calc_rx_buf_size(dev, bufsz, max_rx_pkt_len);
+	if (rc < 0)
+		return rc;
+
+	bufsz = rc;
+
+	rxq = qede_alloc_rx_queue_mem(dev, qid, nb_desc,
+				      socket_id, mp, bufsz);
+	if (!rxq)
 		return -ENOMEM;
-	}
 
-	dev->data->rx_queues[queue_idx] = rxq;
-	qdev->fp_array[queue_idx].rxq = rxq;
+	dev->data->rx_queues[qid] = rxq;
+	qdev->fp_array[qid].rxq = rxq;
 
 	DP_INFO(edev, "rxq %d num_desc %u rx_buf_size=%u socket %u\n",
-		  queue_idx, nb_desc, rxq->rx_buf_size, socket_id);
+		  qid, nb_desc, rxq->rx_buf_size, socket_id);
 
 	return 0;
@@ -279,4 +301,15 @@ static void qede_rx_queue_release_mbufs(struct qede_rx_queue *rxq)
 }
 
+static void _qede_rx_queue_release(struct qede_dev *qdev,
+				   struct ecore_dev *edev,
+				   struct qede_rx_queue *rxq)
+{
+	qede_rx_queue_release_mbufs(rxq);
+	qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
+	qdev->ops->common->chain_free(edev, &rxq->rx_comp_ring);
+	rte_free(rxq->sw_rx_ring);
+	rte_free(rxq);
+}
+
 void qede_rx_queue_release(void *rx_queue)
 {
@@ -289,9 +322,5 @@ void qede_rx_queue_release(void *rx_queue)
 		edev = QEDE_INIT_EDEV(qdev);
 		PMD_INIT_FUNC_TRACE(edev);
-		qede_rx_queue_release_mbufs(rxq);
-		qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
-		qdev->ops->common->chain_free(edev, &rxq->rx_comp_ring);
-		rte_free(rxq->sw_rx_ring);
-		rte_free(rxq);
+		_qede_rx_queue_release(qdev, edev, rxq);
 	}
 }
@@ -307,6 +336,6 @@ static int qede_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
 	int rc;
 
-	if (rx_queue_id < eth_dev->data->nb_rx_queues) {
-		rxq = eth_dev->data->rx_queues[rx_queue_id];
+	if (rx_queue_id < qdev->num_rx_queues) {
+		rxq = qdev->fp_array[rx_queue_id].rxq;
 		hwfn_index = rx_queue_id % edev->num_hwfns;
 		p_hwfn = &edev->hwfns[hwfn_index];
@@ -330,10 +359,10 @@ static int qede_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
 }
 
-int
-qede_tx_queue_setup(struct rte_eth_dev *dev,
-		    uint16_t queue_idx,
-		    uint16_t nb_desc,
-		    unsigned int socket_id,
-		    const struct rte_eth_txconf *tx_conf)
+static struct qede_tx_queue *
+qede_alloc_tx_queue_mem(struct rte_eth_dev *dev,
+			uint16_t queue_idx,
+			uint16_t nb_desc,
+			unsigned int socket_id,
+			const struct rte_eth_txconf *tx_conf)
 {
 	struct qede_dev *qdev = dev->data->dev_private;
@@ -342,18 +371,4 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 	int rc;
 
-	PMD_INIT_FUNC_TRACE(edev);
-
-	if (!rte_is_power_of_2(nb_desc)) {
-		DP_ERR(edev, "Ring size %u is not power of 2\n",
-		       nb_desc);
-		return -EINVAL;
-	}
-
-	/* Free memory prior to re-allocation if needed... */
-	if (dev->data->tx_queues[queue_idx] != NULL) {
-		qede_tx_queue_release(dev->data->tx_queues[queue_idx]);
-		dev->data->tx_queues[queue_idx] = NULL;
-	}
-
 	txq = rte_zmalloc_socket("qede_tx_queue", sizeof(struct qede_tx_queue),
 				 RTE_CACHE_LINE_SIZE, socket_id);
@@ -363,5 +378,5 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 		       "Unable to allocate memory for txq on socket %u",
 		       socket_id);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -383,5 +398,5 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 		       socket_id);
 		qede_tx_queue_release(txq);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -398,5 +413,5 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 		qdev->ops->common->chain_free(edev, &txq->tx_pbl);
 		qede_tx_queue_release(txq);
-		return -ENOMEM;
+		return NULL;
 	}
 
@@ -409,10 +424,42 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 	    (txq->nb_tx_desc - QEDE_DEFAULT_TX_FREE_THRESH);
 
-	dev->data->tx_queues[queue_idx] = txq;
-	qdev->fp_array[queue_idx].txq = txq;
-
 	DP_INFO(edev,
 		  "txq %u num_desc %u tx_free_thresh %u socket %u\n",
 		  queue_idx, nb_desc, txq->tx_free_thresh, socket_id);
+	return txq;
+}
+
+int
+qede_tx_queue_setup(struct rte_eth_dev *dev,
+		    uint16_t queue_idx,
+		    uint16_t nb_desc,
+		    unsigned int socket_id,
+		    const struct rte_eth_txconf *tx_conf)
+{
+	struct qede_dev *qdev = dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+	struct qede_tx_queue *txq;
+
+	PMD_INIT_FUNC_TRACE(edev);
+
+	if (!rte_is_power_of_2(nb_desc)) {
+		DP_ERR(edev, "Ring size %u is not power of 2\n",
+		       nb_desc);
+		return -EINVAL;
+	}
+
+	/* Free memory prior to re-allocation if needed... */
+	if (dev->data->tx_queues[queue_idx] != NULL) {
+		qede_tx_queue_release(dev->data->tx_queues[queue_idx]);
+		dev->data->tx_queues[queue_idx] = NULL;
+	}
+
+	txq = qede_alloc_tx_queue_mem(dev, queue_idx, nb_desc,
+				      socket_id, tx_conf);
+	if (!txq)
+		return -ENOMEM;
+
+	dev->data->tx_queues[queue_idx] = txq;
+	qdev->fp_array[queue_idx].txq = txq;
 
 	return 0;
@@ -444,4 +491,14 @@ static void qede_tx_queue_release_mbufs(struct qede_tx_queue *txq)
 }
 
+static void _qede_tx_queue_release(struct qede_dev *qdev,
+				   struct ecore_dev *edev,
+				   struct qede_tx_queue *txq)
+{
+	qede_tx_queue_release_mbufs(txq);
+	qdev->ops->common->chain_free(edev, &txq->tx_pbl);
+	rte_free(txq->sw_tx_ring);
+	rte_free(txq);
+}
+
 void qede_tx_queue_release(void *tx_queue)
 {
@@ -454,8 +511,5 @@ void qede_tx_queue_release(void *tx_queue)
 		edev = QEDE_INIT_EDEV(qdev);
 		PMD_INIT_FUNC_TRACE(edev);
-		qede_tx_queue_release_mbufs(txq);
-		qdev->ops->common->chain_free(edev, &txq->tx_pbl);
-		rte_free(txq->sw_tx_ring);
-		rte_free(txq);
+		_qede_tx_queue_release(qdev, edev, txq);
 	}
 }
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.282241548 +0000
+++ 0039-net-qede-refactor-Rx-and-Tx-queue-setup.patch	2019-11-22 14:36:55.214148923 +0000
@@ -1 +1 @@
-From 642f25da9c561f6e831cb5ea6f7d79c04d804081 Mon Sep 17 00:00:00 2001
+From 13b44f308adbfc118afec6f7329e1dcf6e6cd9e4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 642f25da9c561f6e831cb5ea6f7d79c04d804081 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index c38cbb905..cb8ac9bf6 100644
+index 03f7785b6..64fd9e063 100644


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

* [dpdk-stable] patch 'net/qede: fix odd number of queues usage in 100G mode' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (37 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: refactor Rx and Tx queue setup' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix RSS configuration as per new allocation method' " Kevin Traynor
                   ` (4 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From eabce98f4b64f75aadc746760e221ad7b8bd4012 Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Thu, 12 Sep 2019 08:24:13 -0700
Subject: [PATCH] net/qede: fix odd number of queues usage in 100G mode

[ upstream commit 8de0c42019260813b71699748a08bc94b608b5d9 ]

As per HW design of 100Gb mode, device internally uses 2 engines
(eng0 and eng1), and both engines need to be configured symmetrically.
Based on this requirement, driver design chose an approach
to allow user to allocate only even number of queues and split
those queues on both engines equally.

This approach puts a limitation on number of queues to be allocated -
i.e. user can't configure odd number of queues on 100Gb mode.
OVS configures DPDK port with 1 rxq and 1 txq, which causes initialization
of qede port to fail.

Issue is fixed by changing the implementation of queue allocation and
assignment to hw engines only for 100Gb devices and allowing user to
configure odd number queues.

New approach works as below -
- Create 'struct qede_fastpath_cmt' to hold hw queue pair of both engines
  and provide it to rte_ethdev's Rx/Tx queues structure.
- So ethdev will see only one queue for underlying queue pair created for
  hw engine pair.
- Install separate Rx/Tx data path handlers for 100Gb mode and regular mode
- Rx/Tx handlers for 100Gb mode will split packet processing across both
  engines by providing hw queue structures from 'struct qede_fastpath_cmt'
  passed by Rx/Tx callbacks to respective engines.

Fixes: 2af14ca79c0a ("net/qede: support 100G")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/qede/qede_ethdev.c | 112 ++++++++++++-----------
 drivers/net/qede/qede_ethdev.h |   5 +-
 drivers/net/qede/qede_filter.c |   5 +-
 drivers/net/qede/qede_rxtx.c   | 161 +++++++++++++++++++++++++++------
 drivers/net/qede/qede_rxtx.h   |  26 +++++-
 5 files changed, 219 insertions(+), 90 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index c4f5ad1ed..de8e26f51 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -304,4 +304,5 @@ static void qede_print_adapter_info(struct qede_dev *qdev)
 static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
 {
+	struct rte_eth_dev *dev = (struct rte_eth_dev *)qdev->ethdev;
 	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
 	unsigned int i = 0, j = 0, qid;
@@ -311,10 +312,10 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
 	DP_VERBOSE(edev, ECORE_MSG_DEBUG, "Clearing queue stats\n");
 
-	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
+	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(dev),
 			       RTE_ETHDEV_QUEUE_STAT_CNTRS);
-	txq_stat_cntrs = RTE_MIN(QEDE_TSS_COUNT(qdev),
+	txq_stat_cntrs = RTE_MIN(QEDE_TSS_COUNT(dev),
 			       RTE_ETHDEV_QUEUE_STAT_CNTRS);
 
-	for_each_rss(qid) {
+	for (qid = 0; qid < qdev->num_rx_queues; qid++) {
 		OSAL_MEMSET(((char *)(qdev->fp_array[qid].rxq)) +
 			     offsetof(struct qede_rx_queue, rcv_pkts), 0,
@@ -342,5 +343,5 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
 	i = 0;
 
-	for_each_tss(qid) {
+	for (qid = 0; qid < qdev->num_tx_queues; qid++) {
 		txq = qdev->fp_array[qid].txq;
 
@@ -989,5 +990,5 @@ int qede_config_rss(struct rte_eth_dev *eth_dev)
 		id = i / RTE_RETA_GROUP_SIZE;
 		pos = i % RTE_RETA_GROUP_SIZE;
-		q = i % QEDE_RSS_COUNT(qdev);
+		q = i % QEDE_RSS_COUNT(eth_dev);
 		reta_conf[id].reta[pos] = q;
 	}
@@ -1163,20 +1164,4 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	PMD_INIT_FUNC_TRACE(edev);
 
-	/* Check requirements for 100G mode */
-	if (ECORE_IS_CMT(edev)) {
-		if (eth_dev->data->nb_rx_queues < 2 ||
-		    eth_dev->data->nb_tx_queues < 2) {
-			DP_ERR(edev, "100G mode needs min. 2 RX/TX queues\n");
-			return -EINVAL;
-		}
-
-		if ((eth_dev->data->nb_rx_queues % 2 != 0) ||
-		    (eth_dev->data->nb_tx_queues % 2 != 0)) {
-			DP_ERR(edev,
-			       "100G mode needs even no. of RX/TX queues\n");
-			return -EINVAL;
-		}
-	}
-
 	/* We need to have min 1 RX queue.There is no min check in
 	 * rte_eth_dev_configure(), so we are checking it here.
@@ -1205,6 +1190,7 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 
 	qede_dealloc_fp_resc(eth_dev);
-	qdev->num_tx_queues = eth_dev->data->nb_tx_queues;
-	qdev->num_rx_queues = eth_dev->data->nb_rx_queues;
+	qdev->num_tx_queues = eth_dev->data->nb_tx_queues * edev->num_hwfns;
+	qdev->num_rx_queues = eth_dev->data->nb_rx_queues * edev->num_hwfns;
+
 	if (qede_alloc_fp_resc(qdev))
 		return -ENOMEM;
@@ -1231,5 +1217,10 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 
 	DP_INFO(edev, "Device configured with RSS=%d TSS=%d\n",
-			QEDE_RSS_COUNT(qdev), QEDE_TSS_COUNT(qdev));
+			QEDE_RSS_COUNT(eth_dev), QEDE_TSS_COUNT(eth_dev));
+
+	if (ECORE_IS_CMT(edev))
+		DP_INFO(edev, "Actual HW queues for CMT mode - RX = %d TX = %d\n",
+			qdev->num_rx_queues, qdev->num_tx_queues);
+
 
 	return 0;
@@ -1273,4 +1264,8 @@ qede_dev_info_get(struct rte_eth_dev *eth_dev,
 		dev_info->max_rx_queues = (uint16_t)RTE_MIN(
 			QEDE_MAX_RSS_CNT(qdev), ECORE_MAX_VF_CHAINS_PER_PF);
+	/* Since CMT mode internally doubles the number of queues */
+	if (ECORE_IS_CMT(edev))
+		dev_info->max_rx_queues  = dev_info->max_rx_queues / 2;
+
 	dev_info->max_tx_queues = dev_info->max_rx_queues;
 
@@ -1516,10 +1511,10 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 
 	/* Queue stats */
-	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
+	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(eth_dev),
 			       RTE_ETHDEV_QUEUE_STAT_CNTRS);
-	txq_stat_cntrs = RTE_MIN(QEDE_TSS_COUNT(qdev),
+	txq_stat_cntrs = RTE_MIN(QEDE_TSS_COUNT(eth_dev),
 			       RTE_ETHDEV_QUEUE_STAT_CNTRS);
-	if ((rxq_stat_cntrs != (unsigned int)QEDE_RSS_COUNT(qdev)) ||
-	    (txq_stat_cntrs != (unsigned int)QEDE_TSS_COUNT(qdev)))
+	if (rxq_stat_cntrs != (unsigned int)QEDE_RSS_COUNT(eth_dev) ||
+	    txq_stat_cntrs != (unsigned int)QEDE_TSS_COUNT(eth_dev))
 		DP_VERBOSE(edev, ECORE_MSG_DEBUG,
 		       "Not all the queue stats will be displayed. Set"
@@ -1527,5 +1522,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 		       " appropriately and retry.\n");
 
-	for_each_rss(qid) {
+	for (qid = 0; qid < eth_dev->data->nb_rx_queues; qid++) {
 		eth_stats->q_ipackets[i] =
 			*(uint64_t *)(
@@ -1547,5 +1542,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 	}
 
-	for_each_tss(qid) {
+	for (qid = 0; qid < eth_dev->data->nb_tx_queues; qid++) {
 		txq = qdev->fp_array[qid].txq;
 		eth_stats->q_opackets[j] =
@@ -1564,16 +1559,16 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 static unsigned
 qede_get_xstats_count(struct qede_dev *qdev) {
+	struct rte_eth_dev *dev = (struct rte_eth_dev *)qdev->ethdev;
+
 	if (ECORE_IS_BB(&qdev->edev))
 		return RTE_DIM(qede_xstats_strings) +
 		       RTE_DIM(qede_bb_xstats_strings) +
 		       (RTE_DIM(qede_rxq_xstats_strings) *
-			RTE_MIN(QEDE_RSS_COUNT(qdev),
-				RTE_ETHDEV_QUEUE_STAT_CNTRS));
+			QEDE_RSS_COUNT(dev) * qdev->edev.num_hwfns);
 	else
 		return RTE_DIM(qede_xstats_strings) +
 		       RTE_DIM(qede_ah_xstats_strings) +
 		       (RTE_DIM(qede_rxq_xstats_strings) *
-			RTE_MIN(QEDE_RSS_COUNT(qdev),
-				RTE_ETHDEV_QUEUE_STAT_CNTRS));
+			QEDE_RSS_COUNT(dev));
 }
 
@@ -1616,5 +1611,5 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
 		}
 
-		rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
+		rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(dev),
 					 RTE_ETHDEV_QUEUE_STAT_CNTRS);
 		for (qid = 0; qid < rxq_stat_cntrs; qid++) {
@@ -1674,15 +1669,13 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
 	}
 
-	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
+	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(dev),
 				 RTE_ETHDEV_QUEUE_STAT_CNTRS);
 	for (qid = 0; qid < rxq_stat_cntrs; qid++) {
-		for_each_rss(qid) {
-			for (i = 0; i < RTE_DIM(qede_rxq_xstats_strings); i++) {
-				xstats[stat_idx].value = *(uint64_t *)(
-					((char *)(qdev->fp_array[qid].rxq)) +
-					 qede_rxq_xstats_strings[i].offset);
-				xstats[stat_idx].id = stat_idx;
-				stat_idx++;
-			}
+		for (i = 0; i < RTE_DIM(qede_rxq_xstats_strings); i++) {
+			xstats[stat_idx].value = *(uint64_t *)
+				(((char *)(qdev->fp_array[qid].rxq)) +
+				 qede_rxq_xstats_strings[i].offset);
+			xstats[stat_idx].id = stat_idx;
+			stat_idx++;
 		}
 	}
@@ -1938,5 +1931,6 @@ qede_dev_supported_ptypes_get(struct rte_eth_dev *eth_dev)
 	};
 
-	if (eth_dev->rx_pkt_burst == qede_recv_pkts)
+	if (eth_dev->rx_pkt_burst == qede_recv_pkts ||
+	    eth_dev->rx_pkt_burst == qede_recv_pkts_cmt)
 		return ptypes;
 
@@ -2005,5 +1999,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
 	/* pass the L2 handles instead of qids */
 	for (i = 0 ; i < ECORE_RSS_IND_TABLE_SIZE ; i++) {
-		idx = i % QEDE_RSS_COUNT(qdev);
+		idx = i % QEDE_RSS_COUNT(eth_dev);
 		rss_params.rss_ind_table[i] = qdev->fp_array[idx].rxq->handle;
 	}
@@ -2257,5 +2251,5 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 
 	/* Fix up RX buf size for all queues of the port */
-	for_each_rss(i) {
+	for (i = 0; i < qdev->num_rx_queues; i++) {
 		fp = &qdev->fp_array[i];
 		if (fp->rxq != NULL) {
@@ -2286,7 +2280,11 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	dev->data->dev_conf.rxmode.max_rx_pkt_len = max_rx_pkt_len;
 	/* Reassign back */
-	dev->rx_pkt_burst = qede_recv_pkts;
-	dev->tx_pkt_burst = qede_xmit_pkts;
-
+	if (ECORE_IS_CMT(edev)) {
+		dev->rx_pkt_burst = qede_recv_pkts_cmt;
+		dev->tx_pkt_burst = qede_xmit_pkts_cmt;
+	} else {
+		dev->rx_pkt_burst = qede_recv_pkts;
+		dev->tx_pkt_burst = qede_xmit_pkts;
+	}
 	return 0;
 }
@@ -2429,8 +2427,4 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		 eth_dev->data->port_id);
 
-	eth_dev->rx_pkt_burst = qede_recv_pkts;
-	eth_dev->tx_pkt_burst = qede_xmit_pkts;
-	eth_dev->tx_pkt_prepare = qede_xmit_prep_pkts;
-
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
 		DP_ERR(edev, "Skipping device init from secondary process\n");
@@ -2490,4 +2484,14 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		QEDE_PMD_DRV_VER_STR_SIZE);
 
+	if (ECORE_IS_CMT(edev)) {
+		eth_dev->rx_pkt_burst = qede_recv_pkts_cmt;
+		eth_dev->tx_pkt_burst = qede_xmit_pkts_cmt;
+	} else {
+		eth_dev->rx_pkt_burst = qede_recv_pkts;
+		eth_dev->tx_pkt_burst = qede_xmit_pkts;
+	}
+
+	eth_dev->tx_pkt_prepare = qede_xmit_prep_pkts;
+
 	/* For CMT mode device do periodic polling for slowpath events.
 	 * This is required since uio device uses only one MSI-x
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index c06274d94..735dfdb66 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -67,6 +67,6 @@
 
 #define QEDE_QUEUE_CNT(qdev) ((qdev)->num_queues)
-#define QEDE_RSS_COUNT(qdev) ((qdev)->num_rx_queues)
-#define QEDE_TSS_COUNT(qdev) ((qdev)->num_tx_queues)
+#define QEDE_RSS_COUNT(dev) ((dev)->data->nb_rx_queues)
+#define QEDE_TSS_COUNT(dev) ((dev)->data->nb_tx_queues)
 
 #define QEDE_DUPLEX_FULL	1
@@ -216,4 +216,5 @@ struct qede_dev {
 	struct ecore_sb_info *sb_array;
 	struct qede_fastpath *fp_array;
+	struct qede_fastpath_cmt *fp_array_cmt;
 	uint16_t mtu;
 	bool enable_tx_switching;
diff --git a/drivers/net/qede/qede_filter.c b/drivers/net/qede/qede_filter.c
index 0beade6d5..56ec91272 100644
--- a/drivers/net/qede/qede_filter.c
+++ b/drivers/net/qede/qede_filter.c
@@ -432,5 +432,5 @@ qede_fdir_filter_add(struct rte_eth_dev *eth_dev,
 	}
 
-	if (fdir->action.rx_queue >= QEDE_RSS_COUNT(qdev)) {
+	if (fdir->action.rx_queue >= QEDE_RSS_COUNT(eth_dev)) {
 		DP_ERR(edev, "invalid queue number %u\n",
 		       fdir->action.rx_queue);
@@ -1344,5 +1344,4 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
 			struct rte_flow *flow)
 {
-	struct qede_dev *qdev = QEDE_INIT_QDEV(dev);
 	const struct rte_flow_action_queue *queue;
 
@@ -1359,5 +1358,5 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
 			queue = actions->conf;
 
-			if (queue->index >= QEDE_RSS_COUNT(qdev)) {
+			if (queue->index >= QEDE_RSS_COUNT(dev)) {
 				rte_flow_error_set(error, EINVAL,
 						   RTE_FLOW_ERROR_TYPE_ACTION,
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 64fd9e063..ca1305f1b 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -261,11 +261,28 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qid,
 	bufsz = rc;
 
-	rxq = qede_alloc_rx_queue_mem(dev, qid, nb_desc,
-				      socket_id, mp, bufsz);
-	if (!rxq)
-		return -ENOMEM;
+	if (ECORE_IS_CMT(edev)) {
+		rxq = qede_alloc_rx_queue_mem(dev, qid * 2, nb_desc,
+					      socket_id, mp, bufsz);
+		if (!rxq)
+			return -ENOMEM;
 
-	dev->data->rx_queues[qid] = rxq;
-	qdev->fp_array[qid].rxq = rxq;
+		qdev->fp_array[qid * 2].rxq = rxq;
+		rxq = qede_alloc_rx_queue_mem(dev, qid * 2 + 1, nb_desc,
+					      socket_id, mp, bufsz);
+		if (!rxq)
+			return -ENOMEM;
+
+		qdev->fp_array[qid * 2 + 1].rxq = rxq;
+		/* provide per engine fp struct as rx queue */
+		dev->data->rx_queues[qid] = &qdev->fp_array_cmt[qid];
+	} else {
+		rxq = qede_alloc_rx_queue_mem(dev, qid, nb_desc,
+					      socket_id, mp, bufsz);
+		if (!rxq)
+			return -ENOMEM;
+
+		dev->data->rx_queues[qid] = rxq;
+		qdev->fp_array[qid].rxq = rxq;
+	}
 
 	DP_INFO(edev, "rxq %d num_desc %u rx_buf_size=%u socket %u\n",
@@ -315,4 +332,5 @@ void qede_rx_queue_release(void *rx_queue)
 {
 	struct qede_rx_queue *rxq = rx_queue;
+	struct qede_fastpath_cmt *fp_cmt;
 	struct qede_dev *qdev;
 	struct ecore_dev *edev;
@@ -322,5 +340,11 @@ void qede_rx_queue_release(void *rx_queue)
 		edev = QEDE_INIT_EDEV(qdev);
 		PMD_INIT_FUNC_TRACE(edev);
-		_qede_rx_queue_release(qdev, edev, rxq);
+		if (ECORE_IS_CMT(edev)) {
+			fp_cmt = rx_queue;
+			_qede_rx_queue_release(qdev, edev, fp_cmt->fp0->rxq);
+			_qede_rx_queue_release(qdev, edev, fp_cmt->fp1->rxq);
+		} else {
+			_qede_rx_queue_release(qdev, edev, rxq);
+		}
 	}
 }
@@ -455,11 +479,28 @@ qede_tx_queue_setup(struct rte_eth_dev *dev,
 	}
 
-	txq = qede_alloc_tx_queue_mem(dev, queue_idx, nb_desc,
-				      socket_id, tx_conf);
-	if (!txq)
-		return -ENOMEM;
+	if (ECORE_IS_CMT(edev)) {
+		txq = qede_alloc_tx_queue_mem(dev, queue_idx * 2, nb_desc,
+					      socket_id, tx_conf);
+		if (!txq)
+			return -ENOMEM;
 
-	dev->data->tx_queues[queue_idx] = txq;
-	qdev->fp_array[queue_idx].txq = txq;
+		qdev->fp_array[queue_idx * 2].txq = txq;
+		txq = qede_alloc_tx_queue_mem(dev, (queue_idx * 2) + 1, nb_desc,
+					      socket_id, tx_conf);
+		if (!txq)
+			return -ENOMEM;
+
+		qdev->fp_array[(queue_idx * 2) + 1].txq = txq;
+		dev->data->tx_queues[queue_idx] =
+					&qdev->fp_array_cmt[queue_idx];
+	} else {
+		txq = qede_alloc_tx_queue_mem(dev, queue_idx, nb_desc,
+					      socket_id, tx_conf);
+		if (!txq)
+			return -ENOMEM;
+
+		dev->data->tx_queues[queue_idx] = txq;
+		qdev->fp_array[queue_idx].txq = txq;
+	}
 
 	return 0;
@@ -504,4 +545,5 @@ void qede_tx_queue_release(void *tx_queue)
 {
 	struct qede_tx_queue *txq = tx_queue;
+	struct qede_fastpath_cmt *fp_cmt;
 	struct qede_dev *qdev;
 	struct ecore_dev *edev;
@@ -511,5 +553,12 @@ void qede_tx_queue_release(void *tx_queue)
 		edev = QEDE_INIT_EDEV(qdev);
 		PMD_INIT_FUNC_TRACE(edev);
-		_qede_tx_queue_release(qdev, edev, txq);
+
+		if (ECORE_IS_CMT(edev)) {
+			fp_cmt = tx_queue;
+			_qede_tx_queue_release(qdev, edev, fp_cmt->fp0->txq);
+			_qede_tx_queue_release(qdev, edev, fp_cmt->fp1->txq);
+		} else {
+			_qede_tx_queue_release(qdev, edev, txq);
+		}
 	}
 }
@@ -549,4 +598,5 @@ int qede_alloc_fp_resc(struct qede_dev *qdev)
 	uint32_t num_sbs;
 	uint16_t sb_idx;
+	int i;
 
 	if (IS_VF(edev))
@@ -572,4 +622,26 @@ int qede_alloc_fp_resc(struct qede_dev *qdev)
 			sizeof(*qdev->fp_array));
 
+	if (ECORE_IS_CMT(edev)) {
+		qdev->fp_array_cmt = rte_calloc("fp_cmt",
+						QEDE_RXTX_MAX(qdev) / 2,
+						sizeof(*qdev->fp_array_cmt),
+						RTE_CACHE_LINE_SIZE);
+
+		if (!qdev->fp_array_cmt) {
+			DP_ERR(edev, "fp array for CMT allocation failed\n");
+			return -ENOMEM;
+		}
+
+		memset((void *)qdev->fp_array_cmt, 0,
+		       (QEDE_RXTX_MAX(qdev) / 2) * sizeof(*qdev->fp_array_cmt));
+
+		/* Establish the mapping of fp_array with fp_array_cmt */
+		for (i = 0; i < QEDE_RXTX_MAX(qdev) / 2; i++) {
+			qdev->fp_array_cmt[i].qdev = qdev;
+			qdev->fp_array_cmt[i].fp0 = &qdev->fp_array[i * 2];
+			qdev->fp_array_cmt[i].fp1 = &qdev->fp_array[i * 2 + 1];
+		}
+	}
+
 	for (sb_idx = 0; sb_idx < QEDE_RXTX_MAX(qdev); sb_idx++) {
 		fp = &qdev->fp_array[sb_idx];
@@ -636,4 +708,8 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 		rte_free(qdev->fp_array);
 	qdev->fp_array = NULL;
+
+	if (qdev->fp_array_cmt)
+		rte_free(qdev->fp_array_cmt);
+	qdev->fp_array_cmt = NULL;
 }
 
@@ -687,7 +763,7 @@ qede_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
 	int rc;
 
-	if (rx_queue_id < eth_dev->data->nb_rx_queues) {
+	if (rx_queue_id < qdev->num_rx_queues) {
 		fp = &qdev->fp_array[rx_queue_id];
-		rxq = eth_dev->data->rx_queues[rx_queue_id];
+		rxq = fp->rxq;
 		/* Allocate buffers for the Rx ring */
 		for (j = 0; j < rxq->nb_rx_desc; j++) {
@@ -758,7 +834,7 @@ qede_tx_queue_start(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
 	int rc;
 
-	if (tx_queue_id < eth_dev->data->nb_tx_queues) {
-		txq = eth_dev->data->tx_queues[tx_queue_id];
+	if (tx_queue_id < qdev->num_tx_queues) {
 		fp = &qdev->fp_array[tx_queue_id];
+		txq = fp->txq;
 		memset(&params, 0, sizeof(params));
 		params.queue_id = tx_queue_id / edev->num_hwfns;
@@ -901,6 +977,6 @@ static int qede_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
 	int rc;
 
-	if (tx_queue_id < eth_dev->data->nb_tx_queues) {
-		txq = eth_dev->data->tx_queues[tx_queue_id];
+	if (tx_queue_id < qdev->num_tx_queues) {
+		txq = qdev->fp_array[tx_queue_id].txq;
 		/* Drain txq */
 		if (qede_drain_txq(qdev, txq, true))
@@ -933,5 +1009,5 @@ int qede_start_queues(struct rte_eth_dev *eth_dev)
 	int rc = -1;
 
-	for_each_rss(id) {
+	for (id = 0; id < qdev->num_rx_queues; id++) {
 		rc = qede_rx_queue_start(eth_dev, id);
 		if (rc != ECORE_SUCCESS)
@@ -939,5 +1015,5 @@ int qede_start_queues(struct rte_eth_dev *eth_dev)
 	}
 
-	for_each_tss(id) {
+	for (id = 0; id < qdev->num_tx_queues; id++) {
 		rc = qede_tx_queue_start(eth_dev, id);
 		if (rc != ECORE_SUCCESS)
@@ -954,11 +1030,9 @@ void qede_stop_queues(struct rte_eth_dev *eth_dev)
 
 	/* Stopping RX/TX queues */
-	for_each_tss(id) {
+	for (id = 0; id < qdev->num_tx_queues; id++)
 		qede_tx_queue_stop(eth_dev, id);
-	}
 
-	for_each_rss(id) {
+	for (id = 0; id < qdev->num_rx_queues; id++)
 		qede_rx_queue_stop(eth_dev, id);
-	}
 }
 
@@ -1740,4 +1814,21 @@ next_cqe:
 }
 
+uint16_t
+qede_recv_pkts_cmt(void *p_fp_cmt, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
+{
+	struct qede_fastpath_cmt *fp_cmt = p_fp_cmt;
+	uint16_t eng0_pkts, eng1_pkts;
+
+	eng0_pkts = nb_pkts / 2;
+
+	eng0_pkts = qede_recv_pkts(fp_cmt->fp0->rxq, rx_pkts, eng0_pkts);
+
+	eng1_pkts = nb_pkts - eng0_pkts;
+
+	eng1_pkts = qede_recv_pkts(fp_cmt->fp1->rxq, rx_pkts + eng0_pkts,
+				   eng1_pkts);
+
+	return eng0_pkts + eng1_pkts;
+}
 
 /* Populate scatter gather buffer descriptor fields */
@@ -2262,4 +2353,22 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 }
 
+uint16_t
+qede_xmit_pkts_cmt(void *p_fp_cmt, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+{
+	struct qede_fastpath_cmt *fp_cmt = p_fp_cmt;
+	uint16_t eng0_pkts, eng1_pkts;
+
+	eng0_pkts = nb_pkts / 2;
+
+	eng0_pkts = qede_xmit_pkts(fp_cmt->fp0->txq, tx_pkts, eng0_pkts);
+
+	eng1_pkts = nb_pkts - eng0_pkts;
+
+	eng1_pkts = qede_xmit_pkts(fp_cmt->fp1->txq, tx_pkts + eng0_pkts,
+				   eng1_pkts);
+
+	return eng0_pkts + eng1_pkts;
+}
+
 uint16_t
 qede_rxtx_pkts_dummy(__rte_unused void *p_rxq,
diff --git a/drivers/net/qede/qede_rxtx.h b/drivers/net/qede/qede_rxtx.h
index 5b249cbb2..4a1435663 100644
--- a/drivers/net/qede/qede_rxtx.h
+++ b/drivers/net/qede/qede_rxtx.h
@@ -82,8 +82,6 @@
 				 ETH_RSS_GENEVE)
 
-#define for_each_rss(i)		for (i = 0; i < qdev->num_rx_queues; i++)
-#define for_each_tss(i)		for (i = 0; i < qdev->num_tx_queues; i++)
 #define QEDE_RXTX_MAX(qdev) \
-	(RTE_MAX(QEDE_RSS_COUNT(qdev), QEDE_TSS_COUNT(qdev)))
+	(RTE_MAX(qdev->num_rx_queues, qdev->num_tx_queues))
 
 /* Macros for non-tunnel packet types lkup table */
@@ -180,4 +178,6 @@ struct qede_agg_info {
  */
 struct qede_rx_queue {
+	/* Always keep qdev as first member */
+	struct qede_dev *qdev;
 	struct rte_mempool *mb_pool;
 	struct ecore_chain rx_bd_ring;
@@ -200,5 +200,4 @@ struct qede_rx_queue {
 	uint64_t rx_alloc_errors;
 	struct qede_agg_info tpa_info[ETH_TPA_MAX_AGGS_NUM];
-	struct qede_dev *qdev;
 	void *handle;
 };
@@ -218,4 +217,6 @@ union db_prod {
 
 struct qede_tx_queue {
+	/* Always keep qdev as first member */
+	struct qede_dev *qdev;
 	struct ecore_chain tx_pbl;
 	struct qede_tx_entry *sw_tx_ring;
@@ -232,5 +233,4 @@ struct qede_tx_queue {
 	uint64_t xmit_pkts;
 	bool is_legacy;
-	struct qede_dev *qdev;
 	void *handle;
 };
@@ -242,4 +242,16 @@ struct qede_fastpath {
 };
 
+/* This structure holds the inforation of fast path queues
+ * belonging to individual engines in CMT mode.
+ */
+struct qede_fastpath_cmt {
+	/* Always keep this a first element */
+	struct qede_dev *qdev;
+	/* fastpath info of engine 0 */
+	struct qede_fastpath *fp0;
+	/* fastpath info of engine 1 */
+	struct qede_fastpath *fp1;
+};
+
 /*
  * RX/TX function prototypes
@@ -262,4 +274,6 @@ void qede_tx_queue_release(void *tx_queue);
 uint16_t qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts,
 			uint16_t nb_pkts);
+uint16_t qede_xmit_pkts_cmt(void *p_txq, struct rte_mbuf **tx_pkts,
+			    uint16_t nb_pkts);
 
 uint16_t qede_xmit_prep_pkts(void *p_txq, struct rte_mbuf **tx_pkts,
@@ -268,4 +282,6 @@ uint16_t qede_xmit_prep_pkts(void *p_txq, struct rte_mbuf **tx_pkts,
 uint16_t qede_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts,
 			uint16_t nb_pkts);
+uint16_t qede_recv_pkts_cmt(void *p_rxq, struct rte_mbuf **rx_pkts,
+			    uint16_t nb_pkts);
 
 uint16_t qede_rxtx_pkts_dummy(void *p_rxq,
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.332808095 +0000
+++ 0040-net-qede-fix-odd-number-of-queues-usage-in-100G-mode.patch	2019-11-22 14:36:55.221148773 +0000
@@ -1 +1 @@
-From 8de0c42019260813b71699748a08bc94b608b5d9 Mon Sep 17 00:00:00 2001
+From eabce98f4b64f75aadc746760e221ad7b8bd4012 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8de0c42019260813b71699748a08bc94b608b5d9 ]
+
@@ -32 +33,0 @@
-Cc: stable@dpdk.org
@@ -44 +45 @@
-index 528b33e8c..308588cb8 100644
+index c4f5ad1ed..de8e26f51 100644
@@ -47 +48 @@
-@@ -305,4 +305,5 @@ static void qede_print_adapter_info(struct qede_dev *qdev)
+@@ -304,4 +304,5 @@ static void qede_print_adapter_info(struct qede_dev *qdev)
@@ -53 +54 @@
-@@ -312,10 +313,10 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
+@@ -311,10 +312,10 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
@@ -67 +68 @@
-@@ -343,5 +344,5 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
+@@ -342,5 +343,5 @@ static void qede_reset_queue_stats(struct qede_dev *qdev, bool xstats)
@@ -74 +75 @@
-@@ -992,5 +993,5 @@ int qede_config_rss(struct rte_eth_dev *eth_dev)
+@@ -989,5 +990,5 @@ int qede_config_rss(struct rte_eth_dev *eth_dev)
@@ -81 +82 @@
-@@ -1166,20 +1167,4 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
+@@ -1163,20 +1164,4 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
@@ -102 +103 @@
-@@ -1208,6 +1193,7 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
+@@ -1205,6 +1190,7 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
@@ -112 +113 @@
-@@ -1234,5 +1220,10 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
+@@ -1231,5 +1217,10 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
@@ -124 +125 @@
-@@ -1276,4 +1267,8 @@ qede_dev_info_get(struct rte_eth_dev *eth_dev,
+@@ -1273,4 +1264,8 @@ qede_dev_info_get(struct rte_eth_dev *eth_dev,
@@ -133 +134 @@
-@@ -1519,10 +1514,10 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1516,10 +1511,10 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -148 +149 @@
-@@ -1530,5 +1525,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1527,5 +1522,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -155 +156 @@
-@@ -1550,5 +1545,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1547,5 +1542,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -162 +163 @@
-@@ -1567,16 +1562,16 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1564,16 +1559,16 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -213 +214 @@
-@@ -1939,5 +1932,6 @@ qede_dev_supported_ptypes_get(struct rte_eth_dev *eth_dev)
+@@ -1938,5 +1931,6 @@ qede_dev_supported_ptypes_get(struct rte_eth_dev *eth_dev)
@@ -221 +222 @@
-@@ -2006,5 +2000,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
+@@ -2005,5 +1999,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
@@ -228 +229 @@
-@@ -2258,5 +2252,5 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+@@ -2257,5 +2251,5 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
@@ -235 +236 @@
-@@ -2287,7 +2281,11 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+@@ -2286,7 +2280,11 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
@@ -250 +251 @@
-@@ -2430,8 +2428,4 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
+@@ -2429,8 +2427,4 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
@@ -259 +260 @@
-@@ -2491,4 +2485,14 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
+@@ -2490,4 +2484,14 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
@@ -275 +276 @@
-index d0e7c70be..5549d0bf3 100644
+index c06274d94..735dfdb66 100644
@@ -294 +295 @@
-index b3f62e0dd..81509f04b 100644
+index 0beade6d5..56ec91272 100644
@@ -304 +305 @@
-@@ -1346,5 +1346,4 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
+@@ -1344,5 +1344,4 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
@@ -310 +311 @@
-@@ -1361,5 +1360,5 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
+@@ -1359,5 +1358,5 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,
@@ -318 +319 @@
-index cb8ac9bf6..dbb74fc64 100644
+index 64fd9e063..ca1305f1b 100644
@@ -529 +530 @@
-@@ -1742,4 +1816,21 @@ next_cqe:
+@@ -1740,4 +1814,21 @@ next_cqe:
@@ -551 +552 @@
-@@ -2264,4 +2355,22 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -2262,4 +2353,22 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
@@ -575 +576 @@
-index 41a5f0f5c..75cc930fd 100644
+index 5b249cbb2..4a1435663 100644


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

* [dpdk-stable] patch 'net/qede: fix RSS configuration as per new allocation method' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (38 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix odd number of queues usage in 100G mode' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix stats flow " Kevin Traynor
                   ` (3 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From d7e289a330488f425b35c529905b2eeec08594f8 Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Thu, 12 Sep 2019 08:24:14 -0700
Subject: [PATCH] net/qede: fix RSS configuration as per new allocation method

[ upstream commit 235cbe4c22728dd70cd9f1fed4b7910d2e07983e ]

With old design, RETA was configured in round-robin fashion since
queue allocation was distributed across both engines alternately.
Now, we need to configure RETA symmetrically on both engines since
both engines have same number of queues.

Fixes: 2af14ca79c0a ("net/qede: support 100G")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/qede/qede_ethdev.c | 110 ++++++++-------------------------
 1 file changed, 27 insertions(+), 83 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index de8e26f51..493d0bce0 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1962,6 +1962,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
 	uint64_t hf = rss_conf->rss_hf;
 	uint8_t len = rss_conf->rss_key_len;
-	uint8_t idx;
-	uint8_t i;
+	uint8_t idx, i, j, fpidx;
 	int rc;
 
@@ -1997,12 +1996,16 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
 	rss_params.rss_table_size_log = 7;
 	vport_update_params.vport_id = 0;
-	/* pass the L2 handles instead of qids */
-	for (i = 0 ; i < ECORE_RSS_IND_TABLE_SIZE ; i++) {
-		idx = i % QEDE_RSS_COUNT(eth_dev);
-		rss_params.rss_ind_table[i] = qdev->fp_array[idx].rxq->handle;
-	}
-	vport_update_params.rss_params = &rss_params;
 
 	for_each_hwfn(edev, i) {
+		/* pass the L2 handles instead of qids */
+		for (j = 0 ; j < ECORE_RSS_IND_TABLE_SIZE ; j++) {
+			idx = j % QEDE_RSS_COUNT(eth_dev);
+			fpidx = idx * edev->num_hwfns + i;
+			rss_params.rss_ind_table[j] =
+				qdev->fp_array[fpidx].rxq->handle;
+		}
+
+		vport_update_params.rss_params = &rss_params;
+
 		p_hwfn = &edev->hwfns[i];
 		vport_update_params.opaque_fid = p_hwfn->hw_info.opaque_fid;
@@ -2056,59 +2059,4 @@ static int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev,
 }
 
-static bool qede_update_rss_parm_cmt(struct ecore_dev *edev,
-				    struct ecore_rss_params *rss)
-{
-	int i, fn;
-	bool rss_mode = 1; /* enable */
-	struct ecore_queue_cid *cid;
-	struct ecore_rss_params *t_rss;
-
-	/* In regular scenario, we'd simply need to take input handlers.
-	 * But in CMT, we'd have to split the handlers according to the
-	 * engine they were configured on. We'd then have to understand
-	 * whether RSS is really required, since 2-queues on CMT doesn't
-	 * require RSS.
-	 */
-
-	/* CMT should be round-robin */
-	for (i = 0; i < ECORE_RSS_IND_TABLE_SIZE; i++) {
-		cid = rss->rss_ind_table[i];
-
-		if (cid->p_owner == ECORE_LEADING_HWFN(edev))
-			t_rss = &rss[0];
-		else
-			t_rss = &rss[1];
-
-		t_rss->rss_ind_table[i / edev->num_hwfns] = cid;
-	}
-
-	t_rss = &rss[1];
-	t_rss->update_rss_ind_table = 1;
-	t_rss->rss_table_size_log = 7;
-	t_rss->update_rss_config = 1;
-
-	/* Make sure RSS is actually required */
-	for_each_hwfn(edev, fn) {
-		for (i = 1; i < ECORE_RSS_IND_TABLE_SIZE / edev->num_hwfns;
-		     i++) {
-			if (rss[fn].rss_ind_table[i] !=
-			    rss[fn].rss_ind_table[0])
-				break;
-		}
-
-		if (i == ECORE_RSS_IND_TABLE_SIZE / edev->num_hwfns) {
-			DP_INFO(edev,
-				"CMT - 1 queue per-hwfn; Disabling RSS\n");
-			rss_mode = 0;
-			goto out;
-		}
-	}
-
-out:
-	t_rss->rss_enable = rss_mode;
-
-	return rss_mode;
-}
-
 int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_reta_entry64 *reta_conf,
@@ -2119,6 +2067,6 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 	struct ecore_sp_vport_update_params vport_update_params;
 	struct ecore_rss_params *params;
+	uint16_t i, j, idx, fid, shift;
 	struct ecore_hwfn *p_hwfn;
-	uint16_t i, idx, shift;
 	uint8_t entry;
 	int rc = 0;
@@ -2131,6 +2079,5 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 
 	memset(&vport_update_params, 0, sizeof(vport_update_params));
-	params = rte_zmalloc("qede_rss", sizeof(*params) * edev->num_hwfns,
-			     RTE_CACHE_LINE_SIZE);
+	params = rte_zmalloc("qede_rss", sizeof(*params), RTE_CACHE_LINE_SIZE);
 	if (params == NULL) {
 		DP_ERR(edev, "failed to allocate memory\n");
@@ -2138,25 +2085,8 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 	}
 
-	for (i = 0; i < reta_size; i++) {
-		idx = i / RTE_RETA_GROUP_SIZE;
-		shift = i % RTE_RETA_GROUP_SIZE;
-		if (reta_conf[idx].mask & (1ULL << shift)) {
-			entry = reta_conf[idx].reta[shift];
-			/* Pass rxq handles to ecore */
-			params->rss_ind_table[i] =
-					qdev->fp_array[entry].rxq->handle;
-			/* Update the local copy for RETA query command */
-			qdev->rss_ind_table[i] = entry;
-		}
-	}
-
 	params->update_rss_ind_table = 1;
 	params->rss_table_size_log = 7;
 	params->update_rss_config = 1;
 
-	/* Fix up RETA for CMT mode device */
-	if (ECORE_IS_CMT(edev))
-		qdev->rss_enable = qede_update_rss_parm_cmt(edev,
-							    params);
 	vport_update_params.vport_id = 0;
 	/* Use the current value of rss_enable */
@@ -2165,4 +2095,18 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 
 	for_each_hwfn(edev, i) {
+		for (j = 0; j < reta_size; j++) {
+			idx = j / RTE_RETA_GROUP_SIZE;
+			shift = j % RTE_RETA_GROUP_SIZE;
+			if (reta_conf[idx].mask & (1ULL << shift)) {
+				entry = reta_conf[idx].reta[shift];
+				fid = entry * edev->num_hwfns + i;
+				/* Pass rxq handles to ecore */
+				params->rss_ind_table[j] =
+						qdev->fp_array[fid].rxq->handle;
+				/* Update the local copy for RETA query cmd */
+				qdev->rss_ind_table[j] = entry;
+			}
+		}
+
 		p_hwfn = &edev->hwfns[i];
 		vport_update_params.opaque_fid = p_hwfn->hw_info.opaque_fid;
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.390510223 +0000
+++ 0041-net-qede-fix-RSS-configuration-as-per-new-allocation.patch	2019-11-22 14:36:55.224148709 +0000
@@ -1 +1 @@
-From 235cbe4c22728dd70cd9f1fed4b7910d2e07983e Mon Sep 17 00:00:00 2001
+From d7e289a330488f425b35c529905b2eeec08594f8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 235cbe4c22728dd70cd9f1fed4b7910d2e07983e ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 308588cb8..8b75ca3a7 100644
+index de8e26f51..493d0bce0 100644
@@ -23 +24 @@
-@@ -1963,6 +1963,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
+@@ -1962,6 +1962,5 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
@@ -31 +32 @@
-@@ -1998,12 +1997,16 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
+@@ -1997,12 +1996,16 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
@@ -54 +55 @@
-@@ -2057,59 +2060,4 @@ static int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev,
+@@ -2056,59 +2059,4 @@ static int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev,
@@ -114 +115 @@
-@@ -2120,6 +2068,6 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
+@@ -2119,6 +2067,6 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
@@ -122 +123 @@
-@@ -2132,6 +2080,5 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
+@@ -2131,6 +2079,5 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
@@ -130 +131 @@
-@@ -2139,25 +2086,8 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
+@@ -2138,25 +2085,8 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
@@ -156 +157 @@
-@@ -2166,4 +2096,18 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
+@@ -2165,4 +2095,18 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,


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

* [dpdk-stable] patch 'net/qede: fix stats flow as per new allocation method' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (39 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix RSS configuration as per new allocation method' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'ci: add missing dependencies for documentation' " Kevin Traynor
                   ` (2 subsequent siblings)
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 0dede47cf0a1eb29c7d44f8944675bb4a335df7e Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Thu, 12 Sep 2019 08:24:15 -0700
Subject: [PATCH] net/qede: fix stats flow as per new allocation method

[ upstream commit 0aa3e7b925e1ebefdcb9e49d4b1a4c4bc9a127c9 ]

As per new method, need to consider hw stats of queues from
both engines. This patch fixes the stats collection flow accordingly.

Fixes: 2af14ca79c0a ("net/qede: support 100G")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/qede/qede_ethdev.c | 143 ++++++++++++++++++---------------
 1 file changed, 79 insertions(+), 64 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 493d0bce0..97d991cad 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -6,4 +6,5 @@
 
 #include "qede_ethdev.h"
+#include <rte_string_fns.h>
 #include <rte_alarm.h>
 #include <rte_version.h>
@@ -1475,5 +1476,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 	struct ecore_dev *edev = &qdev->edev;
 	struct ecore_eth_stats stats;
-	unsigned int i = 0, j = 0, qid;
+	unsigned int i = 0, j = 0, qid, idx, hw_fn;
 	unsigned int rxq_stat_cntrs, txq_stat_cntrs;
 	struct qede_tx_queue *txq;
@@ -1523,18 +1524,26 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 
 	for (qid = 0; qid < eth_dev->data->nb_rx_queues; qid++) {
-		eth_stats->q_ipackets[i] =
-			*(uint64_t *)(
-				((char *)(qdev->fp_array[qid].rxq)) +
-				offsetof(struct qede_rx_queue,
-				rcv_pkts));
-		eth_stats->q_errors[i] =
-			*(uint64_t *)(
-				((char *)(qdev->fp_array[qid].rxq)) +
-				offsetof(struct qede_rx_queue,
-				rx_hw_errors)) +
-			*(uint64_t *)(
-				((char *)(qdev->fp_array[qid].rxq)) +
-				offsetof(struct qede_rx_queue,
-				rx_alloc_errors));
+		eth_stats->q_ipackets[i] = 0;
+		eth_stats->q_errors[i] = 0;
+
+		for_each_hwfn(edev, hw_fn) {
+			idx = qid * edev->num_hwfns + hw_fn;
+
+			eth_stats->q_ipackets[i] +=
+				*(uint64_t *)
+					(((char *)(qdev->fp_array[idx].rxq)) +
+					 offsetof(struct qede_rx_queue,
+					 rcv_pkts));
+			eth_stats->q_errors[i] +=
+				*(uint64_t *)
+					(((char *)(qdev->fp_array[idx].rxq)) +
+					 offsetof(struct qede_rx_queue,
+					 rx_hw_errors)) +
+				*(uint64_t *)
+					(((char *)(qdev->fp_array[idx].rxq)) +
+					 offsetof(struct qede_rx_queue,
+					 rx_alloc_errors));
+		}
+
 		i++;
 		if (i == rxq_stat_cntrs)
@@ -1543,10 +1552,17 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 
 	for (qid = 0; qid < eth_dev->data->nb_tx_queues; qid++) {
-		txq = qdev->fp_array[qid].txq;
-		eth_stats->q_opackets[j] =
-			*((uint64_t *)(uintptr_t)
-				(((uint64_t)(uintptr_t)(txq)) +
-				 offsetof(struct qede_tx_queue,
-					  xmit_pkts)));
+		eth_stats->q_opackets[j] = 0;
+
+		for_each_hwfn(edev, hw_fn) {
+			idx = qid * edev->num_hwfns + hw_fn;
+
+			txq = qdev->fp_array[idx].txq;
+			eth_stats->q_opackets[j] +=
+				*((uint64_t *)(uintptr_t)
+					(((uint64_t)(uintptr_t)(txq)) +
+					 offsetof(struct qede_tx_queue,
+						  xmit_pkts)));
+		}
+
 		j++;
 		if (j == txq_stat_cntrs)
@@ -1581,43 +1597,41 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
 	struct ecore_dev *edev = &qdev->edev;
 	const unsigned int stat_cnt = qede_get_xstats_count(qdev);
-	unsigned int i, qid, stat_idx = 0;
-	unsigned int rxq_stat_cntrs;
+	unsigned int i, qid, hw_fn, stat_idx = 0;
 
-	if (xstats_names != NULL) {
-		for (i = 0; i < RTE_DIM(qede_xstats_strings); i++) {
-			snprintf(xstats_names[stat_idx].name,
-				sizeof(xstats_names[stat_idx].name),
-				"%s",
-				qede_xstats_strings[i].name);
+	if (xstats_names == NULL)
+		return stat_cnt;
+
+	for (i = 0; i < RTE_DIM(qede_xstats_strings); i++) {
+		strlcpy(xstats_names[stat_idx].name,
+			qede_xstats_strings[i].name,
+			sizeof(xstats_names[stat_idx].name));
+		stat_idx++;
+	}
+
+	if (ECORE_IS_BB(edev)) {
+		for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) {
+			strlcpy(xstats_names[stat_idx].name,
+				qede_bb_xstats_strings[i].name,
+				sizeof(xstats_names[stat_idx].name));
 			stat_idx++;
 		}
-
-		if (ECORE_IS_BB(edev)) {
-			for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) {
-				snprintf(xstats_names[stat_idx].name,
-					sizeof(xstats_names[stat_idx].name),
-					"%s",
-					qede_bb_xstats_strings[i].name);
-				stat_idx++;
-			}
-		} else {
-			for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) {
-				snprintf(xstats_names[stat_idx].name,
-					sizeof(xstats_names[stat_idx].name),
-					"%s",
-					qede_ah_xstats_strings[i].name);
-				stat_idx++;
-			}
+	} else {
+		for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) {
+			strlcpy(xstats_names[stat_idx].name,
+				qede_ah_xstats_strings[i].name,
+				sizeof(xstats_names[stat_idx].name));
+			stat_idx++;
 		}
+	}
 
-		rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(dev),
-					 RTE_ETHDEV_QUEUE_STAT_CNTRS);
-		for (qid = 0; qid < rxq_stat_cntrs; qid++) {
+	for (qid = 0; qid < QEDE_RSS_COUNT(dev); qid++) {
+		for_each_hwfn(edev, hw_fn) {
 			for (i = 0; i < RTE_DIM(qede_rxq_xstats_strings); i++) {
 				snprintf(xstats_names[stat_idx].name,
-					sizeof(xstats_names[stat_idx].name),
-					"%.4s%d%s",
-					qede_rxq_xstats_strings[i].name, qid,
-					qede_rxq_xstats_strings[i].name + 4);
+					 RTE_ETH_XSTATS_NAME_SIZE,
+					 "%.4s%d.%d%s",
+					 qede_rxq_xstats_strings[i].name,
+					 hw_fn, qid,
+					 qede_rxq_xstats_strings[i].name + 4);
 				stat_idx++;
 			}
@@ -1636,6 +1650,5 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
 	struct ecore_eth_stats stats;
 	const unsigned int num = qede_get_xstats_count(qdev);
-	unsigned int i, qid, stat_idx = 0;
-	unsigned int rxq_stat_cntrs;
+	unsigned int i, qid, hw_fn, fpidx, stat_idx = 0;
 
 	if (n < num)
@@ -1669,13 +1682,15 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
 	}
 
-	rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(dev),
-				 RTE_ETHDEV_QUEUE_STAT_CNTRS);
-	for (qid = 0; qid < rxq_stat_cntrs; qid++) {
-		for (i = 0; i < RTE_DIM(qede_rxq_xstats_strings); i++) {
-			xstats[stat_idx].value = *(uint64_t *)
-				(((char *)(qdev->fp_array[qid].rxq)) +
-				 qede_rxq_xstats_strings[i].offset);
-			xstats[stat_idx].id = stat_idx;
-			stat_idx++;
+	for (qid = 0; qid < dev->data->nb_rx_queues; qid++) {
+		for_each_hwfn(edev, hw_fn) {
+			for (i = 0; i < RTE_DIM(qede_rxq_xstats_strings); i++) {
+				fpidx = qid * edev->num_hwfns + hw_fn;
+				xstats[stat_idx].value = *(uint64_t *)
+					(((char *)(qdev->fp_array[fpidx].rxq)) +
+					 qede_rxq_xstats_strings[i].offset);
+				xstats[stat_idx].id = stat_idx;
+				stat_idx++;
+			}
+
 		}
 	}
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.441184443 +0000
+++ 0042-net-qede-fix-stats-flow-as-per-new-allocation-method.patch	2019-11-22 14:36:55.226148666 +0000
@@ -1 +1 @@
-From 0aa3e7b925e1ebefdcb9e49d4b1a4c4bc9a127c9 Mon Sep 17 00:00:00 2001
+From 0dede47cf0a1eb29c7d44f8944675bb4a335df7e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0aa3e7b925e1ebefdcb9e49d4b1a4c4bc9a127c9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -14,2 +15,2 @@
- drivers/net/qede/qede_ethdev.c | 135 +++++++++++++++++++--------------
- 1 file changed, 76 insertions(+), 59 deletions(-)
+ drivers/net/qede/qede_ethdev.c | 143 ++++++++++++++++++---------------
+ 1 file changed, 79 insertions(+), 64 deletions(-)
@@ -18 +19 @@
-index 8b75ca3a7..98290fdc7 100644
+index 493d0bce0..97d991cad 100644
@@ -21 +22,7 @@
-@@ -1478,5 +1478,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -6,4 +6,5 @@
+ 
+ #include "qede_ethdev.h"
++#include <rte_string_fns.h>
+ #include <rte_alarm.h>
+ #include <rte_version.h>
+@@ -1475,5 +1476,5 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -28 +35 @@
-@@ -1526,18 +1526,26 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1523,18 +1524,26 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -69 +76 @@
-@@ -1546,10 +1554,17 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
+@@ -1543,10 +1552,17 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
@@ -93 +100 @@
-@@ -1584,40 +1599,41 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
+@@ -1581,43 +1597,41 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
@@ -101,0 +109,4 @@
+-			snprintf(xstats_names[stat_idx].name,
+-				sizeof(xstats_names[stat_idx].name),
+-				"%s",
+-				qede_xstats_strings[i].name);
@@ -114,2 +125 @@
- 			strlcpy(xstats_names[stat_idx].name,
--				qede_xstats_strings[i].name,
++			strlcpy(xstats_names[stat_idx].name,
@@ -117 +127 @@
- 				sizeof(xstats_names[stat_idx].name));
++				sizeof(xstats_names[stat_idx].name));
@@ -123,3 +133,4 @@
--				strlcpy(xstats_names[stat_idx].name,
--					qede_bb_xstats_strings[i].name,
--					sizeof(xstats_names[stat_idx].name));
+-				snprintf(xstats_names[stat_idx].name,
+-					sizeof(xstats_names[stat_idx].name),
+-					"%s",
+-					qede_bb_xstats_strings[i].name);
@@ -130,3 +141,4 @@
--				strlcpy(xstats_names[stat_idx].name,
--					qede_ah_xstats_strings[i].name,
--					sizeof(xstats_names[stat_idx].name));
+-				snprintf(xstats_names[stat_idx].name,
+-					sizeof(xstats_names[stat_idx].name),
+-					"%s",
+-					qede_ah_xstats_strings[i].name);
@@ -162 +174 @@
-@@ -1636,6 +1652,5 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -1636,6 +1650,5 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
@@ -170 +182 @@
-@@ -1669,13 +1684,15 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -1669,13 +1682,15 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,


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

* [dpdk-stable] patch 'ci: add missing dependencies for documentation' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (40 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix stats flow " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix i219 hang on reset/close' " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix memory barrier usage in Tx' " Kevin Traynor
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: David Marchand; +Cc: Aaron Conole, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 9bbac9b19682b01344b8f959d8cc098684ad7fcd Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 13 Aug 2019 15:22:16 +0200
Subject: [PATCH] ci: add missing dependencies for documentation

[ upstream commit 7632da0b875f0e2ca9b5c1bc03e8a43bc25c9f9e]

Install missing dependencies so that doc can be generated.
While at it, explicitly configure that we want the doc to be generated.
Missing dependencies are then reported as an error rather than silently
ignored.

Because of these extra dependencies, only build them in dedicated travis
jobs.

Fixes: ad2b2cfb1ea3 ("ci: enable unit tests with Travis")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Aaron Conole <aconole@redhat.com>
---
 .ci/linux-build.sh | 4 ++++
 .travis.yml        | 7 ++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 4eb7c3cf0..4d28d1222 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -20,4 +20,8 @@ if [ "$AARCH64" = "1" ]; then
 fi
 
+if [ "$BUILD_DOCS" = "1" ]; then
+    OPTS="$OPTS -Denable_docs=true"
+fi
+
 OPTS="$OPTS --default-library=$DEF_LIB"
 meson build --werror -Dexamples=all $OPTS
diff --git a/.travis.yml b/.travis.yml
index 7b167fa64..636c38cec 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -24,4 +24,7 @@ extra_packages: &extra_packages
   - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
 
+doc_packages: &doc_packages
+  - [doxygen, graphviz, python3-sphinx]
+
 before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
 
@@ -52,5 +55,5 @@ matrix:
         packages:
           - *extra_packages
-  - env: DEF_LIB="shared" EXTRA_PACKAGES=1
+  - env: DEF_LIB="shared" EXTRA_PACKAGES=1 BUILD_DOCS=1
     compiler: gcc
     addons:
@@ -58,4 +61,5 @@ matrix:
         packages:
           - *extra_packages
+          - *doc_packages
   - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
     compiler: gcc
@@ -82,4 +86,5 @@ matrix:
         packages:
           - *extra_packages
+          - *doc_packages
   - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
     compiler: clang
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.496284096 +0000
+++ 0043-ci-add-missing-dependencies-for-documentation.patch	2019-11-22 14:36:55.227148645 +0000
@@ -0,0 +1,71 @@
+From 9bbac9b19682b01344b8f959d8cc098684ad7fcd Mon Sep 17 00:00:00 2001
+From: David Marchand <david.marchand@redhat.com>
+Date: Tue, 13 Aug 2019 15:22:16 +0200
+Subject: [PATCH] ci: add missing dependencies for documentation
+
+[ upstream commit 7632da0b875f0e2ca9b5c1bc03e8a43bc25c9f9e]
+
+Install missing dependencies so that doc can be generated.
+While at it, explicitly configure that we want the doc to be generated.
+Missing dependencies are then reported as an error rather than silently
+ignored.
+
+Because of these extra dependencies, only build them in dedicated travis
+jobs.
+
+Fixes: ad2b2cfb1ea3 ("ci: enable unit tests with Travis")
+
+Signed-off-by: David Marchand <david.marchand@redhat.com>
+Acked-by: Aaron Conole <aconole@redhat.com>
+---
+ .ci/linux-build.sh | 4 ++++
+ .travis.yml        | 7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
+index 4eb7c3cf0..4d28d1222 100755
+--- a/.ci/linux-build.sh
++++ b/.ci/linux-build.sh
+@@ -20,4 +20,8 @@ if [ "$AARCH64" = "1" ]; then
+ fi
+ 
++if [ "$BUILD_DOCS" = "1" ]; then
++    OPTS="$OPTS -Denable_docs=true"
++fi
++
+ OPTS="$OPTS --default-library=$DEF_LIB"
+ meson build --werror -Dexamples=all $OPTS
+diff --git a/.travis.yml b/.travis.yml
+index 7b167fa64..636c38cec 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -24,4 +24,7 @@ extra_packages: &extra_packages
+   - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ 
++doc_packages: &doc_packages
++  - [doxygen, graphviz, python3-sphinx]
++
+ before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
+ 
+@@ -52,5 +55,5 @@ matrix:
+         packages:
+           - *extra_packages
+-  - env: DEF_LIB="shared" EXTRA_PACKAGES=1
++  - env: DEF_LIB="shared" EXTRA_PACKAGES=1 BUILD_DOCS=1
+     compiler: gcc
+     addons:
+@@ -58,4 +61,5 @@ matrix:
+         packages:
+           - *extra_packages
++          - *doc_packages
+   - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
+     compiler: gcc
+@@ -82,4 +86,5 @@ matrix:
+         packages:
+           - *extra_packages
++          - *doc_packages
+   - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
+     compiler: clang
+-- 
+2.21.0
+


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

* [dpdk-stable] patch 'net/e1000: fix i219 hang on reset/close' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (41 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'ci: add missing dependencies for documentation' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix memory barrier usage in Tx' " Kevin Traynor
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Xiaolong Ye, Kevin Traynor, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 0c97c2c11cb9408f35cebbb6aaf94ed45671ccbc Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Mon, 22 Jul 2019 23:11:52 +0800
Subject: [PATCH] net/e1000: fix i219 hang on reset/close

[ upstream commit 1fc9701238edcf0541289b9ae15565b6d9d7ab30]
[ upstream commit 675f65dc660805eff1953e3dfb6242ec076a9444]

Squashing these commits because an issue was identified with
the first commit after it was applied on master but before
backported to stable. The second commit fixes the issue
introduced in the first commit.

commit 1fc9701238edcf0541289b9ae15565b6d9d7ab30
Author: Xiao Zhang <xiao.zhang@intel.com>
Date:   Mon Jul 22 23:11:52 2019 +0800

    net/e1000: fix i219 hang on reset/close

    Unit hang may occur if multiple descriptors are available in the rings
    during reset or close. This state can be detected by configure status
    by bit 8 in register. If the bit is set and there are pending
    descriptors in one of the rings, we must flush them before reset or
    close.

    Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")

    Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
    Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>

commit 675f65dc660805eff1953e3dfb6242ec076a9444
Author: Xiao Zhang <xiao.zhang@intel.com>
Date:   Wed Sep 11 01:40:55 2019 +0800

    net/e1000: fix MAC type checking

    The mac types of i219 are e1000_pch_spt and e1000_pch_cnp, correct the
    checking code of mac type when flushing i219 descriptor rings.

    Fixes: 1fc9701238ed ("net/e1000: fix i219 hang on reset/close")

    Reported-by: Kevin Traynor <ktraynor@redhat.com>
    Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
    Acked-by: Kevin Traynor <ktraynor@redhat.com>
    Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
 drivers/net/e1000/e1000_ethdev.h |   4 ++
 drivers/net/e1000/em_ethdev.c    |   5 ++
 drivers/net/e1000/em_rxtx.c      | 111 +++++++++++++++++++++++++++++++
 3 files changed, 120 insertions(+)

diff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h
index 94edff08e..78fb61e41 100644
--- a/drivers/net/e1000/e1000_ethdev.h
+++ b/drivers/net/e1000/e1000_ethdev.h
@@ -36,4 +36,7 @@
 #define IGB_MAX_RX_QUEUE_NUM_82576     16
 
+#define E1000_I219_MAX_RX_QUEUE_NUM		2
+#define E1000_I219_MAX_TX_QUEUE_NUM		2
+
 #define E1000_SYN_FILTER_ENABLE        0x00000001 /* syn filter enable field */
 #define E1000_SYN_FILTER_QUEUE         0x0000000E /* syn filter queue field */
@@ -516,4 +519,5 @@ int igb_config_rss_filter(struct rte_eth_dev *dev,
 			struct igb_rte_flow_rss_conf *conf,
 			bool add);
+void em_flush_desc_rings(struct rte_eth_dev *dev);
 
 #endif /* _E1000_ETHDEV_H_ */
diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 8230824e7..123c73053 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -738,4 +738,9 @@ eth_em_stop(struct rte_eth_dev *dev)
 
 	e1000_reset_hw(hw);
+
+	/* Flush desc rings for i219 */
+	if (hw->mac.type == e1000_pch_spt || hw->mac.type == e1000_pch_cnp)
+		em_flush_desc_rings(dev);
+
 	if (hw->mac.type >= e1000_82544)
 		E1000_WRITE_REG(hw, E1000_WUC, 0);
diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
index 67c7ec701..951d1642c 100644
--- a/drivers/net/e1000/em_rxtx.c
+++ b/drivers/net/e1000/em_rxtx.c
@@ -19,4 +19,5 @@
 #include <rte_debug.h>
 #include <rte_pci.h>
+#include <rte_bus_pci.h>
 #include <rte_memory.h>
 #include <rte_memcpy.h>
@@ -60,4 +61,9 @@
 		(PKT_TX_OFFLOAD_MASK ^ E1000_TX_OFFLOAD_MASK)
 
+/* PCI offset for querying configuration status register */
+#define PCI_CFG_STATUS_REG                 0x06
+#define FLUSH_DESC_REQUIRED               0x100
+
+
 /**
  * Structure associated with each descriptor of the RX ring of a RX queue.
@@ -2017,2 +2023,107 @@ em_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
 	qinfo->conf.offloads = txq->offloads;
 }
+
+static void
+e1000_flush_tx_ring(struct rte_eth_dev *dev)
+{
+	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	volatile struct e1000_data_desc *tx_desc;
+	volatile uint32_t *tdt_reg_addr;
+	uint32_t tdt, tctl, txd_lower = E1000_TXD_CMD_IFCS;
+	uint16_t size = 512;
+	struct em_tx_queue *txq;
+	int i;
+
+	if (dev->data->tx_queues == NULL)
+		return;
+	tctl = E1000_READ_REG(hw, E1000_TCTL);
+	E1000_WRITE_REG(hw, E1000_TCTL, tctl | E1000_TCTL_EN);
+	for (i = 0; i < dev->data->nb_tx_queues &&
+		i < E1000_I219_MAX_TX_QUEUE_NUM; i++) {
+		txq = dev->data->tx_queues[i];
+		tdt = E1000_READ_REG(hw, E1000_TDT(i));
+		if (tdt != txq->tx_tail)
+			return;
+		tx_desc = &txq->tx_ring[txq->tx_tail];
+		tx_desc->buffer_addr = rte_cpu_to_le_64(txq->tx_ring_phys_addr);
+		tx_desc->lower.data = rte_cpu_to_le_32(txd_lower | size);
+		tx_desc->upper.data = 0;
+
+		rte_wmb();
+		txq->tx_tail++;
+		if (txq->tx_tail == txq->nb_tx_desc)
+			txq->tx_tail = 0;
+		rte_io_wmb();
+		tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(i));
+		E1000_PCI_REG_WRITE_RELAXED(tdt_reg_addr, txq->tx_tail);
+		usec_delay(250);
+	}
+}
+
+static void
+e1000_flush_rx_ring(struct rte_eth_dev *dev)
+{
+	uint32_t rctl, rxdctl;
+	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	int i;
+
+	rctl = E1000_READ_REG(hw, E1000_RCTL);
+	E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
+	E1000_WRITE_FLUSH(hw);
+	usec_delay(150);
+
+	for (i = 0; i < dev->data->nb_rx_queues &&
+		i < E1000_I219_MAX_RX_QUEUE_NUM; i++) {
+		rxdctl = E1000_READ_REG(hw, E1000_RXDCTL(i));
+		/* zero the lower 14 bits (prefetch and host thresholds) */
+		rxdctl &= 0xffffc000;
+
+		/* update thresholds: prefetch threshold to 31,
+		 * host threshold to 1 and make sure the granularity
+		 * is "descriptors" and not "cache lines"
+		 */
+		rxdctl |= (0x1F | (1UL << 8) | E1000_RXDCTL_THRESH_UNIT_DESC);
+
+		E1000_WRITE_REG(hw, E1000_RXDCTL(i), rxdctl);
+	}
+	/* momentarily enable the RX ring for the changes to take effect */
+	E1000_WRITE_REG(hw, E1000_RCTL, rctl | E1000_RCTL_EN);
+	E1000_WRITE_FLUSH(hw);
+	usec_delay(150);
+	E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
+}
+
+/**
+ * em_flush_desc_rings - remove all descriptors from the descriptor rings
+ *
+ * In i219, the descriptor rings must be emptied before resetting/closing the
+ * HW. Failure to do this will cause the HW to enter a unit hang state which
+ * can only be released by PCI reset on the device
+ *
+ */
+
+void
+em_flush_desc_rings(struct rte_eth_dev *dev)
+{
+	uint32_t fextnvm11, tdlen;
+	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+	uint16_t pci_cfg_status = 0;
+
+	fextnvm11 = E1000_READ_REG(hw, E1000_FEXTNVM11);
+	E1000_WRITE_REG(hw, E1000_FEXTNVM11,
+			fextnvm11 | E1000_FEXTNVM11_DISABLE_MULR_FIX);
+	tdlen = E1000_READ_REG(hw, E1000_TDLEN(0));
+	rte_pci_read_config(pci_dev, &pci_cfg_status, sizeof(pci_cfg_status),
+				PCI_CFG_STATUS_REG);
+
+	/* do nothing if we're not in faulty state, or if the queue is empty */
+	if ((pci_cfg_status & FLUSH_DESC_REQUIRED) && tdlen) {
+		/* flush desc ring */
+		e1000_flush_tx_ring(dev);
+		rte_pci_read_config(pci_dev, &pci_cfg_status,
+				sizeof(pci_cfg_status), PCI_CFG_STATUS_REG);
+		if (pci_cfg_status & FLUSH_DESC_REQUIRED)
+			e1000_flush_rx_ring(dev);
+	}
+}
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.543482433 +0000
+++ 0044-net-e1000-fix-i219-hang-on-reset-close.patch	2019-11-22 14:36:55.231148560 +0000
@@ -0,0 +1,216 @@
+From 0c97c2c11cb9408f35cebbb6aaf94ed45671ccbc Mon Sep 17 00:00:00 2001
+From: Xiao Zhang <xiao.zhang@intel.com>
+Date: Mon, 22 Jul 2019 23:11:52 +0800
+Subject: [PATCH] net/e1000: fix i219 hang on reset/close
+
+[ upstream commit 1fc9701238edcf0541289b9ae15565b6d9d7ab30]
+[ upstream commit 675f65dc660805eff1953e3dfb6242ec076a9444]
+
+Squashing these commits because an issue was identified with
+the first commit after it was applied on master but before
+backported to stable. The second commit fixes the issue
+introduced in the first commit.
+
+commit 1fc9701238edcf0541289b9ae15565b6d9d7ab30
+Author: Xiao Zhang <xiao.zhang@intel.com>
+Date:   Mon Jul 22 23:11:52 2019 +0800
+
+    net/e1000: fix i219 hang on reset/close
+
+    Unit hang may occur if multiple descriptors are available in the rings
+    during reset or close. This state can be detected by configure status
+    by bit 8 in register. If the bit is set and there are pending
+    descriptors in one of the rings, we must flush them before reset or
+    close.
+
+    Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")
+
+    Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
+    Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
+
+commit 675f65dc660805eff1953e3dfb6242ec076a9444
+Author: Xiao Zhang <xiao.zhang@intel.com>
+Date:   Wed Sep 11 01:40:55 2019 +0800
+
+    net/e1000: fix MAC type checking
+
+    The mac types of i219 are e1000_pch_spt and e1000_pch_cnp, correct the
+    checking code of mac type when flushing i219 descriptor rings.
+
+    Fixes: 1fc9701238ed ("net/e1000: fix i219 hang on reset/close")
+
+    Reported-by: Kevin Traynor <ktraynor@redhat.com>
+    Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
+    Acked-by: Kevin Traynor <ktraynor@redhat.com>
+    Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
+
+Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
+---
+ drivers/net/e1000/e1000_ethdev.h |   4 ++
+ drivers/net/e1000/em_ethdev.c    |   5 ++
+ drivers/net/e1000/em_rxtx.c      | 111 +++++++++++++++++++++++++++++++
+ 3 files changed, 120 insertions(+)
+
+diff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h
+index 94edff08e..78fb61e41 100644
+--- a/drivers/net/e1000/e1000_ethdev.h
++++ b/drivers/net/e1000/e1000_ethdev.h
+@@ -36,4 +36,7 @@
+ #define IGB_MAX_RX_QUEUE_NUM_82576     16
+ 
++#define E1000_I219_MAX_RX_QUEUE_NUM		2
++#define E1000_I219_MAX_TX_QUEUE_NUM		2
++
+ #define E1000_SYN_FILTER_ENABLE        0x00000001 /* syn filter enable field */
+ #define E1000_SYN_FILTER_QUEUE         0x0000000E /* syn filter queue field */
+@@ -516,4 +519,5 @@ int igb_config_rss_filter(struct rte_eth_dev *dev,
+ 			struct igb_rte_flow_rss_conf *conf,
+ 			bool add);
++void em_flush_desc_rings(struct rte_eth_dev *dev);
+ 
+ #endif /* _E1000_ETHDEV_H_ */
+diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
+index 8230824e7..123c73053 100644
+--- a/drivers/net/e1000/em_ethdev.c
++++ b/drivers/net/e1000/em_ethdev.c
+@@ -738,4 +738,9 @@ eth_em_stop(struct rte_eth_dev *dev)
+ 
+ 	e1000_reset_hw(hw);
++
++	/* Flush desc rings for i219 */
++	if (hw->mac.type == e1000_pch_spt || hw->mac.type == e1000_pch_cnp)
++		em_flush_desc_rings(dev);
++
+ 	if (hw->mac.type >= e1000_82544)
+ 		E1000_WRITE_REG(hw, E1000_WUC, 0);
+diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
+index 67c7ec701..951d1642c 100644
+--- a/drivers/net/e1000/em_rxtx.c
++++ b/drivers/net/e1000/em_rxtx.c
+@@ -19,4 +19,5 @@
+ #include <rte_debug.h>
+ #include <rte_pci.h>
++#include <rte_bus_pci.h>
+ #include <rte_memory.h>
+ #include <rte_memcpy.h>
+@@ -60,4 +61,9 @@
+ 		(PKT_TX_OFFLOAD_MASK ^ E1000_TX_OFFLOAD_MASK)
+ 
++/* PCI offset for querying configuration status register */
++#define PCI_CFG_STATUS_REG                 0x06
++#define FLUSH_DESC_REQUIRED               0x100
++
++
+ /**
+  * Structure associated with each descriptor of the RX ring of a RX queue.
+@@ -2017,2 +2023,107 @@ em_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
+ 	qinfo->conf.offloads = txq->offloads;
+ }
++
++static void
++e1000_flush_tx_ring(struct rte_eth_dev *dev)
++{
++	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
++	volatile struct e1000_data_desc *tx_desc;
++	volatile uint32_t *tdt_reg_addr;
++	uint32_t tdt, tctl, txd_lower = E1000_TXD_CMD_IFCS;
++	uint16_t size = 512;
++	struct em_tx_queue *txq;
++	int i;
++
++	if (dev->data->tx_queues == NULL)
++		return;
++	tctl = E1000_READ_REG(hw, E1000_TCTL);
++	E1000_WRITE_REG(hw, E1000_TCTL, tctl | E1000_TCTL_EN);
++	for (i = 0; i < dev->data->nb_tx_queues &&
++		i < E1000_I219_MAX_TX_QUEUE_NUM; i++) {
++		txq = dev->data->tx_queues[i];
++		tdt = E1000_READ_REG(hw, E1000_TDT(i));
++		if (tdt != txq->tx_tail)
++			return;
++		tx_desc = &txq->tx_ring[txq->tx_tail];
++		tx_desc->buffer_addr = rte_cpu_to_le_64(txq->tx_ring_phys_addr);
++		tx_desc->lower.data = rte_cpu_to_le_32(txd_lower | size);
++		tx_desc->upper.data = 0;
++
++		rte_wmb();
++		txq->tx_tail++;
++		if (txq->tx_tail == txq->nb_tx_desc)
++			txq->tx_tail = 0;
++		rte_io_wmb();
++		tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(i));
++		E1000_PCI_REG_WRITE_RELAXED(tdt_reg_addr, txq->tx_tail);
++		usec_delay(250);
++	}
++}
++
++static void
++e1000_flush_rx_ring(struct rte_eth_dev *dev)
++{
++	uint32_t rctl, rxdctl;
++	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
++	int i;
++
++	rctl = E1000_READ_REG(hw, E1000_RCTL);
++	E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
++	E1000_WRITE_FLUSH(hw);
++	usec_delay(150);
++
++	for (i = 0; i < dev->data->nb_rx_queues &&
++		i < E1000_I219_MAX_RX_QUEUE_NUM; i++) {
++		rxdctl = E1000_READ_REG(hw, E1000_RXDCTL(i));
++		/* zero the lower 14 bits (prefetch and host thresholds) */
++		rxdctl &= 0xffffc000;
++
++		/* update thresholds: prefetch threshold to 31,
++		 * host threshold to 1 and make sure the granularity
++		 * is "descriptors" and not "cache lines"
++		 */
++		rxdctl |= (0x1F | (1UL << 8) | E1000_RXDCTL_THRESH_UNIT_DESC);
++
++		E1000_WRITE_REG(hw, E1000_RXDCTL(i), rxdctl);
++	}
++	/* momentarily enable the RX ring for the changes to take effect */
++	E1000_WRITE_REG(hw, E1000_RCTL, rctl | E1000_RCTL_EN);
++	E1000_WRITE_FLUSH(hw);
++	usec_delay(150);
++	E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
++}
++
++/**
++ * em_flush_desc_rings - remove all descriptors from the descriptor rings
++ *
++ * In i219, the descriptor rings must be emptied before resetting/closing the
++ * HW. Failure to do this will cause the HW to enter a unit hang state which
++ * can only be released by PCI reset on the device
++ *
++ */
++
++void
++em_flush_desc_rings(struct rte_eth_dev *dev)
++{
++	uint32_t fextnvm11, tdlen;
++	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
++	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
++	uint16_t pci_cfg_status = 0;
++
++	fextnvm11 = E1000_READ_REG(hw, E1000_FEXTNVM11);
++	E1000_WRITE_REG(hw, E1000_FEXTNVM11,
++			fextnvm11 | E1000_FEXTNVM11_DISABLE_MULR_FIX);
++	tdlen = E1000_READ_REG(hw, E1000_TDLEN(0));
++	rte_pci_read_config(pci_dev, &pci_cfg_status, sizeof(pci_cfg_status),
++				PCI_CFG_STATUS_REG);
++
++	/* do nothing if we're not in faulty state, or if the queue is empty */
++	if ((pci_cfg_status & FLUSH_DESC_REQUIRED) && tdlen) {
++		/* flush desc ring */
++		e1000_flush_tx_ring(dev);
++		rte_pci_read_config(pci_dev, &pci_cfg_status,
++				sizeof(pci_cfg_status), PCI_CFG_STATUS_REG);
++		if (pci_cfg_status & FLUSH_DESC_REQUIRED)
++			e1000_flush_rx_ring(dev);
++	}
++}
+-- 
+2.21.0
+


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

* [dpdk-stable] patch 'net/e1000: fix memory barrier usage in Tx' has been queued to LTS release 18.11.6
  2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
                   ` (42 preceding siblings ...)
  2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix i219 hang on reset/close' " Kevin Traynor
@ 2019-11-22 14:41 ` " Kevin Traynor
  43 siblings, 0 replies; 45+ messages in thread
From: Kevin Traynor @ 2019-11-22 14:41 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Gavin Hu, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.6

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

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

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

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

Thanks.

Kevin.

---
From 29152383a7bf8a055bf83c63da435337f9d681b3 Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Wed, 11 Sep 2019 01:41:18 +0800
Subject: [PATCH] net/e1000: fix memory barrier usage in Tx

[ upstream commit d6956e92390c8fb2fcbd0f3363169b88a012154c]

Use rte_cio_wmb instead of rte_wmb when writing TX descriptor since it's
CIO memory.
Replace rte_io_wmb and E1000_PCI_REG_WRITE_RELAXED with
E1000_PCI_REG_WRITE since it has rte_io_wmb inside, which will be more
clear.

Fixes: 1fc9701238ed ("net/e1000: fix i219 hang on reset/close")

Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/e1000/em_rxtx.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
index 951d1642c..322c98422 100644
--- a/drivers/net/e1000/em_rxtx.c
+++ b/drivers/net/e1000/em_rxtx.c
@@ -2050,11 +2050,10 @@ e1000_flush_tx_ring(struct rte_eth_dev *dev)
 		tx_desc->upper.data = 0;
 
-		rte_wmb();
+		rte_cio_wmb();
 		txq->tx_tail++;
 		if (txq->tx_tail == txq->nb_tx_desc)
 			txq->tx_tail = 0;
-		rte_io_wmb();
 		tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(i));
-		E1000_PCI_REG_WRITE_RELAXED(tdt_reg_addr, txq->tx_tail);
+		E1000_PCI_REG_WRITE(tdt_reg_addr, txq->tx_tail);
 		usec_delay(250);
 	}
-- 
2.21.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-11-22 14:36:57.594255630 +0000
+++ 0045-net-e1000-fix-memory-barrier-usage-in-Tx.patch	2019-11-22 14:36:55.233148517 +0000
@@ -0,0 +1,43 @@
+From 29152383a7bf8a055bf83c63da435337f9d681b3 Mon Sep 17 00:00:00 2001
+From: Xiao Zhang <xiao.zhang@intel.com>
+Date: Wed, 11 Sep 2019 01:41:18 +0800
+Subject: [PATCH] net/e1000: fix memory barrier usage in Tx
+
+[ upstream commit d6956e92390c8fb2fcbd0f3363169b88a012154c]
+
+Use rte_cio_wmb instead of rte_wmb when writing TX descriptor since it's
+CIO memory.
+Replace rte_io_wmb and E1000_PCI_REG_WRITE_RELAXED with
+E1000_PCI_REG_WRITE since it has rte_io_wmb inside, which will be more
+clear.
+
+Fixes: 1fc9701238ed ("net/e1000: fix i219 hang on reset/close")
+
+Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
+Reviewed-by: Gavin Hu <gavin.hu@arm.com>
+Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
+---
+ drivers/net/e1000/em_rxtx.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
+index 951d1642c..322c98422 100644
+--- a/drivers/net/e1000/em_rxtx.c
++++ b/drivers/net/e1000/em_rxtx.c
+@@ -2050,11 +2050,10 @@ e1000_flush_tx_ring(struct rte_eth_dev *dev)
+ 		tx_desc->upper.data = 0;
+ 
+-		rte_wmb();
++		rte_cio_wmb();
+ 		txq->tx_tail++;
+ 		if (txq->tx_tail == txq->nb_tx_desc)
+ 			txq->tx_tail = 0;
+-		rte_io_wmb();
+ 		tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(i));
+-		E1000_PCI_REG_WRITE_RELAXED(tdt_reg_addr, txq->tx_tail);
++		E1000_PCI_REG_WRITE(tdt_reg_addr, txq->tx_tail);
+ 		usec_delay(250);
+ 	}
+-- 
+2.21.0
+


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

end of thread, back to index

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-22 14:40 [dpdk-stable] patch 'net/bonding: fix out of bound access in LACP mode' has been queued to LTS release 18.11.6 Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: fix VF runtime queues RSS config' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'ethdev: fix doc reference to FDIR disabled mode' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'app/testpmd: remove duplicated Rx offload commands' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/atlantic: remove double function declaration' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/i40e: remove compiler " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove memory " Kevin Traynor
2019-11-22 14:40 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/vmxnet3: remove IP checksum from capabilities' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/virtio: remove remaining simple Tx related stuff' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix typo in virtio in-order Rx function name' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'build: remove redundant libs from pkgconfig' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix meson build with custom dependency path' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix unchecked return value' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix access to freed packet' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'security: fix doxygen fields' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/dpaa_sec: fix IOVA table' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'crypto/octeontx: enable unbinding' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'examples/fips_validation: fix null dereferences' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: refactor Rx and Tx queue setup' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix odd number of queues usage in 100G mode' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix RSS configuration as per new allocation method' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/qede: fix stats flow " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'ci: add missing dependencies for documentation' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix i219 hang on reset/close' " Kevin Traynor
2019-11-22 14:41 ` [dpdk-stable] patch 'net/e1000: fix memory barrier usage in Tx' " Kevin Traynor

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox