patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10
@ 2019-12-19 14:32 luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " luca.boccassi
                   ` (137 more replies)
  0 siblings, 138 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: David Marchand; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3d22936c3913cc408ebfdcfbc2303ed2b0c071a3 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 | 75 ++++++++++----------------
 1 file changed, 28 insertions(+), 47 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 9694cfba8b..4de62bcf50 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -31,6 +31,7 @@
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include <stdlib.h>
+#include <stdbool.h>
 #include <netinet/in.h>
 
 #include <rte_mbuf.h>
@@ -282,45 +283,6 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
 	return 0;
 }
 
-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_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
 		uint16_t nb_pkts)
@@ -406,10 +368,9 @@ bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
 	return num_tx_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 */
 	struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
@@ -467,10 +428,16 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 			hdr = rte_pktmbuf_mtod(bufs[j], struct ether_hdr *);
 			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 &&
 					!is_multicast_ether_addr(&hdr->d_addr) &&
 					!is_same_ether_addr(&bond_mac, &hdr->d_addr)))) {
@@ -500,6 +467,20 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 	return num_rx_total;
 }
 
+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;
 uint32_t burstnumberTX;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.394639978 +0000
+++ 0001-net-bonding-fix-LACP-fast-queue-Rx-handler.patch	2019-12-19 14:32:25.377283389 +0000
@@ -1,26 +1,35 @@
-From 58729b54949598cc43d56e22ef813b620651bb6a Mon Sep 17 00:00:00 2001
+From 3d22936c3913cc408ebfdcfbc2303ed2b0c071a3 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")
-Cc: stable@dpdk.org
 
 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(-)
+ drivers/net/bonding/rte_eth_bond_pmd.c | 75 ++++++++++----------------
+ 1 file changed, 28 insertions(+), 47 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 6abd9581cc..44af5ade17 100644
+index 9694cfba8b..4de62bcf50 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
-@@ -254,48 +254,9 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
+@@ -31,6 +31,7 @@
+  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ #include <stdlib.h>
++#include <stdbool.h>
+ #include <netinet/in.h>
+ 
+ #include <rte_mbuf.h>
+@@ -282,45 +283,6 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) {
  	return 0;
  }
  
@@ -63,6 +72,14 @@
 -	return num_rx_total;
 -}
 -
+ static uint16_t
+ bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
+ 		uint16_t nb_pkts)
+@@ -406,10 +368,9 @@ bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,
+ 	return num_tx_total;
+ }
+ 
+-
 -static uint16_t
 -bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 -		uint16_t nb_pkts)
@@ -72,8 +89,8 @@
  {
  	/* Cast to structure, containing bonded device's port id and queue id */
  	struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
-@@ -356,10 +317,16 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
- 			hdr = rte_pktmbuf_mtod(bufs[j], struct rte_ether_hdr *);
+@@ -467,10 +428,16 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+ 			hdr = rte_pktmbuf_mtod(bufs[j], struct ether_hdr *);
  			subtype = ((struct slow_protocol_frame *)hdr)->slow_protocol.subtype;
  
 -			/* Remove packet from array if it is slow packet or slave is not
@@ -90,10 +107,10 @@
 +				(!dedicated_rxq &&
 +				 is_lacp_packets(hdr->ether_type, subtype,
 +						 bufs[j])) ||
- 				!collecting ||
- 				(!promisc &&
- 				 !rte_is_multicast_ether_addr(&hdr->d_addr) &&
-@@ -391,6 +358,20 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
+ 				!collecting || (!promisc &&
+ 					!is_multicast_ether_addr(&hdr->d_addr) &&
+ 					!is_same_ether_addr(&bond_mac, &hdr->d_addr)))) {
+@@ -500,6 +467,20 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
  	return num_rx_total;
  }
  

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

* [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/fm10k: fix stats crash in multi-process' " luca.boccassi
                   ` (136 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: David Marchand; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8c0875f69b6294bf958212f9895a51583b154775 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 4de62bcf50..e2487e5f71 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -415,13 +415,6 @@ 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.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.431110610 +0000
+++ 0002-net-bonding-fix-unicast-packets-filtering.patch	2019-12-19 14:32:25.385283548 +0000
@@ -1,8 +1,10 @@
-From 0ec234460b9282c96033282a9679e88d2df5e58e Mon Sep 17 00:00:00 2001
+From 8c0875f69b6294bf958212f9895a51583b154775 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
@@ -13,7 +15,6 @@
 anymore.
 
 Fixes: 71b7b37ec959 ("net/bonding: use ptype flags for LACP Rx filtering")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Acked-by: Chas Williams <chas3@att.com>
@@ -22,10 +23,10 @@
  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 44af5ade17..49e38f6b17 100644
+index 4de62bcf50..e2487e5f71 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
-@@ -304,13 +304,6 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,
+@@ -415,13 +415,6 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts,
  
  		/* Handle slow protocol packets. */
  		while (j < num_rx_total) {

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

* [dpdk-stable] patch 'net/fm10k: fix stats crash in multi-process' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix endian annotation for SPI item' " luca.boccassi
                   ` (135 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Lu Qiuwen; +Cc: Xiao Wang, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e77625cfc20fcd6d8556755167c7c918b11f8be2 Mon Sep 17 00:00:00 2001
From: Lu Qiuwen <luqiuwen@iie.ac.cn>
Date: Wed, 7 Aug 2019 16:24:22 +0800
Subject: [PATCH] net/fm10k: fix stats crash in multi-process

[ upstream commit 61874d3c0663504f83d93a4701627a5949160a0f ]

The ops pointers in fm10k_stats_get() are set up from primary
process, when secondary process calls these ops pointers,
a segment fault will happen.

Fixes: 7223d200c227 ("fm10k: add base driver")

Signed-off-by: Lu Qiuwen <luqiuwen@iie.ac.cn>
Acked-by: Xiao Wang <xiao.w.wang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/fm10k/base/fm10k_api.c | 20 ++++++++++++++++----
 drivers/net/fm10k/base/fm10k_pf.c  |  4 ++--
 drivers/net/fm10k/base/fm10k_pf.h  |  6 ++++++
 drivers/net/fm10k/base/fm10k_vf.c  |  4 ++--
 drivers/net/fm10k/base/fm10k_vf.h  |  5 +++++
 5 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c
index c49d20dfbd..e7b2fe710a 100644
--- a/drivers/net/fm10k/base/fm10k_api.c
+++ b/drivers/net/fm10k/base/fm10k_api.c
@@ -234,8 +234,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw)
  * */
 void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
 {
-	if (hw->mac.ops.update_hw_stats)
-		hw->mac.ops.update_hw_stats(hw, stats);
+	switch (hw->mac.type) {
+	case fm10k_mac_pf:
+		return fm10k_update_hw_stats_pf(hw, stats);
+	case fm10k_mac_vf:
+		return fm10k_update_hw_stats_vf(hw, stats);
+	default:
+		break;
+	}
 }
 
 /**
@@ -246,8 +252,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
  * */
 void fm10k_rebind_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
 {
-	if (hw->mac.ops.rebind_hw_stats)
-		hw->mac.ops.rebind_hw_stats(hw, stats);
+	switch (hw->mac.type) {
+	case fm10k_mac_pf:
+		return fm10k_rebind_hw_stats_pf(hw, stats);
+	case fm10k_mac_vf:
+		return fm10k_rebind_hw_stats_vf(hw, stats);
+	default:
+		break;
+	}
 }
 
 /**
diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c
index db5f4912f1..f5b6a9e2e0 100644
--- a/drivers/net/fm10k/base/fm10k_pf.c
+++ b/drivers/net/fm10k/base/fm10k_pf.c
@@ -1511,7 +1511,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = {
  *  This function collects and aggregates global and per queue hardware
  *  statistics.
  **/
-STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
+void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
 				     struct fm10k_hw_stats *stats)
 {
 	u32 timeout, ur, ca, um, xec, vlan_drop, loopback_drop, nodesc_drop;
@@ -1584,7 +1584,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
  *  This function resets the base for global and per queue hardware
  *  statistics.
  **/
-STATIC void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw,
+void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw,
 				     struct fm10k_hw_stats *stats)
 {
 	DEBUGFUNC("fm10k_rebind_hw_stats_pf");
diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h
index ca125c2739..2c22bdd02f 100644
--- a/drivers/net/fm10k/base/fm10k_pf.h
+++ b/drivers/net/fm10k/base/fm10k_pf.h
@@ -184,4 +184,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[];
 #endif
 
 s32 fm10k_init_ops_pf(struct fm10k_hw *hw);
+
+void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
+				     struct fm10k_hw_stats *stats);
+
+void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw,
+				     struct fm10k_hw_stats *stats);
 #endif /* _FM10K_PF_H */
diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c
index bd449773a1..2f4b5f5d22 100644
--- a/drivers/net/fm10k/base/fm10k_vf.c
+++ b/drivers/net/fm10k/base/fm10k_vf.c
@@ -526,7 +526,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = {
  *
  *  This function collects and aggregates per queue hardware statistics.
  **/
-STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
+void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
 				     struct fm10k_hw_stats *stats)
 {
 	DEBUGFUNC("fm10k_update_hw_stats_vf");
@@ -541,7 +541,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
  *
  *  This function resets the base for queue hardware statistics.
  **/
-STATIC void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw,
+void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw,
 				     struct fm10k_hw_stats *stats)
 {
 	DEBUGFUNC("fm10k_rebind_hw_stats_vf");
diff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h
index 116c56fcce..d4edd330e8 100644
--- a/drivers/net/fm10k/base/fm10k_vf.h
+++ b/drivers/net/fm10k/base/fm10k_vf.h
@@ -89,4 +89,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[];
 	FM10K_MSG_HANDLER(FM10K_VF_MSG_ID_1588, fm10k_1588_msg_attr, func)
 
 s32 fm10k_init_ops_vf(struct fm10k_hw *hw);
+
+void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
+				     struct fm10k_hw_stats *stats);
+void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw,
+				     struct fm10k_hw_stats *stats);
 #endif /* _FM10K_VF_H */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.469374348 +0000
+++ 0003-net-fm10k-fix-stats-crash-in-multi-process.patch	2019-12-19 14:32:25.393283707 +0000
@@ -1,14 +1,15 @@
-From 61874d3c0663504f83d93a4701627a5949160a0f Mon Sep 17 00:00:00 2001
+From e77625cfc20fcd6d8556755167c7c918b11f8be2 Mon Sep 17 00:00:00 2001
 From: Lu Qiuwen <luqiuwen@iie.ac.cn>
 Date: Wed, 7 Aug 2019 16:24:22 +0800
 Subject: [PATCH] net/fm10k: fix stats crash in multi-process
 
+[ upstream commit 61874d3c0663504f83d93a4701627a5949160a0f ]
+
 The ops pointers in fm10k_stats_get() are set up from primary
 process, when secondary process calls these ops pointers,
 a segment fault will happen.
 
 Fixes: 7223d200c227 ("fm10k: add base driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Lu Qiuwen <luqiuwen@iie.ac.cn>
 Acked-by: Xiao Wang <xiao.w.wang@intel.com>
@@ -22,10 +23,10 @@
  5 files changed, 31 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c
-index 7802a1c38b..dfb50a10d1 100644
+index c49d20dfbd..e7b2fe710a 100644
 --- a/drivers/net/fm10k/base/fm10k_api.c
 +++ b/drivers/net/fm10k/base/fm10k_api.c
-@@ -205,8 +205,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw)
+@@ -234,8 +234,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw)
   * */
  void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
  {
@@ -42,7 +43,7 @@
  }
  
  /**
-@@ -217,8 +223,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
+@@ -246,8 +252,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
   * */
  void fm10k_rebind_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats)
  {
@@ -60,10 +61,10 @@
  
  /**
 diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c
-index 3efe98cf4b..439dd224de 100644
+index db5f4912f1..f5b6a9e2e0 100644
 --- a/drivers/net/fm10k/base/fm10k_pf.c
 +++ b/drivers/net/fm10k/base/fm10k_pf.c
-@@ -1482,7 +1482,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = {
+@@ -1511,7 +1511,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = {
   *  This function collects and aggregates global and per queue hardware
   *  statistics.
   **/
@@ -72,7 +73,7 @@
  				     struct fm10k_hw_stats *stats)
  {
  	u32 timeout, ur, ca, um, xec, vlan_drop, loopback_drop, nodesc_drop;
-@@ -1555,7 +1555,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
+@@ -1584,7 +1584,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
   *  This function resets the base for global and per queue hardware
   *  statistics.
   **/
@@ -82,10 +83,10 @@
  {
  	DEBUGFUNC("fm10k_rebind_hw_stats_pf");
 diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h
-index a3c6133b7a..1c2e9994dc 100644
+index ca125c2739..2c22bdd02f 100644
 --- a/drivers/net/fm10k/base/fm10k_pf.h
 +++ b/drivers/net/fm10k/base/fm10k_pf.h
-@@ -155,4 +155,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[];
+@@ -184,4 +184,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[];
  #endif
  
  s32 fm10k_init_ops_pf(struct fm10k_hw *hw);
@@ -97,10 +98,10 @@
 +				     struct fm10k_hw_stats *stats);
  #endif /* _FM10K_PF_H */
 diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c
-index d4e095bc00..6809c3cfd7 100644
+index bd449773a1..2f4b5f5d22 100644
 --- a/drivers/net/fm10k/base/fm10k_vf.c
 +++ b/drivers/net/fm10k/base/fm10k_vf.c
-@@ -497,7 +497,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = {
+@@ -526,7 +526,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = {
   *
   *  This function collects and aggregates per queue hardware statistics.
   **/
@@ -109,7 +110,7 @@
  				     struct fm10k_hw_stats *stats)
  {
  	DEBUGFUNC("fm10k_update_hw_stats_vf");
-@@ -512,7 +512,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
+@@ -541,7 +541,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw,
   *
   *  This function resets the base for queue hardware statistics.
   **/
@@ -119,10 +120,10 @@
  {
  	DEBUGFUNC("fm10k_rebind_hw_stats_vf");
 diff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h
-index 071fed2286..c90880df14 100644
+index 116c56fcce..d4edd330e8 100644
 --- a/drivers/net/fm10k/base/fm10k_vf.h
 +++ b/drivers/net/fm10k/base/fm10k_vf.h
-@@ -60,4 +60,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[];
+@@ -89,4 +89,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[];
  	FM10K_MSG_HANDLER(FM10K_VF_MSG_ID_1588, fm10k_1588_msg_attr, func)
  
  s32 fm10k_init_ops_vf(struct fm10k_hw *hw);

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

* [dpdk-stable] patch 'ethdev: fix endian annotation for SPI item' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/fm10k: fix stats crash in multi-process' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " luca.boccassi
                   ` (134 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: David Marchand; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 940d6c60d5748d9b2c243e55148fc0fa812c6ce7 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 20 Aug 2019 15:45:03 +0200
Subject: [PATCH] ethdev: fix endian annotation for SPI item

[ upstream commit fbb25a3878cc7c6de4c68c8cee01983d127e2205 ]

Security Parameters Index (SPI) should be set with network endian
values.
While 0xffffffff == htonl(0xffffffff), this missing annotation is
caught by sparse when compiling ovs (dpdk-latest branch).

Fixes: d4b684f7197a ("net: add ESP header to generic flow steering")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_ether/rte_flow.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_ether/rte_flow.h b/lib/librte_ether/rte_flow.h
index 47c88ea520..8cbf38df3a 100644
--- a/lib/librte_ether/rte_flow.h
+++ b/lib/librte_ether/rte_flow.h
@@ -807,7 +807,7 @@ struct rte_flow_item_esp {
 #ifndef __cplusplus
 static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
 	.hdr = {
-		.spi = 0xffffffff,
+		.spi = RTE_BE32(0xffffffff),
 	},
 };
 #endif
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.509052690 +0000
+++ 0004-ethdev-fix-endian-annotation-for-SPI-item.patch	2019-12-19 14:32:25.393283707 +0000
@@ -1,27 +1,28 @@
-From fbb25a3878cc7c6de4c68c8cee01983d127e2205 Mon Sep 17 00:00:00 2001
+From 940d6c60d5748d9b2c243e55148fc0fa812c6ce7 Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 20 Aug 2019 15:45:03 +0200
 Subject: [PATCH] ethdev: fix endian annotation for SPI item
 
+[ upstream commit fbb25a3878cc7c6de4c68c8cee01983d127e2205 ]
+
 Security Parameters Index (SPI) should be set with network endian
 values.
 While 0xffffffff == htonl(0xffffffff), this missing annotation is
 caught by sparse when compiling ovs (dpdk-latest branch).
 
 Fixes: d4b684f7197a ("net: add ESP header to generic flow steering")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
 ---
- lib/librte_ethdev/rte_flow.h | 2 +-
+ lib/librte_ether/rte_flow.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
-index b66bf1495b..354cb1dd0f 100644
---- a/lib/librte_ethdev/rte_flow.h
-+++ b/lib/librte_ethdev/rte_flow.h
-@@ -935,7 +935,7 @@ struct rte_flow_item_esp {
+diff --git a/lib/librte_ether/rte_flow.h b/lib/librte_ether/rte_flow.h
+index 47c88ea520..8cbf38df3a 100644
+--- a/lib/librte_ether/rte_flow.h
++++ b/lib/librte_ether/rte_flow.h
+@@ -807,7 +807,7 @@ struct rte_flow_item_esp {
  #ifndef __cplusplus
  static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
  	.hdr = {

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

* [dpdk-stable] patch 'net/af_packet: fix stale sockets' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (2 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix endian annotation for SPI item' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " luca.boccassi
                   ` (133 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Abhishek Sachan; +Cc: John W . Linville, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e07be862135bb569c11b1f9d6ef8a628ce1ae158 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 5cb348f675..4735280902 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -982,6 +982,7 @@ 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;
 
 	RTE_LOG(INFO, PMD, "Closing AF_PACKET ethdev on numa socket %u\n",
@@ -996,7 +997,10 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
 		return -1;
 
 	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.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.547087975 +0000
+++ 0005-net-af_packet-fix-stale-sockets.patch	2019-12-19 14:32:25.397283786 +0000
@@ -1,8 +1,10 @@
-From 7c3bcc7b6dc14623bd17960fa3236e6fa9e2711b Mon Sep 17 00:00:00 2001
+From e07be862135bb569c11b1f9d6ef8a628ce1ae158 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.
@@ -13,7 +15,6 @@
 
 Bugzilla ID: 339
 Fixes: e6ee4db01b4d ("af_packet: make the device detachable")
-Cc: stable@dpdk.org
 
 Signed-off-by: Abhishek Sachan <abhishek.sachan@altran.com>
 Reviewed-by: John W. Linville <linville@tuxdriver.com>
@@ -22,19 +23,19 @@
  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 82bf2cd581..6df09f2828 100644
+index 5cb348f675..4735280902 100644
 --- a/drivers/net/af_packet/rte_eth_af_packet.c
 +++ b/drivers/net/af_packet/rte_eth_af_packet.c
-@@ -972,6 +972,7 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
+@@ -982,6 +982,7 @@ 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;
  
- 	PMD_LOG(INFO, "Closing AF_PACKET ethdev on numa socket %u",
-@@ -992,7 +993,10 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
- 		return rte_eth_dev_release_port(eth_dev);
+ 	RTE_LOG(INFO, PMD, "Closing AF_PACKET ethdev on numa socket %u\n",
+@@ -996,7 +997,10 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
+ 		return -1;
  
  	internals = eth_dev->data->dev_private;
 +	req = &internals->req;

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

* [dpdk-stable] patch 'net/mlx4: fix build on ppc64' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (3 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " luca.boccassi
                   ` (132 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Christian Ehrhardt; +Cc: David Christensen, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 60d0f2e0794c7b507c4c2f4f9ce5e3ec5a94045a 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 4f11405a34..02e6b7be2c 100644
--- a/drivers/net/mlx4/mlx4_utils.h
+++ b/drivers/net/mlx4/mlx4_utils.h
@@ -43,6 +43,16 @@
 
 #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.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.581472304 +0000
+++ 0006-net-mlx4-fix-build-on-ppc64.patch	2019-12-19 14:32:25.401283865 +0000
@@ -1,8 +1,10 @@
-From ceadf1a405d9951c6d15ed27e010f5b1a80dbdf5 Mon Sep 17 00:00:00 2001
+From 60d0f2e0794c7b507c4c2f4f9ce5e3ec5a94045a 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
@@ -16,7 +18,6 @@
 This workaround is not compatible with C++ but there is no C++ in DPDK.
 
 Related to: 725f5dd0bfb5 ("net/mlx5: fix build on PPC64")
-Cc: stable@dpdk.org
 
 Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
 Tested-by: David Christensen <drc@linux.vnet.ibm.com>
@@ -26,10 +27,10 @@
  1 file changed, 10 insertions(+)
 
 diff --git a/drivers/net/mlx4/mlx4_utils.h b/drivers/net/mlx4/mlx4_utils.h
-index a49190252f..74b9d2ecdc 100644
+index 4f11405a34..02e6b7be2c 100644
 --- a/drivers/net/mlx4/mlx4_utils.h
 +++ b/drivers/net/mlx4/mlx4_utils.h
-@@ -15,6 +15,16 @@
+@@ -43,6 +43,16 @@
  
  #include "mlx4.h"
  
@@ -43,9 +44,9 @@
 +#define bool _Bool
 +#endif
 +
- extern int mlx4_logtype;
- 
  #ifndef NDEBUG
+ 
+ /*
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (4 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove compiler " luca.boccassi
                   ` (131 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Gavin Hu; +Cc: Ruifeng Wang, Steve Capper, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From cbb2fc535ac9338f55a8cd419e4b93ff31f3dbc7 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 b5685e2b91..3fb7de2dbc 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -314,7 +314,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		/* Read desc statuses backwards to avoid race condition */
 		/* 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  */
 		vst1q_u64((uint64_t *)&rx_pkts[pos], mbp1);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.615683291 +0000
+++ 0007-net-i40e-remove-memory-barrier-from-NEON-Rx.patch	2019-12-19 14:32:25.401283865 +0000
@@ -1,8 +1,10 @@
-From 78b50591c8e7ae3d010e8f4005e0e95c17800941 Mon Sep 17 00:00:00 2001
+From cbb2fc535ac9338f55a8cd419e4b93ff31f3dbc7 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
@@ -18,7 +20,6 @@
 [2] https://mails.dpdk.org/archives/stable/2017-October/003324.html
 
 Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu@arm.com>
 Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
@@ -28,10 +29,10 @@
  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 83572ef843..5555e9b5cf 100644
+index b5685e2b91..3fb7de2dbc 100644
 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
 +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-@@ -285,7 +285,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -314,7 +314,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		/* Read desc statuses backwards to avoid race condition */
  		/* A.1 load 4 pkts desc */
  		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));

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

* [dpdk-stable] patch 'net/i40e: remove compiler barrier from NEON Rx' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (5 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove memory " luca.boccassi
                   ` (130 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Gavin Hu; +Cc: Ruifeng Wang, Steve Capper, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3cb647149999c8d2ba1e68ab64c74cfa0ef42215 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 3fb7de2dbc..c2a85fcc20 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -336,9 +336,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 			rte_mbuf_prefetch_part2(rx_pkts[pos + 3]);
 		}
 
-		/* 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]),
 					    len_shl);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.651347198 +0000
+++ 0008-net-i40e-remove-compiler-barrier-from-NEON-Rx.patch	2019-12-19 14:32:25.401283865 +0000
@@ -1,8 +1,10 @@
-From f1f0f39806d97a9a4d74d47ce7fb04e9b4943e08 Mon Sep 17 00:00:00 2001
+From 3cb647149999c8d2ba1e68ab64c74cfa0ef42215 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]
 
@@ -12,7 +14,6 @@
 [1] http://mails.dpdk.org/archives/dev/2016-April/037529.html
 
 Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu@arm.com>
 Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
@@ -22,10 +23,10 @@
  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 5555e9b5cf..864eb9a325 100644
+index 3fb7de2dbc..c2a85fcc20 100644
 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
 +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-@@ -307,9 +307,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -336,9 +336,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  			rte_mbuf_prefetch_part2(rx_pkts[pos + 3]);
  		}
  

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

* [dpdk-stable] patch 'net/ixgbe: remove memory barrier from NEON Rx' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (6 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove compiler " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " luca.boccassi
                   ` (129 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Ruifeng Wang; +Cc: Gavin Hu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e23673356f2e4f0f4badfc220ee9e39ead1ac9b9 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 2e87ffa0a0..4d7726f406 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -243,13 +243,13 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		uint32_t var = 0;
 		uint32_t stat;
 
-		/* B.1 load 1 mbuf point */
+		/* B.1 load 2 mbuf point */
 		mbp1 = vld1q_u64((uint64_t *)&sw_ring[pos]);
 
 		/* B.2 copy 2 mbuf point into 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]);
 
 		/* A. load 4 pkts descs */
@@ -257,7 +257,6 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		descs[1] =  vld1q_u64((uint64_t *)(rxdp + 1));
 		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  */
 		vst1q_u64((uint64_t *)&rx_pkts[pos + 2], mbp2);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.686841533 +0000
+++ 0009-net-ixgbe-remove-memory-barrier-from-NEON-Rx.patch	2019-12-19 14:32:25.405283945 +0000
@@ -1,8 +1,10 @@
-From 18b7d4eb3dca9e24208c8be59a8972e7f9d7d1cf Mon Sep 17 00:00:00 2001
+From e23673356f2e4f0f4badfc220ee9e39ead1ac9b9 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
@@ -16,7 +18,6 @@
 [1] http://patches.dpdk.org/patch/18153/
 
 Fixes: 989a84050542 ("net/ixgbe: fix received packets number for ARM NEON")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
 Reviewed-by: Gavin Hu <gavin.hu@arm.com>
@@ -25,10 +26,10 @@
  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 edb1383543..86fb3afdb7 100644
+index 2e87ffa0a0..4d7726f406 100644
 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
 +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
-@@ -214,13 +214,13 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -243,13 +243,13 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		uint32_t var = 0;
  		uint32_t stat;
  
@@ -44,7 +45,7 @@
  		mbp2 = vld1q_u64((uint64_t *)&sw_ring[pos + 2]);
  
  		/* A. load 4 pkts descs */
-@@ -228,7 +228,6 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -257,7 +257,6 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		descs[1] =  vld1q_u64((uint64_t *)(rxdp + 1));
  		descs[2] =  vld1q_u64((uint64_t *)(rxdp + 2));
  		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));

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

* [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (7 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove memory " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " luca.boccassi
                   ` (128 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Yong Wang; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 7bddbf66a08d5f379e4db8b9273fcac116e7ef24 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 c186ed61a3..fef2270596 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -4059,7 +4059,6 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
 	switch (link_speed) {
 	default:
 	case IXGBE_LINK_SPEED_UNKNOWN:
-		link.link_duplex = ETH_LINK_FULL_DUPLEX;
 		link.link_speed = ETH_SPEED_NUM_100M;
 		break;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.722053590 +0000
+++ 0010-net-ixgbe-remove-redundant-assignment.patch	2019-12-19 14:32:25.413284103 +0000
@@ -1,14 +1,15 @@
-From e573264c71de3de67e8fa81b0872c10bf4650f15 Mon Sep 17 00:00:00 2001
+From 7bddbf66a08d5f379e4db8b9273fcac116e7ef24 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
 Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -17,17 +18,17 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index 03fc1f7179..f328d7c033 100644
+index c186ed61a3..fef2270596 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -4138,7 +4138,6 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
- 			link.link_speed = ETH_SPEED_NUM_10M;
- 		else
- 			link.link_speed = ETH_SPEED_NUM_100M;
+@@ -4059,7 +4059,6 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
+ 	switch (link_speed) {
+ 	default:
+ 	case IXGBE_LINK_SPEED_UNKNOWN:
 -		link.link_duplex = ETH_LINK_FULL_DUPLEX;
+ 		link.link_speed = ETH_SPEED_NUM_100M;
  		break;
  
- 	case IXGBE_LINK_SPEED_100_FULL:
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (8 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " luca.boccassi
                   ` (127 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Xiaolong Ye; +Cc: Stephen Hemminger, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 050edb2fa4d85364d55746156891270ca91e5aa6 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_ether/rte_ethdev.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 1a730d3ae3..0d56cde76d 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -2696,7 +2696,7 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
  *   Otherwise, disable VLAN filtering of VLAN packets tagged with *vlan_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.
  *   - (-ENOSYS) if VLAN filtering on *port_id* disabled.
  *   - (-EINVAL) if *vlan_id* > 4095.
@@ -2718,7 +2718,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
  *   If 0, Disable VLAN Stripping of the receive queue of the Ethernet port.
  * @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.
  */
@@ -2738,7 +2738,7 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
  *   The Tag Protocol 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.
  */
 int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
@@ -2762,7 +2762,7 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
  *       ETH_VLAN_EXTEND_OFFLOAD
  * @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.
  */
 int rte_eth_dev_set_vlan_offload(uint16_t port_id, int offload_mask);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.767932887 +0000
+++ 0011-ethdev-fix-typos-for-ENOTSUP.patch	2019-12-19 14:32:25.421284262 +0000
@@ -1,32 +1,33 @@
-From e8c7df5d7d3a47446aa3f90d5ee1ca2662fd0531 Mon Sep 17 00:00:00 2001
+From 050edb2fa4d85364d55746156891270ca91e5aa6 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")
-Cc: stable@dpdk.org
 
 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 ++++----
+ lib/librte_ether/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 8fa89bf76a..d9871782e3 100644
---- a/lib/librte_ethdev/rte_ethdev.h
-+++ b/lib/librte_ethdev/rte_ethdev.h
-@@ -2477,7 +2477,7 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
+diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
+index 1a730d3ae3..0d56cde76d 100644
+--- a/lib/librte_ether/rte_ethdev.h
++++ b/lib/librte_ether/rte_ethdev.h
+@@ -2696,7 +2696,7 @@ int rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu);
   *   Otherwise, disable VLAN filtering of VLAN packets tagged with *vlan_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.
   *   - (-ENOSYS) if VLAN filtering on *port_id* disabled.
-@@ -2500,7 +2500,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
+  *   - (-EINVAL) if *vlan_id* > 4095.
+@@ -2718,7 +2718,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
   *   If 0, Disable VLAN Stripping of the receive queue of the Ethernet port.
   * @return
   *   - (0) if successful.
@@ -35,24 +36,24 @@
   *   - (-ENODEV) if *port_id* invalid.
   *   - (-EINVAL) if *rx_queue_id* invalid.
   */
-@@ -2520,7 +2520,7 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
+@@ -2738,7 +2738,7 @@ int rte_eth_dev_set_vlan_strip_on_queue(uint16_t port_id, uint16_t rx_queue_id,
   *   The Tag Protocol 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.
   */
-@@ -2546,7 +2546,7 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
-  *       ETH_QINQ_STRIP_OFFLOAD
+ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
+@@ -2762,7 +2762,7 @@ int rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
+  *       ETH_VLAN_EXTEND_OFFLOAD
   * @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.
   */
+ int rte_eth_dev_set_vlan_offload(uint16_t port_id, int offload_mask);
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (9 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " luca.boccassi
                   ` (126 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Junyu Jiang; +Cc: Qiming Yang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8db1d443af955f93d3d10f59ad1b25f3dee8b97c 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 fef2270596..252c2bffc0 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -5795,7 +5795,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
 		IXGBE_WRITE_REG(hw, IXGBE_IVAR(idx), tmp);
 	} 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 */
 			idx = ((queue & 1) * 8);
@@ -5918,6 +5919,7 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
 		case ixgbe_mac_82599EB:
 		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;
 		default:
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.804141086 +0000
+++ 0012-net-ixgbe-fix-queue-interrupt-for-X552-557.patch	2019-12-19 14:32:25.429284420 +0000
@@ -1,14 +1,15 @@
-From f26f416d4c3ac8b77cd8dd84f72628b37fec7283 Mon Sep 17 00:00:00 2001
+From 8db1d443af955f93d3d10f59ad1b25f3dee8b97c 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
 Acked-by: Qiming Yang <qiming.yang@intel.com>
@@ -17,10 +18,10 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index f328d7c033..e985053d6b 100644
+index fef2270596..252c2bffc0 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -5895,7 +5895,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
+@@ -5795,7 +5795,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
  		IXGBE_WRITE_REG(hw, IXGBE_IVAR(idx), tmp);
  	} else if ((hw->mac.type == ixgbe_mac_82599EB) ||
  			(hw->mac.type == ixgbe_mac_X540) ||
@@ -30,7 +31,7 @@
  		if (direction == -1) {
  			/* other causes */
  			idx = ((queue & 1) * 8);
-@@ -6025,6 +6026,7 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
+@@ -5918,6 +5919,7 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
  		case ixgbe_mac_82599EB:
  		case ixgbe_mac_X540:
  		case ixgbe_mac_X550:

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

* [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (10 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " luca.boccassi
                   ` (125 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Wei Zhao; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From c57513d55e96d7ba7f19006a0fcb7708f2af9d9e 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 22ecbad01c..29a6f3bf23 100644
--- a/drivers/net/ixgbe/ixgbe_pf.c
+++ b/drivers/net/ixgbe/ixgbe_pf.c
@@ -655,6 +655,7 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	case ixgbe_mbox_api_20:
 	case ixgbe_mbox_api_11:
 	case ixgbe_mbox_api_12:
+	case ixgbe_mbox_api_13:
 		break;
 	default:
 		return -1;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.852920579 +0000
+++ 0013-net-ixgbe-enable-new-PF-host-mbox-version.patch	2019-12-19 14:32:25.433284500 +0000
@@ -1,13 +1,14 @@
-From 5e0a2c935bf6724b8419ad8f9237c48a564bb2ff Mon Sep 17 00:00:00 2001
+From c57513d55e96d7ba7f19006a0fcb7708f2af9d9e 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
 Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -16,10 +17,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c
-index c88d56e245..be729ba2d0 100644
+index 22ecbad01c..29a6f3bf23 100644
 --- a/drivers/net/ixgbe/ixgbe_pf.c
 +++ b/drivers/net/ixgbe/ixgbe_pf.c
-@@ -618,6 +618,7 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
+@@ -655,6 +655,7 @@ ixgbe_get_vf_queues(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
  	case ixgbe_mbox_api_20:
  	case ixgbe_mbox_api_11:
  	case ixgbe_mbox_api_12:

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

* [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (11 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " luca.boccassi
                   ` (124 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Wei Zhao; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From cb57f18751845e3455deff4839a900c909ad8d1f 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 252c2bffc0..c722b36ebf 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3854,6 +3854,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
 				DEV_TX_OFFLOAD_TCP_CKSUM   |
 				DEV_TX_OFFLOAD_SCTP_CKSUM  |
 				DEV_TX_OFFLOAD_TCP_TSO;
+	dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;
 
 	dev_info->default_rxconf = (struct rte_eth_rxconf) {
 		.rx_thresh = {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.890031069 +0000
+++ 0014-net-ixgbe-fix-VF-RSS-offloads-configuration.patch	2019-12-19 14:32:25.441284659 +0000
@@ -1,13 +1,14 @@
-From 9594db99c73b62c398310d812726cc90889297af Mon Sep 17 00:00:00 2001
+From cb57f18751845e3455deff4839a900c909ad8d1f 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
 Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -16,13 +17,13 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index e985053d6b..7eb3d0567b 100644
+index 252c2bffc0..c722b36ebf 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -3928,6 +3928,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
- 	dev_info->tx_offload_capa = ixgbe_get_tx_port_offloads(dev);
- 	dev_info->hash_key_size = IXGBE_HKEY_MAX_INDEX * sizeof(uint32_t);
- 	dev_info->reta_size = ixgbe_reta_size_get(hw->mac.type);
+@@ -3854,6 +3854,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
+ 				DEV_TX_OFFLOAD_TCP_CKSUM   |
+ 				DEV_TX_OFFLOAD_SCTP_CKSUM  |
+ 				DEV_TX_OFFLOAD_TCP_TSO;
 +	dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;
  
  	dev_info->default_rxconf = (struct rte_eth_rxconf) {

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

* [dpdk-stable] patch 'doc: fix format in virtio guide' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (12 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " luca.boccassi
                   ` (123 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3de457a4936a1d36d69cc7caad46b89a4edc38ff 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 9d05cca0a6..6672d7f27e 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -34,7 +34,6 @@ Poll Mode Driver for Emulated Virtio NIC
 Virtio is a para-virtualization framework initiated by IBM, and supported by KVM hypervisor.
 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.
 
 Vhost is a kernel acceleration module for virtio qemu backend.
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.930879034 +0000
+++ 0015-doc-fix-format-in-virtio-guide.patch	2019-12-19 14:32:25.441284659 +0000
@@ -1,12 +1,13 @@
-From 2afa82430f0a60824fa4e0bf2a23191a5bc32a6d Mon Sep 17 00:00:00 2001
+From 3de457a4936a1d36d69cc7caad46b89a4edc38ff 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -15,10 +16,10 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
-index 011954ff60..bd0116176d 100644
+index 9d05cca0a6..6672d7f27e 100644
 --- a/doc/guides/nics/virtio.rst
 +++ b/doc/guides/nics/virtio.rst
-@@ -7,7 +7,6 @@ Poll Mode Driver for Emulated Virtio NIC
+@@ -34,7 +34,6 @@ Poll Mode Driver for Emulated Virtio NIC
  Virtio is a para-virtualization framework initiated by IBM, and supported by KVM hypervisor.
  In the Data Plane Development Kit (DPDK),
  we provide a virtio Poll Mode Driver (PMD) as a software solution, comparing to SRIOV hardware solution,

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

* [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (13 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " luca.boccassi
                   ` (122 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Luca Boccassi, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 005b17cbab02eaabe3f2a7ccf10ce1a9ea40147c 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 1f95e0df9b..e0a8aaceca 100644
--- a/drivers/net/mlx4/Makefile
+++ b/drivers/net/mlx4/Makefile
@@ -74,6 +74,7 @@ endif
 # User-defined CFLAGS.
 ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
 CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
 endif
@@ -87,7 +88,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
 # Generate and clean-up mlx4_autoconf.h.
 
 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
-export AUTO_CONFIG_CFLAGS = -Wno-error
+export AUTO_CONFIG_CFLAGS += -Wno-error
 
 ifndef V
 AUTOCONF_OUTPUT := >/dev/null
diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index c62ad11884..ed720b6a70 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -84,6 +84,7 @@ endif
 # User-defined CFLAGS.
 ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y)
 CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
 endif
@@ -97,7 +98,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
 # Generate and clean-up mlx5_autoconf.h.
 
 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
-export AUTO_CONFIG_CFLAGS = -Wno-error
+export AUTO_CONFIG_CFLAGS += -Wno-error
 
 ifndef V
 AUTOCONF_OUTPUT := >/dev/null
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.970996918 +0000
+++ 0016-net-mlx-fix-build-with-make-and-recent-gcc.patch	2019-12-19 14:32:25.449284817 +0000
@@ -1,8 +1,10 @@
-From b38a54aeb16cb36e42d638c4335b8314aa0b1794 Mon Sep 17 00:00:00 2001
+From 005b17cbab02eaabe3f2a7ccf10ce1a9ea40147c 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:
@@ -24,8 +26,6 @@
 It is fixed by disabling -pedantic option when calling auto-config-h.sh
 from the makefile-based system.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
 Acked-by: Luca Boccassi <bluca@debian.org>
 Acked-by: Matan Azrad <matan@mellanox.com>
@@ -35,10 +35,10 @@
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
-index 8126b0dfc6..25d7c7555d 100644
+index 1f95e0df9b..e0a8aaceca 100644
 --- a/drivers/net/mlx4/Makefile
 +++ b/drivers/net/mlx4/Makefile
-@@ -68,6 +68,7 @@ endif
+@@ -74,6 +74,7 @@ endif
  # User-defined CFLAGS.
  ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
  CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
@@ -46,7 +46,7 @@
  else
  CFLAGS += -DNDEBUG -UPEDANTIC
  endif
-@@ -77,7 +78,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
+@@ -87,7 +88,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
  # Generate and clean-up mlx4_autoconf.h.
  
  export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
@@ -56,10 +56,10 @@
  ifndef V
  AUTOCONF_OUTPUT := >/dev/null
 diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
-index dbb2a4e80c..299cf3afe4 100644
+index c62ad11884..ed720b6a70 100644
 --- a/drivers/net/mlx5/Makefile
 +++ b/drivers/net/mlx5/Makefile
-@@ -83,6 +83,7 @@ endif
+@@ -84,6 +84,7 @@ endif
  # User-defined CFLAGS.
  ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y)
  CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
@@ -67,7 +67,7 @@
  else
  CFLAGS += -DNDEBUG -UPEDANTIC
  endif
-@@ -92,7 +93,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
+@@ -97,7 +98,7 @@ include $(RTE_SDK)/mk/rte.lib.mk
  # Generate and clean-up mlx5_autoconf.h.
  
  export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS

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

* [dpdk-stable] patch 'test/interrupt: account for race with callback' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (14 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " luca.boccassi
                   ` (121 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Aaron Conole; +Cc: David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 59a289f01f0e8dcfbe3bc1848abd36c764bf7bc6 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 e0cd8a82fc..fedd34b0ef 100644
--- a/test/test/test_interrupts.c
+++ b/test/test/test_interrupts.c
@@ -378,9 +378,13 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type)
 		rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
 
 	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) {
 		printf("callback has not been called\n");
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.013971218 +0000
+++ 0017-test-interrupt-account-for-race-with-callback.patch	2019-12-19 14:32:25.449284817 +0000
@@ -1,27 +1,28 @@
-From 73afc9df00d8ba4ff58d4a7a86691ca10520d462 Mon Sep 17 00:00:00 2001
+From 59a289f01f0e8dcfbe3bc1848abd36c764bf7bc6 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Aaron Conole <aconole@redhat.com>
 Reviewed-by: David Marchand <david.marchand@redhat.com>
 ---
- app/test/test_interrupts.c | 10 +++++++---
+ test/test/test_interrupts.c | 10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)
 
-diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
-index d8c2d8124a..233b14a70b 100644
---- a/app/test/test_interrupts.c
-+++ b/app/test/test_interrupts.c
-@@ -370,9 +370,13 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type)
+diff --git a/test/test/test_interrupts.c b/test/test/test_interrupts.c
+index e0cd8a82fc..fedd34b0ef 100644
+--- a/test/test/test_interrupts.c
++++ b/test/test/test_interrupts.c
+@@ -378,9 +378,13 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type)
  		rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
  
  	rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);

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

* [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (15 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'security: fix doxygen fields' " luca.boccassi
                   ` (120 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e87d0eb85b619ad48c6443e7429c15c6347eec77 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 aabaa63009..a51d00ac80 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -593,18 +593,19 @@ pci_one_device_iommu_support_va(struct rte_pci_device *dev)
 		 "%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
 		 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);
 		fclose(fp);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.052853082 +0000
+++ 0018-bus-pci-fix-Intel-IOMMU-sysfs-access-check.patch	2019-12-19 14:32:25.453284896 +0000
@@ -1,8 +1,10 @@
-From 2e8d5cf7631cbc5efb4b3abf7393d2526dee0424 Mon Sep 17 00:00:00 2001
+From e87d0eb85b619ad48c6443e7429c15c6347eec77 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
@@ -10,7 +12,6 @@
 
 Coverity issue: 347276
 Fixes: 54a328f552ff ("bus/pci: forbid IOVA mode if IOMMU address width too small")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Reviewed-by: David Marchand <david.marchand@redhat.com>
@@ -19,10 +20,10 @@
  1 file changed, 7 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
-index 1ac2bff779..318db19532 100644
+index aabaa63009..a51d00ac80 100644
 --- a/drivers/bus/pci/linux/pci.c
 +++ b/drivers/bus/pci/linux/pci.c
-@@ -511,18 +511,19 @@ pci_device_iommu_support_va(const struct rte_pci_device *dev)
+@@ -593,18 +593,19 @@ pci_one_device_iommu_support_va(struct rte_pci_device *dev)
  		 "%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
  		 rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
  		 addr->function);

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

* [dpdk-stable] patch 'security: fix doxygen fields' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (16 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " luca.boccassi
                   ` (119 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Radu Nicolau; +Cc: Akhil Goyal, Anoob Joseph, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0dc35d5907227c38b34ec641fdd2223b1552741a 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 2b609cbf7a..2c8cf6ba74 100644
--- a/lib/librte_security/rte_security.h
+++ b/lib/librte_security/rte_security.h
@@ -143,14 +143,14 @@ struct rte_security_ipsec_tunnel_param {
  * IPsec Security Association option flags
  */
 struct rte_security_ipsec_sa_options {
-	/**< Extended Sequence Numbers (ESN)
+	/** Extended Sequence Numbers (ESN)
 	 *
 	 * * 1: Use extended (64 bit) sequence numbers
 	 * * 0: Use normal sequence numbers
 	 */
 	uint32_t esn : 1;
 
-	/**< UDP encapsulation
+	/** UDP encapsulation
 	 *
 	 * * 1: Do UDP encapsulation/decapsulation so that IPSEC packets can
 	 *      traverse through NAT boxes.
@@ -158,7 +158,7 @@ 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
 	 *      the outer IP header in encapsulation, and vice versa in
@@ -167,7 +167,7 @@ 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
 	 *      outer IPv6 header.
@@ -175,7 +175,7 @@ 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
 	 *      IPv4 header.
@@ -183,7 +183,7 @@ 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
 	 *      IPv6 Hop Limit after tunnel decapsulation, or before tunnel
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.086213241 +0000
+++ 0019-security-fix-doxygen-fields.patch	2019-12-19 14:32:25.457284976 +0000
@@ -1,25 +1,26 @@
-From 382df9dfb6a8449b595e80d7ec391f90e3420d15 Mon Sep 17 00:00:00 2001
+From 0dc35d5907227c38b34ec641fdd2223b1552741a 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")
-Cc: stable@dpdk.org
 
 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 | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ 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 242c908d1c..2d064f4d04 100644
+index 2b609cbf7a..2c8cf6ba74 100644
 --- a/lib/librte_security/rte_security.h
 +++ b/lib/librte_security/rte_security.h
-@@ -115,14 +115,14 @@ struct rte_security_ipsec_tunnel_param {
+@@ -143,14 +143,14 @@ struct rte_security_ipsec_tunnel_param {
   * IPsec Security Association option flags
   */
  struct rte_security_ipsec_sa_options {
@@ -36,7 +37,7 @@
  	 *
  	 * * 1: Do UDP encapsulation/decapsulation so that IPSEC packets can
  	 *      traverse through NAT boxes.
-@@ -130,7 +130,7 @@ struct rte_security_ipsec_sa_options {
+@@ -158,7 +158,7 @@ struct rte_security_ipsec_sa_options {
  	 */
  	uint32_t udp_encap : 1;
  
@@ -45,7 +46,7 @@
  	 *
  	 * * 1: Copy IPv4 or IPv6 DSCP bits from inner IP header to
  	 *      the outer IP header in encapsulation, and vice versa in
-@@ -139,7 +139,7 @@ struct rte_security_ipsec_sa_options {
+@@ -167,7 +167,7 @@ struct rte_security_ipsec_sa_options {
  	 */
  	uint32_t copy_dscp : 1;
  
@@ -54,7 +55,7 @@
  	 *
  	 * * 1: Copy IPv6 flow label from inner IPv6 header to the
  	 *      outer IPv6 header.
-@@ -147,7 +147,7 @@ struct rte_security_ipsec_sa_options {
+@@ -175,7 +175,7 @@ struct rte_security_ipsec_sa_options {
  	 */
  	uint32_t copy_flabel : 1;
  
@@ -63,7 +64,7 @@
  	 *
  	 * * 1: Copy the DF bit from the inner IPv4 header to the outer
  	 *      IPv4 header.
-@@ -155,7 +155,7 @@ struct rte_security_ipsec_sa_options {
+@@ -183,7 +183,7 @@ struct rte_security_ipsec_sa_options {
  	 */
  	uint32_t copy_df : 1;
  
@@ -72,15 +73,6 @@
  	 *
  	 * * 1: In tunnel mode, decrement inner packet IPv4 TTL or
  	 *      IPv6 Hop Limit after tunnel decapsulation, or before tunnel
-@@ -164,7 +164,7 @@ 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
- 	 *      inner header in tunnel encapsulation, or inner header ECN
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (17 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'security: fix doxygen fields' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " luca.boccassi
                   ` (118 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Fiona Trahe; +Cc: Arek Kusztal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 70116ae88ca7276591f9b16650386c828a92b0c8 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_crypto_capabilities.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/qat/qat_crypto_capabilities.h b/drivers/crypto/qat/qat_crypto_capabilities.h
index 89ba27d4db..9e8bc4149b 100644
--- a/drivers/crypto/qat/qat_crypto_capabilities.h
+++ b/drivers/crypto/qat/qat_crypto_capabilities.h
@@ -174,8 +174,8 @@
 					.increment = 0			\
 				},					\
 				.digest_size = {			\
-					.min = 16,			\
-					.max = 16,			\
+					.min = 12,			\
+					.max = 12,			\
 					.increment = 0			\
 				},					\
 				.aad_size = { 0 },			\
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.126448098 +0000
+++ 0020-crypto-qat-fix-digest-length-in-XCBC-capability.patch	2019-12-19 14:32:25.509286006 +0000
@@ -1,25 +1,26 @@
-From 0996ed0d5ad65b6419e3ce66a420199c3ed45ca9 Mon Sep 17 00:00:00 2001
+From 70116ae88ca7276591f9b16650386c828a92b0c8 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")
-Cc: stable@dpdk.org
 
 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 ++--
+ drivers/crypto/qat/qat_crypto_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 6df12b9441..a7fb6a0da9 100644
---- a/drivers/crypto/qat/qat_sym_capabilities.h
-+++ b/drivers/crypto/qat/qat_sym_capabilities.h
-@@ -145,8 +145,8 @@
+diff --git a/drivers/crypto/qat/qat_crypto_capabilities.h b/drivers/crypto/qat/qat_crypto_capabilities.h
+index 89ba27d4db..9e8bc4149b 100644
+--- a/drivers/crypto/qat/qat_crypto_capabilities.h
++++ b/drivers/crypto/qat/qat_crypto_capabilities.h
+@@ -174,8 +174,8 @@
  					.increment = 0			\
  				},					\
  				.digest_size = {			\

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

* [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (18 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " luca.boccassi
                   ` (117 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Fan Zhang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5420f2a13b5899a88e5869fc58d6f92803ddf581 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 a1f5848348..9a03dec612 100644
--- a/doc/guides/cryptodevs/aesni_gcm.rst
+++ b/doc/guides/cryptodevs/aesni_gcm.rst
@@ -48,11 +48,12 @@ 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.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.165286401 +0000
+++ 0021-doc-fix-AESNI-GCM-limitations-in-crypto-guide.patch	2019-12-19 14:32:25.521286245 +0000
@@ -1,13 +1,14 @@
-From 185059c0f3ebdf396aa12877689e51880d47027e Mon Sep 17 00:00:00 2001
+From 5420f2a13b5899a88e5869fc58d6f92803ddf581 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")
-Cc: stable@dpdk.org
 
 Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
 ---
@@ -15,10 +16,10 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/doc/guides/cryptodevs/aesni_gcm.rst b/doc/guides/cryptodevs/aesni_gcm.rst
-index 9a8bc9323f..15002aba7f 100644
+index a1f5848348..9a03dec612 100644
 --- a/doc/guides/cryptodevs/aesni_gcm.rst
 +++ b/doc/guides/cryptodevs/aesni_gcm.rst
-@@ -22,11 +22,12 @@ AEAD algorithms:
+@@ -48,11 +48,12 @@ AEAD algorithms:
  
  * RTE_CRYPTO_AEAD_AES_GCM
  

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

* [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (19 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " luca.boccassi
                   ` (116 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Julien Meunier; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ea9e76487f82560c0f7041fd3997dee01d05523c 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 c9f2b6235f..ee3a2447ef 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -603,12 +603,14 @@ 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 */
 		TAILQ_INIT(&(cryptodev->link_intr_cbs));
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.199392859 +0000
+++ 0022-cryptodev-fix-initialization-on-multi-process.patch	2019-12-19 14:32:25.541286641 +0000
@@ -1,8 +1,10 @@
-From 1a60db7f354a52add0c1ea66e55ba7beba1a9716 Mon Sep 17 00:00:00 2001
+From ea9e76487f82560c0f7041fd3997dee01d05523c 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.
 
@@ -10,7 +12,6 @@
 initialization.
 
 Fixes: d11b0f30df88 ("cryptodev: introduce API and framework for crypto devices")
-Cc: stable@dpdk.org
 
 Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
 Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -19,18 +20,18 @@
  1 file changed, 7 insertions(+), 5 deletions(-)
 
 diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
-index 43bc335f58..b16ef7b2c1 100644
+index c9f2b6235f..ee3a2447ef 100644
 --- a/lib/librte_cryptodev/rte_cryptodev.c
 +++ b/lib/librte_cryptodev/rte_cryptodev.c
-@@ -725,12 +725,14 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
+@@ -603,12 +603,14 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
  
- 		cryptodev->data = *cryptodev_data;
+ 		cryptodev->data = cryptodev_data;
  
--		strlcpy(cryptodev->data->name, name,
--			RTE_CRYPTODEV_NAME_MAX_LEN);
+-		snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
+-				"%s", name);
 +		if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
-+			strlcpy(cryptodev->data->name, name,
-+				RTE_CRYPTODEV_NAME_MAX_LEN);
++			snprintf(cryptodev->data->name, RTE_CRYPTODEV_NAME_MAX_LEN,
++					"%s", name);
  
 -		cryptodev->data->dev_id = dev_id;
 -		cryptodev->data->socket_id = socket_id;

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

* [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (20 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " luca.boccassi
                   ` (115 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 04e0d96e4b6b519e5cdd919b3f23e2cfc3e59794 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/mrvl/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 97719f278e..d757ebfe70 100644
--- a/drivers/crypto/armv8/rte_armv8_pmd.c
+++ b/drivers/crypto/armv8/rte_armv8_pmd.c
@@ -803,7 +803,6 @@ cryptodev_armv8_crypto_create(const char *name,
 			RTE_CRYPTODEV_FF_CPU_NEON |
 			RTE_CRYPTODEV_FF_CPU_ARM_CE;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
 	internals->max_nb_qpairs = init_params->max_nb_queue_pairs;
diff --git a/drivers/crypto/mrvl/rte_mrvl_pmd.c b/drivers/crypto/mrvl/rte_mrvl_pmd.c
index 31f3fe581e..95276a9467 100644
--- a/drivers/crypto/mrvl/rte_mrvl_pmd.c
+++ b/drivers/crypto/mrvl/rte_mrvl_pmd.c
@@ -743,7 +743,6 @@ cryptodev_mrvl_crypto_create(const char *name,
 			RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
 			RTE_CRYPTODEV_FF_HW_ACCELERATED;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
 	internals->max_nb_qpairs = init_params->max_nb_queue_pairs;
diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 06e1a6defc..7b18bd42e7 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -1690,7 +1690,6 @@ cryptodev_openssl_create(const char *name,
 			RTE_CRYPTODEV_FF_CPU_AESNI |
 			RTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER;
 
-	/* Set vector instructions mode supported */
 	internals = dev->data->dev_private;
 
 	internals->max_nb_qpairs = init_params->max_nb_queue_pairs;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.235344013 +0000
+++ 0023-drivers-crypto-remove-some-invalid-comments.patch	2019-12-19 14:32:25.573287276 +0000
@@ -1,28 +1,29 @@
-From 310d2ea6328c6146ccca6eac42426e060a99fedc Mon Sep 17 00:00:00 2001
+From 04e0d96e4b6b519e5cdd919b3f23e2cfc3e59794 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")
-Cc: stable@dpdk.org
 
 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/mrvl/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 0d4649adcd..711701a974 100644
+index 97719f278e..d757ebfe70 100644
 --- a/drivers/crypto/armv8/rte_armv8_pmd.c
 +++ b/drivers/crypto/armv8/rte_armv8_pmd.c
-@@ -777,7 +777,6 @@ cryptodev_armv8_crypto_create(const char *name,
+@@ -803,7 +803,6 @@ cryptodev_armv8_crypto_create(const char *name,
  			RTE_CRYPTODEV_FF_CPU_NEON |
  			RTE_CRYPTODEV_FF_CPU_ARM_CE;
  
@@ -30,25 +31,25 @@
  	internals = dev->data->dev_private;
  
  	internals->max_nb_qpairs = init_params->max_nb_queue_pairs;
-diff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c b/drivers/crypto/mvsam/rte_mrvl_pmd.c
-index ef2e5ed00d..0aafcc1503 100644
---- a/drivers/crypto/mvsam/rte_mrvl_pmd.c
-+++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c
-@@ -821,7 +821,6 @@ cryptodev_mrvl_crypto_create(const char *name,
- 			RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |
- 			RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT;
+diff --git a/drivers/crypto/mrvl/rte_mrvl_pmd.c b/drivers/crypto/mrvl/rte_mrvl_pmd.c
+index 31f3fe581e..95276a9467 100644
+--- a/drivers/crypto/mrvl/rte_mrvl_pmd.c
++++ b/drivers/crypto/mrvl/rte_mrvl_pmd.c
+@@ -743,7 +743,6 @@ cryptodev_mrvl_crypto_create(const char *name,
+ 			RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
+ 			RTE_CRYPTODEV_FF_HW_ACCELERATED;
  
 -	/* Set vector instructions mode supported */
  	internals = dev->data->dev_private;
  
- 	internals->max_nb_qpairs = init_params->common.max_nb_queue_pairs;
+ 	internals->max_nb_qpairs = init_params->max_nb_queue_pairs;
 diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
-index 2f55528407..b05f6adb92 100644
+index 06e1a6defc..7b18bd42e7 100644
 --- a/drivers/crypto/openssl/rte_openssl_pmd.c
 +++ b/drivers/crypto/openssl/rte_openssl_pmd.c
-@@ -2127,7 +2127,6 @@ cryptodev_openssl_create(const char *name,
- 			RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP |
- 			RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT;
+@@ -1690,7 +1690,6 @@ cryptodev_openssl_create(const char *name,
+ 			RTE_CRYPTODEV_FF_CPU_AESNI |
+ 			RTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER;
  
 -	/* Set vector instructions mode supported */
  	internals = dev->data->dev_private;

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

* [dpdk-stable] patch 'net/i40e: downgrade error log' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (21 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " luca.boccassi
                   ` (114 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Eelco Chaudron; +Cc: David Marchand, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 9380811b48b773877d284141247ac4d66ca3868f 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 b36ba9f8f4..2830ffea6f 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1384,7 +1384,7 @@ 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.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.270861389 +0000
+++ 0024-net-i40e-downgrade-error-log.patch	2019-12-19 14:32:25.593287673 +0000
@@ -1,8 +1,10 @@
-From 9763595925aa0488392035dbb15522dc2200c6d4 Mon Sep 17 00:00:00 2001
+From 9380811b48b773877d284141247ac4d66ca3868f 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.
 
@@ -11,7 +13,6 @@
 which made the same change for the PF instance.
 
 Fixes: ae19955e7c86 ("i40evf: support reporting PF reset")
-Cc: stable@dpdk.org
 
 Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
 Reviewed-by: David Marchand <david.marchand@redhat.com>
@@ -21,10 +22,10 @@
  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 c77b30c54b..7b1d485c64 100644
+index b36ba9f8f4..2830ffea6f 100644
 --- a/drivers/net/i40e/i40e_ethdev_vf.c
 +++ b/drivers/net/i40e/i40e_ethdev_vf.c
-@@ -1411,7 +1411,7 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)
+@@ -1384,7 +1384,7 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)
  			}
  			break;
  		default:

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

* [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (22 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: remove redundant device info cleanup before get' " luca.boccassi
                   ` (113 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Phil Yang; +Cc: Gavin Hu, Matan Azrad, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 4cd784b02d29f706ff2297b6f65eeb680c0af9ff 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 ae37c2bd10..950d27d303 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
@@ -1032,7 +1032,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
 			rcvd_pkt += n;
 		}
 	}
-	rte_compiler_barrier();
+	rte_cio_wmb();
 	*rxq->cq_db = rte_cpu_to_be_32(rxq->cq_ci);
 	return rcvd_pkt;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.313272923 +0000
+++ 0025-net-mlx5-fix-Rx-CQ-doorbell-synchronization-on-aarch.patch	2019-12-19 14:32:25.605287911 +0000
@@ -1,8 +1,10 @@
-From 94a24aaf6c5bd0a03c2828e7411d30a4fc0ac075 Mon Sep 17 00:00:00 2001
+From 4cd784b02d29f706ff2297b6f65eeb680c0af9ff 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
@@ -10,7 +12,6 @@
 sure these fields are updated in order.
 
 Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM")
-Cc: stable@dpdk.org
 
 Suggested-by: Gavin Hu <gavin.hu@arm.com>
 Signed-off-by: Phil Yang <phil.yang@arm.com>
@@ -21,11 +22,11 @@
  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 99302869a7..e914d017d6 100644
+index ae37c2bd10..950d27d303 100644
 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
 +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
-@@ -727,7 +727,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
- 			rxq->decompressed -= n;
+@@ -1032,7 +1032,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
+ 			rcvd_pkt += n;
  		}
  	}
 -	rte_compiler_barrier();

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

* [dpdk-stable] patch 'ethdev: remove redundant device info cleanup before get' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (23 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix slave request fd leak' " luca.boccassi
                   ` (112 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 47b76c914ec37e8951a09baa1bdc1463c0edf714 Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Thu, 12 Sep 2019 17:42:12 +0100
Subject: [PATCH] ethdev: remove redundant device info cleanup before get

[ upstream commit 78402e16ec08db79a2e380466ff41dd939541265 ]

rte_eth_dev_info_get() always fills in device information memory
with zeros on entry.

Fixes: b6719879855d ("ethdev: avoid getting uninitialized info for bad port")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/test-pmd/cmdline.c             | 4 ----
 app/test-pmd/config.c              | 2 --
 examples/ethtool/lib/rte_ethtool.c | 2 --
 examples/kni/main.c                | 1 -
 4 files changed, 9 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 7a3a818723..6d641a24e3 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -1974,7 +1974,6 @@ cmd_config_rss_hash_key_parsed(void *parsed_result,
 	uint8_t hash_key_size;
 	uint32_t key_len;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(res->port_id, &dev_info);
 	if (dev_info.hash_key_size > 0 &&
 			dev_info.hash_key_size <= sizeof(hash_key))
@@ -2214,7 +2213,6 @@ cmd_set_rss_reta_parsed(void *parsed_result,
 	struct rte_eth_rss_reta_entry64 reta_conf[8];
 	struct cmd_config_rss_reta *res = parsed_result;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(res->port_id, &dev_info);
 	if (dev_info.reta_size == 0) {
 		printf("Redirection table size is 0 which is "
@@ -2334,7 +2332,6 @@ cmd_showport_reta_parsed(void *parsed_result,
 	struct rte_eth_dev_info dev_info;
 	uint16_t max_reta_size;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(res->port_id, &dev_info);
 	max_reta_size = RTE_MIN(dev_info.reta_size, ETH_RSS_RETA_SIZE_512);
 	if (res->size == 0 || res->size > max_reta_size) {
@@ -10046,7 +10043,6 @@ cmd_flow_director_filter_parsed(void *parsed_result,
 		else if (!strncmp(res->pf_vf, "vf", 2)) {
 			struct rte_eth_dev_info dev_info;
 
-			memset(&dev_info, 0, sizeof(dev_info));
 			rte_eth_dev_info_get(res->port_id, &dev_info);
 			errno = 0;
 			vf_id = strtoul(res->pf_vf + 2, &end, 10);
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 61608d18fb..18126a0f4a 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -429,7 +429,6 @@ port_infos_display(portid_t port_id)
 	}
 	port = &ports[port_id];
 	rte_eth_link_get_nowait(port_id, &link);
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(port_id, &dev_info);
 	printf("\n%s Infos for port %-2d %s\n",
 	       info_border, port_id, info_border);
@@ -1558,7 +1557,6 @@ ring_rx_descriptor_display(const struct rte_memzone *ring_mz,
 #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
 	struct rte_eth_dev_info dev_info;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(port_id, &dev_info);
 	if (strstr(dev_info.driver_name, "i40e") != NULL) {
 		/* 32 bytes RX descriptor, i40e only */
diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c
index c70c54786a..ebdaed4ad6 100644
--- a/examples/ethtool/lib/rte_ethtool.c
+++ b/examples/ethtool/lib/rte_ethtool.c
@@ -67,7 +67,6 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
 		printf("Insufficient fw version buffer size, "
 		       "the minimum size should be %d\n", ret);
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(port_id, &dev_info);
 
 	snprintf(drvinfo->driver, sizeof(drvinfo->driver), "%s",
@@ -367,7 +366,6 @@ rte_ethtool_net_set_rx_mode(uint16_t port_id)
 	struct rte_eth_dev_info dev_info;
 	uint16_t vf;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(port_id, &dev_info);
 	num_vfs = dev_info.max_vfs;
 
diff --git a/examples/kni/main.c b/examples/kni/main.c
index 3f17385442..e272e84bba 100644
--- a/examples/kni/main.c
+++ b/examples/kni/main.c
@@ -802,7 +802,6 @@ kni_alloc(uint16_t port_id)
 			struct rte_kni_ops ops;
 			struct rte_eth_dev_info dev_info;
 
-			memset(&dev_info, 0, sizeof(dev_info));
 			rte_eth_dev_info_get(port_id, &dev_info);
 
 			if (dev_info.pci_dev) {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.347998148 +0000
+++ 0026-ethdev-remove-redundant-device-info-cleanup-before-g.patch	2019-12-19 14:32:25.661289021 +0000
@@ -1,13 +1,14 @@
-From 78402e16ec08db79a2e380466ff41dd939541265 Mon Sep 17 00:00:00 2001
+From 47b76c914ec37e8951a09baa1bdc1463c0edf714 Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Thu, 12 Sep 2019 17:42:12 +0100
 Subject: [PATCH] ethdev: remove redundant device info cleanup before get
 
+[ upstream commit 78402e16ec08db79a2e380466ff41dd939541265 ]
+
 rte_eth_dev_info_get() always fills in device information memory
 with zeros on entry.
 
 Fixes: b6719879855d ("ethdev: avoid getting uninitialized info for bad port")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -19,10 +20,10 @@
  4 files changed, 9 deletions(-)
 
 diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
-index b6bc34b4d2..e4dda93a49 100644
+index 7a3a818723..6d641a24e3 100644
 --- a/app/test-pmd/cmdline.c
 +++ b/app/test-pmd/cmdline.c
-@@ -2319,7 +2319,6 @@ cmd_config_rss_hash_key_parsed(void *parsed_result,
+@@ -1974,7 +1974,6 @@ cmd_config_rss_hash_key_parsed(void *parsed_result,
  	uint8_t hash_key_size;
  	uint32_t key_len;
  
@@ -30,7 +31,7 @@
  	rte_eth_dev_info_get(res->port_id, &dev_info);
  	if (dev_info.hash_key_size > 0 &&
  			dev_info.hash_key_size <= sizeof(hash_key))
-@@ -2852,7 +2851,6 @@ cmd_set_rss_reta_parsed(void *parsed_result,
+@@ -2214,7 +2213,6 @@ cmd_set_rss_reta_parsed(void *parsed_result,
  	struct rte_eth_rss_reta_entry64 reta_conf[8];
  	struct cmd_config_rss_reta *res = parsed_result;
  
@@ -38,7 +39,7 @@
  	rte_eth_dev_info_get(res->port_id, &dev_info);
  	if (dev_info.reta_size == 0) {
  		printf("Redirection table size is 0 which is "
-@@ -2972,7 +2970,6 @@ cmd_showport_reta_parsed(void *parsed_result,
+@@ -2334,7 +2332,6 @@ cmd_showport_reta_parsed(void *parsed_result,
  	struct rte_eth_dev_info dev_info;
  	uint16_t max_reta_size;
  
@@ -46,7 +47,7 @@
  	rte_eth_dev_info_get(res->port_id, &dev_info);
  	max_reta_size = RTE_MIN(dev_info.reta_size, ETH_RSS_RETA_SIZE_512);
  	if (res->size == 0 || res->size > max_reta_size) {
-@@ -11091,7 +11088,6 @@ cmd_flow_director_filter_parsed(void *parsed_result,
+@@ -10046,7 +10043,6 @@ cmd_flow_director_filter_parsed(void *parsed_result,
  		else if (!strncmp(res->pf_vf, "vf", 2)) {
  			struct rte_eth_dev_info dev_info;
  
@@ -55,10 +56,10 @@
  			errno = 0;
  			vf_id = strtoul(res->pf_vf + 2, &end, 10);
 diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
-index 1a5a5c13c0..523b3d3761 100644
+index 61608d18fb..18126a0f4a 100644
 --- a/app/test-pmd/config.c
 +++ b/app/test-pmd/config.c
-@@ -478,7 +478,6 @@ port_infos_display(portid_t port_id)
+@@ -429,7 +429,6 @@ port_infos_display(portid_t port_id)
  	}
  	port = &ports[port_id];
  	rte_eth_link_get_nowait(port_id, &link);
@@ -66,7 +67,7 @@
  	rte_eth_dev_info_get(port_id, &dev_info);
  	printf("\n%s Infos for port %-2d %s\n",
  	       info_border, port_id, info_border);
-@@ -1623,7 +1622,6 @@ ring_rx_descriptor_display(const struct rte_memzone *ring_mz,
+@@ -1558,7 +1557,6 @@ ring_rx_descriptor_display(const struct rte_memzone *ring_mz,
  #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
  	struct rte_eth_dev_info dev_info;
  
@@ -75,18 +76,18 @@
  	if (strstr(dev_info.driver_name, "i40e") != NULL) {
  		/* 32 bytes RX descriptor, i40e only */
 diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c
-index 571c4e5aa5..fd1692daae 100644
+index c70c54786a..ebdaed4ad6 100644
 --- a/examples/ethtool/lib/rte_ethtool.c
 +++ b/examples/ethtool/lib/rte_ethtool.c
-@@ -41,7 +41,6 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
+@@ -67,7 +67,6 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
  		printf("Insufficient fw version buffer size, "
  		       "the minimum size should be %d\n", ret);
  
 -	memset(&dev_info, 0, sizeof(dev_info));
  	rte_eth_dev_info_get(port_id, &dev_info);
  
- 	strlcpy(drvinfo->driver, dev_info.driver_name,
-@@ -372,7 +371,6 @@ rte_ethtool_net_set_rx_mode(uint16_t port_id)
+ 	snprintf(drvinfo->driver, sizeof(drvinfo->driver), "%s",
+@@ -367,7 +366,6 @@ rte_ethtool_net_set_rx_mode(uint16_t port_id)
  	struct rte_eth_dev_info dev_info;
  	uint16_t vf;
  
@@ -95,17 +96,17 @@
  	num_vfs = dev_info.max_vfs;
  
 diff --git a/examples/kni/main.c b/examples/kni/main.c
-index 4710d71769..17f695ea99 100644
+index 3f17385442..e272e84bba 100644
 --- a/examples/kni/main.c
 +++ b/examples/kni/main.c
-@@ -898,7 +898,6 @@ kni_alloc(uint16_t port_id)
+@@ -802,7 +802,6 @@ kni_alloc(uint16_t port_id)
  			struct rte_kni_ops ops;
  			struct rte_eth_dev_info dev_info;
  
 -			memset(&dev_info, 0, sizeof(dev_info));
  			rte_eth_dev_info_get(port_id, &dev_info);
  
- 			/* Get the interface default mac address */
+ 			if (dev_info.pci_dev) {
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'vhost: fix slave request fd leak' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (24 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: remove redundant device info cleanup before get' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix link speed update in broadcast mode' " luca.boccassi
                   ` (111 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 72baa70cdbf5b75dc14548f02923e23eb84bca71 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Thu, 5 Sep 2019 19:01:25 +0800
Subject: [PATCH] vhost: fix slave request fd leak

[ upstream commit 761d57651c51365354cefb624883fccf62aee67d ]

We need to close the old slave request fd if any first
before taking the new one.

Fixes: 275c3f944730 ("vhost: support slave requests channel")

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

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 155394a6d9..221217c3f4 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1177,6 +1177,9 @@ vhost_user_set_req_fd(struct virtio_net *dev, struct VhostUserMsg *msg)
 		return -1;
 	}
 
+	if (dev->slave_req_fd >= 0)
+		close(dev->slave_req_fd);
+
 	dev->slave_req_fd = fd;
 
 	return 0;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.408464899 +0000
+++ 0027-vhost-fix-slave-request-fd-leak.patch	2019-12-19 14:32:25.673289259 +0000
@@ -1,13 +1,14 @@
-From 761d57651c51365354cefb624883fccf62aee67d Mon Sep 17 00:00:00 2001
+From 72baa70cdbf5b75dc14548f02923e23eb84bca71 Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Thu, 5 Sep 2019 19:01:25 +0800
 Subject: [PATCH] vhost: fix slave request fd leak
 
+[ upstream commit 761d57651c51365354cefb624883fccf62aee67d ]
+
 We need to close the old slave request fd if any first
 before taking the new one.
 
 Fixes: 275c3f944730 ("vhost: support slave requests channel")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -16,11 +17,11 @@
  1 file changed, 3 insertions(+)
 
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index 0b72648a5a..f468436103 100644
+index 155394a6d9..221217c3f4 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -1564,6 +1564,9 @@ vhost_user_set_req_fd(struct virtio_net **pdev, struct VhostUserMsg *msg,
- 		return RTE_VHOST_MSG_RESULT_ERR;
+@@ -1177,6 +1177,9 @@ vhost_user_set_req_fd(struct virtio_net *dev, struct VhostUserMsg *msg)
+ 		return -1;
  	}
  
 +	if (dev->slave_req_fd >= 0)
@@ -28,7 +29,7 @@
 +
  	dev->slave_req_fd = fd;
  
- 	return RTE_VHOST_MSG_RESULT_OK;
+ 	return 0;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bonding: fix link speed update in broadcast mode' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (25 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix slave request fd leak' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'app/testpmd: fix crash on port reset' " luca.boccassi
                   ` (110 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Igor Romanov; +Cc: Andrew Rybchenko, Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 013aaa6d373bf4cf91d554357f8e93eeb42af117 Mon Sep 17 00:00:00 2001
From: Igor Romanov <igor.romanov@oktetlabs.ru>
Date: Tue, 10 Sep 2019 09:25:41 +0100
Subject: [PATCH] net/bonding: fix link speed update in broadcast mode

[ upstream commit db3216e76609647ce8dc256d478c8cc7095a23d4 ]

Fix the issue that the link speed of the bond device was set to the
link speed of the first active slave in broadcast mode.

Set the link speed of the bond device to the minimum value across
all of the slaves in that case.

Fixes: deba8a2f8b0b ("net/bonding: fix link properties management")

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index e2487e5f71..b58873a2c2 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2326,8 +2326,8 @@ bond_ethdev_link_update(struct rte_eth_dev *ethdev, int wait_to_complete)
 		 * packet loss will occur on this slave if transmission at rates
 		 * greater than this are attempted
 		 */
-		for (idx = 1; idx < bond_ctx->active_slave_count; idx++) {
-			link_update(bond_ctx->active_slaves[0],	&slave_link);
+		for (idx = 0; idx < bond_ctx->active_slave_count; idx++) {
+			link_update(bond_ctx->active_slaves[idx], &slave_link);
 
 			if (slave_link.link_speed <
 					ethdev->data->dev_link.link_speed)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.450275585 +0000
+++ 0028-net-bonding-fix-link-speed-update-in-broadcast-mode.patch	2019-12-19 14:32:25.689289576 +0000
@@ -1,8 +1,10 @@
-From db3216e76609647ce8dc256d478c8cc7095a23d4 Mon Sep 17 00:00:00 2001
+From 013aaa6d373bf4cf91d554357f8e93eeb42af117 Mon Sep 17 00:00:00 2001
 From: Igor Romanov <igor.romanov@oktetlabs.ru>
 Date: Tue, 10 Sep 2019 09:25:41 +0100
 Subject: [PATCH] net/bonding: fix link speed update in broadcast mode
 
+[ upstream commit db3216e76609647ce8dc256d478c8cc7095a23d4 ]
+
 Fix the issue that the link speed of the bond device was set to the
 link speed of the first active slave in broadcast mode.
 
@@ -10,7 +12,6 @@
 all of the slaves in that case.
 
 Fixes: deba8a2f8b0b ("net/bonding: fix link properties management")
-Cc: stable@dpdk.org
 
 Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -20,10 +21,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 5ff9fcbaf7..4c517e676d 100644
+index e2487e5f71..b58873a2c2 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
-@@ -2395,8 +2395,8 @@ bond_ethdev_link_update(struct rte_eth_dev *ethdev, int wait_to_complete)
+@@ -2326,8 +2326,8 @@ bond_ethdev_link_update(struct rte_eth_dev *ethdev, int wait_to_complete)
  		 * packet loss will occur on this slave if transmission at rates
  		 * greater than this are attempted
  		 */

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

* [dpdk-stable] patch 'app/testpmd: fix crash on port reset' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (26 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix link speed update in broadcast mode' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: forbid reallocation when running' " luca.boccassi
                   ` (109 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Shougang Wang; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 556e861057f25823c45b3a00969c8a3c546b9034 Mon Sep 17 00:00:00 2001
From: Shougang Wang <shougangx.wang@intel.com>
Date: Tue, 24 Sep 2019 04:49:03 +0000
Subject: [PATCH] app/testpmd: fix crash on port reset

[ upstream commit 1cde1b9a9b4dbf31cb5e5ccdfc5da3cb079f43a2 ]

port reset cause crash when ports are not stopped. Fixed by refusing the
reset when port is not stopped.

Fixes: 97f1e196799f ("app/testpmd: add port reset command")

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/cmdline.c                      | 3 +++
 app/test-pmd/testpmd.c                      | 7 +++++++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst | 9 +++++++++
 3 files changed, 19 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 6d641a24e3..23652496e0 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -799,6 +799,9 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"port close (port_id|all)\n"
 			"    Close all ports or port_id.\n\n"
 
+			"port reset (port_id|all)\n"
+			"    Reset all ports or port_id.\n\n"
+
 			"port attach (ident)\n"
 			"    Attach physical or virtual dev by pci address or virtual device name\n\n"
 
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index f8c76a6f60..c2d6a75ef6 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1860,6 +1860,13 @@ reset_port(portid_t pid)
 	if (port_id_is_invalid(pid, ENABLED_WARN))
 		return;
 
+	port = &ports[pid];
+	if ((pid == (portid_t)RTE_PORT_ALL && !all_ports_stopped()) ||
+		(pid != (portid_t)RTE_PORT_ALL && !((port->port_status != RTE_PORT_STOPPED) && (port->slave_flag == 0)))) {
+		printf("Can not reset port(s), please stop port(s) first.\n");
+		return;
+	}
+
 	printf("Resetting ports...\n");
 
 	RTE_ETH_FOREACH_DEV(pi) {
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 285dd560bb..0193f93662 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -1704,6 +1704,15 @@ Close all ports or a specific port::
 
    testpmd> port close (port_id|all)
 
+port reset
+~~~~~~~~~~
+
+Reset all ports or a specific port::
+
+   testpmd> port reset (port_id|all)
+
+User should stop port(s) before resetting and (re-)start after reset.
+
 port start/stop queue
 ~~~~~~~~~~~~~~~~~~~~~
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.489957879 +0000
+++ 0029-app-testpmd-fix-crash-on-port-reset.patch	2019-12-19 14:32:25.757290925 +0000
@@ -1,27 +1,28 @@
-From 1cde1b9a9b4dbf31cb5e5ccdfc5da3cb079f43a2 Mon Sep 17 00:00:00 2001
+From 556e861057f25823c45b3a00969c8a3c546b9034 Mon Sep 17 00:00:00 2001
 From: Shougang Wang <shougangx.wang@intel.com>
 Date: Tue, 24 Sep 2019 04:49:03 +0000
 Subject: [PATCH] app/testpmd: fix crash on port reset
 
+[ upstream commit 1cde1b9a9b4dbf31cb5e5ccdfc5da3cb079f43a2 ]
+
 port reset cause crash when ports are not stopped. Fixed by refusing the
 reset when port is not stopped.
 
 Fixes: 97f1e196799f ("app/testpmd: add port reset command")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
 ---
  app/test-pmd/cmdline.c                      | 3 +++
- app/test-pmd/testpmd.c                      | 6 ++++++
+ app/test-pmd/testpmd.c                      | 7 +++++++
  doc/guides/testpmd_app_ug/testpmd_funcs.rst | 9 +++++++++
- 3 files changed, 18 insertions(+)
+ 3 files changed, 19 insertions(+)
 
 diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
-index dd4e6e6021..def471d975 100644
+index 6d641a24e3..23652496e0 100644
 --- a/app/test-pmd/cmdline.c
 +++ b/app/test-pmd/cmdline.c
-@@ -758,6 +758,9 @@ static void cmd_help_long_parsed(void *parsed_result,
+@@ -799,6 +799,9 @@ static void cmd_help_long_parsed(void *parsed_result,
  			"port close (port_id|all)\n"
  			"    Close all ports or port_id.\n\n"
  
@@ -32,15 +33,16 @@
  			"    Attach physical or virtual dev by pci address or virtual device name\n\n"
  
 diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
-index 1e3dc44a1c..5701f3141f 100644
+index f8c76a6f60..c2d6a75ef6 100644
 --- a/app/test-pmd/testpmd.c
 +++ b/app/test-pmd/testpmd.c
-@@ -2361,6 +2361,12 @@ reset_port(portid_t pid)
+@@ -1860,6 +1860,13 @@ reset_port(portid_t pid)
  	if (port_id_is_invalid(pid, ENABLED_WARN))
  		return;
  
++	port = &ports[pid];
 +	if ((pid == (portid_t)RTE_PORT_ALL && !all_ports_stopped()) ||
-+		(pid != (portid_t)RTE_PORT_ALL && !port_is_stopped(pid))) {
++		(pid != (portid_t)RTE_PORT_ALL && !((port->port_status != RTE_PORT_STOPPED) && (port->slave_flag == 0)))) {
 +		printf("Can not reset port(s), please stop port(s) first.\n");
 +		return;
 +	}
@@ -49,10 +51,10 @@
  
  	RTE_ETH_FOREACH_DEV(pi) {
 diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-index 67f4339ca9..cba5ba1b83 100644
+index 285dd560bb..0193f93662 100644
 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-@@ -2041,6 +2041,15 @@ Close all ports or a specific port::
+@@ -1704,6 +1704,15 @@ Close all ports or a specific port::
  
     testpmd> port close (port_id|all)
  
@@ -65,8 +67,8 @@
 +
 +User should stop port(s) before resetting and (re-)start after reset.
 +
- port config - queue ring size
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ port start/stop queue
+ ~~~~~~~~~~~~~~~~~~~~~
  
 -- 
 2.20.1

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

* [dpdk-stable] patch 'vhost: forbid reallocation when running' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (27 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'app/testpmd: fix crash on port reset' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix vring address handling during live migration' " luca.boccassi
                   ` (108 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Yinan Wang, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 9671137d3bf86b84318be2680014e8c74c0590ba Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Mon, 19 Aug 2019 19:34:55 +0800
Subject: [PATCH] vhost: forbid reallocation when running

[ upstream commit 37f7c1b609b67d26cbdd4c16a3ebc85e8d63e6dd ]

When the device has been started, don't do the reallocation anymore.
Otherwise the pointers used in application threads can be invalidated
without proper protection. Instead of introducing a global lock to
protect the change of device pointers which will hurt the performance,
let's just do the reallocation during setup.

Fixes: af295ad4698c ("vhost: realloc device and queues to same numa node as vring desc")

Reported-by: Yinan Wang <yinan.wang@intel.com>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 221217c3f4..2440f14846 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -341,6 +341,9 @@ numa_realloc(struct virtio_net *dev, int index)
 	struct vhost_virtqueue *old_vq, *vq;
 	int ret;
 
+	if (dev->flags & VIRTIO_DEV_RUNNING)
+		return dev;
+
 	old_dev = dev;
 	vq = old_vq = dev->virtqueue[index];
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.547411977 +0000
+++ 0030-vhost-forbid-reallocation-when-running.patch	2019-12-19 14:32:25.761291004 +0000
@@ -1,8 +1,10 @@
-From 37f7c1b609b67d26cbdd4c16a3ebc85e8d63e6dd Mon Sep 17 00:00:00 2001
+From 9671137d3bf86b84318be2680014e8c74c0590ba Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Mon, 19 Aug 2019 19:34:55 +0800
 Subject: [PATCH] vhost: forbid reallocation when running
 
+[ upstream commit 37f7c1b609b67d26cbdd4c16a3ebc85e8d63e6dd ]
+
 When the device has been started, don't do the reallocation anymore.
 Otherwise the pointers used in application threads can be invalidated
 without proper protection. Instead of introducing a global lock to
@@ -10,7 +12,6 @@
 let's just do the reallocation during setup.
 
 Fixes: af295ad4698c ("vhost: realloc device and queues to same numa node as vring desc")
-Cc: stable@dpdk.org
 
 Reported-by: Yinan Wang <yinan.wang@intel.com>
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
@@ -20,11 +21,11 @@
  1 file changed, 3 insertions(+)
 
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index f468436103..e4ae027a05 100644
+index 221217c3f4..2440f14846 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -410,6 +410,9 @@ numa_realloc(struct virtio_net *dev, int index)
- 	struct batch_copy_elem *new_batch_copy_elems;
+@@ -341,6 +341,9 @@ numa_realloc(struct virtio_net *dev, int index)
+ 	struct vhost_virtqueue *old_vq, *vq;
  	int ret;
  
 +	if (dev->flags & VIRTIO_DEV_RUNNING)

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

* [dpdk-stable] patch 'vhost: fix vring address handling during live migration' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (28 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: forbid reallocation when running' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: protect vring access done by application' " luca.boccassi
                   ` (107 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Yilong Lv, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ba71d193b21c16eea49649a2c6a71ad133e7dfa9 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Mon, 19 Aug 2019 19:34:56 +0800
Subject: [PATCH] vhost: fix vring address handling during live migration

[ upstream commit 72d002b3ebda4686306cc5124b7a8bdf627dba0a ]

When live migration starts, QEMU will set ring addrs again for
each virtqueue. In this case, we should try to translate ring
addrs after we invalidating the ring, otherwise virtqueues can
be enabled with the addrs untranslated. Besides, also leverage
the access_ok flag in non-IOMMU case to prevent the data path
accessing invalidated virtqueues.

Fixes: 5a4933e56be4 ("vhost: postpone ring address translations at kick time only")

Reported-by: Yilong Lv <lvyilong.lyl@alibaba-inc.com>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.c      |  3 +--
 lib/librte_vhost/vhost_user.c | 11 +++++++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index a8ed40b1f6..78fedc6a47 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -161,7 +161,7 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
 	uint64_t req_size, size;
 
 	if (!(dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)))
-		goto out;
+		return -1;
 
 	req_size = sizeof(struct vring_desc) * vq->size;
 	size = req_size;
@@ -193,7 +193,6 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
 	if (!vq->used || size != req_size)
 		return -1;
 
-out:
 	vq->access_ok = 1;
 
 	return 0;
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 2440f14846..635b6f3ddd 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -521,6 +521,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
 	}
 
 	vq->log_guest_addr = addr->log_guest_addr;
+	vq->access_ok = 1;
 
 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
 			dev->vid, vq->desc);
@@ -544,6 +545,7 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
 	struct vhost_virtqueue *vq;
 	struct vhost_vring_addr *addr = &msg->payload.addr;
 	struct virtio_net *dev = *pdev;
+	bool access_ok;
 
 	if (dev->mem == NULL)
 		return -1;
@@ -551,6 +553,8 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
 	/* addr->index refers to the queue index. The txq 1, rxq is 0. */
 	vq = dev->virtqueue[msg->payload.addr.index];
 
+	access_ok = vq->access_ok;
+
 	/*
 	 * Rings addresses should not be interpreted as long as the ring is not
 	 * started and enabled
@@ -559,8 +563,9 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
 
 	vring_invalidate(dev, vq);
 
-	if (vq->enabled && (dev->features &
-				(1ULL << VHOST_USER_F_PROTOCOL_FEATURES))) {
+	if ((vq->enabled && (dev->features &
+				(1ULL << VHOST_USER_F_PROTOCOL_FEATURES))) ||
+			access_ok) {
 		dev = translate_ring_addresses(dev, msg->payload.addr.index);
 		if (!dev)
 			return -1;
@@ -1014,6 +1019,8 @@ vhost_user_get_vring_base(struct virtio_net *dev,
 	rte_free(vq->batch_copy_elems);
 	vq->batch_copy_elems = NULL;
 
+	vring_invalidate(dev, vq);
+
 	return 0;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.589466638 +0000
+++ 0031-vhost-fix-vring-address-handling-during-live-migrati.patch	2019-12-19 14:32:25.773291242 +0000
@@ -1,8 +1,10 @@
-From 72d002b3ebda4686306cc5124b7a8bdf627dba0a Mon Sep 17 00:00:00 2001
+From ba71d193b21c16eea49649a2c6a71ad133e7dfa9 Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Mon, 19 Aug 2019 19:34:56 +0800
 Subject: [PATCH] vhost: fix vring address handling during live migration
 
+[ upstream commit 72d002b3ebda4686306cc5124b7a8bdf627dba0a ]
+
 When live migration starts, QEMU will set ring addrs again for
 each virtqueue. In this case, we should try to translate ring
 addrs after we invalidating the ring, otherwise virtqueues can
@@ -11,66 +13,57 @@
 accessing invalidated virtqueues.
 
 Fixes: 5a4933e56be4 ("vhost: postpone ring address translations at kick time only")
-Cc: stable@dpdk.org
 
 Reported-by: Yilong Lv <lvyilong.lyl@alibaba-inc.com>
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
  lib/librte_vhost/vhost.c      |  3 +--
- lib/librte_vhost/vhost_user.c | 12 ++++++++++--
- 2 files changed, 11 insertions(+), 4 deletions(-)
+ lib/librte_vhost/vhost_user.c | 11 +++++++++--
+ 2 files changed, 10 insertions(+), 4 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
-index 981837b5dd..77be160697 100644
+index a8ed40b1f6..78fedc6a47 100644
 --- a/lib/librte_vhost/vhost.c
 +++ b/lib/librte_vhost/vhost.c
-@@ -358,7 +358,7 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
- {
+@@ -161,7 +161,7 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
+ 	uint64_t req_size, size;
  
  	if (!(dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)))
 -		goto out;
 +		return -1;
  
- 	if (vq_is_packed(dev)) {
- 		if (vring_translate_packed(dev, vq) < 0)
-@@ -367,7 +367,6 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
- 		if (vring_translate_split(dev, vq) < 0)
- 			return -1;
- 	}
+ 	req_size = sizeof(struct vring_desc) * vq->size;
+ 	size = req_size;
+@@ -193,7 +193,6 @@ vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)
+ 	if (!vq->used || size != req_size)
+ 		return -1;
+ 
 -out:
  	vq->access_ok = 1;
  
  	return 0;
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index e4ae027a05..3d2db6edff 100644
+index 2440f14846..635b6f3ddd 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -622,6 +622,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
- 			return dev;
- 		}
- 
-+		vq->access_ok = 1;
- 		return dev;
- 	}
- 
-@@ -680,6 +681,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
+@@ -521,6 +521,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
  	}
  
  	vq->log_guest_addr = addr->log_guest_addr;
 +	vq->access_ok = 1;
  
- 	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
+ 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
  			dev->vid, vq->desc);
-@@ -704,6 +706,7 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, struct VhostUserMsg *msg,
- 	struct virtio_net *dev = *pdev;
+@@ -544,6 +545,7 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
  	struct vhost_virtqueue *vq;
  	struct vhost_vring_addr *addr = &msg->payload.addr;
+ 	struct virtio_net *dev = *pdev;
 +	bool access_ok;
  
  	if (dev->mem == NULL)
- 		return RTE_VHOST_MSG_RESULT_ERR;
-@@ -711,6 +714,8 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, struct VhostUserMsg *msg,
+ 		return -1;
+@@ -551,6 +553,8 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
  	/* addr->index refers to the queue index. The txq 1, rxq is 0. */
  	vq = dev->virtqueue[msg->payload.addr.index];
  
@@ -79,7 +72,7 @@
  	/*
  	 * Rings addresses should not be interpreted as long as the ring is not
  	 * started and enabled
-@@ -719,8 +724,9 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, struct VhostUserMsg *msg,
+@@ -559,8 +563,9 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, VhostUserMsg *msg)
  
  	vring_invalidate(dev, vq);
  
@@ -90,14 +83,14 @@
 +			access_ok) {
  		dev = translate_ring_addresses(dev, msg->payload.addr.index);
  		if (!dev)
- 			return RTE_VHOST_MSG_RESULT_ERR;
-@@ -1325,6 +1331,8 @@ vhost_user_get_vring_base(struct virtio_net **pdev,
- 	msg->size = sizeof(msg->payload.state);
- 	msg->fd_num = 0;
+ 			return -1;
+@@ -1014,6 +1019,8 @@ vhost_user_get_vring_base(struct virtio_net *dev,
+ 	rte_free(vq->batch_copy_elems);
+ 	vq->batch_copy_elems = NULL;
  
 +	vring_invalidate(dev, vq);
 +
- 	return RTE_VHOST_MSG_RESULT_REPLY;
+ 	return 0;
  }
  
 -- 

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

* [dpdk-stable] patch 'vhost: protect vring access done by application' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (29 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix vring address handling during live migration' " luca.boccassi
@ 2019-12-19 14:32 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/vhost: fix redundant queue state event' " luca.boccassi
                   ` (106 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:32 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: Peng He, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 553c27798e7b3ca0ccf8f7e2191543097b4d467d Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie@intel.com>
Date: Mon, 19 Aug 2019 19:34:57 +0800
Subject: [PATCH] vhost: protect vring access done by application

[ upstream commit 4e0de8dac8531b82d4c328791a67f49eadfed5f0 ]

Besides the enqueue/dequeue API, other APIs of the builtin net
backend should also be protected.

Fixes: a3688046995f ("vhost: protect active rings from async ring changes")

Reported-by: Peng He <xnhp0320@icloud.com>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.c | 42 ++++++++++++++++++++++++++++++++++------
 1 file changed, 36 insertions(+), 6 deletions(-)

diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index 78fedc6a47..08ab6eab35 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -538,22 +538,32 @@ rte_vhost_avail_entries(int vid, uint16_t queue_id)
 {
 	struct virtio_net *dev;
 	struct vhost_virtqueue *vq;
+	uint16_t ret = 0;
 
 	dev = get_device(vid);
 	if (!dev)
 		return 0;
 
 	vq = dev->virtqueue[queue_id];
-	if (!vq->enabled)
-		return 0;
 
-	return *(volatile uint16_t *)&vq->avail->idx - vq->last_used_idx;
+	rte_spinlock_lock(&vq->access_lock);
+
+	if (unlikely(!vq->enabled || vq->avail == NULL))
+		goto out;
+
+	ret = *(volatile uint16_t *)&vq->avail->idx - vq->last_used_idx;
+
+out:
+	rte_spinlock_unlock(&vq->access_lock);
+	return ret;
 }
 
 int
 rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable)
 {
 	struct virtio_net *dev = get_device(vid);
+	struct vhost_virtqueue *vq;
+	int ret = 0;
 
 	if (dev == NULL)
 		return -1;
@@ -564,8 +574,21 @@ rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable)
 		return -1;
 	}
 
+	vq = dev->virtqueue[queue_id];
+
+	rte_spinlock_lock(&vq->access_lock);
+
+	if (vq->used == NULL) {
+		ret = -1;
+		goto out;
+	}
+
 	dev->virtqueue[queue_id]->used->flags = VRING_USED_F_NO_NOTIFY;
-	return 0;
+
+out:
+	rte_spinlock_unlock(&vq->access_lock);
+
+	return ret;
 }
 
 void
@@ -604,6 +627,7 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
 {
 	struct virtio_net *dev;
 	struct vhost_virtqueue *vq;
+	uint32_t ret = 0;
 
 	dev = get_device(vid);
 	if (dev == NULL)
@@ -619,8 +643,14 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
 	if (vq == NULL)
 		return 0;
 
+	rte_spinlock_lock(&vq->access_lock);
+
 	if (unlikely(vq->enabled == 0 || vq->avail == NULL))
-		return 0;
+		goto out;
 
-	return *((volatile uint16_t *)&vq->avail->idx) - vq->last_avail_idx;
+	ret = *((volatile uint16_t *)&vq->avail->idx) - vq->last_avail_idx;
+
+out:
+	rte_spinlock_unlock(&vq->access_lock);
+	return ret;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.626988674 +0000
+++ 0032-vhost-protect-vring-access-done-by-application.patch	2019-12-19 14:32:25.785291480 +0000
@@ -1,26 +1,27 @@
-From 4e0de8dac8531b82d4c328791a67f49eadfed5f0 Mon Sep 17 00:00:00 2001
+From 553c27798e7b3ca0ccf8f7e2191543097b4d467d Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie@intel.com>
 Date: Mon, 19 Aug 2019 19:34:57 +0800
 Subject: [PATCH] vhost: protect vring access done by application
 
+[ upstream commit 4e0de8dac8531b82d4c328791a67f49eadfed5f0 ]
+
 Besides the enqueue/dequeue API, other APIs of the builtin net
 backend should also be protected.
 
 Fixes: a3688046995f ("vhost: protect active rings from async ring changes")
-Cc: stable@dpdk.org
 
 Reported-by: Peng He <xnhp0320@icloud.com>
 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- lib/librte_vhost/vhost.c | 50 +++++++++++++++++++++++++++++++---------
- 1 file changed, 39 insertions(+), 11 deletions(-)
+ lib/librte_vhost/vhost.c | 42 ++++++++++++++++++++++++++++++++++------
+ 1 file changed, 36 insertions(+), 6 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
-index 77be160697..cea44df8cb 100644
+index 78fedc6a47..08ab6eab35 100644
 --- a/lib/librte_vhost/vhost.c
 +++ b/lib/librte_vhost/vhost.c
-@@ -785,22 +785,33 @@ rte_vhost_avail_entries(int vid, uint16_t queue_id)
+@@ -538,22 +538,32 @@ rte_vhost_avail_entries(int vid, uint16_t queue_id)
  {
  	struct virtio_net *dev;
  	struct vhost_virtqueue *vq;
@@ -47,77 +48,39 @@
 +	return ret;
  }
  
--static inline void
-+static inline int
- vhost_enable_notify_split(struct virtio_net *dev,
- 		struct vhost_virtqueue *vq, int enable)
- {
-+	if (vq->used == NULL)
-+		return -1;
-+
- 	if (!(dev->features & (1ULL << VIRTIO_RING_F_EVENT_IDX))) {
- 		if (enable)
- 			vq->used->flags &= ~VRING_USED_F_NO_NOTIFY;
-@@ -810,17 +821,21 @@ vhost_enable_notify_split(struct virtio_net *dev,
- 		if (enable)
- 			vhost_avail_event(vq) = vq->last_avail_idx;
- 	}
-+	return 0;
- }
- 
--static inline void
-+static inline int
- vhost_enable_notify_packed(struct virtio_net *dev,
- 		struct vhost_virtqueue *vq, int enable)
- {
- 	uint16_t flags;
- 
-+	if (vq->device_event == NULL)
-+		return -1;
-+
- 	if (!enable) {
- 		vq->device_event->flags = VRING_EVENT_F_DISABLE;
--		return;
-+		return 0;
- 	}
- 
- 	flags = VRING_EVENT_F_ENABLE;
-@@ -833,6 +848,7 @@ vhost_enable_notify_packed(struct virtio_net *dev,
- 	rte_smp_wmb();
- 
- 	vq->device_event->flags = flags;
-+	return 0;
- }
- 
  int
-@@ -840,18 +856,23 @@ rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable)
+ rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable)
  {
  	struct virtio_net *dev = get_device(vid);
- 	struct vhost_virtqueue *vq;
-+	int ret;
++	struct vhost_virtqueue *vq;
++	int ret = 0;
  
- 	if (!dev)
+ 	if (dev == NULL)
  		return -1;
+@@ -564,8 +574,21 @@ rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable)
+ 		return -1;
+ 	}
  
- 	vq = dev->virtqueue[queue_id];
- 
++	vq = dev->virtqueue[queue_id];
++
 +	rte_spinlock_lock(&vq->access_lock);
 +
- 	if (vq_is_packed(dev))
--		vhost_enable_notify_packed(dev, vq, enable);
-+		ret = vhost_enable_notify_packed(dev, vq, enable);
- 	else
--		vhost_enable_notify_split(dev, vq, enable);
-+		ret = vhost_enable_notify_split(dev, vq, enable);
- 
++	if (vq->used == NULL) {
++		ret = -1;
++		goto out;
++	}
++
+ 	dev->virtqueue[queue_id]->used->flags = VRING_USED_F_NO_NOTIFY;
 -	return 0;
++
++out:
 +	rte_spinlock_unlock(&vq->access_lock);
 +
 +	return ret;
  }
  
  void
-@@ -890,6 +911,7 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
+@@ -604,6 +627,7 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
  {
  	struct virtio_net *dev;
  	struct vhost_virtqueue *vq;
@@ -125,7 +88,7 @@
  
  	dev = get_device(vid);
  	if (dev == NULL)
-@@ -905,10 +927,16 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
+@@ -619,8 +643,14 @@ rte_vhost_rx_queue_count(int vid, uint16_t qid)
  	if (vq == NULL)
  		return 0;
  
@@ -142,8 +105,6 @@
 +	rte_spinlock_unlock(&vq->access_lock);
 +	return ret;
  }
- 
- int rte_vhost_get_vdpa_device_id(int vid)
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/vhost: fix redundant queue state event' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (30 preceding siblings ...)
  2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: protect vring access done by application' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: get all pending Rx packets in vectorized paths' " luca.boccassi
                   ` (105 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Noa Ezra; +Cc: Matan Azrad, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From fb36c3728ea5174c45d180b50dca85c07ef864a6 Mon Sep 17 00:00:00 2001
From: Noa Ezra <noae@mellanox.com>
Date: Thu, 20 Jun 2019 06:33:03 +0000
Subject: [PATCH] net/vhost: fix redundant queue state event

[ upstream commit f2f0577eff3d13e761996c7390a244963b433bdc ]

In some situations, when a virtual machine is starting,
vring_state_changed can be called while there was no change in the
queue state. This fix makes sure that there was really a change in the
queue state before calling the callback for EVENT_QUEUE_STATE.

Fixes: ee584e9710b9 ("vhost: add driver on top of the library")

Signed-off-by: Noa Ezra <noae@mellanox.com>
Reviewed-by: Matan Azrad <matan@mellanox.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/vhost/rte_eth_vhost.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index 7b7780c9c4..1f3b271743 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -705,6 +705,10 @@ vring_state_changed(int vid, uint16_t vring, int enable)
 	/* won't be NULL */
 	state = vring_states[eth_dev->data->port_id];
 	rte_spinlock_lock(&state->lock);
+	if (state->cur[vring] == enable) {
+		rte_spinlock_unlock(&state->lock);
+		return 0;
+	}
 	state->cur[vring] = enable;
 	state->max_vring = RTE_MAX(vring, state->max_vring);
 	rte_spinlock_unlock(&state->lock);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.661772986 +0000
+++ 0033-net-vhost-fix-redundant-queue-state-event.patch	2019-12-19 14:32:25.797291718 +0000
@@ -1,15 +1,16 @@
-From f2f0577eff3d13e761996c7390a244963b433bdc Mon Sep 17 00:00:00 2001
+From fb36c3728ea5174c45d180b50dca85c07ef864a6 Mon Sep 17 00:00:00 2001
 From: Noa Ezra <noae@mellanox.com>
 Date: Thu, 20 Jun 2019 06:33:03 +0000
 Subject: [PATCH] net/vhost: fix redundant queue state event
 
+[ upstream commit f2f0577eff3d13e761996c7390a244963b433bdc ]
+
 In some situations, when a virtual machine is starting,
 vring_state_changed can be called while there was no change in the
 queue state. This fix makes sure that there was really a change in the
 queue state before calling the callback for EVENT_QUEUE_STATE.
 
 Fixes: ee584e9710b9 ("vhost: add driver on top of the library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Noa Ezra <noae@mellanox.com>
 Reviewed-by: Matan Azrad <matan@mellanox.com>
@@ -19,10 +20,10 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
-index c3ba602767..5de21f1434 100644
+index 7b7780c9c4..1f3b271743 100644
 --- a/drivers/net/vhost/rte_eth_vhost.c
 +++ b/drivers/net/vhost/rte_eth_vhost.c
-@@ -853,6 +853,10 @@ vring_state_changed(int vid, uint16_t vring, int enable)
+@@ -705,6 +705,10 @@ vring_state_changed(int vid, uint16_t vring, int enable)
  	/* won't be NULL */
  	state = vring_states[eth_dev->data->port_id];
  	rte_spinlock_lock(&state->lock);

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

* [dpdk-stable] patch 'net/virtio: get all pending Rx packets in vectorized paths' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (31 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/vhost: fix redundant queue state event' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix mbuf data and packet length mismatch' " luca.boccassi
                   ` (104 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Thibaut Collet; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 4f1d3abf7e61ffec7374266c1801c15d02dcd91e Mon Sep 17 00:00:00 2001
From: Thibaut Collet <thibaut.collet@6wind.com>
Date: Wed, 11 Sep 2019 18:04:09 +0200
Subject: [PATCH] net/virtio: get all pending Rx packets in vectorized paths

[ upstream commit 016f56b5bc503be2f2286d2c7f5e5eb4200ffb6d ]

The loop to read packets does not take all packets as the number of
available packets (nb_used) is decremented in the loop.
Take all available packets provides a performance improvement of 3%.

Fixes: fc3d66212fed ("virtio: add vector Rx")

Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_rxtx_simple_neon.c | 5 +++--
 drivers/net/virtio/virtio_rxtx_simple_sse.c  | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c
index b8b93551f0..a9d5cb6955 100644
--- a/drivers/net/virtio/virtio_rxtx_simple_neon.c
+++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c
@@ -72,7 +72,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 	struct virtnet_rx *rxvq = rx_queue;
 	struct virtqueue *vq = rxvq->vq;
 	struct virtio_hw *hw = vq->hw;
-	uint16_t nb_used;
+	uint16_t nb_used, nb_total;
 	uint16_t desc_idx;
 	struct vring_used_elem *rused;
 	struct rte_mbuf **sw_ring;
@@ -135,8 +135,9 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			virtqueue_notify(vq);
 	}
 
+	nb_total = nb_used;
 	for (nb_pkts_received = 0;
-		nb_pkts_received < nb_used;) {
+		nb_pkts_received < nb_total;) {
 		uint64x2_t desc[RTE_VIRTIO_DESC_PER_LOOP / 2];
 		uint64x2_t mbp[RTE_VIRTIO_DESC_PER_LOOP / 2];
 		uint64x2_t pkt_mb[RTE_VIRTIO_DESC_PER_LOOP];
diff --git a/drivers/net/virtio/virtio_rxtx_simple_sse.c b/drivers/net/virtio/virtio_rxtx_simple_sse.c
index 94f65143bb..74ca28d79d 100644
--- a/drivers/net/virtio/virtio_rxtx_simple_sse.c
+++ b/drivers/net/virtio/virtio_rxtx_simple_sse.c
@@ -74,7 +74,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 	struct virtnet_rx *rxvq = rx_queue;
 	struct virtqueue *vq = rxvq->vq;
 	struct virtio_hw *hw = vq->hw;
-	uint16_t nb_used;
+	uint16_t nb_used, nb_total;
 	uint16_t desc_idx;
 	struct vring_used_elem *rused;
 	struct rte_mbuf **sw_ring;
@@ -138,8 +138,9 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			virtqueue_notify(vq);
 	}
 
+	nb_total = nb_used;
 	for (nb_pkts_received = 0;
-		nb_pkts_received < nb_used;) {
+		nb_pkts_received < nb_total;) {
 		__m128i desc[RTE_VIRTIO_DESC_PER_LOOP / 2];
 		__m128i mbp[RTE_VIRTIO_DESC_PER_LOOP / 2];
 		__m128i pkt_mb[RTE_VIRTIO_DESC_PER_LOOP];
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.698475902 +0000
+++ 0034-net-virtio-get-all-pending-Rx-packets-in-vectorized-.patch	2019-12-19 14:32:25.809291956 +0000
@@ -1,14 +1,15 @@
-From 016f56b5bc503be2f2286d2c7f5e5eb4200ffb6d Mon Sep 17 00:00:00 2001
+From 4f1d3abf7e61ffec7374266c1801c15d02dcd91e Mon Sep 17 00:00:00 2001
 From: Thibaut Collet <thibaut.collet@6wind.com>
 Date: Wed, 11 Sep 2019 18:04:09 +0200
 Subject: [PATCH] net/virtio: get all pending Rx packets in vectorized paths
 
+[ upstream commit 016f56b5bc503be2f2286d2c7f5e5eb4200ffb6d ]
+
 The loop to read packets does not take all packets as the number of
 available packets (nb_used) is decremented in the loop.
 Take all available packets provides a performance improvement of 3%.
 
 Fixes: fc3d66212fed ("virtio: add vector Rx")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -18,10 +19,10 @@
  2 files changed, 6 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c
-index 70e89fc428..992e71f010 100644
+index b8b93551f0..a9d5cb6955 100644
 --- a/drivers/net/virtio/virtio_rxtx_simple_neon.c
 +++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c
-@@ -42,7 +42,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -72,7 +72,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  	struct virtnet_rx *rxvq = rx_queue;
  	struct virtqueue *vq = rxvq->vq;
  	struct virtio_hw *hw = vq->hw;
@@ -30,12 +31,11 @@
  	uint16_t desc_idx;
  	struct vring_used_elem *rused;
  	struct rte_mbuf **sw_ring;
-@@ -106,9 +106,10 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -135,8 +135,9 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  			virtqueue_notify(vq);
  	}
  
 +	nb_total = nb_used;
- 	ref_rx_pkts = rx_pkts;
  	for (nb_pkts_received = 0;
 -		nb_pkts_received < nb_used;) {
 +		nb_pkts_received < nb_total;) {
@@ -43,10 +43,10 @@
  		uint64x2_t mbp[RTE_VIRTIO_DESC_PER_LOOP / 2];
  		uint64x2_t pkt_mb[RTE_VIRTIO_DESC_PER_LOOP];
 diff --git a/drivers/net/virtio/virtio_rxtx_simple_sse.c b/drivers/net/virtio/virtio_rxtx_simple_sse.c
-index cb1610e715..f9ec4ae699 100644
+index 94f65143bb..74ca28d79d 100644
 --- a/drivers/net/virtio/virtio_rxtx_simple_sse.c
 +++ b/drivers/net/virtio/virtio_rxtx_simple_sse.c
-@@ -43,7 +43,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -74,7 +74,7 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  	struct virtnet_rx *rxvq = rx_queue;
  	struct virtqueue *vq = rxvq->vq;
  	struct virtio_hw *hw = vq->hw;
@@ -55,12 +55,11 @@
  	uint16_t desc_idx;
  	struct vring_used_elem *rused;
  	struct rte_mbuf **sw_ring;
-@@ -108,9 +108,10 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -138,8 +138,9 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  			virtqueue_notify(vq);
  	}
  
 +	nb_total = nb_used;
- 	ref_rx_pkts = rx_pkts;
  	for (nb_pkts_received = 0;
 -		nb_pkts_received < nb_used;) {
 +		nb_pkts_received < nb_total;) {

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

* [dpdk-stable] patch 'net/virtio: fix mbuf data and packet length mismatch' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (32 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: get all pending Rx packets in vectorized paths' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/cxgbe: fix prefetch for non-coalesced Tx packets' " luca.boccassi
                   ` (103 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Marvin Liu; +Cc: Stephen Hemminger, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From b5f254957572c565952e534bb0e8ef024a6c98f8 Mon Sep 17 00:00:00 2001
From: Marvin Liu <yong.liu@intel.com>
Date: Mon, 23 Sep 2019 22:05:11 +0800
Subject: [PATCH] net/virtio: fix mbuf data and packet length mismatch

[ upstream commit 1ae55ad38e5e00b61704e4cb29037098b143688a ]

If reserve virtio header room by function rte_pktmbuf_prepend, both
segment data length and packet length of mbuf will be increased.
Data length will be equal to descriptor length, while packet length
should be decreased as virtio-net header won't be taken into packet.
Thus will cause mismatch in mbuf structure. Fix this issue by access
mbuf data directly and increase descriptor length if it is needed.

Fixes: 58169a9c8153 ("net/virtio: support Tx checksum offload")
Fixes: 892dc798fa9c ("net/virtio: implement Tx path for packed queues")
Fixes: 4905ed3a523f ("net/virtio: optimize Tx enqueue for packed ring")
Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx")

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_rxtx.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index b37a186b62..40255eee4e 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -36,6 +36,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <stdbool.h>
 
 #include <rte_cycles.h>
 #include <rte_memory.h>
@@ -285,6 +286,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 	uint16_t head_size = vq->hw->vtnet_hdr_size;
 	struct virtio_net_hdr *hdr;
 	int offload;
+	bool prepend_header = false;
 
 	offload = tx_offload_enabled(vq->hw);
 	head_idx = vq->vq_desc_head_idx;
@@ -297,12 +299,9 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 
 	if (can_push) {
 		/* prepend cannot fail, checked by caller */
-		hdr = (struct virtio_net_hdr *)
-			rte_pktmbuf_prepend(cookie, head_size);
-		/* rte_pktmbuf_prepend() counts the hdr size to the pkt length,
-		 * which is wrong. Below subtract restores correct pkt size.
-		 */
-		cookie->pkt_len -= head_size;
+		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
+			cookie->data_off - head_size;
+		prepend_header = true;
 		/* if offload disabled, it is not zeroed below, do it now */
 		if (offload == 0) {
 			ASSIGN_UNLESS_EQUAL(hdr->csum_start, 0);
@@ -388,6 +387,10 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 	do {
 		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
 		start_dp[idx].len   = cookie->data_len;
+		if (prepend_header) {
+			start_dp[idx].len += head_size;
+			prepend_header = false;
+		}
 		start_dp[idx].flags = cookie->next ? VRING_DESC_F_NEXT : 0;
 		idx = start_dp[idx].next;
 	} while ((cookie = cookie->next) != NULL);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.736094674 +0000
+++ 0035-net-virtio-fix-mbuf-data-and-packet-length-mismatch.patch	2019-12-19 14:32:25.825292273 +0000
@@ -1,8 +1,10 @@
-From 1ae55ad38e5e00b61704e4cb29037098b143688a Mon Sep 17 00:00:00 2001
+From b5f254957572c565952e534bb0e8ef024a6c98f8 Mon Sep 17 00:00:00 2001
 From: Marvin Liu <yong.liu@intel.com>
 Date: Mon, 23 Sep 2019 22:05:11 +0800
 Subject: [PATCH] net/virtio: fix mbuf data and packet length mismatch
 
+[ upstream commit 1ae55ad38e5e00b61704e4cb29037098b143688a ]
+
 If reserve virtio header room by function rte_pktmbuf_prepend, both
 segment data length and packet length of mbuf will be increased.
 Data length will be equal to descriptor length, while packet length
@@ -14,109 +16,35 @@
 Fixes: 892dc798fa9c ("net/virtio: implement Tx path for packed queues")
 Fixes: 4905ed3a523f ("net/virtio: optimize Tx enqueue for packed ring")
 Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx")
-Cc: stable@dpdk.org
 
 Reported-by: Stephen Hemminger <stephen@networkplumber.org>
 Signed-off-by: Marvin Liu <yong.liu@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- drivers/net/virtio/virtio_rxtx.c | 44 +++++++++++++++++---------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
+ drivers/net/virtio/virtio_rxtx.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index 42f2beb407..929aa4cbd3 100644
+index b37a186b62..40255eee4e 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -640,9 +640,8 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
- 		dxp->ndescs = 1;
- 		virtio_update_packet_stats(&txvq->stats, cookies[i]);
- 
--		hdr = (struct virtio_net_hdr *)
--			rte_pktmbuf_prepend(cookies[i], head_size);
--		cookies[i]->pkt_len -= head_size;
-+		hdr = (struct virtio_net_hdr *)(char *)cookies[i]->buf_addr +
-+			cookies[i]->data_off - head_size;
- 
- 		/* if offload disabled, hdr is not zeroed yet, do it now */
- 		if (!vq->hw->has_tx_offload)
-@@ -651,9 +650,10 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
- 			virtqueue_xmit_offload(hdr, cookies[i], true);
- 
- 		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookies[i], vq);
--		start_dp[idx].len   = cookies[i]->data_len;
-+		start_dp[idx].len   = cookies[i]->data_len + head_size;
- 		start_dp[idx].flags = 0;
- 
-+
- 		vq_update_avail_ring(vq, idx);
- 
- 		idx++;
-@@ -687,9 +687,8 @@ virtqueue_enqueue_xmit_packed_fast(struct virtnet_tx *txvq,
- 	flags = vq->vq_packed.cached_flags;
- 
- 	/* prepend cannot fail, checked by caller */
--	hdr = (struct virtio_net_hdr *)
--		rte_pktmbuf_prepend(cookie, head_size);
--	cookie->pkt_len -= head_size;
-+	hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
-+		cookie->data_off - head_size;
- 
- 	/* if offload disabled, hdr is not zeroed yet, do it now */
- 	if (!vq->hw->has_tx_offload)
-@@ -698,7 +697,7 @@ virtqueue_enqueue_xmit_packed_fast(struct virtnet_tx *txvq,
- 		virtqueue_xmit_offload(hdr, cookie, true);
- 
- 	dp->addr = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
--	dp->len  = cookie->data_len;
-+	dp->len  = cookie->data_len + head_size;
- 	dp->id   = id;
- 
- 	if (++vq->vq_avail_idx >= vq->vq_nentries) {
-@@ -730,6 +729,7 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+@@ -36,6 +36,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
++#include <stdbool.h>
+ 
+ #include <rte_cycles.h>
+ #include <rte_memory.h>
+@@ -285,6 +286,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  	uint16_t head_size = vq->hw->vtnet_hdr_size;
  	struct virtio_net_hdr *hdr;
- 	uint16_t prev;
-+	bool prepend_header = false;
- 
- 	id = in_order ? vq->vq_avail_idx : vq->vq_desc_head_idx;
- 
-@@ -748,12 +748,9 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 
- 	if (can_push) {
- 		/* prepend cannot fail, checked by caller */
--		hdr = (struct virtio_net_hdr *)
--			rte_pktmbuf_prepend(cookie, head_size);
--		/* rte_pktmbuf_prepend() counts the hdr size to the pkt length,
--		 * which is wrong. Below subtract restores correct pkt size.
--		 */
--		cookie->pkt_len -= head_size;
-+		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
-+			cookie->data_off - head_size;
-+		prepend_header = true;
- 
- 		/* if offload disabled, it is not zeroed below, do it now */
- 		if (!vq->hw->has_tx_offload)
-@@ -781,6 +778,11 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 
- 		start_dp[idx].addr = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
- 		start_dp[idx].len  = cookie->data_len;
-+		if (prepend_header) {
-+			start_dp[idx].len += head_size;
-+			prepend_header = false;
-+		}
-+
- 		if (likely(idx != head_idx)) {
- 			flags = cookie->next ? VRING_DESC_F_NEXT : 0;
- 			flags |= vq->vq_packed.cached_flags;
-@@ -822,6 +824,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 	uint16_t seg_num = cookie->nb_segs;
- 	uint16_t head_idx, idx;
- 	uint16_t head_size = vq->hw->vtnet_hdr_size;
+ 	int offload;
 +	bool prepend_header = false;
- 	struct virtio_net_hdr *hdr;
  
+ 	offload = tx_offload_enabled(vq->hw);
  	head_idx = vq->vq_desc_head_idx;
-@@ -837,12 +840,9 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+@@ -297,12 +299,9 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  
  	if (can_push) {
  		/* prepend cannot fail, checked by caller */
@@ -129,10 +57,10 @@
 +		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
 +			cookie->data_off - head_size;
 +		prepend_header = true;
- 
  		/* if offload disabled, it is not zeroed below, do it now */
- 		if (!vq->hw->has_tx_offload)
-@@ -881,6 +881,10 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+ 		if (offload == 0) {
+ 			ASSIGN_UNLESS_EQUAL(hdr->csum_start, 0);
+@@ -388,6 +387,10 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  	do {
  		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
  		start_dp[idx].len   = cookie->data_len;

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

* [dpdk-stable] patch 'net/cxgbe: fix prefetch for non-coalesced Tx packets' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (33 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix mbuf data and packet length mismatch' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: fix X553 speed capability' " luca.boccassi
                   ` (102 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Rahul Lakkireddy; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 6214aefb3c52a64a9a0e6da4506323f5eb683ab3 Mon Sep 17 00:00:00 2001
From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date: Sat, 28 Sep 2019 02:00:05 +0530
Subject: [PATCH] net/cxgbe: fix prefetch for non-coalesced Tx packets

[ upstream commit b1df19e43e1d1415ab7fae119e672a2f3b8f39f0 ]

Move prefetch code out of Tx coalesce path to allow prefetching for
non-coalesced Tx packets, as well.

Fixes: bf89cbedd2d9 ("cxgbe: optimize forwarding performance for 40G")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
---
 drivers/net/cxgbe/cxgbe_ethdev.c | 9 +++++++--
 drivers/net/cxgbe/sge.c          | 1 -
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
index dc153c7312..8b5b9b4edb 100644
--- a/drivers/net/cxgbe/cxgbe_ethdev.c
+++ b/drivers/net/cxgbe/cxgbe_ethdev.c
@@ -91,6 +91,7 @@ static uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 	struct sge_eth_txq *txq = (struct sge_eth_txq *)tx_queue;
 	uint16_t pkts_sent, pkts_remain;
 	uint16_t total_sent = 0;
+	uint16_t idx = 0;
 	int ret = 0;
 
 	CXGBE_DEBUG_TX(adapter, "%s: txq = %p; tx_pkts = %p; nb_pkts = %d\n",
@@ -99,12 +100,16 @@ static uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 	t4_os_lock(&txq->txq_lock);
 	/* free up desc from already completed tx */
 	reclaim_completed_tx(&txq->q);
+	rte_prefetch0(rte_pktmbuf_mtod(tx_pkts[0], volatile void *));
 	while (total_sent < nb_pkts) {
 		pkts_remain = nb_pkts - total_sent;
 
 		for (pkts_sent = 0; pkts_sent < pkts_remain; pkts_sent++) {
-			ret = t4_eth_xmit(txq, tx_pkts[total_sent + pkts_sent],
-					  nb_pkts);
+			idx = total_sent + pkts_sent;
+			if ((idx + 1) < nb_pkts)
+				rte_prefetch0(rte_pktmbuf_mtod(tx_pkts[idx + 1],
+							volatile void *));
+			ret = t4_eth_xmit(txq, tx_pkts[idx], nb_pkts);
 			if (ret < 0)
 				break;
 		}
diff --git a/drivers/net/cxgbe/sge.c b/drivers/net/cxgbe/sge.c
index babff0b9b1..9dddea5324 100644
--- a/drivers/net/cxgbe/sge.c
+++ b/drivers/net/cxgbe/sge.c
@@ -1130,7 +1130,6 @@ out_free:
 				txq->stats.mapping_err++;
 				goto out_free;
 			}
-			rte_prefetch0((volatile void *)addr);
 			return tx_do_packet_coalesce(txq, mbuf, cflits, adap,
 						     pi, addr, nb_pkts);
 		} else {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.773131736 +0000
+++ 0036-net-cxgbe-fix-prefetch-for-non-coalesced-Tx-packets.patch	2019-12-19 14:32:25.841292591 +0000
@@ -1,13 +1,14 @@
-From b1df19e43e1d1415ab7fae119e672a2f3b8f39f0 Mon Sep 17 00:00:00 2001
+From 6214aefb3c52a64a9a0e6da4506323f5eb683ab3 Mon Sep 17 00:00:00 2001
 From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 Date: Sat, 28 Sep 2019 02:00:05 +0530
 Subject: [PATCH] net/cxgbe: fix prefetch for non-coalesced Tx packets
 
+[ upstream commit b1df19e43e1d1415ab7fae119e672a2f3b8f39f0 ]
+
 Move prefetch code out of Tx coalesce path to allow prefetching for
 non-coalesced Tx packets, as well.
 
 Fixes: bf89cbedd2d9 ("cxgbe: optimize forwarding performance for 40G")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 ---
@@ -16,10 +17,10 @@
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
-index 7d7be69edd..5d74f8ba3b 100644
+index dc153c7312..8b5b9b4edb 100644
 --- a/drivers/net/cxgbe/cxgbe_ethdev.c
 +++ b/drivers/net/cxgbe/cxgbe_ethdev.c
-@@ -67,6 +67,7 @@ uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
+@@ -91,6 +91,7 @@ static uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
  	struct sge_eth_txq *txq = (struct sge_eth_txq *)tx_queue;
  	uint16_t pkts_sent, pkts_remain;
  	uint16_t total_sent = 0;
@@ -27,7 +28,7 @@
  	int ret = 0;
  
  	CXGBE_DEBUG_TX(adapter, "%s: txq = %p; tx_pkts = %p; nb_pkts = %d\n",
-@@ -75,12 +76,16 @@ uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
+@@ -99,12 +100,16 @@ static uint16_t cxgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
  	t4_os_lock(&txq->txq_lock);
  	/* free up desc from already completed tx */
  	reclaim_completed_tx(&txq->q);
@@ -47,10 +48,10 @@
  				break;
  		}
 diff --git a/drivers/net/cxgbe/sge.c b/drivers/net/cxgbe/sge.c
-index 641be96578..bf31902111 100644
+index babff0b9b1..9dddea5324 100644
 --- a/drivers/net/cxgbe/sge.c
 +++ b/drivers/net/cxgbe/sge.c
-@@ -1154,7 +1154,6 @@ out_free:
+@@ -1130,7 +1130,6 @@ out_free:
  				txq->stats.mapping_err++;
  				goto out_free;
  			}

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

* [dpdk-stable] patch 'net/ixgbe: fix X553 speed capability' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (34 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/cxgbe: fix prefetch for non-coalesced Tx packets' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix slave id types' " luca.boccassi
                   ` (101 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5e7796b8b4581585e359b055454ace7dd4debca8 Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Wed, 25 Sep 2019 10:49:54 +0800
Subject: [PATCH] net/ixgbe: fix X553 speed capability

[ upstream commit a02ef30e05f249df417e436c0c924091c2955a2c ]

The speed capability of X553 1GbE should be ETH_LINK_SPEED_1G |
ETH_LINK_SPEED_100M | ETH_LINK_SPEED_10M rather than ETH_LINK_SPEED_1G |
ETH_LINK_SPEED_10G. Correct it to fix the issue.

Fixes: e274f5732225 ("ethdev: add speed capabilities")

Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index c722b36ebf..6f8cfd9b00 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3774,6 +3774,11 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;
 
 	dev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;
+	if (hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T ||
+			hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T_L)
+		dev_info->speed_capa = ETH_LINK_SPEED_10M |
+			ETH_LINK_SPEED_100M | ETH_LINK_SPEED_1G;
+
 	if (hw->mac.type == ixgbe_mac_X540 ||
 	    hw->mac.type == ixgbe_mac_X540_vf ||
 	    hw->mac.type == ixgbe_mac_X550 ||
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.813398534 +0000
+++ 0037-net-ixgbe-fix-X553-speed-capability.patch	2019-12-19 14:32:25.861292987 +0000
@@ -1,14 +1,15 @@
-From a02ef30e05f249df417e436c0c924091c2955a2c Mon Sep 17 00:00:00 2001
+From 5e7796b8b4581585e359b055454ace7dd4debca8 Mon Sep 17 00:00:00 2001
 From: Xiao Zhang <xiao.zhang@intel.com>
 Date: Wed, 25 Sep 2019 10:49:54 +0800
 Subject: [PATCH] net/ixgbe: fix X553 speed capability
 
+[ upstream commit a02ef30e05f249df417e436c0c924091c2955a2c ]
+
 The speed capability of X553 1GbE should be ETH_LINK_SPEED_1G |
 ETH_LINK_SPEED_100M | ETH_LINK_SPEED_10M rather than ETH_LINK_SPEED_1G |
 ETH_LINK_SPEED_10G. Correct it to fix the issue.
 
 Fixes: e274f5732225 ("ethdev: add speed capabilities")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
 Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -17,10 +18,10 @@
  1 file changed, 5 insertions(+)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index 7bec95fe52..77c6d387f6 100644
+index c722b36ebf..6f8cfd9b00 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -3840,6 +3840,11 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+@@ -3774,6 +3774,11 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
  	dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;
  
  	dev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;

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

* [dpdk-stable] patch 'net/bonding: fix slave id types' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (35 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: fix X553 speed capability' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix OOB access in other aggregator modes' " luca.boccassi
                   ` (100 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Hui Zhao; +Cc: David Marchand, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 68e34fdd450d1efd9d3df7065798acc9d98f9284 Mon Sep 17 00:00:00 2001
From: Hui Zhao <zhaohui8@huawei.com>
Date: Thu, 21 Mar 2019 21:28:13 +0100
Subject: [PATCH] net/bonding: fix slave id types

[ upstream commit c28aff1e41eedd9d44c480264efbd7f4dd5cf31e ]

mode_bond_id and mode_band_id are slave ids, stored on 16bits.

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

Signed-off-by: Hui Zhao <zhaohui8@huawei.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/bonding/rte_eth_bond_8023ad.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index 14b82bb304..abf833f6e1 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -659,7 +659,7 @@ tx_machine(struct bond_dev_private *internals, uint16_t slave_id)
 	SM_FLAG_CLR(port, NTT);
 }
 
-static uint8_t
+static uint16_t
 max_index(uint64_t *a, int n)
 {
 	if (n <= 0)
@@ -693,7 +693,8 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
 	uint64_t agg_bandwidth[8] = {0};
 	uint64_t agg_count[8] = {0};
 	uint16_t default_slave = 0;
-	uint8_t mode_count_id, mode_band_id;
+	uint16_t mode_count_id;
+	uint16_t mode_band_id;
 	struct rte_eth_link link_info;
 
 	slaves = internals->active_slaves;
@@ -729,13 +730,11 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
 
 	switch (internals->mode4.agg_selection) {
 	case AGG_COUNT:
-		mode_count_id = max_index(
-				(uint64_t *)agg_count, slaves_count);
+		mode_count_id = max_index(agg_count, slaves_count);
 		new_agg_id = mode_count_id;
 		break;
 	case AGG_BANDWIDTH:
-		mode_band_id = max_index(
-				(uint64_t *)agg_bandwidth, slaves_count);
+		mode_band_id = max_index(agg_bandwidth, slaves_count);
 		new_agg_id = mode_band_id;
 		break;
 	case AGG_STABLE:
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.853764628 +0000
+++ 0038-net-bonding-fix-slave-id-types.patch	2019-12-19 14:32:25.873293225 +0000
@@ -1,12 +1,13 @@
-From c28aff1e41eedd9d44c480264efbd7f4dd5cf31e Mon Sep 17 00:00:00 2001
+From 68e34fdd450d1efd9d3df7065798acc9d98f9284 Mon Sep 17 00:00:00 2001
 From: Hui Zhao <zhaohui8@huawei.com>
 Date: Thu, 21 Mar 2019 21:28:13 +0100
 Subject: [PATCH] net/bonding: fix slave id types
 
+[ upstream commit c28aff1e41eedd9d44c480264efbd7f4dd5cf31e ]
+
 mode_bond_id and mode_band_id are slave ids, stored on 16bits.
 
 Fixes: f8244c6399d9 ("ethdev: increase port id range")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hui Zhao <zhaohui8@huawei.com>
 Signed-off-by: David Marchand <david.marchand@redhat.com>
@@ -16,10 +17,10 @@
  1 file changed, 5 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
-index e50d946eba..c6a645a653 100644
+index 14b82bb304..abf833f6e1 100644
 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
 +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
-@@ -639,7 +639,7 @@ tx_machine(struct bond_dev_private *internals, uint16_t slave_id)
+@@ -659,7 +659,7 @@ tx_machine(struct bond_dev_private *internals, uint16_t slave_id)
  	SM_FLAG_CLR(port, NTT);
  }
  
@@ -28,7 +29,7 @@
  max_index(uint64_t *a, int n)
  {
  	if (n <= 0)
-@@ -673,7 +673,8 @@ selection_logic(struct bond_dev_private *internals, uint16_t slave_id)
+@@ -693,7 +693,8 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
  	uint64_t agg_bandwidth[8] = {0};
  	uint64_t agg_count[8] = {0};
  	uint16_t default_slave = 0;
@@ -36,9 +37,9 @@
 +	uint16_t mode_count_id;
 +	uint16_t mode_band_id;
  	struct rte_eth_link link_info;
- 	int ret;
  
-@@ -717,13 +718,11 @@ selection_logic(struct bond_dev_private *internals, uint16_t slave_id)
+ 	slaves = internals->active_slaves;
+@@ -729,13 +730,11 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
  
  	switch (internals->mode4.agg_selection) {
  	case AGG_COUNT:

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

* [dpdk-stable] patch 'net/bonding: fix OOB access in other aggregator modes' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (36 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix slave id types' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove duplicate barrier' " luca.boccassi
                   ` (99 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Hui Zhao; +Cc: David Marchand, Maxime Coquelin, Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 24e5386c451ff1061b6cc4198bf7d4e18f358591 Mon Sep 17 00:00:00 2001
From: Hui Zhao <zhaohui8@huawei.com>
Date: Thu, 21 Mar 2019 21:28:14 +0100
Subject: [PATCH] net/bonding: fix OOB access in other aggregator modes

[ upstream commit dfbc596c2e1418780f77954e1859ffec9aebfe4f ]

slave aggregator_port_id is in [0, RTE_MAX_ETHPORTS-1] range.
If RTE_MAX_ETHPORTS is > 8, we can hit out of bound accesses on
agg_bandwidth[] and agg_count[] arrays.

Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")

Signed-off-by: Hui Zhao <zhaohui8@huawei.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_8023ad.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index abf833f6e1..faaaddec69 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -690,8 +690,8 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
 	struct port *agg, *port;
 	uint16_t slaves_count, new_agg_id, i, j = 0;
 	uint16_t *slaves;
-	uint64_t agg_bandwidth[8] = {0};
-	uint64_t agg_count[8] = {0};
+	uint64_t agg_bandwidth[RTE_MAX_ETHPORTS] = {0};
+	uint64_t agg_count[RTE_MAX_ETHPORTS] = {0};
 	uint16_t default_slave = 0;
 	uint16_t mode_count_id;
 	uint16_t mode_band_id;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.894695538 +0000
+++ 0039-net-bonding-fix-OOB-access-in-other-aggregator-modes.patch	2019-12-19 14:32:25.881293384 +0000
@@ -1,14 +1,15 @@
-From dfbc596c2e1418780f77954e1859ffec9aebfe4f Mon Sep 17 00:00:00 2001
+From 24e5386c451ff1061b6cc4198bf7d4e18f358591 Mon Sep 17 00:00:00 2001
 From: Hui Zhao <zhaohui8@huawei.com>
 Date: Thu, 21 Mar 2019 21:28:14 +0100
 Subject: [PATCH] net/bonding: fix OOB access in other aggregator modes
 
+[ upstream commit dfbc596c2e1418780f77954e1859ffec9aebfe4f ]
+
 slave aggregator_port_id is in [0, RTE_MAX_ETHPORTS-1] range.
 If RTE_MAX_ETHPORTS is > 8, we can hit out of bound accesses on
 agg_bandwidth[] and agg_count[] arrays.
 
 Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hui Zhao <zhaohui8@huawei.com>
 Signed-off-by: David Marchand <david.marchand@redhat.com>
@@ -19,10 +20,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
-index c6a645a653..7d8da2b318 100644
+index abf833f6e1..faaaddec69 100644
 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
 +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
-@@ -670,8 +670,8 @@ selection_logic(struct bond_dev_private *internals, uint16_t slave_id)
+@@ -690,8 +690,8 @@ selection_logic(struct bond_dev_private *internals, uint8_t slave_id)
  	struct port *agg, *port;
  	uint16_t slaves_count, new_agg_id, i, j = 0;
  	uint16_t *slaves;

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

* [dpdk-stable] patch 'net/bnxt: remove duplicate barrier' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (37 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix OOB access in other aggregator modes' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: enforce IO barrier for doorbell command' " luca.boccassi
                   ` (98 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Gavin Hu
  Cc: Steve Capper, Ruifeng Wang, Phil Yang, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From acd94bdd9d93194758dc47a998fab28d2117860d Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu@arm.com>
Date: Mon, 16 Sep 2019 19:27:16 +0800
Subject: [PATCH] net/bnxt: remove duplicate barrier

[ upstream commit 4a1721107c30603e078a611e99a4183de178fd7d ]

As there is an inclusive rte_io_wmb within the following rte_write32()
API who rings the doorbell, this makes the above rte_wmb unnecessary and
remove it.

Fixes: 1cd45aeb3270 ("net/bnxt: support Stratus VF device")

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 815bad97b7..a28439f51c 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -123,9 +123,6 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
 		data = (uint32_t *)&short_input;
 		msg_len = sizeof(short_input);
 
-		/* Sync memory write before updating doorbell */
-		rte_wmb();
-
 		max_req_len = BNXT_HWRM_SHORT_REQ_LEN;
 	}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.931104213 +0000
+++ 0040-net-bnxt-remove-duplicate-barrier.patch	2019-12-19 14:32:25.901293781 +0000
@@ -1,14 +1,15 @@
-From 4a1721107c30603e078a611e99a4183de178fd7d Mon Sep 17 00:00:00 2001
+From acd94bdd9d93194758dc47a998fab28d2117860d Mon Sep 17 00:00:00 2001
 From: Gavin Hu <gavin.hu@arm.com>
 Date: Mon, 16 Sep 2019 19:27:16 +0800
 Subject: [PATCH] net/bnxt: remove duplicate barrier
 
+[ upstream commit 4a1721107c30603e078a611e99a4183de178fd7d ]
+
 As there is an inclusive rte_io_wmb within the following rte_write32()
 API who rings the doorbell, this makes the above rte_wmb unnecessary and
 remove it.
 
 Fixes: 1cd45aeb3270 ("net/bnxt: support Stratus VF device")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu@arm.com>
 Reviewed-by: Steve Capper <steve.capper@arm.com>
@@ -20,10 +21,10 @@
  1 file changed, 3 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 174dc75d54..e73d8ed76a 100644
+index 815bad97b7..a28439f51c 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -127,9 +127,6 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
+@@ -123,9 +123,6 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
  		data = (uint32_t *)&short_input;
  		msg_len = sizeof(short_input);
  

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

* [dpdk-stable] patch 'net/bnxt: enforce IO barrier for doorbell command' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (38 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove duplicate barrier' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix async link handling and update' " luca.boccassi
                   ` (97 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Gavin Hu; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From b8201168460b06b705401564b2c94ba84bcf2cbc Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu@arm.com>
Date: Mon, 16 Sep 2019 19:27:18 +0800
Subject: [PATCH] net/bnxt: enforce IO barrier for doorbell command

[ upstream commit dda8e0e48723fc90e6222fcc1b04b94f240ae9b2 ]

The doorbell ringing operation requires a rte_io_mb immediately to make
the command complete and visible to the device before reading the
response, otherwise it may read stale or invalid responses.

Fixes: ca241d9a0952 ("net/bnxt: use I/O device memory read/write API")

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index a28439f51c..c4f743db05 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -142,6 +142,12 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
 	/* Ring channel doorbell */
 	bar = (uint8_t *)bp->bar0 + 0x100;
 	rte_write32(1, bar);
+	/*
+	 * Make sure the channel doorbell ring command complete before
+	 * reading the response to avoid getting stale or invalid
+	 * responses.
+	 */
+	rte_io_mb();
 
 	/* Poll for the valid bit */
 	for (i = 0; i < HWRM_CMD_TIMEOUT; i++) {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:27.971134711 +0000
+++ 0041-net-bnxt-enforce-IO-barrier-for-doorbell-command.patch	2019-12-19 14:32:25.913294018 +0000
@@ -1,14 +1,15 @@
-From dda8e0e48723fc90e6222fcc1b04b94f240ae9b2 Mon Sep 17 00:00:00 2001
+From b8201168460b06b705401564b2c94ba84bcf2cbc Mon Sep 17 00:00:00 2001
 From: Gavin Hu <gavin.hu@arm.com>
 Date: Mon, 16 Sep 2019 19:27:18 +0800
 Subject: [PATCH] net/bnxt: enforce IO barrier for doorbell command
 
+[ upstream commit dda8e0e48723fc90e6222fcc1b04b94f240ae9b2 ]
+
 The doorbell ringing operation requires a rte_io_mb immediately to make
 the command complete and visible to the device before reading the
 response, otherwise it may read stale or invalid responses.
 
 Fixes: ca241d9a0952 ("net/bnxt: use I/O device memory read/write API")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu@arm.com>
 Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -17,12 +18,12 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index d7c33d21e2..cdb6fa4f7e 100644
+index a28439f51c..c4f743db05 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -146,6 +146,12 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
+@@ -142,6 +142,12 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
  	/* Ring channel doorbell */
- 	bar = (uint8_t *)bp->bar0 + mb_trigger_offset;
+ 	bar = (uint8_t *)bp->bar0 + 0x100;
  	rte_write32(1, bar);
 +	/*
 +	 * Make sure the channel doorbell ring command complete before
@@ -32,7 +33,7 @@
 +	rte_io_mb();
  
  	/* Poll for the valid bit */
- 	for (i = 0; i < timeout; i++) {
+ 	for (i = 0; i < HWRM_CMD_TIMEOUT; i++) {
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix async link handling and update' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (39 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: enforce IO barrier for doorbell command' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix Rx queue count' " luca.boccassi
                   ` (96 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: Kalesh AP, Lance Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ec4ba4b7e2084e3745932acd619388c62b699883 Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Wed, 2 Oct 2019 10:17:34 -0700
Subject: [PATCH] net/bnxt: fix async link handling and update

[ upstream commit c023cd5b2192ae2d63d041f17d3db384f9eb62cd ]

When updating the link because of an async link notification
there is no need to set wait_for_completion. At this point
the link related information should be available without need to poll.
Use rte_eth_linkstatus_set instead of memcpy to ensure atomicity
while updating the link status.
We force the physical link down as a part of device stop.
But we are not waiting there enough and handling the async notification
before exiting. It just sits in the default CQ till we do a device
start.
Fix it by calling the CQ handler in device stop.

Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
---
 drivers/net/bnxt/bnxt_cpr.c    |  2 +-
 drivers/net/bnxt/bnxt_ethdev.c | 18 +++++++++++++++++-
 drivers/net/bnxt/bnxt_irq.c    |  2 +-
 drivers/net/bnxt/bnxt_irq.h    |  1 +
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
index cde8adc3b0..ba702df753 100644
--- a/drivers/net/bnxt/bnxt_cpr.c
+++ b/drivers/net/bnxt/bnxt_cpr.c
@@ -55,7 +55,7 @@ void bnxt_handle_async_event(struct bnxt *bp,
 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:
 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE:
 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE:
-		bnxt_link_update_op(bp->eth_dev, 1);
+		bnxt_link_update_op(bp->eth_dev, 0);
 		break;
 	default:
 		RTE_LOG(DEBUG, PMD, "handle_async_event id = 0x%x\n", event_id);
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index bc7b82f6c1..0e990014d0 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -592,6 +592,8 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
 	}
 	bp->dev_stopped = 0;
 
+	bnxt_enable_int(bp);
+
 	rc = bnxt_init_chip(bp);
 	if (rc)
 		goto error;
@@ -644,15 +646,29 @@ static int bnxt_dev_set_link_down_op(struct rte_eth_dev *eth_dev)
 static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
 {
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
+	struct rte_intr_handle *intr_handle
+		= &bp->pdev->intr_handle;
 
 	if (bp->eth_dev->data->dev_started) {
 		/* TBD: STOP HW queues DMA */
 		eth_dev->data->dev_link.link_status = 0;
 	}
-	bnxt_set_hwrm_link_config(bp, false);
+	bnxt_dev_set_link_down_op(eth_dev);
+	/* Wait for link to be reset and the async notification to process. */
+	rte_delay_ms(BNXT_LINK_WAIT_INTERVAL * 2);
+
+	/* Clean queue intr-vector mapping */
+	rte_intr_efd_disable(intr_handle);
+	if (intr_handle->intr_vec != NULL) {
+		rte_free(intr_handle->intr_vec);
+		intr_handle->intr_vec = NULL;
+	}
+
 	bnxt_hwrm_port_clr_stats(bp);
 	bnxt_free_tx_mbufs(bp);
 	bnxt_free_rx_mbufs(bp);
+	/* Process any remaining notifications in default completion queue */
+	bnxt_int_handler(eth_dev);
 	bnxt_shutdown_nic(bp);
 	bp->dev_stopped = 1;
 }
diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c
index 49436cfd9c..c332431dba 100644
--- a/drivers/net/bnxt/bnxt_irq.c
+++ b/drivers/net/bnxt/bnxt_irq.c
@@ -45,7 +45,7 @@
  * Interrupts
  */
 
-static void bnxt_int_handler(void *param)
+void bnxt_int_handler(void *param)
 {
 	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
diff --git a/drivers/net/bnxt/bnxt_irq.h b/drivers/net/bnxt/bnxt_irq.h
index 4d2f7af9f5..3162217791 100644
--- a/drivers/net/bnxt/bnxt_irq.h
+++ b/drivers/net/bnxt/bnxt_irq.h
@@ -50,5 +50,6 @@ void bnxt_disable_int(struct bnxt *bp);
 void bnxt_enable_int(struct bnxt *bp);
 int bnxt_setup_int(struct bnxt *bp);
 int bnxt_request_int(struct bnxt *bp);
+void bnxt_int_handler(void *param);
 
 #endif
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.011485851 +0000
+++ 0042-net-bnxt-fix-async-link-handling-and-update.patch	2019-12-19 14:32:25.925294256 +0000
@@ -1,8 +1,10 @@
-From c023cd5b2192ae2d63d041f17d3db384f9eb62cd Mon Sep 17 00:00:00 2001
+From ec4ba4b7e2084e3745932acd619388c62b699883 Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Wed, 2 Oct 2019 10:17:34 -0700
 Subject: [PATCH] net/bnxt: fix async link handling and update
 
+[ upstream commit c023cd5b2192ae2d63d041f17d3db384f9eb62cd ]
+
 When updating the link because of an async link notification
 there is no need to set wait_for_completion. At this point
 the link related information should be available without need to poll.
@@ -15,52 +17,51 @@
 Fix it by calling the CQ handler in device stop.
 
 Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
 ---
  drivers/net/bnxt/bnxt_cpr.c    |  2 +-
- drivers/net/bnxt/bnxt_ethdev.c | 11 +++++++----
+ drivers/net/bnxt/bnxt_ethdev.c | 18 +++++++++++++++++-
  drivers/net/bnxt/bnxt_irq.c    |  2 +-
  drivers/net/bnxt/bnxt_irq.h    |  1 +
- 4 files changed, 10 insertions(+), 6 deletions(-)
+ 4 files changed, 20 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
-index 4817672ef0..f58372516a 100644
+index cde8adc3b0..ba702df753 100644
 --- a/drivers/net/bnxt/bnxt_cpr.c
 +++ b/drivers/net/bnxt/bnxt_cpr.c
-@@ -66,7 +66,7 @@ void bnxt_handle_async_event(struct bnxt *bp,
+@@ -55,7 +55,7 @@ void bnxt_handle_async_event(struct bnxt *bp,
+ 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:
  	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE:
  	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE:
- 		/* FALLTHROUGH */
 -		bnxt_link_update_op(bp->eth_dev, 1);
 +		bnxt_link_update_op(bp->eth_dev, 0);
  		break;
- 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD:
- 		PMD_DRV_LOG(INFO, "Async event: PF driver unloaded\n");
+ 	default:
+ 		RTE_LOG(DEBUG, PMD, "handle_async_event id = 0x%x\n", event_id);
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index d1c5acb3e2..4d15ba5ceb 100644
+index bc7b82f6c1..0e990014d0 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -834,6 +834,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
- 			bp->rx_cp_nr_rings, RTE_ETHDEV_QUEUE_STAT_CNTRS);
+@@ -592,6 +592,8 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
  	}
+ 	bp->dev_stopped = 0;
  
 +	bnxt_enable_int(bp);
- 	rc = bnxt_hwrm_if_change(bp, 1);
- 	if (!rc) {
- 		if (bp->flags & BNXT_FLAG_IF_CHANGE_HOT_FW_RESET_DONE) {
-@@ -862,7 +863,6 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
- 	eth_dev->rx_pkt_burst = bnxt_receive_function(eth_dev);
- 	eth_dev->tx_pkt_burst = bnxt_transmit_function(eth_dev);
++
+ 	rc = bnxt_init_chip(bp);
+ 	if (rc)
+ 		goto error;
+@@ -644,15 +646,29 @@ static int bnxt_dev_set_link_down_op(struct rte_eth_dev *eth_dev)
+ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
+ {
+ 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
++	struct rte_intr_handle *intr_handle
++		= &bp->pdev->intr_handle;
  
--	bnxt_enable_int(bp);
- 	bp->flags |= BNXT_FLAG_INIT_DONE;
- 	eth_dev->data->dev_started = 1;
- 	bp->dev_stopped = 0;
-@@ -926,7 +926,9 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
+ 	if (bp->eth_dev->data->dev_started) {
  		/* TBD: STOP HW queues DMA */
  		eth_dev->data->dev_link.link_status = 0;
  	}
@@ -68,33 +69,27 @@
 +	bnxt_dev_set_link_down_op(eth_dev);
 +	/* Wait for link to be reset and the async notification to process. */
 +	rte_delay_ms(BNXT_LINK_WAIT_INTERVAL * 2);
- 
- 	/* Clean queue intr-vector mapping */
- 	rte_intr_efd_disable(intr_handle);
-@@ -938,6 +940,8 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
++
++	/* Clean queue intr-vector mapping */
++	rte_intr_efd_disable(intr_handle);
++	if (intr_handle->intr_vec != NULL) {
++		rte_free(intr_handle->intr_vec);
++		intr_handle->intr_vec = NULL;
++	}
++
  	bnxt_hwrm_port_clr_stats(bp);
  	bnxt_free_tx_mbufs(bp);
  	bnxt_free_rx_mbufs(bp);
 +	/* Process any remaining notifications in default completion queue */
 +	bnxt_int_handler(eth_dev);
  	bnxt_shutdown_nic(bp);
- 	bnxt_hwrm_if_change(bp, 0);
  	bp->dev_stopped = 1;
-@@ -1084,8 +1088,7 @@ out:
- 	/* Timed out or success */
- 	if (new.link_status != eth_dev->data->dev_link.link_status ||
- 	new.link_speed != eth_dev->data->dev_link.link_speed) {
--		memcpy(&eth_dev->data->dev_link, &new,
--			sizeof(struct rte_eth_link));
-+		rte_eth_linkstatus_set(eth_dev, &new);
- 
- 		_rte_eth_dev_callback_process(eth_dev,
- 					      RTE_ETH_EVENT_INTR_LSC,
+ }
 diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c
-index a22700a0da..729d68d704 100644
+index 49436cfd9c..c332431dba 100644
 --- a/drivers/net/bnxt/bnxt_irq.c
 +++ b/drivers/net/bnxt/bnxt_irq.c
-@@ -18,7 +18,7 @@
+@@ -45,7 +45,7 @@
   * Interrupts
   */
  
@@ -102,12 +97,12 @@
 +void bnxt_int_handler(void *param)
  {
  	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
- 	struct bnxt *bp = eth_dev->data->dev_private;
+ 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
 diff --git a/drivers/net/bnxt/bnxt_irq.h b/drivers/net/bnxt/bnxt_irq.h
-index 460a97a09c..1b56e08068 100644
+index 4d2f7af9f5..3162217791 100644
 --- a/drivers/net/bnxt/bnxt_irq.h
 +++ b/drivers/net/bnxt/bnxt_irq.h
-@@ -22,5 +22,6 @@ void bnxt_disable_int(struct bnxt *bp);
+@@ -50,5 +50,6 @@ void bnxt_disable_int(struct bnxt *bp);
  void bnxt_enable_int(struct bnxt *bp);
  int bnxt_setup_int(struct bnxt *bp);
  int bnxt_request_int(struct bnxt *bp);

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

* [dpdk-stable] patch 'net/bnxt: fix Rx queue count' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (40 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix async link handling and update' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix crash in secondary process' " luca.boccassi
                   ` (95 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Rahul Gupta; +Cc: Ajit Khaparde, Somnath Kotur, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From a48d576d0e302d86fb6de853859c0bb401b3ef3b Mon Sep 17 00:00:00 2001
From: Rahul Gupta <rahul.gupta@broadcom.com>
Date: Wed, 2 Oct 2019 10:17:42 -0700
Subject: [PATCH] net/bnxt: fix Rx queue count

[ upstream commit 34c0ba839baeaf9a8621e4e3524eec96f82dfce0 ]

Fix Computing of number of used descriptors in an Rx queue.

Fixes: 1b7ceba3e375 ("net/bnxt: support Rx queue count")

Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 31 +++++++------------------------
 1 file changed, 7 insertions(+), 24 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 0e990014d0..c699d29b8d 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1644,39 +1644,22 @@ bnxt_rx_queue_count_op(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 	struct bnxt_cp_ring_info *cpr;
 	struct bnxt_rx_queue *rxq;
 	struct rx_pkt_cmpl *rxcmp;
-	uint16_t cmp_type;
-	uint8_t cmp = 1;
-	bool valid;
 
 	rxq = dev->data->rx_queues[rx_queue_id];
 	cpr = rxq->cp_ring;
-	valid = cpr->valid;
+	raw_cons = cpr->cp_raw_cons;
 
-	while (raw_cons < rxq->nb_rx_desc) {
+	while (1) {
 		cons = RING_CMP(cpr->cp_ring_struct, raw_cons);
+		rte_prefetch0(&cpr->cp_desc_ring[cons]);
 		rxcmp = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[cons];
 
-		if (!CMPL_VALID(rxcmp, valid))
-			goto nothing_to_do;
-		valid = FLIP_VALID(cons, cpr->cp_ring_struct->ring_mask, valid);
-		cmp_type = CMP_TYPE(rxcmp);
-		if (cmp_type == RX_TPA_END_CMPL_TYPE_RX_TPA_END) {
-			cmp = (rte_le_to_cpu_32(
-					((struct rx_tpa_end_cmpl *)
-					 (rxcmp))->agg_bufs_v1) &
-			       RX_TPA_END_CMPL_AGG_BUFS_MASK) >>
-				RX_TPA_END_CMPL_AGG_BUFS_SFT;
-			desc++;
-		} else if (cmp_type == 0x11) {
-			desc++;
-			cmp = (rxcmp->agg_bufs_v1 &
-				   RX_PKT_CMPL_AGG_BUFS_MASK) >>
-				RX_PKT_CMPL_AGG_BUFS_SFT;
+		if (!CMP_VALID(rxcmp, raw_cons, cpr->cp_ring_struct)) {
+			break;
 		} else {
-			cmp = 1;
+			raw_cons++;
+			desc++;
 		}
-nothing_to_do:
-		raw_cons += cmp ? cmp : 2;
 	}
 
 	return desc;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.053924927 +0000
+++ 0043-net-bnxt-fix-Rx-queue-count.patch	2019-12-19 14:32:25.941294574 +0000
@@ -1,12 +1,13 @@
-From 34c0ba839baeaf9a8621e4e3524eec96f82dfce0 Mon Sep 17 00:00:00 2001
+From a48d576d0e302d86fb6de853859c0bb401b3ef3b Mon Sep 17 00:00:00 2001
 From: Rahul Gupta <rahul.gupta@broadcom.com>
 Date: Wed, 2 Oct 2019 10:17:42 -0700
 Subject: [PATCH] net/bnxt: fix Rx queue count
 
+[ upstream commit 34c0ba839baeaf9a8621e4e3524eec96f82dfce0 ]
+
 Fix Computing of number of used descriptors in an Rx queue.
 
 Fixes: 1b7ceba3e375 ("net/bnxt: support Rx queue count")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -16,20 +17,16 @@
  1 file changed, 7 insertions(+), 24 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 74ded7717a..0159be3462 100644
+index 0e990014d0..c699d29b8d 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -2096,9 +2096,6 @@ bnxt_rx_queue_count_op(struct rte_eth_dev *dev, uint16_t rx_queue_id)
+@@ -1644,39 +1644,22 @@ bnxt_rx_queue_count_op(struct rte_eth_dev *dev, uint16_t rx_queue_id)
  	struct bnxt_cp_ring_info *cpr;
  	struct bnxt_rx_queue *rxq;
  	struct rx_pkt_cmpl *rxcmp;
 -	uint16_t cmp_type;
 -	uint8_t cmp = 1;
 -	bool valid;
- 	int rc;
- 
- 	rc = is_bnxt_in_error(bp);
-@@ -2107,33 +2104,19 @@ bnxt_rx_queue_count_op(struct rte_eth_dev *dev, uint16_t rx_queue_id)
  
  	rxq = dev->data->rx_queues[rx_queue_id];
  	cpr = rxq->cp_ring;

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

* [dpdk-stable] patch 'net/bnxt: fix crash in secondary process' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (41 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix Rx queue count' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix setting default MAC address' " luca.boccassi
                   ` (94 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 6b7c2b045a9553727ee0a0066d72592500591311 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Wed, 2 Oct 2019 10:17:43 -0700
Subject: [PATCH] net/bnxt: fix crash in secondary process

[ upstream commit f35eaaca5f5f09b48f5d96adbaccc4484aa6e058 ]

The secondary process should not modify device state when
init is called. The pci device information pointed to by
dev_private pointer is not correct in secondary process.

Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index c699d29b8d..ef49f98833 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -433,6 +433,7 @@ static int bnxt_init_nic(struct bnxt *bp)
 static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
 				  struct rte_eth_dev_info *dev_info)
 {
+	struct rte_pci_device *pdev = RTE_DEV_TO_PCI(eth_dev->device);
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
 	uint16_t max_vnics, i, j, vpool, vrxq;
 	unsigned int max_rx_rings;
@@ -445,7 +446,7 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
 
 	/* PF/VF specifics */
 	if (BNXT_PF(bp))
-		dev_info->max_vfs = bp->pdev->max_vfs;
+		dev_info->max_vfs = pdev->max_vfs;
 	max_rx_rings = RTE_MIN(bp->max_vnics, RTE_MIN(bp->max_l2_ctx,
 						RTE_MIN(bp->max_rsscos_ctx,
 						bp->max_stat_ctx)));
@@ -2845,6 +2846,13 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
 	if (version_printed++ == 0)
 		RTE_LOG(INFO, PMD, "%s\n", bnxt_version);
 
+	eth_dev->dev_ops = &bnxt_dev_ops;
+	eth_dev->rx_pkt_burst = &bnxt_recv_pkts;
+	eth_dev->tx_pkt_burst = &bnxt_xmit_pkts;
+
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return 0;
+
 	rte_eth_copy_pci_info(eth_dev, pci_dev);
 
 	bp = eth_dev->data->dev_private;
@@ -2852,9 +2860,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
 	rte_atomic64_init(&bp->rx_mbuf_alloc_fail);
 	bp->dev_stopped = 1;
 
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		goto skip_init;
-
 	if (bnxt_vf_pciid(pci_dev->id.device_id))
 		bp->flags |= BNXT_FLAG_VF;
 
@@ -2864,12 +2869,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
 			"Board initialization failed rc: %x\n", rc);
 		goto error;
 	}
-skip_init:
-	eth_dev->dev_ops = &bnxt_dev_ops;
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		return 0;
-	eth_dev->rx_pkt_burst = &bnxt_recv_pkts;
-	eth_dev->tx_pkt_burst = &bnxt_xmit_pkts;
 
 	if (BNXT_PF(bp) && pci_dev->id.device_id != BROADCOM_DEV_ID_NS2) {
 		snprintf(mz_name, RTE_MEMZONE_NAMESIZE,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.093639795 +0000
+++ 0044-net-bnxt-fix-crash-in-secondary-process.patch	2019-12-19 14:32:25.949294732 +0000
@@ -1,69 +1,80 @@
-From f35eaaca5f5f09b48f5d96adbaccc4484aa6e058 Mon Sep 17 00:00:00 2001
+From 6b7c2b045a9553727ee0a0066d72592500591311 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Wed, 2 Oct 2019 10:17:43 -0700
 Subject: [PATCH] net/bnxt: fix crash in secondary process
 
+[ upstream commit f35eaaca5f5f09b48f5d96adbaccc4484aa6e058 ]
+
 The secondary process should not modify device state when
 init is called. The pci device information pointed to by
 dev_private pointer is not correct in secondary process.
 
 Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
- drivers/net/bnxt/bnxt_ethdev.c | 16 +++++++++-------
- 1 file changed, 9 insertions(+), 7 deletions(-)
+ drivers/net/bnxt/bnxt_ethdev.c | 19 +++++++++----------
+ 1 file changed, 9 insertions(+), 10 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 0159be3462..5985963bf7 100644
+index c699d29b8d..ef49f98833 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -521,6 +521,7 @@ static int bnxt_init_nic(struct bnxt *bp)
- static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
- 				struct rte_eth_dev_info *dev_info)
+@@ -433,6 +433,7 @@ static int bnxt_init_nic(struct bnxt *bp)
+ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
+ 				  struct rte_eth_dev_info *dev_info)
  {
 +	struct rte_pci_device *pdev = RTE_DEV_TO_PCI(eth_dev->device);
- 	struct bnxt *bp = eth_dev->data->dev_private;
+ 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
  	uint16_t max_vnics, i, j, vpool, vrxq;
  	unsigned int max_rx_rings;
-@@ -536,7 +537,8 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
+@@ -445,7 +446,7 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
  
  	/* PF/VF specifics */
  	if (BNXT_PF(bp))
 -		dev_info->max_vfs = bp->pdev->max_vfs;
 +		dev_info->max_vfs = pdev->max_vfs;
-+
- 	max_rx_rings = RTE_MIN(bp->max_rx_rings, bp->max_stat_ctx);
- 	/* For the sake of symmetry, max_rx_queues = max_tx_queues */
- 	dev_info->max_rx_queues = max_rx_rings;
-@@ -4488,12 +4490,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
+ 	max_rx_rings = RTE_MIN(bp->max_vnics, RTE_MIN(bp->max_l2_ctx,
+ 						RTE_MIN(bp->max_rsscos_ctx,
+ 						bp->max_stat_ctx)));
+@@ -2845,6 +2846,13 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
  	if (version_printed++ == 0)
- 		PMD_DRV_LOG(INFO, "%s\n", bnxt_version);
- 
--	rte_eth_copy_pci_info(eth_dev, pci_dev);
--
--	bp = eth_dev->data->dev_private;
--
--	bp->dev_stopped = 1;
--
- 	eth_dev->dev_ops = &bnxt_dev_ops;
- 	eth_dev->rx_pkt_burst = &bnxt_recv_pkts;
- 	eth_dev->tx_pkt_burst = &bnxt_xmit_pkts;
-@@ -4505,6 +4501,12 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
- 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
- 		return 0;
+ 		RTE_LOG(INFO, PMD, "%s\n", bnxt_version);
  
-+	rte_eth_copy_pci_info(eth_dev, pci_dev);
++	eth_dev->dev_ops = &bnxt_dev_ops;
++	eth_dev->rx_pkt_burst = &bnxt_recv_pkts;
++	eth_dev->tx_pkt_burst = &bnxt_xmit_pkts;
 +
-+	bp = eth_dev->data->dev_private;
-+
-+	bp->dev_stopped = 1;
++	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
++		return 0;
 +
+ 	rte_eth_copy_pci_info(eth_dev, pci_dev);
+ 
+ 	bp = eth_dev->data->dev_private;
+@@ -2852,9 +2860,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
+ 	rte_atomic64_init(&bp->rx_mbuf_alloc_fail);
+ 	bp->dev_stopped = 1;
+ 
+-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+-		goto skip_init;
+-
  	if (bnxt_vf_pciid(pci_dev->id.device_id))
  		bp->flags |= BNXT_FLAG_VF;
  
+@@ -2864,12 +2869,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
+ 			"Board initialization failed rc: %x\n", rc);
+ 		goto error;
+ 	}
+-skip_init:
+-	eth_dev->dev_ops = &bnxt_dev_ops;
+-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+-		return 0;
+-	eth_dev->rx_pkt_burst = &bnxt_recv_pkts;
+-	eth_dev->tx_pkt_burst = &bnxt_xmit_pkts;
+ 
+ 	if (BNXT_PF(bp) && pci_dev->id.device_id != BROADCOM_DEV_ID_NS2) {
+ 		snprintf(mz_name, RTE_MEMZONE_NAMESIZE,
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix setting default MAC address' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (42 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix crash in secondary process' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix multicast filter programming' " luca.boccassi
                   ` (93 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Ajit Khaparde, Somnath Kotur, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 65c9e9ffb20fdc3af9a4c41c43ffc82ebe653430 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 2 Oct 2019 16:25:50 -0700
Subject: [PATCH] net/bnxt: fix setting default MAC address

[ upstream commit 988562f0b7a6085fa9fa1b8c68efacd722c60c31 ]

Driver was incorrectly programming the MAC with the already
configured one instead of the newly requested MAC by user.

Also, fix to restore the old mac address back to the default
vnic filter if the mac update operation fails.

Fixes: 68f589f2c728 ("net/bnxt: fix setting primary MAC address")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index ef49f98833..a41a428982 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1446,15 +1446,18 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
 		rc = bnxt_hwrm_clear_l2_filter(bp, filter);
 		if (rc)
 			break;
-		memcpy(filter->l2_addr, bp->mac_addr, ETHER_ADDR_LEN);
+		memcpy(filter->l2_addr, addr, ETHER_ADDR_LEN);
 		memset(filter->l2_addr_mask, 0xff, ETHER_ADDR_LEN);
 		filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX;
 		filter->enables |=
 			HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR |
 			HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
 		rc = bnxt_hwrm_set_l2_filter(bp, vnic->fw_vnic_id, filter);
-		if (rc)
+		if (rc) {
+			memcpy(filter->l2_addr, bp->mac_addr,
+			       ETHER_ADDR_LEN);
 			break;
+		}
 		filter->mac_index = 0;
 		RTE_LOG(DEBUG, PMD, "Set MAC addr\n");
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.135271934 +0000
+++ 0045-net-bnxt-fix-setting-default-MAC-address.patch	2019-12-19 14:32:25.981295367 +0000
@@ -1,8 +1,10 @@
-From 988562f0b7a6085fa9fa1b8c68efacd722c60c31 Mon Sep 17 00:00:00 2001
+From 65c9e9ffb20fdc3af9a4c41c43ffc82ebe653430 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 2 Oct 2019 16:25:50 -0700
 Subject: [PATCH] net/bnxt: fix setting default MAC address
 
+[ upstream commit 988562f0b7a6085fa9fa1b8c68efacd722c60c31 ]
+
 Driver was incorrectly programming the MAC with the already
 configured one instead of the newly requested MAC by user.
 
@@ -10,7 +12,6 @@
 vnic filter if the mac update operation fails.
 
 Fixes: 68f589f2c728 ("net/bnxt: fix setting primary MAC address")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -20,31 +21,30 @@
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 7cd3213558..2c9eaaa2ef 100644
+index ef49f98833..a41a428982 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -1904,7 +1904,7 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev,
- 		if (filter->mac_index != 0)
- 			continue;
- 
--		memcpy(filter->l2_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN);
-+		memcpy(filter->l2_addr, addr, RTE_ETHER_ADDR_LEN);
- 		memset(filter->l2_addr_mask, 0xff, RTE_ETHER_ADDR_LEN);
- 		filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX |
- 			HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST;
-@@ -1913,8 +1913,11 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev,
+@@ -1446,15 +1446,18 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
+ 		rc = bnxt_hwrm_clear_l2_filter(bp, filter);
+ 		if (rc)
+ 			break;
+-		memcpy(filter->l2_addr, bp->mac_addr, ETHER_ADDR_LEN);
++		memcpy(filter->l2_addr, addr, ETHER_ADDR_LEN);
+ 		memset(filter->l2_addr_mask, 0xff, ETHER_ADDR_LEN);
+ 		filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX;
+ 		filter->enables |=
+ 			HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR |
  			HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
- 
  		rc = bnxt_hwrm_set_l2_filter(bp, vnic->fw_vnic_id, filter);
 -		if (rc)
 +		if (rc) {
 +			memcpy(filter->l2_addr, bp->mac_addr,
-+			       RTE_ETHER_ADDR_LEN);
- 			return rc;
++			       ETHER_ADDR_LEN);
+ 			break;
 +		}
- 
- 		memcpy(bp->mac_addr, addr, RTE_ETHER_ADDR_LEN);
- 		PMD_DRV_LOG(DEBUG, "Set MAC addr\n");
+ 		filter->mac_index = 0;
+ 		RTE_LOG(DEBUG, PMD, "Set MAC addr\n");
+ 	}
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix multicast filter programming' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (43 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix setting default MAC address' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/qede: limit Rx ring index read for debug' " luca.boccassi
                   ` (92 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 322082805c54103e66376de8059e71751ce7e5be Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 2 Oct 2019 16:26:00 -0700
Subject: [PATCH] net/bnxt: fix multicast filter programming

[ upstream commit 9f9e759bb682595fa796e516afff157a0ba93301 ]

Fixed multicast filter programming and allmulti programming.
Fixed to skip programming multicast macs if the user requests
allmulti mode.

Also removed a comment in bnxt_hwrm_cfa_l2_set_rx_mask() which is
no longer valid now.

Fixes: d69851df12b2 ("net/bnxt: support multicast filter and set MAC addr")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c |  4 ++++
 drivers/net/bnxt/bnxt_hwrm.c   | 11 ++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index a41a428982..cbeb97b88e 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1488,6 +1488,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,
 	}
 
 	vnic->mc_addr_cnt = i;
+	if (vnic->mc_addr_cnt)
+		vnic->flags |= BNXT_VNIC_INFO_MCAST;
+	else
+		vnic->flags &= ~BNXT_VNIC_INFO_MCAST;
 
 allmulti:
 	return bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic, 0, NULL);
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index c4f743db05..3b94c5c96b 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -269,20 +269,17 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,
 	HWRM_PREP(req, CFA_L2_SET_RX_MASK);
 	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 
-	/* FIXME add multicast flag, when multicast adding options is supported
-	 * by ethtool.
-	 */
 	if (vnic->flags & BNXT_VNIC_INFO_BCAST)
 		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_BCAST;
 	if (vnic->flags & BNXT_VNIC_INFO_UNTAGGED)
 		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLAN_NONVLAN;
+
 	if (vnic->flags & BNXT_VNIC_INFO_PROMISC)
 		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_PROMISCUOUS;
-	if (vnic->flags & BNXT_VNIC_INFO_ALLMULTI)
+
+	if (vnic->flags & BNXT_VNIC_INFO_ALLMULTI) {
 		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_ALL_MCAST;
-	if (vnic->flags & BNXT_VNIC_INFO_MCAST)
-		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;
-	if (vnic->mc_addr_cnt) {
+	} else if (vnic->flags & BNXT_VNIC_INFO_MCAST) {
 		mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;
 		req.num_mc_entries = rte_cpu_to_le_32(vnic->mc_addr_cnt);
 		req.mc_tbl_addr = rte_cpu_to_le_64(vnic->mc_list_dma_addr);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.175642390 +0000
+++ 0046-net-bnxt-fix-multicast-filter-programming.patch	2019-12-19 14:32:26.009295922 +0000
@@ -1,8 +1,10 @@
-From 9f9e759bb682595fa796e516afff157a0ba93301 Mon Sep 17 00:00:00 2001
+From 322082805c54103e66376de8059e71751ce7e5be Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 2 Oct 2019 16:26:00 -0700
 Subject: [PATCH] net/bnxt: fix multicast filter programming
 
+[ upstream commit 9f9e759bb682595fa796e516afff157a0ba93301 ]
+
 Fixed multicast filter programming and allmulti programming.
 Fixed to skip programming multicast macs if the user requests
 allmulti mode.
@@ -11,7 +13,6 @@
 no longer valid now.
 
 Fixes: d69851df12b2 ("net/bnxt: support multicast filter and set MAC addr")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -21,10 +22,10 @@
  2 files changed, 8 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index e305ad4163..02eacf7965 100644
+index a41a428982..cbeb97b88e 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -2053,6 +2053,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,
+@@ -1488,6 +1488,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,
  	}
  
  	vnic->mc_addr_cnt = i;
@@ -36,11 +37,11 @@
  allmulti:
  	return bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic, 0, NULL);
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 2a7e0d6d15..011cd05ae0 100644
+index c4f743db05..3b94c5c96b 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -295,20 +295,17 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,
- 	HWRM_PREP(req, CFA_L2_SET_RX_MASK, BNXT_USE_CHIMP_MB);
+@@ -269,20 +269,17 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,
+ 	HWRM_PREP(req, CFA_L2_SET_RX_MASK);
  	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
  
 -	/* FIXME add multicast flag, when multicast adding options is supported

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

* [dpdk-stable] patch 'net/qede: limit Rx ring index read for debug' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (44 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix multicast filter programming' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'event/sw: fix xstats reset value' " luca.boccassi
                   ` (91 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: David Marchand; +Cc: Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From aa51baced878cdbbeb7579925da4fc8367dbb3da Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 27 Sep 2019 13:28:49 +0200
Subject: [PATCH] net/qede: limit Rx ring index read for debug

[ upstream commit ff3555d6849748f84056ba2f517dc50ac5718974 ]

Caught by clang, this idx value is only used for a debug message when
the mbufs allocation fails.
No need to use idx as a temporary storage.

Fixes: 8f2312474529 ("net/qede: fix performance bottleneck in Rx path")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Rasesh Mody <rmody@marvell.com>
---
 drivers/net/qede/qede_rxtx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 358a8ef72b..dd88c50ea2 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -48,8 +48,6 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
 	int i, ret = 0;
 	uint16_t idx;
 
-	idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq);
-
 	if (count > QEDE_MAX_BULK_ALLOC_COUNT)
 		count = QEDE_MAX_BULK_ALLOC_COUNT;
 
@@ -58,7 +56,9 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
 		PMD_RX_LOG(ERR, rxq,
 			   "Failed to allocate %d rx buffers "
 			    "sw_rx_prod %u sw_rx_cons %u mp entries %u free %u",
-			    count, idx, rxq->sw_rx_cons & NUM_RX_BDS(rxq),
+			    count,
+			    rxq->sw_rx_prod & NUM_RX_BDS(rxq),
+			    rxq->sw_rx_cons & NUM_RX_BDS(rxq),
 			    rte_mempool_avail_count(rxq->mb_pool),
 			    rte_mempool_in_use_count(rxq->mb_pool));
 		return -ENOMEM;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.220342375 +0000
+++ 0047-net-qede-limit-Rx-ring-index-read-for-debug.patch	2019-12-19 14:32:26.017296080 +0000
@@ -1,14 +1,15 @@
-From ff3555d6849748f84056ba2f517dc50ac5718974 Mon Sep 17 00:00:00 2001
+From aa51baced878cdbbeb7579925da4fc8367dbb3da Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Fri, 27 Sep 2019 13:28:49 +0200
 Subject: [PATCH] net/qede: limit Rx ring index read for debug
 
+[ upstream commit ff3555d6849748f84056ba2f517dc50ac5718974 ]
+
 Caught by clang, this idx value is only used for a debug message when
 the mbufs allocation fails.
 No need to use idx as a temporary storage.
 
 Fixes: 8f2312474529 ("net/qede: fix performance bottleneck in Rx path")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Acked-by: Rasesh Mody <rmody@marvell.com>
@@ -17,10 +18,10 @@
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
-index dbb74fc64e..fffccf0702 100644
+index 358a8ef72b..dd88c50ea2 100644
 --- a/drivers/net/qede/qede_rxtx.c
 +++ b/drivers/net/qede/qede_rxtx.c
-@@ -46,8 +46,6 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
+@@ -48,8 +48,6 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
  	int i, ret = 0;
  	uint16_t idx;
  
@@ -29,7 +30,7 @@
  	if (count > QEDE_MAX_BULK_ALLOC_COUNT)
  		count = QEDE_MAX_BULK_ALLOC_COUNT;
  
-@@ -56,7 +54,9 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
+@@ -58,7 +56,9 @@ static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count)
  		PMD_RX_LOG(ERR, rxq,
  			   "Failed to allocate %d rx buffers "
  			    "sw_rx_prod %u sw_rx_cons %u mp entries %u free %u",

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

* [dpdk-stable] patch 'event/sw: fix xstats reset value' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (45 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/qede: limit Rx ring index read for debug' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'event/dpaa2: fix default queue configuration' " luca.boccassi
                   ` (90 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Gage Eads; +Cc: Harry van Haaren, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ae419ec1d3a15d7bbefd31405c5f435f66be4ead Mon Sep 17 00:00:00 2001
From: Gage Eads <gage.eads@intel.com>
Date: Tue, 27 Aug 2019 16:34:59 -0500
Subject: [PATCH] event/sw: fix xstats reset value

[ upstream commit d02c470c87976def34bae0307736ecb9c8cac9d8 ]

The sw PMD implements xstats reset by having the xstat get operations
return a value to the statistic's value at the last reset. The value at the
last reset is maintained in the per-xstat reset_value field, but the PMD
was setting reset_value = current - reset_value instead of reset_value =
current.

Fixes: c1ad03df7ad5 ("event/sw: support xstats")

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 drivers/event/sw/sw_evdev_xstats.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/event/sw/sw_evdev_xstats.c b/drivers/event/sw/sw_evdev_xstats.c
index 61a5c33b7a..bed222f7ed 100644
--- a/drivers/event/sw/sw_evdev_xstats.c
+++ b/drivers/event/sw/sw_evdev_xstats.c
@@ -521,7 +521,7 @@ sw_xstats_update(struct sw_evdev *sw, enum rte_event_dev_xstats_mode mode,
 			values[xidx] = val;
 
 		if (xs->reset_allowed && reset)
-			xs->reset_value = val;
+			xs->reset_value += val;
 
 		xidx++;
 	}
@@ -574,8 +574,7 @@ sw_xstats_reset_range(struct sw_evdev *sw, uint32_t start, uint32_t num)
 		if (!xs->reset_allowed)
 			continue;
 
-		uint64_t val = xs->fn(sw, xs->obj_idx, xs->stat, xs->extra_arg)
-					- xs->reset_value;
+		uint64_t val = xs->fn(sw, xs->obj_idx, xs->stat, xs->extra_arg);
 		xs->reset_value = val;
 	}
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.257415133 +0000
+++ 0048-event-sw-fix-xstats-reset-value.patch	2019-12-19 14:32:26.025296239 +0000
@@ -1,8 +1,10 @@
-From d02c470c87976def34bae0307736ecb9c8cac9d8 Mon Sep 17 00:00:00 2001
+From ae419ec1d3a15d7bbefd31405c5f435f66be4ead Mon Sep 17 00:00:00 2001
 From: Gage Eads <gage.eads@intel.com>
 Date: Tue, 27 Aug 2019 16:34:59 -0500
 Subject: [PATCH] event/sw: fix xstats reset value
 
+[ upstream commit d02c470c87976def34bae0307736ecb9c8cac9d8 ]
+
 The sw PMD implements xstats reset by having the xstat get operations
 return a value to the statistic's value at the last reset. The value at the
 last reset is maintained in the per-xstat reset_value field, but the PMD
@@ -10,7 +12,6 @@
 current.
 
 Fixes: c1ad03df7ad5 ("event/sw: support xstats")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gage Eads <gage.eads@intel.com>
 Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
@@ -19,10 +20,10 @@
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/event/sw/sw_evdev_xstats.c b/drivers/event/sw/sw_evdev_xstats.c
-index 7a6caa64d8..90664903bf 100644
+index 61a5c33b7a..bed222f7ed 100644
 --- a/drivers/event/sw/sw_evdev_xstats.c
 +++ b/drivers/event/sw/sw_evdev_xstats.c
-@@ -491,7 +491,7 @@ sw_xstats_update(struct sw_evdev *sw, enum rte_event_dev_xstats_mode mode,
+@@ -521,7 +521,7 @@ sw_xstats_update(struct sw_evdev *sw, enum rte_event_dev_xstats_mode mode,
  			values[xidx] = val;
  
  		if (xs->reset_allowed && reset)
@@ -31,7 +32,7 @@
  
  		xidx++;
  	}
-@@ -544,8 +544,7 @@ sw_xstats_reset_range(struct sw_evdev *sw, uint32_t start, uint32_t num)
+@@ -574,8 +574,7 @@ sw_xstats_reset_range(struct sw_evdev *sw, uint32_t start, uint32_t num)
  		if (!xs->reset_allowed)
  			continue;
  

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

* [dpdk-stable] patch 'event/dpaa2: fix default queue configuration' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (46 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'event/sw: fix xstats reset value' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'service: use log for error messages' " luca.boccassi
                   ` (89 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From a769f8e3be198aa1a2322136fe2be605209a73e3 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 30 Sep 2019 14:02:10 +0530
Subject: [PATCH] event/dpaa2: fix default queue configuration

[ upstream commit 6f213fe94002cd446e919ecc79715656a2657a50 ]

Test vector expect only one type of scheduling as default.
The old code is provide support scheduling types instead of default.

Fixes: 13370a3877a5 ("eventdev: fix inconsistency in queue config")

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

diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index 56ea124cf9..bf1b493024 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright 2017 NXP.
+ *   Copyright 2017,2019 NXP.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
@@ -395,8 +395,7 @@ dpaa2_eventdev_queue_def_conf(struct rte_eventdev *dev, uint8_t queue_id,
 	RTE_SET_USED(queue_conf);
 
 	queue_conf->nb_atomic_flows = DPAA2_EVENT_QUEUE_ATOMIC_FLOWS;
-	queue_conf->schedule_type = RTE_SCHED_TYPE_ATOMIC |
-				      RTE_SCHED_TYPE_PARALLEL;
+	queue_conf->schedule_type = RTE_SCHED_TYPE_PARALLEL;
 	queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.292227719 +0000
+++ 0049-event-dpaa2-fix-default-queue-configuration.patch	2019-12-19 14:32:26.033296398 +0000
@@ -1,33 +1,34 @@
-From 6f213fe94002cd446e919ecc79715656a2657a50 Mon Sep 17 00:00:00 2001
+From a769f8e3be198aa1a2322136fe2be605209a73e3 Mon Sep 17 00:00:00 2001
 From: Hemant Agrawal <hemant.agrawal@nxp.com>
 Date: Mon, 30 Sep 2019 14:02:10 +0530
 Subject: [PATCH] event/dpaa2: fix default queue configuration
 
+[ upstream commit 6f213fe94002cd446e919ecc79715656a2657a50 ]
+
 Test vector expect only one type of scheduling as default.
 The old code is provide support scheduling types instead of default.
 
 Fixes: 13370a3877a5 ("eventdev: fix inconsistency in queue config")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
 ---
- drivers/event/dpaa2/dpaa2_eventdev.c | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
+ drivers/event/dpaa2/dpaa2_eventdev.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
-index 926b7edd84..b8cb437a0c 100644
+index 56ea124cf9..bf1b493024 100644
 --- a/drivers/event/dpaa2/dpaa2_eventdev.c
 +++ b/drivers/event/dpaa2/dpaa2_eventdev.c
-@@ -1,7 +1,5 @@
- /* SPDX-License-Identifier: BSD-3-Clause
-- *
-- *   Copyright 2017 NXP
-- *
-+ * Copyright 2017,2019 NXP
-  */
- 
- #include <assert.h>
-@@ -470,8 +468,7 @@ dpaa2_eventdev_queue_def_conf(struct rte_eventdev *dev, uint8_t queue_id,
+@@ -1,7 +1,7 @@
+ /*-
+  *   BSD LICENSE
+  *
+- *   Copyright 2017 NXP.
++ *   Copyright 2017,2019 NXP.
+  *
+  *   Redistribution and use in source and binary forms, with or without
+  *   modification, are permitted provided that the following conditions
+@@ -395,8 +395,7 @@ dpaa2_eventdev_queue_def_conf(struct rte_eventdev *dev, uint8_t queue_id,
  	RTE_SET_USED(queue_conf);
  
  	queue_conf->nb_atomic_flows = DPAA2_EVENT_QUEUE_ATOMIC_FLOWS;

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

* [dpdk-stable] patch 'service: use log for error messages' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (47 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'event/dpaa2: fix default queue configuration' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/mbuf: fix forged mbuf in clone test' " luca.boccassi
                   ` (88 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Harry van Haaren, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 7dc1b212c7933c1c0381118cb5ceef4329d7faa3 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Wed, 21 Aug 2019 10:12:52 +0100
Subject: [PATCH] service: use log for error messages

[ upstream commit a8f8ae1cf9b68f6398b49019ca07a215a57bba41 ]

EAL should always use rte_log instead of putting errors to
stderr (which maybe redirected to /dev/null in a daemon).

Also checks for null before rte_free are unnecessary.
Minor code consistency improvements.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 lib/librte_eal/common/rte_service.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c
index 1f922940ab..71a07dd8cd 100644
--- a/lib/librte_eal/common/rte_service.c
+++ b/lib/librte_eal/common/rte_service.c
@@ -98,10 +98,12 @@ static struct rte_service_spec_impl *rte_services;
 static struct core_state *lcore_states;
 static uint32_t rte_service_library_initialized;
 
-int32_t rte_service_init(void)
+int32_t
+rte_service_init(void)
 {
 	if (rte_service_library_initialized) {
-		printf("service library init() called, init flag %d\n",
+		RTE_LOG(NOTICE, EAL,
+			"service library init() called, init flag %d\n",
 			rte_service_library_initialized);
 		return -EALREADY;
 	}
@@ -110,14 +112,14 @@ int32_t rte_service_init(void)
 			sizeof(struct rte_service_spec_impl),
 			RTE_CACHE_LINE_SIZE);
 	if (!rte_services) {
-		printf("error allocating rte services array\n");
+		RTE_LOG(ERR, EAL, "error allocating rte services array\n");
 		goto fail_mem;
 	}
 
 	lcore_states = rte_calloc("rte_service_core_states", RTE_MAX_LCORE,
 			sizeof(struct core_state), RTE_CACHE_LINE_SIZE);
 	if (!lcore_states) {
-		printf("error allocating core states array\n");
+		RTE_LOG(ERR, EAL, "error allocating core states array\n");
 		goto fail_mem;
 	}
 
@@ -136,10 +138,8 @@ int32_t rte_service_init(void)
 	rte_service_library_initialized = 1;
 	return 0;
 fail_mem:
-	if (rte_services)
-		rte_free(rte_services);
-	if (lcore_states)
-		rte_free(lcore_states);
+	rte_free(rte_services);
+	rte_free(lcore_states);
 	return -ENOMEM;
 }
 
@@ -384,8 +384,8 @@ service_run(uint32_t i, struct core_state *cs, uint64_t service_mask)
 	return 0;
 }
 
-int32_t rte_service_run_iter_on_app_lcore(uint32_t id,
-		uint32_t serialize_mt_unsafe)
+int32_t
+rte_service_run_iter_on_app_lcore(uint32_t id, uint32_t serialize_mt_unsafe)
 {
 	/* run service on calling core, using all-ones as the service mask */
 	if (!service_valid(id))
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.327124864 +0000
+++ 0050-service-use-log-for-error-messages.patch	2019-12-19 14:32:26.045296636 +0000
@@ -1,8 +1,10 @@
-From a8f8ae1cf9b68f6398b49019ca07a215a57bba41 Mon Sep 17 00:00:00 2001
+From 7dc1b212c7933c1c0381118cb5ceef4329d7faa3 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Wed, 21 Aug 2019 10:12:52 +0100
 Subject: [PATCH] service: use log for error messages
 
+[ upstream commit a8f8ae1cf9b68f6398b49019ca07a215a57bba41 ]
+
 EAL should always use rte_log instead of putting errors to
 stderr (which maybe redirected to /dev/null in a daemon).
 
@@ -10,20 +12,19 @@
 Minor code consistency improvements.
 
 Fixes: 21698354c832 ("service: introduce service cores concept")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
 Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
 ---
- lib/librte_eal/common/rte_service.c | 27 ++++++++++++---------------
- 1 file changed, 12 insertions(+), 15 deletions(-)
+ lib/librte_eal/common/rte_service.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
 
 diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c
-index c3653ebae4..fe09077200 100644
+index 1f922940ab..71a07dd8cd 100644
 --- a/lib/librte_eal/common/rte_service.c
 +++ b/lib/librte_eal/common/rte_service.c
-@@ -70,10 +70,12 @@ static struct rte_service_spec_impl *rte_services;
+@@ -98,10 +98,12 @@ static struct rte_service_spec_impl *rte_services;
  static struct core_state *lcore_states;
  static uint32_t rte_service_library_initialized;
  
@@ -38,7 +39,7 @@
  			rte_service_library_initialized);
  		return -EALREADY;
  	}
-@@ -82,14 +84,14 @@ int32_t rte_service_init(void)
+@@ -110,14 +112,14 @@ int32_t rte_service_init(void)
  			sizeof(struct rte_service_spec_impl),
  			RTE_CACHE_LINE_SIZE);
  	if (!rte_services) {
@@ -55,7 +56,7 @@
  		goto fail_mem;
  	}
  
-@@ -108,10 +110,8 @@ int32_t rte_service_init(void)
+@@ -136,10 +138,8 @@ int32_t rte_service_init(void)
  	rte_service_library_initialized = 1;
  	return 0;
  fail_mem:
@@ -68,21 +69,7 @@
  	return -ENOMEM;
  }
  
-@@ -121,11 +121,8 @@ rte_service_finalize(void)
- 	if (!rte_service_library_initialized)
- 		return;
- 
--	if (rte_services)
--		rte_free(rte_services);
--
--	if (lcore_states)
--		rte_free(lcore_states);
-+	rte_free(rte_services);
-+	rte_free(lcore_states);
- 
- 	rte_service_library_initialized = 0;
- }
-@@ -397,8 +394,8 @@ rte_service_may_be_active(uint32_t id)
+@@ -384,8 +384,8 @@ service_run(uint32_t i, struct core_state *cs, uint64_t service_mask)
  	return 0;
  }
  

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

* [dpdk-stable] patch 'test/mbuf: fix forged mbuf in clone test' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (48 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'service: use log for error messages' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/lpm: fix measured cycles for delete' " luca.boccassi
                   ` (87 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0e6d183c89f7314d453b00093c8b9e9380823f27 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 8 Oct 2019 09:33:46 -0700
Subject: [PATCH] test/mbuf: fix forged mbuf in clone test

[ upstream commit 1636775425456d021b4ab0dd0b312edc8fbd78b8 ]

The test for cloning changed mbuf would generate an mbuf whose length
and segments count were invalid.
This would cause a crash if test was run with mbuf debugging enabled.

Fixes: 4ccd2bb3a9e2 ("app/test: enhance mbuf refcnt check")
Fixes: af75078fece3 ("first public release")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 test/test/test_mbuf.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/test/test_mbuf.c b/test/test/test_mbuf.c
index 414509b203..73382ba13e 100644
--- a/test/test/test_mbuf.c
+++ b/test/test/test_mbuf.c
@@ -360,8 +360,11 @@ testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool)
 	m->next = rte_pktmbuf_alloc(pktmbuf_pool);
 	if (m->next == NULL)
 		GOTO_FAIL("Next Pkt Null\n");
+	m->nb_segs = 2;
 
 	rte_pktmbuf_append(m->next, sizeof(uint32_t));
+	m->pkt_len = 2 * sizeof(uint32_t);
+
 	data = rte_pktmbuf_mtod(m->next, unaligned_uint32_t *);
 	*data = MAGIC_DATA;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.365780745 +0000
+++ 0051-test-mbuf-fix-forged-mbuf-in-clone-test.patch	2019-12-19 14:32:26.057296874 +0000
@@ -1,27 +1,28 @@
-From 1636775425456d021b4ab0dd0b312edc8fbd78b8 Mon Sep 17 00:00:00 2001
+From 0e6d183c89f7314d453b00093c8b9e9380823f27 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Tue, 8 Oct 2019 09:33:46 -0700
 Subject: [PATCH] test/mbuf: fix forged mbuf in clone test
 
+[ upstream commit 1636775425456d021b4ab0dd0b312edc8fbd78b8 ]
+
 The test for cloning changed mbuf would generate an mbuf whose length
 and segments count were invalid.
 This would cause a crash if test was run with mbuf debugging enabled.
 
 Fixes: 4ccd2bb3a9e2 ("app/test: enhance mbuf refcnt check")
 Fixes: af75078fece3 ("first public release")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Acked-by: Olivier Matz <olivier.matz@6wind.com>
 ---
- app/test/test_mbuf.c | 3 +++
+ test/test/test_mbuf.c | 3 +++
  1 file changed, 3 insertions(+)
 
-diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c
-index 2a97afe204..aafad0cf62 100644
---- a/app/test/test_mbuf.c
-+++ b/app/test/test_mbuf.c
-@@ -332,8 +332,11 @@ testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool)
+diff --git a/test/test/test_mbuf.c b/test/test/test_mbuf.c
+index 414509b203..73382ba13e 100644
+--- a/test/test/test_mbuf.c
++++ b/test/test/test_mbuf.c
+@@ -360,8 +360,11 @@ testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool)
  	m->next = rte_pktmbuf_alloc(pktmbuf_pool);
  	if (m->next == NULL)
  		GOTO_FAIL("Next Pkt Null\n");

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

* [dpdk-stable] patch 'test/lpm: fix measured cycles for delete' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (49 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/mbuf: fix forged mbuf in clone test' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'cryptodev: fix checks related to device id' " luca.boccassi
                   ` (86 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Honnappa Nagarahalli; +Cc: Ruifeng Wang, Vladimir Medvedkin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From cd203f7f3413b5c1a89fe76e0ebae464f21bc39c Mon Sep 17 00:00:00 2001
From: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Date: Tue, 1 Oct 2019 00:32:53 -0500
Subject: [PATCH] test/lpm: fix measured cycles for delete

[ upstream commit c425fb6b9b3264dfe5d212fe80151cfd800b907c ]

total_time needs to be reset to measure the cycles for delete API.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Tested-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
 test/test/test_lpm_perf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/test/test_lpm_perf.c b/test/test/test_lpm_perf.c
index e7e1281bda..09b256b987 100644
--- a/test/test/test_lpm_perf.c
+++ b/test/test/test_lpm_perf.c
@@ -489,7 +489,7 @@ test_lpm_perf(void)
 			(double)total_time / ((double)ITERATIONS * BATCH_SIZE),
 			(count * 100.0) / (double)(ITERATIONS * BATCH_SIZE));
 
-	/* Delete */
+	/* Measure Delete */
 	status = 0;
 	begin = rte_rdtsc();
 
@@ -499,7 +499,7 @@ test_lpm_perf(void)
 				large_route_table[i].depth);
 	}
 
-	total_time += rte_rdtsc() - begin;
+	total_time = rte_rdtsc() - begin;
 
 	printf("Average LPM Delete: %g cycles\n",
 			(double)total_time / NUM_ROUTE_ENTRIES);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.402050097 +0000
+++ 0052-test-lpm-fix-measured-cycles-for-delete.patch	2019-12-19 14:32:26.061296953 +0000
@@ -1,26 +1,27 @@
-From c425fb6b9b3264dfe5d212fe80151cfd800b907c Mon Sep 17 00:00:00 2001
+From cd203f7f3413b5c1a89fe76e0ebae464f21bc39c Mon Sep 17 00:00:00 2001
 From: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
 Date: Tue, 1 Oct 2019 00:32:53 -0500
 Subject: [PATCH] test/lpm: fix measured cycles for delete
 
+[ upstream commit c425fb6b9b3264dfe5d212fe80151cfd800b907c ]
+
 total_time needs to be reset to measure the cycles for delete API.
 
 Fixes: af75078fece3 ("first public release")
-Cc: stable@dpdk.org
 
 Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
 Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
 Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
 Tested-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
 ---
- app/test/test_lpm_perf.c | 4 ++--
+ test/test/test_lpm_perf.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/app/test/test_lpm_perf.c b/app/test/test_lpm_perf.c
-index 77eea66ade..a2578fe90e 100644
---- a/app/test/test_lpm_perf.c
-+++ b/app/test/test_lpm_perf.c
-@@ -460,7 +460,7 @@ test_lpm_perf(void)
+diff --git a/test/test/test_lpm_perf.c b/test/test/test_lpm_perf.c
+index e7e1281bda..09b256b987 100644
+--- a/test/test/test_lpm_perf.c
++++ b/test/test/test_lpm_perf.c
+@@ -489,7 +489,7 @@ test_lpm_perf(void)
  			(double)total_time / ((double)ITERATIONS * BATCH_SIZE),
  			(count * 100.0) / (double)(ITERATIONS * BATCH_SIZE));
  
@@ -29,7 +30,7 @@
  	status = 0;
  	begin = rte_rdtsc();
  
-@@ -470,7 +470,7 @@ test_lpm_perf(void)
+@@ -499,7 +499,7 @@ test_lpm_perf(void)
  				large_route_table[i].depth);
  	}
  

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

* [dpdk-stable] patch 'cryptodev: fix checks related to device id' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (50 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/lpm: fix measured cycles for delete' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix typo in l2fwd-crypto guide' " luca.boccassi
                   ` (85 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Julien Meunier; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 72de277dd423cb96413e11b82cf3c781b283e92e Mon Sep 17 00:00:00 2001
From: Julien Meunier <julien.meunier@nokia.com>
Date: Wed, 16 Oct 2019 13:21:11 +0300
Subject: [PATCH] cryptodev: fix checks related to device id

[ upstream commit 3dd4435cf473f5d10b99282098821fb40b72380f ]

Each cryptodev are indexed with dev_id in the global rte_crypto_devices
variable. nb_devs is incremented / decremented each time a cryptodev is
created / deleted. The goal of nb_devs was to prevent the user to get an
invalid dev_id.

Let's imagine DPDK has configured N cryptodevs. If the cryptodev=1 is
removed at runtime, the latest cryptodev N cannot be accessible, because
nb_devs=N-1 with the current implementaion.

In order to prevent this kind of behavior, let's remove the check with
nb_devs and iterate in all the rte_crypto_devices elements: if data is
not NULL, that means a valid cryptodev is available.

Also, remove max_devs field and use RTE_CRYPTO_MAX_DEVS in order to
unify the code.

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     | 30 +++++++++++++++++-------
 lib/librte_cryptodev/rte_cryptodev_pmd.h |  1 -
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
index ee3a2447ef..cdce7824c3 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -78,8 +78,7 @@ struct rte_cryptodev *rte_cryptodevs = &rte_crypto_devices[0];
 static struct rte_cryptodev_global cryptodev_globals = {
 		.devs			= &rte_crypto_devices[0],
 		.data			= { NULL },
-		.nb_devs		= 0,
-		.max_devs		= RTE_CRYPTO_MAX_DEVS
+		.nb_devs		= 0
 };
 
 struct rte_cryptodev_global *rte_cryptodev_globals = &cryptodev_globals;
@@ -415,7 +414,7 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
 	if (name == NULL)
 		return NULL;
 
-	for (i = 0; i < rte_cryptodev_globals->max_devs; i++) {
+	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++) {
 		dev = &rte_cryptodev_globals->devs[i];
 
 		if ((dev->attached == RTE_CRYPTODEV_ATTACHED) &&
@@ -426,12 +425,21 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
 	return NULL;
 }
 
+static inline uint8_t
+rte_cryptodev_is_valid_device_data(uint8_t dev_id)
+{
+	if (rte_crypto_devices[dev_id].data == NULL)
+		return 0;
+
+	return 1;
+}
+
 unsigned int
 rte_cryptodev_pmd_is_valid_dev(uint8_t dev_id)
 {
 	struct rte_cryptodev *dev = NULL;
 
-	if (dev_id >= rte_cryptodev_globals->nb_devs)
+	if (!rte_cryptodev_is_valid_device_data(dev_id))
 		return 0;
 
 	dev = rte_cryptodev_pmd_get_dev(dev_id);
@@ -450,12 +458,15 @@ rte_cryptodev_get_dev_id(const char *name)
 	if (name == NULL)
 		return -1;
 
-	for (i = 0; i < rte_cryptodev_globals->nb_devs; i++)
+	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++) {
+		if (!rte_cryptodev_is_valid_device_data(i))
+			continue;
 		if ((strcmp(rte_cryptodev_globals->devs[i].data->name, name)
 				== 0) &&
 				(rte_cryptodev_globals->devs[i].attached ==
 						RTE_CRYPTODEV_ATTACHED))
 			return i;
+	}
 
 	return -1;
 }
@@ -471,7 +482,7 @@ rte_cryptodev_device_count_by_driver(uint8_t driver_id)
 {
 	uint8_t i, dev_count = 0;
 
-	for (i = 0; i < rte_cryptodev_globals->max_devs; i++)
+	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++)
 		if (rte_cryptodev_globals->devs[i].driver_id == driver_id &&
 			rte_cryptodev_globals->devs[i].attached ==
 					RTE_CRYPTODEV_ATTACHED)
@@ -486,9 +497,10 @@ rte_cryptodev_devices_get(const char *driver_name, uint8_t *devices,
 {
 	uint8_t i, count = 0;
 	struct rte_cryptodev *devs = rte_cryptodev_globals->devs;
-	uint8_t max_devs = rte_cryptodev_globals->max_devs;
 
-	for (i = 0; i < max_devs && count < nb_devices;	i++) {
+	for (i = 0; i < RTE_CRYPTO_MAX_DEVS && count < nb_devices; i++) {
+		if (!rte_cryptodev_is_valid_device_data(i))
+			continue;
 
 		if (devs[i].attached == RTE_CRYPTODEV_ATTACHED) {
 			int cmp;
@@ -981,7 +993,7 @@ rte_cryptodev_info_get(uint8_t dev_id, struct rte_cryptodev_info *dev_info)
 {
 	struct rte_cryptodev *dev;
 
-	if (dev_id >= cryptodev_globals.nb_devs) {
+	if (!rte_cryptodev_pmd_is_valid_dev(dev_id)) {
 		CDEV_LOG_ERR("Invalid dev_id=%d", dev_id);
 		return;
 	}
diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h
index 089848e0b2..2b40717c36 100644
--- a/lib/librte_cryptodev/rte_cryptodev_pmd.h
+++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h
@@ -92,7 +92,6 @@ struct rte_cryptodev_global {
 	struct rte_cryptodev_data *data[RTE_CRYPTO_MAX_DEVS];
 	/**< Device private data */
 	uint8_t nb_devs;		/**< Number of devices found */
-	uint8_t max_devs;		/**< Max number of devices */
 };
 
 /* Cryptodev driver, containing the driver ID */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.436975562 +0000
+++ 0053-cryptodev-fix-checks-related-to-device-id.patch	2019-12-19 14:32:26.073297191 +0000
@@ -1,8 +1,10 @@
-From 3dd4435cf473f5d10b99282098821fb40b72380f Mon Sep 17 00:00:00 2001
+From 72de277dd423cb96413e11b82cf3c781b283e92e Mon Sep 17 00:00:00 2001
 From: Julien Meunier <julien.meunier@nokia.com>
 Date: Wed, 16 Oct 2019 13:21:11 +0300
 Subject: [PATCH] cryptodev: fix checks related to device id
 
+[ upstream commit 3dd4435cf473f5d10b99282098821fb40b72380f ]
+
 Each cryptodev are indexed with dev_id in the global rte_crypto_devices
 variable. nb_devs is incremented / decremented each time a cryptodev is
 created / deleted. The goal of nb_devs was to prevent the user to get an
@@ -20,7 +22,6 @@
 unify the code.
 
 Fixes: d11b0f30df88 ("cryptodev: introduce API and framework for crypto devices")
-Cc: stable@dpdk.org
 
 Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
 Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -30,29 +31,29 @@
  2 files changed, 21 insertions(+), 10 deletions(-)
 
 diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
-index b16ef7b2c1..89aa2ed3e2 100644
+index ee3a2447ef..cdce7824c3 100644
 --- a/lib/librte_cryptodev/rte_cryptodev.c
 +++ b/lib/librte_cryptodev/rte_cryptodev.c
-@@ -50,8 +50,7 @@ struct rte_cryptodev *rte_cryptodevs = rte_crypto_devices;
+@@ -78,8 +78,7 @@ struct rte_cryptodev *rte_cryptodevs = &rte_crypto_devices[0];
  static struct rte_cryptodev_global cryptodev_globals = {
- 		.devs			= rte_crypto_devices,
+ 		.devs			= &rte_crypto_devices[0],
  		.data			= { NULL },
 -		.nb_devs		= 0,
 -		.max_devs		= RTE_CRYPTO_MAX_DEVS
 +		.nb_devs		= 0
  };
  
- /* spinlock for crypto device callbacks */
-@@ -512,7 +511,7 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
+ struct rte_cryptodev_global *rte_cryptodev_globals = &cryptodev_globals;
+@@ -415,7 +414,7 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
  	if (name == NULL)
  		return NULL;
  
--	for (i = 0; i < cryptodev_globals.max_devs; i++) {
+-	for (i = 0; i < rte_cryptodev_globals->max_devs; i++) {
 +	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++) {
- 		dev = &cryptodev_globals.devs[i];
+ 		dev = &rte_cryptodev_globals->devs[i];
  
  		if ((dev->attached == RTE_CRYPTODEV_ATTACHED) &&
-@@ -523,12 +522,21 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
+@@ -426,12 +425,21 @@ rte_cryptodev_pmd_get_named_dev(const char *name)
  	return NULL;
  }
  
@@ -70,42 +71,42 @@
  {
  	struct rte_cryptodev *dev = NULL;
  
--	if (dev_id >= cryptodev_globals.nb_devs)
+-	if (dev_id >= rte_cryptodev_globals->nb_devs)
 +	if (!rte_cryptodev_is_valid_device_data(dev_id))
  		return 0;
  
  	dev = rte_cryptodev_pmd_get_dev(dev_id);
-@@ -547,12 +555,15 @@ rte_cryptodev_get_dev_id(const char *name)
+@@ -450,12 +458,15 @@ rte_cryptodev_get_dev_id(const char *name)
  	if (name == NULL)
  		return -1;
  
--	for (i = 0; i < cryptodev_globals.nb_devs; i++)
+-	for (i = 0; i < rte_cryptodev_globals->nb_devs; i++)
 +	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++) {
 +		if (!rte_cryptodev_is_valid_device_data(i))
 +			continue;
- 		if ((strcmp(cryptodev_globals.devs[i].data->name, name)
+ 		if ((strcmp(rte_cryptodev_globals->devs[i].data->name, name)
  				== 0) &&
- 				(cryptodev_globals.devs[i].attached ==
+ 				(rte_cryptodev_globals->devs[i].attached ==
  						RTE_CRYPTODEV_ATTACHED))
  			return i;
 +	}
  
  	return -1;
  }
-@@ -568,7 +579,7 @@ rte_cryptodev_device_count_by_driver(uint8_t driver_id)
+@@ -471,7 +482,7 @@ rte_cryptodev_device_count_by_driver(uint8_t driver_id)
  {
  	uint8_t i, dev_count = 0;
  
--	for (i = 0; i < cryptodev_globals.max_devs; i++)
+-	for (i = 0; i < rte_cryptodev_globals->max_devs; i++)
 +	for (i = 0; i < RTE_CRYPTO_MAX_DEVS; i++)
- 		if (cryptodev_globals.devs[i].driver_id == driver_id &&
- 			cryptodev_globals.devs[i].attached ==
+ 		if (rte_cryptodev_globals->devs[i].driver_id == driver_id &&
+ 			rte_cryptodev_globals->devs[i].attached ==
  					RTE_CRYPTODEV_ATTACHED)
-@@ -583,9 +594,10 @@ rte_cryptodev_devices_get(const char *driver_name, uint8_t *devices,
+@@ -486,9 +497,10 @@ rte_cryptodev_devices_get(const char *driver_name, uint8_t *devices,
  {
  	uint8_t i, count = 0;
- 	struct rte_cryptodev *devs = cryptodev_globals.devs;
--	uint8_t max_devs = cryptodev_globals.max_devs;
+ 	struct rte_cryptodev *devs = rte_cryptodev_globals->devs;
+-	uint8_t max_devs = rte_cryptodev_globals->max_devs;
  
 -	for (i = 0; i < max_devs && count < nb_devices;	i++) {
 +	for (i = 0; i < RTE_CRYPTO_MAX_DEVS && count < nb_devices; i++) {
@@ -114,7 +115,7 @@
  
  		if (devs[i].attached == RTE_CRYPTODEV_ATTACHED) {
  			int cmp;
-@@ -1101,7 +1113,7 @@ rte_cryptodev_info_get(uint8_t dev_id, struct rte_cryptodev_info *dev_info)
+@@ -981,7 +993,7 @@ rte_cryptodev_info_get(uint8_t dev_id, struct rte_cryptodev_info *dev_info)
  {
  	struct rte_cryptodev *dev;
  
@@ -124,10 +125,10 @@
  		return;
  	}
 diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h
-index defe05ea05..fba14f2fa0 100644
+index 089848e0b2..2b40717c36 100644
 --- a/lib/librte_cryptodev/rte_cryptodev_pmd.h
 +++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h
-@@ -61,7 +61,6 @@ struct rte_cryptodev_global {
+@@ -92,7 +92,6 @@ struct rte_cryptodev_global {
  	struct rte_cryptodev_data *data[RTE_CRYPTO_MAX_DEVS];
  	/**< Device private data */
  	uint8_t nb_devs;		/**< Number of devices found */

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

* [dpdk-stable] patch 'doc: fix typo in l2fwd-crypto guide' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (51 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'cryptodev: fix checks related to device id' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'lib/distributor: fix deadlock on aarch64' " luca.boccassi
                   ` (84 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Xiao Wang; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 4ed16588a00ed7a4a3793235c6f578e2a12f95f0 Mon Sep 17 00:00:00 2001
From: Xiao Wang <xiao.w.wang@intel.com>
Date: Wed, 16 Oct 2019 04:06:45 -0400
Subject: [PATCH] doc: fix typo in l2fwd-crypto guide

[ upstream commit 3cc28001a3307411f3b427d6ec928fb5479cb7de ]

Unmatched double quotation mark is fixed.

Fixes: ba7b86b1419b ("doc: add l2fwd-crypto sample app guide")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 doc/guides/sample_app_ug/l2_forward_crypto.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 1e85b4a346..2d3c949470 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -223,7 +223,7 @@ Crypto operation specification
 All the packets received in all the ports get transformed by the crypto device/s
 (ciphering and/or authentication).
 The crypto operation to be performed on the packet is parsed from the command line
-(go to "Running the Application section for all the options).
+(go to "Running the Application" section for all the options).
 
 If no parameter is passed, the default crypto operation is:
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.471572593 +0000
+++ 0054-doc-fix-typo-in-l2fwd-crypto-guide.patch	2019-12-19 14:32:26.077297270 +0000
@@ -1,12 +1,13 @@
-From 3cc28001a3307411f3b427d6ec928fb5479cb7de Mon Sep 17 00:00:00 2001
+From 4ed16588a00ed7a4a3793235c6f578e2a12f95f0 Mon Sep 17 00:00:00 2001
 From: Xiao Wang <xiao.w.wang@intel.com>
 Date: Wed, 16 Oct 2019 04:06:45 -0400
 Subject: [PATCH] doc: fix typo in l2fwd-crypto guide
 
+[ upstream commit 3cc28001a3307411f3b427d6ec928fb5479cb7de ]
+
 Unmatched double quotation mark is fixed.
 
 Fixes: ba7b86b1419b ("doc: add l2fwd-crypto sample app guide")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
 Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -15,10 +16,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
-index e8d52dad2b..962752f21c 100644
+index 1e85b4a346..2d3c949470 100644
 --- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
 +++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
-@@ -204,7 +204,7 @@ Crypto operation specification
+@@ -223,7 +223,7 @@ Crypto operation specification
  All the packets received in all the ports get transformed by the crypto device/s
  (ciphering and/or authentication).
  The crypto operation to be performed on the packet is parsed from the command line

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

* [dpdk-stable] patch 'lib/distributor: fix deadlock on aarch64' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (52 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix typo in l2fwd-crypto guide' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'bus/pci: remove useless link dependency on ethdev' " luca.boccassi
                   ` (83 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ruifeng Wang; +Cc: Gavin Hu, David Hunt, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From f76ab2f8e6c01f149358f5bd549d8bf362b61894 Mon Sep 17 00:00:00 2001
From: Ruifeng Wang <ruifeng.wang@arm.com>
Date: Tue, 15 Oct 2019 17:28:25 +0800
Subject: [PATCH] lib/distributor: fix deadlock on aarch64

[ upstream commit 52833924822490391df3dce3eec3a2ee7777acc5 ]

Distributor and worker threads rely on data structs in cache line
for synchronization. The shared data structs were not protected.
This caused deadlock issue on weaker memory ordering platforms as
aarch64.
Fix this issue by adding memory barriers to ensure synchronization
among cores.

Bugzilla ID: 342
Fixes: 775003ad2f96 ("distributor: add new burst-capable library")

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: David Hunt <david.hunt@intel.com>
---
 lib/librte_distributor/rte_distributor.c     | 68 ++++++++++++++------
 lib/librte_distributor/rte_distributor_v20.c | 59 ++++++++++++-----
 2 files changed, 92 insertions(+), 35 deletions(-)

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 6ad2301315..00fc003f23 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -76,8 +76,11 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	}
 
 	retptr64 = &(buf->retptr64[0]);
-	/* Spin while handshake bits are set (scheduler clears it) */
-	while (unlikely(*retptr64 & RTE_DISTRIB_GET_BUF)) {
+	/* Spin while handshake bits are set (scheduler clears it).
+	 * Sync with worker on GET_BUF flag.
+	 */
+	while (unlikely(__atomic_load_n(retptr64, __ATOMIC_ACQUIRE)
+			& RTE_DISTRIB_GET_BUF)) {
 		rte_pause();
 		uint64_t t = rte_rdtsc()+100;
 
@@ -102,8 +105,10 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	/*
 	 * Finally, set the GET_BUF  to signal to distributor that cache
 	 * line is ready for processing
+	 * Sync with distributor to release retptrs
 	 */
-	*retptr64 |= RTE_DISTRIB_GET_BUF;
+	__atomic_store_n(retptr64, *retptr64 | RTE_DISTRIB_GET_BUF,
+			__ATOMIC_RELEASE);
 }
 BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
 MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
@@ -125,8 +130,11 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 		return (pkts[0]) ? 1 : 0;
 	}
 
-	/* If bit is set, return */
-	if (buf->bufptr64[0] & RTE_DISTRIB_GET_BUF)
+	/* If bit is set, return
+	 * Sync with distributor to acquire bufptrs
+	 */
+	if (__atomic_load_n(&(buf->bufptr64[0]), __ATOMIC_ACQUIRE)
+		& RTE_DISTRIB_GET_BUF)
 		return -1;
 
 	/* since bufptr64 is signed, this should be an arithmetic shift */
@@ -141,8 +149,10 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 	 * so now we've got the contents of the cacheline into an  array of
 	 * mbuf pointers, so toggle the bit so scheduler can start working
 	 * on the next cacheline while we're working.
+	 * Sync with distributor on GET_BUF flag. Release bufptrs.
 	 */
-	buf->bufptr64[0] |= RTE_DISTRIB_GET_BUF;
+	__atomic_store_n(&(buf->bufptr64[0]),
+		buf->bufptr64[0] | RTE_DISTRIB_GET_BUF, __ATOMIC_RELEASE);
 
 	return count;
 }
@@ -201,6 +211,8 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 			return -EINVAL;
 	}
 
+	/* Sync with distributor to acquire retptrs */
+	__atomic_thread_fence(__ATOMIC_ACQUIRE);
 	for (i = 0; i < RTE_DIST_BURST_SIZE; i++)
 		/* Switch off the return bit first */
 		buf->retptr64[i] &= ~RTE_DISTRIB_RETURN_BUF;
@@ -209,8 +221,11 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 		buf->retptr64[i] = (((int64_t)(uintptr_t)oldpkt[i]) <<
 			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_RETURN_BUF;
 
-	/* set the GET_BUF but even if we got no returns */
-	buf->retptr64[0] |= RTE_DISTRIB_GET_BUF;
+	/* set the GET_BUF but even if we got no returns.
+	 * Sync with distributor on GET_BUF flag. Release retptrs.
+	 */
+	__atomic_store_n(&(buf->retptr64[0]),
+		buf->retptr64[0] | RTE_DISTRIB_GET_BUF, __ATOMIC_RELEASE);
 
 	return 0;
 }
@@ -300,7 +315,9 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
 	unsigned int count = 0;
 	unsigned int i;
 
-	if (buf->retptr64[0] & RTE_DISTRIB_GET_BUF) {
+	/* Sync on GET_BUF flag. Acquire retptrs. */
+	if (__atomic_load_n(&(buf->retptr64[0]), __ATOMIC_ACQUIRE)
+		& RTE_DISTRIB_GET_BUF) {
 		for (i = 0; i < RTE_DIST_BURST_SIZE; i++) {
 			if (buf->retptr64[i] & RTE_DISTRIB_RETURN_BUF) {
 				oldbuf = ((uintptr_t)(buf->retptr64[i] >>
@@ -313,8 +330,10 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
 		}
 		d->returns.start = ret_start;
 		d->returns.count = ret_count;
-		/* Clear for the worker to populate with more returns */
-		buf->retptr64[0] = 0;
+		/* Clear for the worker to populate with more returns.
+		 * Sync with distributor on GET_BUF flag. Release retptrs.
+		 */
+		__atomic_store_n(&(buf->retptr64[0]), 0, __ATOMIC_RELEASE);
 	}
 	return count;
 }
@@ -334,7 +353,9 @@ release(struct rte_distributor *d, unsigned int wkr)
 	struct rte_distributor_buffer *buf = &(d->bufs[wkr]);
 	unsigned int i;
 
-	while (!(d->bufs[wkr].bufptr64[0] & RTE_DISTRIB_GET_BUF))
+	/* Sync with worker on GET_BUF flag */
+	while (!(__atomic_load_n(&(d->bufs[wkr].bufptr64[0]), __ATOMIC_ACQUIRE)
+		& RTE_DISTRIB_GET_BUF))
 		rte_pause();
 
 	handle_returns(d, wkr);
@@ -354,8 +375,11 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 	d->backlog[wkr].count = 0;
 
-	/* Clear the GET bit */
-	buf->bufptr64[0] &= ~RTE_DISTRIB_GET_BUF;
+	/* Clear the GET bit.
+	 * Sync with worker on GET_BUF flag. Release bufptrs.
+	 */
+	__atomic_store_n(&(buf->bufptr64[0]),
+		buf->bufptr64[0] & ~RTE_DISTRIB_GET_BUF, __ATOMIC_RELEASE);
 	return  buf->count;
 
 }
@@ -382,7 +406,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 	if (unlikely(num_mbufs == 0)) {
 		/* Flush out all non-full cache-lines to workers. */
 		for (wid = 0 ; wid < d->num_workers; wid++) {
-			if ((d->bufs[wid].bufptr64[0] & RTE_DISTRIB_GET_BUF)) {
+			/* Sync with worker on GET_BUF flag. */
+			if (__atomic_load_n(&(d->bufs[wid].bufptr64[0]),
+				__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF) {
 				release(d, wid);
 				handle_returns(d, wid);
 			}
@@ -394,7 +420,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 		uint16_t matches[RTE_DIST_BURST_SIZE];
 		unsigned int pkts;
 
-		if (d->bufs[wkr].bufptr64[0] & RTE_DISTRIB_GET_BUF)
+		/* Sync with worker on GET_BUF flag. */
+		if (__atomic_load_n(&(d->bufs[wkr].bufptr64[0]),
+			__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF)
 			d->bufs[wkr].count = 0;
 
 		if ((num_mbufs - next_idx) < RTE_DIST_BURST_SIZE)
@@ -492,7 +520,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	/* Flush out all non-full cache-lines to workers. */
 	for (wid = 0 ; wid < d->num_workers; wid++)
-		if ((d->bufs[wid].bufptr64[0] & RTE_DISTRIB_GET_BUF))
+		/* Sync with worker on GET_BUF flag. */
+		if ((__atomic_load_n(&(d->bufs[wid].bufptr64[0]),
+			__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF))
 			release(d, wid);
 
 	return num_mbufs;
@@ -598,7 +628,9 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 
 	/* throw away returns, so workers can exit */
 	for (wkr = 0; wkr < d->num_workers; wkr++)
-		d->bufs[wkr].retptr64[0] = 0;
+		/* Sync with worker. Release retptrs. */
+		__atomic_store_n(&(d->bufs[wkr].retptr64[0]), 0,
+				__ATOMIC_RELEASE);
 }
 BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
 MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index 5be6efd47b..6fede5c38a 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -62,9 +62,12 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
-	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
+	while (unlikely(__atomic_load_n(&buf->bufptr64, __ATOMIC_RELAXED)
+			& RTE_DISTRIB_FLAGS_MASK))
 		rte_pause();
-	buf->bufptr64 = req;
+
+	/* Sync with distributor on GET_BUF flag. */
+	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
 VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
@@ -73,7 +76,9 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 		unsigned worker_id)
 {
 	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
-	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
+	/* Sync with distributor. Acquire bufptr64. */
+	if (__atomic_load_n(&buf->bufptr64, __ATOMIC_ACQUIRE)
+		& RTE_DISTRIB_GET_BUF)
 		return NULL;
 
 	/* since bufptr64 is signed, this should be an arithmetic shift */
@@ -101,7 +106,8 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
-	buf->bufptr64 = req;
+	/* Sync with distributor on RETURN_BUF flag. */
+	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 	return 0;
 }
 VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
@@ -145,7 +151,8 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
-	d->bufs[wkr].bufptr64 = 0;
+	/* Sync with worker. Release bufptr64. */
+	__atomic_store_n(&(d->bufs[wkr].bufptr64), 0, __ATOMIC_RELEASE);
 	if (unlikely(d->backlog[wkr].count != 0)) {
 		/* On return of a packet, we need to move the
 		 * queued packets for this core elsewhere.
@@ -189,17 +196,23 @@ process_returns(struct rte_distributor_v20 *d)
 			ret_count = d->returns.count;
 
 	for (wkr = 0; wkr < d->num_workers; wkr++) {
-
-		const int64_t data = d->bufs[wkr].bufptr64;
 		uintptr_t oldbuf = 0;
+		/* Sync with worker. Acquire bufptr64. */
+		const int64_t data = __atomic_load_n(&(d->bufs[wkr].bufptr64),
+							__ATOMIC_ACQUIRE);
 
 		if (data & RTE_DISTRIB_GET_BUF) {
 			flushed++;
 			if (d->backlog[wkr].count)
-				d->bufs[wkr].bufptr64 =
-						backlog_pop(&d->backlog[wkr]);
+				/* Sync with worker. Release bufptr64. */
+				__atomic_store_n(&(d->bufs[wkr].bufptr64),
+					backlog_pop(&d->backlog[wkr]),
+					__ATOMIC_RELEASE);
 			else {
-				d->bufs[wkr].bufptr64 = RTE_DISTRIB_GET_BUF;
+				/* Sync with worker on GET_BUF flag. */
+				__atomic_store_n(&(d->bufs[wkr].bufptr64),
+					RTE_DISTRIB_GET_BUF,
+					__ATOMIC_RELEASE);
 				d->in_flight_tags[wkr] = 0;
 				d->in_flight_bitmask &= ~(1UL << wkr);
 			}
@@ -235,9 +248,10 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 		return process_returns(d);
 
 	while (next_idx < num_mbufs || next_mb != NULL) {
-
-		int64_t data = d->bufs[wkr].bufptr64;
 		uintptr_t oldbuf = 0;
+		/* Sync with worker. Acquire bufptr64. */
+		int64_t data = __atomic_load_n(&(d->bufs[wkr].bufptr64),
+						__ATOMIC_ACQUIRE);
 
 		if (!next_mb) {
 			next_mb = mbufs[next_idx++];
@@ -283,11 +297,16 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 				(d->backlog[wkr].count || next_mb)) {
 
 			if (d->backlog[wkr].count)
-				d->bufs[wkr].bufptr64 =
-						backlog_pop(&d->backlog[wkr]);
+				/* Sync with worker. Release bufptr64. */
+				__atomic_store_n(&(d->bufs[wkr].bufptr64),
+						backlog_pop(&d->backlog[wkr]),
+						__ATOMIC_RELEASE);
 
 			else {
-				d->bufs[wkr].bufptr64 = next_value;
+				/* Sync with worker. Release bufptr64.  */
+				__atomic_store_n(&(d->bufs[wkr].bufptr64),
+						next_value,
+						__ATOMIC_RELEASE);
 				d->in_flight_tags[wkr] = new_tag;
 				d->in_flight_bitmask |= (1UL << wkr);
 				next_mb = NULL;
@@ -308,13 +327,19 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	 * if they are ready */
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		if (d->backlog[wkr].count &&
-				(d->bufs[wkr].bufptr64 & RTE_DISTRIB_GET_BUF)) {
+				/* Sync with worker. Acquire bufptr64. */
+				(__atomic_load_n(&(d->bufs[wkr].bufptr64),
+				__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF)) {
 
 			int64_t oldbuf = d->bufs[wkr].bufptr64 >>
 					RTE_DISTRIB_FLAG_BITS;
+
 			store_return(oldbuf, d, &ret_start, &ret_count);
 
-			d->bufs[wkr].bufptr64 = backlog_pop(&d->backlog[wkr]);
+			/* Sync with worker. Release bufptr64. */
+			__atomic_store_n(&(d->bufs[wkr].bufptr64),
+				backlog_pop(&d->backlog[wkr]),
+				__ATOMIC_RELEASE);
 		}
 
 	d->returns.start = ret_start;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.511895027 +0000
+++ 0055-lib-distributor-fix-deadlock-on-aarch64.patch	2019-12-19 14:32:26.085297429 +0000
@@ -1,8 +1,10 @@
-From 52833924822490391df3dce3eec3a2ee7777acc5 Mon Sep 17 00:00:00 2001
+From f76ab2f8e6c01f149358f5bd549d8bf362b61894 Mon Sep 17 00:00:00 2001
 From: Ruifeng Wang <ruifeng.wang@arm.com>
 Date: Tue, 15 Oct 2019 17:28:25 +0800
 Subject: [PATCH] lib/distributor: fix deadlock on aarch64
 
+[ upstream commit 52833924822490391df3dce3eec3a2ee7777acc5 ]
+
 Distributor and worker threads rely on data structs in cache line
 for synchronization. The shared data structs were not protected.
 This caused deadlock issue on weaker memory ordering platforms as
@@ -12,35 +14,20 @@
 
 Bugzilla ID: 342
 Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
 Reviewed-by: Gavin Hu <gavin.hu@arm.com>
 Acked-by: David Hunt <david.hunt@intel.com>
 ---
- lib/librte_distributor/meson.build           |  5 ++
  lib/librte_distributor/rte_distributor.c     | 68 ++++++++++++++------
  lib/librte_distributor/rte_distributor_v20.c | 59 ++++++++++++-----
- 3 files changed, 97 insertions(+), 35 deletions(-)
+ 2 files changed, 92 insertions(+), 35 deletions(-)
 
-diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
-index dba7e3b2aa..26577dbc19 100644
---- a/lib/librte_distributor/meson.build
-+++ b/lib/librte_distributor/meson.build
-@@ -9,3 +9,8 @@ else
- endif
- headers = files('rte_distributor.h')
- deps += ['mbuf']
-+
-+# for clang 32-bit compiles we need libatomic for 64-bit atomic ops
-+if cc.get_id() == 'clang' and dpdk_conf.get('RTE_ARCH_64') == false
-+	ext_deps += cc.find_library('atomic')
-+endif
 diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
-index 21eb1fb0a1..0a03625c9f 100644
+index 6ad2301315..00fc003f23 100644
 --- a/lib/librte_distributor/rte_distributor.c
 +++ b/lib/librte_distributor/rte_distributor.c
-@@ -49,8 +49,11 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+@@ -76,8 +76,11 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
  	}
  
  	retptr64 = &(buf->retptr64[0]);
@@ -54,7 +41,7 @@
  		rte_pause();
  		uint64_t t = rte_rdtsc()+100;
  
-@@ -75,8 +78,10 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+@@ -102,8 +105,10 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
  	/*
  	 * Finally, set the GET_BUF  to signal to distributor that cache
  	 * line is ready for processing
@@ -66,7 +53,7 @@
  }
  BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
  MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-@@ -98,8 +103,11 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+@@ -125,8 +130,11 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
  		return (pkts[0]) ? 1 : 0;
  	}
  
@@ -80,7 +67,7 @@
  		return -1;
  
  	/* since bufptr64 is signed, this should be an arithmetic shift */
-@@ -114,8 +122,10 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+@@ -141,8 +149,10 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
  	 * so now we've got the contents of the cacheline into an  array of
  	 * mbuf pointers, so toggle the bit so scheduler can start working
  	 * on the next cacheline while we're working.
@@ -92,7 +79,7 @@
  
  	return count;
  }
-@@ -174,6 +184,8 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+@@ -201,6 +211,8 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
  			return -EINVAL;
  	}
  
@@ -101,7 +88,7 @@
  	for (i = 0; i < RTE_DIST_BURST_SIZE; i++)
  		/* Switch off the return bit first */
  		buf->retptr64[i] &= ~RTE_DISTRIB_RETURN_BUF;
-@@ -182,8 +194,11 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+@@ -209,8 +221,11 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
  		buf->retptr64[i] = (((int64_t)(uintptr_t)oldpkt[i]) <<
  			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_RETURN_BUF;
  
@@ -115,7 +102,7 @@
  
  	return 0;
  }
-@@ -273,7 +288,9 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
+@@ -300,7 +315,9 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
  	unsigned int count = 0;
  	unsigned int i;
  
@@ -126,7 +113,7 @@
  		for (i = 0; i < RTE_DIST_BURST_SIZE; i++) {
  			if (buf->retptr64[i] & RTE_DISTRIB_RETURN_BUF) {
  				oldbuf = ((uintptr_t)(buf->retptr64[i] >>
-@@ -286,8 +303,10 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
+@@ -313,8 +330,10 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
  		}
  		d->returns.start = ret_start;
  		d->returns.count = ret_count;
@@ -139,7 +126,7 @@
  	}
  	return count;
  }
-@@ -307,7 +326,9 @@ release(struct rte_distributor *d, unsigned int wkr)
+@@ -334,7 +353,9 @@ release(struct rte_distributor *d, unsigned int wkr)
  	struct rte_distributor_buffer *buf = &(d->bufs[wkr]);
  	unsigned int i;
  
@@ -150,7 +137,7 @@
  		rte_pause();
  
  	handle_returns(d, wkr);
-@@ -327,8 +348,11 @@ release(struct rte_distributor *d, unsigned int wkr)
+@@ -354,8 +375,11 @@ release(struct rte_distributor *d, unsigned int wkr)
  
  	d->backlog[wkr].count = 0;
  
@@ -164,18 +151,18 @@
  	return  buf->count;
  
  }
-@@ -355,7 +379,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
+@@ -382,7 +406,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
  	if (unlikely(num_mbufs == 0)) {
  		/* Flush out all non-full cache-lines to workers. */
  		for (wid = 0 ; wid < d->num_workers; wid++) {
--			if (d->bufs[wid].bufptr64[0] & RTE_DISTRIB_GET_BUF) {
+-			if ((d->bufs[wid].bufptr64[0] & RTE_DISTRIB_GET_BUF)) {
 +			/* Sync with worker on GET_BUF flag. */
 +			if (__atomic_load_n(&(d->bufs[wid].bufptr64[0]),
 +				__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF) {
  				release(d, wid);
  				handle_returns(d, wid);
  			}
-@@ -367,7 +393,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
+@@ -394,7 +420,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
  		uint16_t matches[RTE_DIST_BURST_SIZE];
  		unsigned int pkts;
  
@@ -186,7 +173,7 @@
  			d->bufs[wkr].count = 0;
  
  		if ((num_mbufs - next_idx) < RTE_DIST_BURST_SIZE)
-@@ -465,7 +493,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
+@@ -492,7 +520,9 @@ rte_distributor_process_v1705(struct rte_distributor *d,
  
  	/* Flush out all non-full cache-lines to workers. */
  	for (wid = 0 ; wid < d->num_workers; wid++)
@@ -197,7 +184,7 @@
  			release(d, wid);
  
  	return num_mbufs;
-@@ -574,7 +604,9 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+@@ -598,7 +628,9 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
  
  	/* throw away returns, so workers can exit */
  	for (wkr = 0; wkr < d->num_workers; wkr++)
@@ -209,10 +196,10 @@
  BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
  MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
 diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
-index cdc0969a89..ef6d5cb4b8 100644
+index 5be6efd47b..6fede5c38a 100644
 --- a/lib/librte_distributor/rte_distributor_v20.c
 +++ b/lib/librte_distributor/rte_distributor_v20.c
-@@ -34,9 +34,12 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+@@ -62,9 +62,12 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
  	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
  			| RTE_DISTRIB_GET_BUF;
@@ -227,7 +214,7 @@
  }
  VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
  
-@@ -45,7 +48,9 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+@@ -73,7 +76,9 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
  		unsigned worker_id)
  {
  	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
@@ -238,7 +225,7 @@
  		return NULL;
  
  	/* since bufptr64 is signed, this should be an arithmetic shift */
-@@ -73,7 +78,8 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+@@ -101,7 +106,8 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
  	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
  			| RTE_DISTRIB_RETURN_BUF;
@@ -248,7 +235,7 @@
  	return 0;
  }
  VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
-@@ -117,7 +123,8 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+@@ -145,7 +151,8 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  {
  	d->in_flight_tags[wkr] = 0;
  	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -258,7 +245,7 @@
  	if (unlikely(d->backlog[wkr].count != 0)) {
  		/* On return of a packet, we need to move the
  		 * queued packets for this core elsewhere.
-@@ -161,17 +168,23 @@ process_returns(struct rte_distributor_v20 *d)
+@@ -189,17 +196,23 @@ process_returns(struct rte_distributor_v20 *d)
  			ret_count = d->returns.count;
  
  	for (wkr = 0; wkr < d->num_workers; wkr++) {
@@ -287,7 +274,7 @@
  				d->in_flight_tags[wkr] = 0;
  				d->in_flight_bitmask &= ~(1UL << wkr);
  			}
-@@ -207,9 +220,10 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
+@@ -235,9 +248,10 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  		return process_returns(d);
  
  	while (next_idx < num_mbufs || next_mb != NULL) {
@@ -300,7 +287,7 @@
  
  		if (!next_mb) {
  			next_mb = mbufs[next_idx++];
-@@ -255,11 +269,16 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
+@@ -283,11 +297,16 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  				(d->backlog[wkr].count || next_mb)) {
  
  			if (d->backlog[wkr].count)
@@ -320,7 +307,7 @@
  				d->in_flight_tags[wkr] = new_tag;
  				d->in_flight_bitmask |= (1UL << wkr);
  				next_mb = NULL;
-@@ -280,13 +299,19 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
+@@ -308,13 +327,19 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  	 * if they are ready */
  	for (wkr = 0; wkr < d->num_workers; wkr++)
  		if (d->backlog[wkr].count &&

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

* [dpdk-stable] patch 'bus/pci: remove useless link dependency on ethdev' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (53 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'lib/distributor: fix deadlock on aarch64' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/bonding: fix LSC related cases' " luca.boccassi
                   ` (82 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Seth Howell; +Cc: Gaetan Rivet, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8a9c8c090d5c96245e9bd1e38ef20fae8faa0c01 Mon Sep 17 00:00:00 2001
From: Seth Howell <seth.howell@intel.com>
Date: Fri, 11 Oct 2019 13:56:07 -0700
Subject: [PATCH] bus/pci: remove useless link dependency on ethdev

[ upstream commit c345c7d1acf43b4d30e1ecdd5a8cd3402234a6aa ]

The makefile in drivers/bus/pci specified rte_ethdev as a dependency for
the library. However there are no actual symbols from librte_ethdev used
in librte_bus_pci.

Including librte_ethdev as a dependency only becomes a problem in some
niche cases like when attempting to build the rte_bus_pci library as a
shared object without building the rte_ethdev library.

I specifically ran into this when trying to build the DPDK included as
an SPDK submodule on a FreeBSD machine. I figure that since there are no
real dependencies between the two, we should enable building
librte_bus_pci without librte_ethdev.

Fixes: c752998b5e2e ("pci: introduce library and driver")

Signed-off-by: Seth Howell <seth.howell@intel.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
 drivers/bus/pci/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/bus/pci/Makefile b/drivers/bus/pci/Makefile
index f3df1c4ce4..37663deb08 100644
--- a/drivers/bus/pci/Makefile
+++ b/drivers/bus/pci/Makefile
@@ -50,7 +50,7 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common
 CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(SYSTEM)app/eal
 
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
-LDLIBS += -lrte_ethdev -lrte_pci
+LDLIBS += -lrte_pci
 
 include $(RTE_SDK)/drivers/bus/pci/$(SYSTEM)/Makefile
 SRCS-$(CONFIG_RTE_LIBRTE_PCI_BUS) := $(addprefix $(SYSTEM)/,$(SRCS))
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.548292637 +0000
+++ 0056-bus-pci-remove-useless-link-dependency-on-ethdev.patch	2019-12-19 14:32:26.089297508 +0000
@@ -1,8 +1,10 @@
-From c345c7d1acf43b4d30e1ecdd5a8cd3402234a6aa Mon Sep 17 00:00:00 2001
+From 8a9c8c090d5c96245e9bd1e38ef20fae8faa0c01 Mon Sep 17 00:00:00 2001
 From: Seth Howell <seth.howell@intel.com>
 Date: Fri, 11 Oct 2019 13:56:07 -0700
 Subject: [PATCH] bus/pci: remove useless link dependency on ethdev
 
+[ upstream commit c345c7d1acf43b4d30e1ecdd5a8cd3402234a6aa ]
+
 The makefile in drivers/bus/pci specified rte_ethdev as a dependency for
 the library. However there are no actual symbols from librte_ethdev used
 in librte_bus_pci.
@@ -17,7 +19,6 @@
 librte_bus_pci without librte_ethdev.
 
 Fixes: c752998b5e2e ("pci: introduce library and driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Seth Howell <seth.howell@intel.com>
 Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
@@ -26,15 +27,15 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/bus/pci/Makefile b/drivers/bus/pci/Makefile
-index 68c1f3fde4..45d12427a1 100644
+index f3df1c4ce4..37663deb08 100644
 --- a/drivers/bus/pci/Makefile
 +++ b/drivers/bus/pci/Makefile
-@@ -25,7 +25,7 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common
- CFLAGS += -DALLOW_EXPERIMENTAL_API
+@@ -50,7 +50,7 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common
+ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(SYSTEM)app/eal
  
  LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
--LDLIBS += -lrte_ethdev -lrte_pci -lrte_kvargs
-+LDLIBS += -lrte_pci -lrte_kvargs
+-LDLIBS += -lrte_ethdev -lrte_pci
++LDLIBS += -lrte_pci
  
  include $(RTE_SDK)/drivers/bus/pci/$(SYSTEM)/Makefile
  SRCS-$(CONFIG_RTE_LIBRTE_PCI_BUS) := $(addprefix $(SYSTEM)/,$(SRCS))

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

* [dpdk-stable] patch 'test/bonding: fix LSC related cases' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (54 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'bus/pci: remove useless link dependency on ethdev' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/tap: fix blocked Rx packets' " luca.boccassi
                   ` (81 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Krzysztof Kanas; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 31ac35409378d56405e3da055a640f7a9f2a66be Mon Sep 17 00:00:00 2001
From: Krzysztof Kanas <kkanas@marvell.com>
Date: Fri, 23 Aug 2019 10:16:58 +0200
Subject: [PATCH] test/bonding: fix LSC related cases

[ upstream commit 88524d6b8b339278c95df3a0a894054c365daf13 ]

On rare situation test_link_bonding test case fail due to timespec
tv_nsec overflow, which causes pthread_cond_timedwait to return EINVAL
and test to fail.

Fixes: 76d29903f5f5 ("bond: support link status interrupt")

Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 test/test/test_link_bonding.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/test/test/test_link_bonding.c b/test/test/test_link_bonding.c
index c6e3a725bd..0d5101cee0 100644
--- a/test/test/test_link_bonding.c
+++ b/test/test/test_link_bonding.c
@@ -1207,6 +1207,11 @@ lsc_timeout(int wait_us)
 	ts.tv_sec = tp.tv_sec;
 	ts.tv_nsec = tp.tv_usec * 1000;
 	ts.tv_nsec += wait_us * 1000;
+	/* Normalize tv_nsec to [0,999999999L] */
+	while (ts.tv_nsec > 1000000000L) {
+		ts.tv_nsec -= 1000000000L;
+		ts.tv_sec += 1;
+	}
 
 	pthread_mutex_lock(&mutex);
 	if (test_lsc_interrupt_count < 1)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.586305112 +0000
+++ 0057-test-bonding-fix-LSC-related-cases.patch	2019-12-19 14:32:26.105297825 +0000
@@ -1,26 +1,27 @@
-From 88524d6b8b339278c95df3a0a894054c365daf13 Mon Sep 17 00:00:00 2001
+From 31ac35409378d56405e3da055a640f7a9f2a66be Mon Sep 17 00:00:00 2001
 From: Krzysztof Kanas <kkanas@marvell.com>
 Date: Fri, 23 Aug 2019 10:16:58 +0200
 Subject: [PATCH] test/bonding: fix LSC related cases
 
+[ upstream commit 88524d6b8b339278c95df3a0a894054c365daf13 ]
+
 On rare situation test_link_bonding test case fail due to timespec
 tv_nsec overflow, which causes pthread_cond_timedwait to return EINVAL
 and test to fail.
 
 Fixes: 76d29903f5f5 ("bond: support link status interrupt")
-Cc: stable@dpdk.org
 
 Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
 ---
- app/test/test_link_bonding.c | 5 +++++
+ test/test/test_link_bonding.c | 5 +++++
  1 file changed, 5 insertions(+)
 
-diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
-index a9b9d0c42a..b5ce9dbb47 100644
---- a/app/test/test_link_bonding.c
-+++ b/app/test/test_link_bonding.c
-@@ -1202,6 +1202,11 @@ lsc_timeout(int wait_us)
+diff --git a/test/test/test_link_bonding.c b/test/test/test_link_bonding.c
+index c6e3a725bd..0d5101cee0 100644
+--- a/test/test/test_link_bonding.c
++++ b/test/test/test_link_bonding.c
+@@ -1207,6 +1207,11 @@ lsc_timeout(int wait_us)
  	ts.tv_sec = tp.tv_sec;
  	ts.tv_nsec = tp.tv_usec * 1000;
  	ts.tv_nsec += wait_us * 1000;

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

* [dpdk-stable] patch 'net/tap: fix blocked Rx packets' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (55 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'test/bonding: fix LSC related cases' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix stats errors handling' " luca.boccassi
                   ` (80 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Marcin Smoczynski
  Cc: Mariusz Drost, Konstantin Ananyev, Keith Wiles, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e728ce98e6c6ed5990619a6419b74a8a1e77cc29 Mon Sep 17 00:00:00 2001
From: Marcin Smoczynski <marcinx.smoczynski@intel.com>
Date: Mon, 23 Sep 2019 15:22:47 +0200
Subject: [PATCH] net/tap: fix blocked Rx packets

[ upstream commit d070c3413164e3f8f7fa4c4325d7df50a8275f39 ]

When OS sends more packets than are being read with a single
'rte_eth_rx_burst' call, rx packets are getting stucked in the tap pmd
and are unable to receive, because trigger_seen is getting updated
and consecutive calls are not getting any packets.

Do not update trigger_seen unless less than a max number of packets were
received allowing next call to receive the rest.

Remove unnecessary compiler barrier.

Fixes: a0d8e807d9de ("net/tap: add Rx trigger")

Signed-off-by: Marcin Smoczynski <marcinx.smoczynski@intel.com>
Tested-by: Mariusz Drost <mariuszx.drost@intel.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Keith Wiles <keith.wiles@intel.com>
---
 drivers/net/tap/rte_eth_tap.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 220421623b..341a5e00ce 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -308,9 +308,7 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 
 	if (trigger == rxq->trigger_seen)
 		return 0;
-	if (trigger)
-		rxq->trigger_seen = trigger;
-	rte_compiler_barrier();
+
 	for (num_rx = 0; num_rx < nb_pkts; ) {
 		struct rte_mbuf *mbuf = rxq->pool;
 		struct rte_mbuf *seg = NULL;
@@ -386,6 +384,9 @@ end:
 	rxq->stats.ipackets += num_rx;
 	rxq->stats.ibytes += num_rx_bytes;
 
+	if (trigger && num_rx < nb_pkts)
+		rxq->trigger_seen = trigger;
+
 	return num_rx;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.622902251 +0000
+++ 0058-net-tap-fix-blocked-Rx-packets.patch	2019-12-19 14:32:26.109297904 +0000
@@ -1,8 +1,10 @@
-From d070c3413164e3f8f7fa4c4325d7df50a8275f39 Mon Sep 17 00:00:00 2001
+From e728ce98e6c6ed5990619a6419b74a8a1e77cc29 Mon Sep 17 00:00:00 2001
 From: Marcin Smoczynski <marcinx.smoczynski@intel.com>
 Date: Mon, 23 Sep 2019 15:22:47 +0200
 Subject: [PATCH] net/tap: fix blocked Rx packets
 
+[ upstream commit d070c3413164e3f8f7fa4c4325d7df50a8275f39 ]
+
 When OS sends more packets than are being read with a single
 'rte_eth_rx_burst' call, rx packets are getting stucked in the tap pmd
 and are unable to receive, because trigger_seen is getting updated
@@ -14,7 +16,6 @@
 Remove unnecessary compiler barrier.
 
 Fixes: a0d8e807d9de ("net/tap: add Rx trigger")
-Cc: stable@dpdk.org
 
 Signed-off-by: Marcin Smoczynski <marcinx.smoczynski@intel.com>
 Tested-by: Mariusz Drost <mariuszx.drost@intel.com>
@@ -25,22 +26,21 @@
  1 file changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
-index 922371c295..a13d8d50d7 100644
+index 220421623b..341a5e00ce 100644
 --- a/drivers/net/tap/rte_eth_tap.c
 +++ b/drivers/net/tap/rte_eth_tap.c
-@@ -353,10 +353,8 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+@@ -308,9 +308,7 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
  
  	if (trigger == rxq->trigger_seen)
  		return 0;
 -	if (trigger)
 -		rxq->trigger_seen = trigger;
-+
- 	process_private = rte_eth_devices[rxq->in_port].process_private;
 -	rte_compiler_barrier();
++
  	for (num_rx = 0; num_rx < nb_pkts; ) {
  		struct rte_mbuf *mbuf = rxq->pool;
  		struct rte_mbuf *seg = NULL;
-@@ -433,6 +431,9 @@ end:
+@@ -386,6 +384,9 @@ end:
  	rxq->stats.ipackets += num_rx;
  	rxq->stats.ibytes += num_rx_bytes;
  

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

* [dpdk-stable] patch 'net/bnxt: fix stats errors handling' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (56 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/tap: fix blocked Rx packets' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:56   ` Kalesh Anakkur Purayil
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: return error if setting link up fails' " luca.boccassi
                   ` (79 subsequent siblings)
  137 siblings, 1 reply; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ed1b2592aee44b786ac897651e9e5fc7ed350e9c Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:42 -0700
Subject: [PATCH] net/bnxt: fix stats errors handling

[ upstream commit 9f55e6ac7500e828d42e95100d5cb061e912be5c ]

This patch fixes few checks and few return values while getting
and clearing device statistics.

1. Fixed to return standard error code.
2. Clubbed few error checks
3. Removed an unnecessary return check

Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")
Fixes: 88920136688c ("net/bnxt: support xstats get by id")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_stats.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index f8bb4ed9e5..6497926162 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -360,16 +360,17 @@ int bnxt_dev_xstats_get_names_op(__rte_unused struct rte_eth_dev *eth_dev,
 void bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
 {
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
+	int ret;
 
-	if (bp->flags & BNXT_FLAG_PORT_STATS && !BNXT_NPAR_PF(bp))
-		bnxt_hwrm_port_clr_stats(bp);
-
-	if (BNXT_VF(bp))
-		RTE_LOG(ERR, PMD, "Operation not supported on a VF device\n");
-	if (BNXT_NPAR_PF(bp))
-		RTE_LOG(ERR, PMD, "Operation not supported on a MF device\n");
-	if (!(bp->flags & BNXT_FLAG_PORT_STATS))
+	if (BNXT_VF(bp) || !BNXT_NPAR_PF(bp) ||
+	    !(bp->flags & BNXT_FLAG_PORT_STATS)) {
 		RTE_LOG(ERR, PMD, "Operation not supported\n");
+	}
+
+	ret = bnxt_hwrm_port_clr_stats(bp);
+	if (ret != 0)
+		RTE_LOG(ERR, PMD, "Failed to reset xstats: %s\n",
+			    strerror(-ret));
 }
 
 int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids,
@@ -389,7 +390,7 @@ int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids,
 	for (i = 0; i < limit; i++) {
 		if (ids[i] >= stat_cnt) {
 			RTE_LOG(ERR, PMD, "id value isn't valid");
-			return -1;
+			return -EINVAL;
 		}
 		values[i] = values_copy[ids[i]];
 	}
@@ -415,7 +416,7 @@ int bnxt_dev_xstats_get_names_by_id_op(struct rte_eth_dev *dev,
 	for (i = 0; i < limit; i++) {
 		if (ids[i] >= stat_cnt) {
 			RTE_LOG(ERR, PMD, "id value isn't valid");
-			return -1;
+			return -EINVAL;
 		}
 		strcpy(xstats_names[i].name,
 				xstats_names_copy[ids[i]].name);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.664004493 +0000
+++ 0059-net-bnxt-fix-stats-errors-handling.patch	2019-12-19 14:32:26.109297904 +0000
@@ -1,8 +1,10 @@
-From 9f55e6ac7500e828d42e95100d5cb061e912be5c Mon Sep 17 00:00:00 2001
+From ed1b2592aee44b786ac897651e9e5fc7ed350e9c Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:42 -0700
 Subject: [PATCH] net/bnxt: fix stats errors handling
 
+[ upstream commit 9f55e6ac7500e828d42e95100d5cb061e912be5c ]
+
 This patch fixes few checks and few return values while getting
 and clearing device statistics.
 
@@ -12,90 +14,57 @@
 
 Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")
 Fixes: 88920136688c ("net/bnxt: support xstats get by id")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
- drivers/net/bnxt/bnxt_stats.c | 36 +++++++++++------------------------
- 1 file changed, 11 insertions(+), 25 deletions(-)
+ drivers/net/bnxt/bnxt_stats.c | 21 +++++++++++----------
+ 1 file changed, 11 insertions(+), 10 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
-index 21012e1fee..f486a5634b 100644
+index f8bb4ed9e5..6497926162 100644
 --- a/drivers/net/bnxt/bnxt_stats.c
 +++ b/drivers/net/bnxt/bnxt_stats.c
-@@ -360,7 +360,7 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev,
- 	memset(bnxt_stats, 0, sizeof(*bnxt_stats));
- 	if (!(bp->flags & BNXT_FLAG_INIT_DONE)) {
- 		PMD_DRV_LOG(ERR, "Device Initialization not complete!\n");
--		return -1;
-+		return -EIO;
- 	}
- 
- 	num_q_stats = RTE_MIN(bp->rx_cp_nr_rings,
-@@ -390,9 +390,8 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev,
- 		if (unlikely(rc))
- 			return rc;
- 	}
-+
- 	rc = bnxt_hwrm_func_qstats(bp, 0xffff, bnxt_stats);
--	if (unlikely(rc))
--		return rc;
- 	return rc;
- }
+@@ -360,16 +360,17 @@ int bnxt_dev_xstats_get_names_op(__rte_unused struct rte_eth_dev *eth_dev,
+ void bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
+ {
+ 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
++	int ret;
  
-@@ -573,30 +572,17 @@ int bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
- 	if (ret)
- 		return ret;
- 
--	if (bp->flags & BNXT_FLAG_PORT_STATS && BNXT_SINGLE_PF(bp)) {
--		ret = bnxt_hwrm_port_clr_stats(bp);
--		if (ret != 0) {
--			PMD_DRV_LOG(ERR, "Operation failed: %s\n",
--				    strerror(-ret));
--			return ret;
--		}
--	}
--
--	ret = 0;
+-	if (bp->flags & BNXT_FLAG_PORT_STATS && !BNXT_NPAR_PF(bp))
+-		bnxt_hwrm_port_clr_stats(bp);
 -
--	if (BNXT_VF(bp)) {
--		PMD_DRV_LOG(ERR, "Operation not supported on a VF device\n");
--		ret = -ENOTSUP;
--	}
--	if (!BNXT_SINGLE_PF(bp)) {
--		PMD_DRV_LOG(ERR, "Operation not supported on a MF device\n");
--		ret = -ENOTSUP;
--	}
--	if (!(bp->flags & BNXT_FLAG_PORT_STATS)) {
-+	if (BNXT_VF(bp) || !BNXT_SINGLE_PF(bp) ||
+-	if (BNXT_VF(bp))
+-		RTE_LOG(ERR, PMD, "Operation not supported on a VF device\n");
+-	if (BNXT_NPAR_PF(bp))
+-		RTE_LOG(ERR, PMD, "Operation not supported on a MF device\n");
+-	if (!(bp->flags & BNXT_FLAG_PORT_STATS))
++	if (BNXT_VF(bp) || !BNXT_NPAR_PF(bp) ||
 +	    !(bp->flags & BNXT_FLAG_PORT_STATS)) {
- 		PMD_DRV_LOG(ERR, "Operation not supported\n");
- 		ret = -ENOTSUP;
- 	}
- 
+ 		RTE_LOG(ERR, PMD, "Operation not supported\n");
++	}
++
 +	ret = bnxt_hwrm_port_clr_stats(bp);
 +	if (ret != 0)
-+		PMD_DRV_LOG(ERR, "Failed to reset xstats: %s\n",
++		RTE_LOG(ERR, PMD, "Failed to reset xstats: %s\n",
 +			    strerror(-ret));
-+
- 	return ret;
  }
  
-@@ -625,7 +611,7 @@ int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids,
+ int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids,
+@@ -389,7 +390,7 @@ int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids,
  	for (i = 0; i < limit; i++) {
  		if (ids[i] >= stat_cnt) {
- 			PMD_DRV_LOG(ERR, "id value isn't valid");
+ 			RTE_LOG(ERR, PMD, "id value isn't valid");
 -			return -1;
 +			return -EINVAL;
  		}
  		values[i] = values_copy[ids[i]];
  	}
-@@ -659,7 +645,7 @@ int bnxt_dev_xstats_get_names_by_id_op(struct rte_eth_dev *dev,
+@@ -415,7 +416,7 @@ int bnxt_dev_xstats_get_names_by_id_op(struct rte_eth_dev *dev,
  	for (i = 0; i < limit; i++) {
  		if (ids[i] >= stat_cnt) {
- 			PMD_DRV_LOG(ERR, "id value isn't valid");
+ 			RTE_LOG(ERR, PMD, "id value isn't valid");
 -			return -1;
 +			return -EINVAL;
  		}

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

* [dpdk-stable] patch 'net/bnxt: return error if setting link up fails' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (57 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix stats errors handling' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove redundant header file inclusion' " luca.boccassi
                   ` (78 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5740d27982bc7527c00b25d34c5674e6ca078547 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:44 -0700
Subject: [PATCH] net/bnxt: return error if setting link up fails

[ upstream commit acf2f2a451c0328e175f8d53ad19f3c160773697 ]

Currently bnxt driver does not return error in case setting link up fails.

Fixes: 5c206086feaa ("net/bnxt: add link state operations")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index cbeb97b88e..3b74ea4a0d 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -629,7 +629,7 @@ static int bnxt_dev_set_link_up_op(struct rte_eth_dev *eth_dev)
 		eth_dev->data->dev_link.link_status = 1;
 
 	bnxt_print_link_info(eth_dev);
-	return 0;
+	return rc;
 }
 
 static int bnxt_dev_set_link_down_op(struct rte_eth_dev *eth_dev)
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.699280279 +0000
+++ 0060-net-bnxt-return-error-if-setting-link-up-fails.patch	2019-12-19 14:32:26.113297984 +0000
@@ -1,12 +1,13 @@
-From acf2f2a451c0328e175f8d53ad19f3c160773697 Mon Sep 17 00:00:00 2001
+From 5740d27982bc7527c00b25d34c5674e6ca078547 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:44 -0700
 Subject: [PATCH] net/bnxt: return error if setting link up fails
 
+[ upstream commit acf2f2a451c0328e175f8d53ad19f3c160773697 ]
+
 Currently bnxt driver does not return error in case setting link up fails.
 
 Fixes: 5c206086feaa ("net/bnxt: add link state operations")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
@@ -15,10 +16,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 294a9505f9..4b39586479 100644
+index cbeb97b88e..3b74ea4a0d 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -930,7 +930,7 @@ static int bnxt_dev_set_link_up_op(struct rte_eth_dev *eth_dev)
+@@ -629,7 +629,7 @@ static int bnxt_dev_set_link_up_op(struct rte_eth_dev *eth_dev)
  		eth_dev->data->dev_link.link_status = 1;
  
  	bnxt_print_link_info(eth_dev);

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

* [dpdk-stable] patch 'net/bnxt: remove redundant header file inclusion' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (58 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: return error if setting link up fails' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: get default HWRM command timeout from FW' " luca.boccassi
                   ` (77 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From c33a0f118c662d746455390c2fb822ead70f5082 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:45 -0700
Subject: [PATCH] net/bnxt: remove redundant header file inclusion

[ upstream commit f7b1b6b12da22be3016154c1399d0415fae0f927 ]

bnxt.h header includes bnxt_cpr.h and bnxt_util.h.
There is no need to include these headers file explicitly.

This commit does not cause any functional change.

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_cpr.c    | 1 -
 drivers/net/bnxt/bnxt_ethdev.c | 1 -
 drivers/net/bnxt/bnxt_hwrm.c   | 1 -
 drivers/net/bnxt/bnxt_irq.c    | 1 -
 drivers/net/bnxt/bnxt_ring.c   | 1 -
 drivers/net/bnxt/bnxt_rxq.c    | 1 -
 drivers/net/bnxt/bnxt_rxr.c    | 1 -
 drivers/net/bnxt/bnxt_txq.c    | 1 -
 drivers/net/bnxt/bnxt_txr.c    | 1 -
 9 files changed, 9 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
index ba702df753..a00fdb4d30 100644
--- a/drivers/net/bnxt/bnxt_cpr.c
+++ b/drivers/net/bnxt/bnxt_cpr.c
@@ -34,7 +34,6 @@
 #include <rte_malloc.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_hwrm.h"
 #include "bnxt_ring.h"
 #include "hsi_struct_def_dpdk.h"
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 3b74ea4a0d..f1bac2fcaa 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -41,7 +41,6 @@
 #include <rte_cycles.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_filter.h"
 #include "bnxt_hwrm.h"
 #include "bnxt_irq.h"
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 3b94c5c96b..7d824aeb45 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -41,7 +41,6 @@
 #include <rte_version.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_filter.h"
 #include "bnxt_hwrm.h"
 #include "bnxt_rxq.h"
diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c
index c332431dba..7d69505fab 100644
--- a/drivers/net/bnxt/bnxt_irq.c
+++ b/drivers/net/bnxt/bnxt_irq.c
@@ -36,7 +36,6 @@
 #include <rte_malloc.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_irq.h"
 #include "bnxt_ring.h"
 #include "hsi_struct_def_dpdk.h"
diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
index 59d1035fdf..b5527d25a6 100644
--- a/drivers/net/bnxt/bnxt_ring.c
+++ b/drivers/net/bnxt/bnxt_ring.c
@@ -36,7 +36,6 @@
 #include <unistd.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_hwrm.h"
 #include "bnxt_ring.h"
 #include "bnxt_rxq.h"
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index 5088e9dfdc..cdc5bbfc9f 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -36,7 +36,6 @@
 #include <rte_malloc.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_filter.h"
 #include "bnxt_hwrm.h"
 #include "bnxt_ring.h"
diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 4aaad3563e..95bba9d58f 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -40,7 +40,6 @@
 #include <rte_memory.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_ring.h"
 #include "bnxt_rxr.h"
 #include "bnxt_rxq.h"
diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
index 99dddddfc5..4ecb037674 100644
--- a/drivers/net/bnxt/bnxt_txq.c
+++ b/drivers/net/bnxt/bnxt_txq.c
@@ -36,7 +36,6 @@
 #include <rte_malloc.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_ring.h"
 #include "bnxt_txq.h"
 #include "bnxt_txr.h"
diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c
index e558413e35..abb705c5d1 100644
--- a/drivers/net/bnxt/bnxt_txr.c
+++ b/drivers/net/bnxt/bnxt_txr.c
@@ -37,7 +37,6 @@
 #include <rte_malloc.h>
 
 #include "bnxt.h"
-#include "bnxt_cpr.h"
 #include "bnxt_ring.h"
 #include "bnxt_txq.h"
 #include "bnxt_txr.h"
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.738396461 +0000
+++ 0061-net-bnxt-remove-redundant-header-file-inclusion.patch	2019-12-19 14:32:26.129298301 +0000
@@ -1,21 +1,20 @@
-From f7b1b6b12da22be3016154c1399d0415fae0f927 Mon Sep 17 00:00:00 2001
+From c33a0f118c662d746455390c2fb822ead70f5082 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:45 -0700
 Subject: [PATCH] net/bnxt: remove redundant header file inclusion
 
+[ upstream commit f7b1b6b12da22be3016154c1399d0415fae0f927 ]
+
 bnxt.h header includes bnxt_cpr.h and bnxt_util.h.
 There is no need to include these headers file explicitly.
 
 This commit does not cause any functional change.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
  drivers/net/bnxt/bnxt_cpr.c    | 1 -
- drivers/net/bnxt/bnxt_ethdev.c | 2 --
- drivers/net/bnxt/bnxt_flow.c   | 1 -
+ drivers/net/bnxt/bnxt_ethdev.c | 1 -
  drivers/net/bnxt/bnxt_hwrm.c   | 1 -
  drivers/net/bnxt/bnxt_irq.c    | 1 -
  drivers/net/bnxt/bnxt_ring.c   | 1 -
@@ -23,14 +22,14 @@
  drivers/net/bnxt/bnxt_rxr.c    | 1 -
  drivers/net/bnxt/bnxt_txq.c    | 1 -
  drivers/net/bnxt/bnxt_txr.c    | 1 -
- 10 files changed, 11 deletions(-)
+ 9 files changed, 9 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
-index f58372516a..118cf034d2 100644
+index ba702df753..a00fdb4d30 100644
 --- a/drivers/net/bnxt/bnxt_cpr.c
 +++ b/drivers/net/bnxt/bnxt_cpr.c
-@@ -8,7 +8,6 @@
- #include <rte_cycles.h>
+@@ -34,7 +34,6 @@
+ #include <rte_malloc.h>
  
  #include "bnxt.h"
 -#include "bnxt_cpr.h"
@@ -38,42 +37,22 @@
  #include "bnxt_ring.h"
  #include "hsi_struct_def_dpdk.h"
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 4b39586479..84f7b87f31 100644
+index 3b74ea4a0d..f1bac2fcaa 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -14,7 +14,6 @@
- #include <rte_alarm.h>
+@@ -41,7 +41,6 @@
+ #include <rte_cycles.h>
  
  #include "bnxt.h"
 -#include "bnxt_cpr.h"
  #include "bnxt_filter.h"
  #include "bnxt_hwrm.h"
  #include "bnxt_irq.h"
-@@ -27,7 +26,6 @@
- #include "bnxt_vnic.h"
- #include "hsi_struct_def_dpdk.h"
- #include "bnxt_nvm_defs.h"
--#include "bnxt_util.h"
- 
- #define DRV_MODULE_NAME		"bnxt"
- static const char bnxt_version[] =
-diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c
-index bf198f8f23..5aeb001408 100644
---- a/drivers/net/bnxt/bnxt_flow.c
-+++ b/drivers/net/bnxt/bnxt_flow.c
-@@ -17,7 +17,6 @@
- #include "bnxt_ring.h"
- #include "bnxt_rxq.h"
- #include "bnxt_vnic.h"
--#include "bnxt_util.h"
- #include "hsi_struct_def_dpdk.h"
- 
- static int
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 0d5362581e..f78beff711 100644
+index 3b94c5c96b..7d824aeb45 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -13,7 +13,6 @@
+@@ -41,7 +41,6 @@
  #include <rte_version.h>
  
  #include "bnxt.h"
@@ -82,10 +61,10 @@
  #include "bnxt_hwrm.h"
  #include "bnxt_rxq.h"
 diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c
-index 729d68d704..6c5bcfb623 100644
+index c332431dba..7d69505fab 100644
 --- a/drivers/net/bnxt/bnxt_irq.c
 +++ b/drivers/net/bnxt/bnxt_irq.c
-@@ -9,7 +9,6 @@
+@@ -36,7 +36,6 @@
  #include <rte_malloc.h>
  
  #include "bnxt.h"
@@ -94,10 +73,10 @@
  #include "bnxt_ring.h"
  #include "hsi_struct_def_dpdk.h"
 diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
-index 5bb2cdea91..886029c575 100644
+index 59d1035fdf..b5527d25a6 100644
 --- a/drivers/net/bnxt/bnxt_ring.c
 +++ b/drivers/net/bnxt/bnxt_ring.c
-@@ -9,7 +9,6 @@
+@@ -36,7 +36,6 @@
  #include <unistd.h>
  
  #include "bnxt.h"
@@ -106,10 +85,10 @@
  #include "bnxt_ring.h"
  #include "bnxt_rxq.h"
 diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
-index 9439fcd1fb..a46f96827c 100644
+index 5088e9dfdc..cdc5bbfc9f 100644
 --- a/drivers/net/bnxt/bnxt_rxq.c
 +++ b/drivers/net/bnxt/bnxt_rxq.c
-@@ -8,7 +8,6 @@
+@@ -36,7 +36,6 @@
  #include <rte_malloc.h>
  
  #include "bnxt.h"
@@ -118,10 +97,10 @@
  #include "bnxt_hwrm.h"
  #include "bnxt_ring.h"
 diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
-index bda4f4c1b9..f0f9b020b1 100644
+index 4aaad3563e..95bba9d58f 100644
 --- a/drivers/net/bnxt/bnxt_rxr.c
 +++ b/drivers/net/bnxt/bnxt_rxr.c
-@@ -12,7 +12,6 @@
+@@ -40,7 +40,6 @@
  #include <rte_memory.h>
  
  #include "bnxt.h"
@@ -130,10 +109,10 @@
  #include "bnxt_rxr.h"
  #include "bnxt_rxq.h"
 diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
-index 5ad4ee155e..ebb9199d2d 100644
+index 99dddddfc5..4ecb037674 100644
 --- a/drivers/net/bnxt/bnxt_txq.c
 +++ b/drivers/net/bnxt/bnxt_txq.c
-@@ -8,7 +8,6 @@
+@@ -36,7 +36,6 @@
  #include <rte_malloc.h>
  
  #include "bnxt.h"
@@ -142,10 +121,10 @@
  #include "bnxt_txq.h"
  #include "bnxt_txr.h"
 diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c
-index 6e2ee86c05..16021407e8 100644
+index e558413e35..abb705c5d1 100644
 --- a/drivers/net/bnxt/bnxt_txr.c
 +++ b/drivers/net/bnxt/bnxt_txr.c
-@@ -9,7 +9,6 @@
+@@ -37,7 +37,6 @@
  #include <rte_malloc.h>
  
  #include "bnxt.h"

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

* [dpdk-stable] patch 'net/bnxt: get default HWRM command timeout from FW' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (59 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove redundant header file inclusion' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix coding style' " luca.boccassi
                   ` (76 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ajit Khaparde
  Cc: Santoshkumar Karanappa Rastapur, Lance Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8d3c93905d3c22dc3346c05fb1178bf6899dbd4a Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:47 -0700
Subject: [PATCH] net/bnxt: get default HWRM command timeout from FW

[ upstream commit 458f0360e8dc72ccc6f98ca724ab3d55325ad493 ]

The HWRM command timeout is set to a very high value.
VER_GET command response returns the default request timeout value.
Use this value for waiting for HWRM commands to complete.
Poll for the valid bit every 1us instead of 600us.

Fixes: cbcd375d37d2 ("net/bnxt: fix HWRM macros and locking")

Signed-off-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
---
 drivers/net/bnxt/bnxt.h      | 5 +++++
 drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 3bc2b93796..1fae24b801 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -246,6 +246,11 @@ struct bnxt {
 	uint16_t			max_req_len;
 	uint16_t			max_resp_len;
 
+	 /* default command timeout value of 50ms */
+#define HWRM_CMD_TIMEOUT		50000
+	/* default HWRM request timeout value */
+	uint32_t			hwrm_cmd_timeout;
+
 	struct bnxt_link_info	link_info;
 	struct bnxt_cos_queue_info	cos_queue[BNXT_COS_QUEUE_COUNT];
 
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 7d824aeb45..a8d7c487f9 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -53,8 +53,6 @@
 
 #include <rte_io.h>
 
-#define HWRM_CMD_TIMEOUT		10000
-
 struct bnxt_plcmodes_cfg {
 	uint32_t	flags;
 	uint16_t	jumbo_thresh;
@@ -613,6 +611,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
 	fw_version |= resp->hwrm_intf_min << 8;
 	fw_version |= resp->hwrm_intf_upd;
 
+	/* def_req_timeout value is in milliseconds */
+	bp->hwrm_cmd_timeout = rte_le_to_cpu_16(resp->def_req_timeout);
+	/* convert timeout to usec */
+	bp->hwrm_cmd_timeout *= 1000;
+	if (!bp->hwrm_cmd_timeout)
+		bp->hwrm_cmd_timeout = HWRM_CMD_TIMEOUT;
+
 	if (resp->hwrm_intf_maj != HWRM_VERSION_MAJOR) {
 		RTE_LOG(ERR, PMD, "Unsupported firmware API version\n");
 		rc = -EINVAL;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.786163518 +0000
+++ 0062-net-bnxt-get-default-HWRM-command-timeout-from-FW.patch	2019-12-19 14:32:26.133298381 +0000
@@ -1,31 +1,32 @@
-From 458f0360e8dc72ccc6f98ca724ab3d55325ad493 Mon Sep 17 00:00:00 2001
+From 8d3c93905d3c22dc3346c05fb1178bf6899dbd4a Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:47 -0700
 Subject: [PATCH] net/bnxt: get default HWRM command timeout from FW
 
+[ upstream commit 458f0360e8dc72ccc6f98ca724ab3d55325ad493 ]
+
 The HWRM command timeout is set to a very high value.
 VER_GET command response returns the default request timeout value.
 Use this value for waiting for HWRM commands to complete.
 Poll for the valid bit every 1us instead of 600us.
 
 Fixes: cbcd375d37d2 ("net/bnxt: fix HWRM macros and locking")
-Cc: stable@dpdk.org
 
 Signed-off-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
 ---
- drivers/net/bnxt/bnxt.h      |  5 +++++
- drivers/net/bnxt/bnxt_hwrm.c | 13 +++++++++----
- 2 files changed, 14 insertions(+), 4 deletions(-)
+ drivers/net/bnxt/bnxt.h      | 5 +++++
+ drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
-index ad0b18dddd..5020cd3415 100644
+index 3bc2b93796..1fae24b801 100644
 --- a/drivers/net/bnxt/bnxt.h
 +++ b/drivers/net/bnxt/bnxt.h
-@@ -525,6 +525,11 @@ struct bnxt {
+@@ -246,6 +246,11 @@ struct bnxt {
+ 	uint16_t			max_req_len;
  	uint16_t			max_resp_len;
- 	uint16_t                        hwrm_max_ext_req_len;
  
 +	 /* default command timeout value of 50ms */
 +#define HWRM_CMD_TIMEOUT		50000
@@ -33,36 +34,24 @@
 +	uint32_t			hwrm_cmd_timeout;
 +
  	struct bnxt_link_info	link_info;
- 	struct bnxt_cos_queue_info	rx_cos_queue[BNXT_COS_QUEUE_COUNT];
- 	struct bnxt_cos_queue_info	tx_cos_queue[BNXT_COS_QUEUE_COUNT];
+ 	struct bnxt_cos_queue_info	cos_queue[BNXT_COS_QUEUE_COUNT];
+ 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index a40197e929..5e3117fee9 100644
+index 7d824aeb45..a8d7c487f9 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -25,8 +25,6 @@
+@@ -53,8 +53,6 @@
  
  #include <rte_io.h>
  
--#define HWRM_CMD_TIMEOUT		6000000
--#define HWRM_SHORT_CMD_TIMEOUT		50000
- #define HWRM_SPEC_CODE_1_8_3		0x10803
- #define HWRM_VERSION_1_9_1		0x10901
- #define HWRM_VERSION_1_9_2		0x10903
-@@ -105,9 +103,9 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
- 
- 	/* For VER_GET command, set timeout as 50ms */
- 	if (rte_cpu_to_le_16(req->req_type) == HWRM_VER_GET)
--		timeout = HWRM_SHORT_CMD_TIMEOUT;
--	else
- 		timeout = HWRM_CMD_TIMEOUT;
-+	else
-+		timeout = bp->hwrm_cmd_timeout;
- 
- 	if (bp->flags & BNXT_FLAG_SHORT_CMD ||
- 	    msg_len > bp->max_req_len) {
-@@ -969,6 +967,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
- 	fw_version |= resp->hwrm_intf_upd_8b;
- 	bp->hwrm_spec_code = fw_version;
+-#define HWRM_CMD_TIMEOUT		10000
+-
+ struct bnxt_plcmodes_cfg {
+ 	uint32_t	flags;
+ 	uint16_t	jumbo_thresh;
+@@ -613,6 +611,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
+ 	fw_version |= resp->hwrm_intf_min << 8;
+ 	fw_version |= resp->hwrm_intf_upd;
  
 +	/* def_req_timeout value is in milliseconds */
 +	bp->hwrm_cmd_timeout = rte_le_to_cpu_16(resp->def_req_timeout);
@@ -71,8 +60,8 @@
 +	if (!bp->hwrm_cmd_timeout)
 +		bp->hwrm_cmd_timeout = HWRM_CMD_TIMEOUT;
 +
- 	if (resp->hwrm_intf_maj_8b != HWRM_VERSION_MAJOR) {
- 		PMD_DRV_LOG(ERR, "Unsupported firmware API version\n");
+ 	if (resp->hwrm_intf_maj != HWRM_VERSION_MAJOR) {
+ 		RTE_LOG(ERR, PMD, "Unsupported firmware API version\n");
  		rc = -EINVAL;
 -- 
 2.20.1

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

* [dpdk-stable] patch 'net/bnxt: fix coding style' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (60 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: get default HWRM command timeout from FW' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary variable assignment' " luca.boccassi
                   ` (75 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From d0a23459242dfab490d296a4bcb58a13f6eb527a Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:52 -0700
Subject: [PATCH] net/bnxt: fix coding style

[ upstream commit 996355970d3dbc1a7d3751a8cf63c1869b120638 ]

- Remove unnecessary new line
- Remove unnecessary blank lines
- Align rte_* header file inclusion at one place

Fixes: 37d6161a68ba ("net/bnxt: add ring group alloc/free")
Fixes: ec77c6298301 ("net/bnxt: add stats context allocation")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c |  1 -
 drivers/net/bnxt/bnxt_hwrm.c   | 11 +++--------
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index f1bac2fcaa..0813865edc 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -2348,7 +2348,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
 		return -EINVAL;
 	}
 
-
 	if (fdir_mode == RTE_FDIR_MODE_PERFECT_MAC_VLAN) {
 		rte_memcpy(filter->dst_macaddr,
 			fdir->input.flow.mac_vlan_flow.mac_addr.addr_bytes, 6);
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index a8d7c487f9..25b392eb4a 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -39,6 +39,7 @@
 #include <rte_malloc.h>
 #include <rte_memzone.h>
 #include <rte_version.h>
+#include <rte_io.h>
 
 #include "bnxt.h"
 #include "bnxt_filter.h"
@@ -51,8 +52,6 @@
 #include "bnxt_vnic.h"
 #include "hsi_struct_def_dpdk.h"
 
-#include <rte_io.h>
-
 struct bnxt_plcmodes_cfg {
 	uint32_t	flags;
 	uint16_t	jumbo_thresh;
@@ -1005,8 +1004,7 @@ int bnxt_hwrm_ring_grp_alloc(struct bnxt *bp, unsigned int idx)
 
 	HWRM_CHECK_RESULT();
 
-	bp->grp_info[idx].fw_grp_id =
-	    rte_le_to_cpu_16(resp->ring_group_id);
+	bp->grp_info[idx].fw_grp_id = rte_le_to_cpu_16(resp->ring_group_id);
 
 	HWRM_UNLOCK();
 
@@ -1064,8 +1062,7 @@ int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 
 	req.update_period_ms = rte_cpu_to_le_32(0);
 
-	req.stats_dma_addr =
-	    rte_cpu_to_le_64(cpr->hw_stats_map);
+	req.stats_dma_addr = rte_cpu_to_le_64(cpr->hw_stats_map);
 
 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
 
@@ -2937,7 +2934,6 @@ int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx,
 		stats->q_errors[idx] += rte_le_to_cpu_64(resp->tx_err_pkts);
 	}
 
-
 	HWRM_UNLOCK();
 
 	return rc;
@@ -3536,7 +3532,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
 	      HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_ID;
 	req.dst_id = rte_cpu_to_le_16(dst_id);
 
-
 	if (filter->ip_addr_type) {
 		req.ip_addr_type = filter->ip_addr_type;
 		enables |=
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.830799557 +0000
+++ 0063-net-bnxt-fix-coding-style.patch	2019-12-19 14:32:26.141298539 +0000
@@ -1,15 +1,16 @@
-From 996355970d3dbc1a7d3751a8cf63c1869b120638 Mon Sep 17 00:00:00 2001
+From d0a23459242dfab490d296a4bcb58a13f6eb527a Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:52 -0700
 Subject: [PATCH] net/bnxt: fix coding style
 
+[ upstream commit 996355970d3dbc1a7d3751a8cf63c1869b120638 ]
+
 - Remove unnecessary new line
 - Remove unnecessary blank lines
 - Align rte_* header file inclusion at one place
 
 Fixes: 37d6161a68ba ("net/bnxt: add ring group alloc/free")
 Fixes: ec77c6298301 ("net/bnxt: add stats context allocation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -19,10 +20,10 @@
  2 files changed, 3 insertions(+), 9 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 39bc06c6c7..90a97fac1b 100644
+index f1bac2fcaa..0813865edc 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -3002,7 +3002,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
+@@ -2348,7 +2348,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
  		return -EINVAL;
  	}
  
@@ -31,10 +32,10 @@
  		rte_memcpy(filter->dst_macaddr,
  			fdir->input.flow.mac_vlan_flow.mac_addr.addr_bytes, 6);
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index f94fdde2b1..5b430b9415 100644
+index a8d7c487f9..25b392eb4a 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -11,6 +11,7 @@
+@@ -39,6 +39,7 @@
  #include <rte_malloc.h>
  #include <rte_memzone.h>
  #include <rte_version.h>
@@ -42,16 +43,16 @@
  
  #include "bnxt.h"
  #include "bnxt_filter.h"
-@@ -23,8 +24,6 @@
+@@ -51,8 +52,6 @@
  #include "bnxt_vnic.h"
  #include "hsi_struct_def_dpdk.h"
  
 -#include <rte_io.h>
 -
- #define HWRM_SPEC_CODE_1_8_3		0x10803
- #define HWRM_VERSION_1_9_1		0x10901
- #define HWRM_VERSION_1_9_2		0x10903
-@@ -1483,8 +1482,7 @@ int bnxt_hwrm_ring_grp_alloc(struct bnxt *bp, unsigned int idx)
+ struct bnxt_plcmodes_cfg {
+ 	uint32_t	flags;
+ 	uint16_t	jumbo_thresh;
+@@ -1005,8 +1004,7 @@ int bnxt_hwrm_ring_grp_alloc(struct bnxt *bp, unsigned int idx)
  
  	HWRM_CHECK_RESULT();
  
@@ -61,7 +62,7 @@
  
  	HWRM_UNLOCK();
  
-@@ -1542,8 +1540,7 @@ int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
+@@ -1064,8 +1062,7 @@ int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
  
  	req.update_period_ms = rte_cpu_to_le_32(0);
  
@@ -69,17 +70,17 @@
 -	    rte_cpu_to_le_64(cpr->hw_stats_map);
 +	req.stats_dma_addr = rte_cpu_to_le_64(cpr->hw_stats_map);
  
- 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);
+ 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
  
-@@ -3633,7 +3630,6 @@ int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx,
- 		stats->q_obytes[idx] += rte_le_to_cpu_64(resp->tx_bcast_bytes);
+@@ -2937,7 +2934,6 @@ int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx,
+ 		stats->q_errors[idx] += rte_le_to_cpu_64(resp->tx_err_pkts);
  	}
  
 -
  	HWRM_UNLOCK();
  
  	return rc;
-@@ -4218,7 +4214,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
+@@ -3536,7 +3532,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
  	      HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_ID;
  	req.dst_id = rte_cpu_to_le_16(dst_id);
  

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

* [dpdk-stable] patch 'net/bnxt: remove unnecessary variable assignment' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (61 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix coding style' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/dpaa2: set port in mbuf' " luca.boccassi
                   ` (74 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Ajit Khaparde, Santoshkumar Karanappa Rastapur, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e561b13d96687d3c989170715cd997cfa9870e42 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 18:41:53 -0700
Subject: [PATCH] net/bnxt: remove unnecessary variable assignment

[ upstream commit cd30e6a7239ce48c8b618c87b10ee5db094d9853 ]

There is no need to assign return value to a temporary variable.
Instead return error directly in case of failure.

Fixes: 1fe427fd08ee ("net/bnxt: support enable/disable interrupt")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxq.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index cdc5bbfc9f..b42562f802 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -371,10 +371,9 @@ bnxt_rx_queue_intr_enable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
 
 	if (eth_dev->data->rx_queues) {
 		rxq = eth_dev->data->rx_queues[queue_id];
-		if (!rxq) {
-			rc = -EINVAL;
-			return rc;
-		}
+		if (!rxq)
+			return -EINVAL;
+
 		cpr = rxq->cp_ring;
 		B_CP_DB_ARM(cpr);
 	}
@@ -390,10 +389,9 @@ bnxt_rx_queue_intr_disable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
 
 	if (eth_dev->data->rx_queues) {
 		rxq = eth_dev->data->rx_queues[queue_id];
-		if (!rxq) {
-			rc = -EINVAL;
-			return rc;
-		}
+		if (!rxq)
+			return -EINVAL;
+
 		cpr = rxq->cp_ring;
 		B_CP_DB_DISARM(cpr);
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.877513746 +0000
+++ 0064-net-bnxt-remove-unnecessary-variable-assignment.patch	2019-12-19 14:32:26.141298539 +0000
@@ -1,13 +1,14 @@
-From cd30e6a7239ce48c8b618c87b10ee5db094d9853 Mon Sep 17 00:00:00 2001
+From e561b13d96687d3c989170715cd997cfa9870e42 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:53 -0700
 Subject: [PATCH] net/bnxt: remove unnecessary variable assignment
 
+[ upstream commit cd30e6a7239ce48c8b618c87b10ee5db094d9853 ]
+
 There is no need to assign return value to a temporary variable.
 Instead return error directly in case of failure.
 
 Fixes: 1fe427fd08ee ("net/bnxt: support enable/disable interrupt")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -17,10 +18,10 @@
  1 file changed, 6 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
-index a46f96827c..e1ed360eff 100644
+index cdc5bbfc9f..b42562f802 100644
 --- a/drivers/net/bnxt/bnxt_rxq.c
 +++ b/drivers/net/bnxt/bnxt_rxq.c
-@@ -384,10 +384,9 @@ bnxt_rx_queue_intr_enable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
+@@ -371,10 +371,9 @@ bnxt_rx_queue_intr_enable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
  
  	if (eth_dev->data->rx_queues) {
  		rxq = eth_dev->data->rx_queues[queue_id];
@@ -32,9 +33,9 @@
 +			return -EINVAL;
 +
  		cpr = rxq->cp_ring;
- 		B_CP_DB_REARM(cpr, cpr->cp_raw_cons);
+ 		B_CP_DB_ARM(cpr);
  	}
-@@ -408,10 +407,9 @@ bnxt_rx_queue_intr_disable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
+@@ -390,10 +389,9 @@ bnxt_rx_queue_intr_disable_op(struct rte_eth_dev *eth_dev, uint16_t queue_id)
  
  	if (eth_dev->data->rx_queues) {
  		rxq = eth_dev->data->rx_queues[queue_id];

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

* [dpdk-stable] patch 'net/dpaa2: set port in mbuf' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (62 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary variable assignment' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix dereference before null check' " luca.boccassi
                   ` (73 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Nipun Gupta; +Cc: Hemant Agrawal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3c00d0177e1068db12b6d2e598a1bf8d6a594ad6 Mon Sep 17 00:00:00 2001
From: Nipun Gupta <nipun.gupta@nxp.com>
Date: Wed, 9 Oct 2019 16:43:23 +0530
Subject: [PATCH] net/dpaa2: set port in mbuf

[ upstream commit 005d943e57ceaf62ac8a2240696c3f9aa3980513 ]

This patch sets the port in mbuf for event scenarios as well

Fixes: b677d4c6d281 ("net/dpaa2: add API for event Rx adapter")
Fixes: 2d3788631862 ("net/dpaa2: support atomic queues")
Fixes: 16c4a3c46ab7 ("bus/fslmc: add enqueue response read in qbman")

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_rxtx.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index 8ecd238ddb..bcac19af5e 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -132,7 +132,8 @@ dpaa2_dev_rx_offload(uint64_t hw_annot_addr, struct rte_mbuf *mbuf)
 }
 
 static inline struct rte_mbuf *__attribute__((hot))
-eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
+eth_sg_fd_to_mbuf(const struct qbman_fd *fd,
+		  int port_id)
 {
 	struct qbman_sge *sgt, *sge;
 	dma_addr_t sg_addr;
@@ -159,6 +160,7 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
 	first_seg->pkt_len = DPAA2_GET_FD_LEN(fd);
 	first_seg->nb_segs = 1;
 	first_seg->next = NULL;
+	first_seg->port = port_id;
 
 	first_seg->packet_type = dpaa2_dev_rx_parse(
 			 (uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd))
@@ -192,7 +194,8 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
 }
 
 static inline struct rte_mbuf *__attribute__((hot))
-eth_fd_to_mbuf(const struct qbman_fd *fd)
+eth_fd_to_mbuf(const struct qbman_fd *fd,
+	       int port_id)
 {
 	struct rte_mbuf *mbuf = DPAA2_INLINE_MBUF_FROM_BUF(
 		DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)),
@@ -206,6 +209,7 @@ eth_fd_to_mbuf(const struct qbman_fd *fd)
 	mbuf->data_off = DPAA2_GET_FD_OFFSET(fd);
 	mbuf->data_len = DPAA2_GET_FD_LEN(fd);
 	mbuf->pkt_len = mbuf->data_len;
+	mbuf->port = port_id;
 
 	/* Parse the packet */
 	/* parse results are after the private - sw annotation area */
@@ -470,10 +474,9 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 				+ DPAA2_FD_PTA_SIZE + 16));
 
 		if (unlikely(DPAA2_FD_GET_FORMAT(fd[num_rx]) == qbman_fd_sg))
-			bufs[num_rx] = eth_sg_fd_to_mbuf(fd[num_rx]);
+			bufs[num_rx] = eth_sg_fd_to_mbuf(fd[num_rx], eth_data->port_id);
 		else
-			bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx]);
-		bufs[num_rx]->port = dev->data->port_id;
+			bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx], eth_data->port_id);
 
 		if (dev->data->dev_conf.rxmode.hw_vlan_strip)
 			rte_vlan_strip(bufs[num_rx]);
@@ -521,7 +524,7 @@ dpaa2_dev_process_parallel_event(struct qbman_swp *swp,
 				 struct dpaa2_queue *rxq,
 				 struct rte_event *ev)
 {
-	ev->mbuf = eth_fd_to_mbuf(fd);
+	ev->mbuf = eth_fd_to_mbuf(fd, rxq->eth_data->port_id);
 
 	ev->flow_id = rxq->ev.flow_id;
 	ev->sub_event_type = rxq->ev.sub_event_type;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.911153807 +0000
+++ 0065-net-dpaa2-set-port-in-mbuf.patch	2019-12-19 14:32:26.141298539 +0000
@@ -1,26 +1,27 @@
-From 005d943e57ceaf62ac8a2240696c3f9aa3980513 Mon Sep 17 00:00:00 2001
+From 3c00d0177e1068db12b6d2e598a1bf8d6a594ad6 Mon Sep 17 00:00:00 2001
 From: Nipun Gupta <nipun.gupta@nxp.com>
 Date: Wed, 9 Oct 2019 16:43:23 +0530
 Subject: [PATCH] net/dpaa2: set port in mbuf
 
+[ upstream commit 005d943e57ceaf62ac8a2240696c3f9aa3980513 ]
+
 This patch sets the port in mbuf for event scenarios as well
 
 Fixes: b677d4c6d281 ("net/dpaa2: add API for event Rx adapter")
 Fixes: 2d3788631862 ("net/dpaa2: support atomic queues")
 Fixes: 16c4a3c46ab7 ("bus/fslmc: add enqueue response read in qbman")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
 Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
 ---
- drivers/net/dpaa2/dpaa2_rxtx.c | 30 ++++++++++++++++++------------
- 1 file changed, 18 insertions(+), 12 deletions(-)
+ drivers/net/dpaa2/dpaa2_rxtx.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
-index 7cea109d5f..b7b2d8652a 100644
+index 8ecd238ddb..bcac19af5e 100644
 --- a/drivers/net/dpaa2/dpaa2_rxtx.c
 +++ b/drivers/net/dpaa2/dpaa2_rxtx.c
-@@ -260,7 +260,8 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
+@@ -132,7 +132,8 @@ dpaa2_dev_rx_offload(uint64_t hw_annot_addr, struct rte_mbuf *mbuf)
  }
  
  static inline struct rte_mbuf *__attribute__((hot))
@@ -29,16 +30,16 @@
 +		  int port_id)
  {
  	struct qbman_sge *sgt, *sge;
- 	size_t sg_addr, fd_addr;
-@@ -286,6 +287,7 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
+ 	dma_addr_t sg_addr;
+@@ -159,6 +160,7 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
  	first_seg->pkt_len = DPAA2_GET_FD_LEN(fd);
  	first_seg->nb_segs = 1;
  	first_seg->next = NULL;
 +	first_seg->port = port_id;
- 	if (dpaa2_svr_family == SVR_LX2160A)
- 		dpaa2_dev_rx_parse_new(first_seg, fd);
- 	else
-@@ -319,7 +321,8 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
+ 
+ 	first_seg->packet_type = dpaa2_dev_rx_parse(
+ 			 (uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd))
+@@ -192,7 +194,8 @@ eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
  }
  
  static inline struct rte_mbuf *__attribute__((hot))
@@ -48,80 +49,36 @@
  {
  	struct rte_mbuf *mbuf = DPAA2_INLINE_MBUF_FROM_BUF(
  		DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)),
-@@ -333,6 +336,7 @@ eth_fd_to_mbuf(const struct qbman_fd *fd)
+@@ -206,6 +209,7 @@ eth_fd_to_mbuf(const struct qbman_fd *fd)
  	mbuf->data_off = DPAA2_GET_FD_OFFSET(fd);
  	mbuf->data_len = DPAA2_GET_FD_LEN(fd);
  	mbuf->pkt_len = mbuf->data_len;
 +	mbuf->port = port_id;
- 	mbuf->next = NULL;
- 	rte_mbuf_refcnt_set(mbuf, 1);
  
-@@ -621,10 +625,9 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- 		}
- 
- 		if (unlikely(DPAA2_FD_GET_FORMAT(fd) == qbman_fd_sg))
--			bufs[num_rx] = eth_sg_fd_to_mbuf(fd);
-+			bufs[num_rx] = eth_sg_fd_to_mbuf(fd, eth_data->port_id);
+ 	/* Parse the packet */
+ 	/* parse results are after the private - sw annotation area */
+@@ -470,10 +474,9 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+ 				+ DPAA2_FD_PTA_SIZE + 16));
+ 
+ 		if (unlikely(DPAA2_FD_GET_FORMAT(fd[num_rx]) == qbman_fd_sg))
+-			bufs[num_rx] = eth_sg_fd_to_mbuf(fd[num_rx]);
++			bufs[num_rx] = eth_sg_fd_to_mbuf(fd[num_rx], eth_data->port_id);
  		else
--			bufs[num_rx] = eth_fd_to_mbuf(fd);
--		bufs[num_rx]->port = eth_data->port_id;
-+			bufs[num_rx] = eth_fd_to_mbuf(fd, eth_data->port_id);
- #if defined(RTE_LIBRTE_IEEE1588)
- 		priv->rx_timestamp = bufs[num_rx]->timestamp;
- #endif
-@@ -679,7 +682,7 @@ dpaa2_dev_process_parallel_event(struct qbman_swp *swp,
- 	ev->queue_id = rxq->ev.queue_id;
- 	ev->priority = rxq->ev.priority;
- 
--	ev->mbuf = eth_fd_to_mbuf(fd);
-+	ev->mbuf = eth_fd_to_mbuf(fd, rxq->eth_data->port_id);
- 
- 	qbman_swp_dqrr_consume(swp, dq);
- }
-@@ -704,7 +707,7 @@ dpaa2_dev_process_atomic_event(struct qbman_swp *swp __attribute__((unused)),
- 	ev->queue_id = rxq->ev.queue_id;
- 	ev->priority = rxq->ev.priority;
- 
--	ev->mbuf = eth_fd_to_mbuf(fd);
-+	ev->mbuf = eth_fd_to_mbuf(fd, rxq->eth_data->port_id);
- 
- 	dqrr_index = qbman_get_dqrr_idx(dq);
- 	ev->mbuf->seqn = dqrr_index + 1;
-@@ -731,7 +734,7 @@ dpaa2_dev_process_ordered_event(struct qbman_swp *swp,
- 	ev->queue_id = rxq->ev.queue_id;
- 	ev->priority = rxq->ev.priority;
- 
+-			bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx]);
+-		bufs[num_rx]->port = dev->data->port_id;
++			bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx], eth_data->port_id);
+ 
+ 		if (dev->data->dev_conf.rxmode.hw_vlan_strip)
+ 			rte_vlan_strip(bufs[num_rx]);
+@@ -521,7 +524,7 @@ dpaa2_dev_process_parallel_event(struct qbman_swp *swp,
+ 				 struct dpaa2_queue *rxq,
+ 				 struct rte_event *ev)
+ {
 -	ev->mbuf = eth_fd_to_mbuf(fd);
 +	ev->mbuf = eth_fd_to_mbuf(fd, rxq->eth_data->port_id);
  
- 	ev->mbuf->seqn = DPAA2_ENQUEUE_FLAG_ORP;
- 	ev->mbuf->seqn |= qbman_result_DQ_odpid(dq) << DPAA2_EQCR_OPRID_SHIFT;
-@@ -823,10 +826,11 @@ dpaa2_dev_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- 					+ DPAA2_FD_PTA_SIZE + 16));
- 
- 			if (unlikely(DPAA2_FD_GET_FORMAT(fd) == qbman_fd_sg))
--				bufs[num_rx] = eth_sg_fd_to_mbuf(fd);
-+				bufs[num_rx] = eth_sg_fd_to_mbuf(fd,
-+							eth_data->port_id);
- 			else
--				bufs[num_rx] = eth_fd_to_mbuf(fd);
--			bufs[num_rx]->port = eth_data->port_id;
-+				bufs[num_rx] = eth_fd_to_mbuf(fd,
-+							eth_data->port_id);
- 
- 		if (eth_data->dev_conf.rxmode.offloads &
- 				DEV_RX_OFFLOAD_VLAN_STRIP) {
-@@ -1170,7 +1174,9 @@ dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci)
- 	struct rte_mbuf *m;
- 
- 	fd = qbman_result_eqresp_fd(&dpio_dev->eqresp[eqresp_ci]);
--	m = eth_fd_to_mbuf(fd);
-+
-+	/* Setting port id does not matter as we are to free the mbuf */
-+	m = eth_fd_to_mbuf(fd, 0);
- 	rte_pktmbuf_free(m);
- }
- 
+ 	ev->flow_id = rxq->ev.flow_id;
+ 	ev->sub_event_type = rxq->ev.sub_event_type;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix dereference before null check' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (63 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/dpaa2: set port in mbuf' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: cleanup comments' " luca.boccassi
                   ` (72 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From c7b19550a9910153efcae7cc0e25dde6fca1cd0d Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Wed, 9 Oct 2019 14:16:17 +0530
Subject: [PATCH] net/bnxt: fix dereference before null check

[ upstream commit 5e592e8d4091da4ad1faadd9c3719bd4c245cca4 ]

This patch fixes potential null pointer access in bnxt_alloc_ag_data().
Fix to return an error if null check is true.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 95bba9d58f..6f916753cb 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -87,17 +87,21 @@ static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq,
 	struct bnxt_sw_rx_bd *rx_buf = &rxr->ag_buf_ring[prod];
 	struct rte_mbuf *data;
 
-	data = __bnxt_alloc_rx_data(rxq->mb_pool);
-	if (!data) {
-		rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail);
-		return -ENOMEM;
-	}
-
-	if (rxbd == NULL)
+	if (rxbd == NULL) {
 		RTE_LOG(ERR, PMD, "Jumbo Frame. rxbd is NULL\n");
-	if (rx_buf == NULL)
+		return -EINVAL;
+	}
+
+	if (rx_buf == NULL) {
 		RTE_LOG(ERR, PMD, "Jumbo Frame. rx_buf is NULL\n");
+		return -EINVAL;
+	}
 
+	data = __bnxt_alloc_rx_data(rxq->mb_pool);
+	if (!data) {
+		rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail);
+		return -ENOMEM;
+	}
 
 	rx_buf->mbuf = data;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.949479725 +0000
+++ 0066-net-bnxt-fix-dereference-before-null-check.patch	2019-12-19 14:32:26.145298619 +0000
@@ -1,13 +1,14 @@
-From 5e592e8d4091da4ad1faadd9c3719bd4c245cca4 Mon Sep 17 00:00:00 2001
+From c7b19550a9910153efcae7cc0e25dde6fca1cd0d Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Wed, 9 Oct 2019 14:16:17 +0530
 Subject: [PATCH] net/bnxt: fix dereference before null check
 
+[ upstream commit 5e592e8d4091da4ad1faadd9c3719bd4c245cca4 ]
+
 This patch fixes potential null pointer access in bnxt_alloc_ag_data().
 Fix to return an error if null check is true.
 
 Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
@@ -17,39 +18,39 @@
  1 file changed, 12 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
-index f0f9b020b1..03dae571b6 100644
+index 95bba9d58f..6f916753cb 100644
 --- a/drivers/net/bnxt/bnxt_rxr.c
 +++ b/drivers/net/bnxt/bnxt_rxr.c
-@@ -63,17 +63,21 @@ static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq,
+@@ -87,17 +87,21 @@ static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq,
  	struct bnxt_sw_rx_bd *rx_buf = &rxr->ag_buf_ring[prod];
- 	struct rte_mbuf *mbuf;
+ 	struct rte_mbuf *data;
  
--	mbuf = __bnxt_alloc_rx_data(rxq->mb_pool);
--	if (!mbuf) {
--		rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail);
+-	data = __bnxt_alloc_rx_data(rxq->mb_pool);
+-	if (!data) {
+-		rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail);
 -		return -ENOMEM;
 -	}
 -
 -	if (rxbd == NULL)
 +	if (rxbd == NULL) {
- 		PMD_DRV_LOG(ERR, "Jumbo Frame. rxbd is NULL\n");
+ 		RTE_LOG(ERR, PMD, "Jumbo Frame. rxbd is NULL\n");
 -	if (rx_buf == NULL)
 +		return -EINVAL;
 +	}
 +
 +	if (rx_buf == NULL) {
- 		PMD_DRV_LOG(ERR, "Jumbo Frame. rx_buf is NULL\n");
+ 		RTE_LOG(ERR, PMD, "Jumbo Frame. rx_buf is NULL\n");
 +		return -EINVAL;
 +	}
  
-+	mbuf = __bnxt_alloc_rx_data(rxq->mb_pool);
-+	if (!mbuf) {
-+		rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail);
++	data = __bnxt_alloc_rx_data(rxq->mb_pool);
++	if (!data) {
++		rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail);
 +		return -ENOMEM;
 +	}
  
- 	rx_buf->mbuf = mbuf;
- 	mbuf->data_off = RTE_PKTMBUF_HEADROOM;
+ 	rx_buf->mbuf = data;
+ 
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: cleanup comments' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (64 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix dereference before null check' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: move macro definitions to header file' " luca.boccassi
                   ` (71 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From f9d6260f40a154a8a20811efef6d45555278277b Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Thu, 10 Oct 2019 14:14:23 +0530
Subject: [PATCH] net/bnxt: cleanup comments

[ upstream commit aa1fbf6bf74f26c2946909a0ab453d7de28a8e41 ]

- updated one comment for more readability and understanding
- fixed typo in comments
- moved a comment to right place
- removed one out-of-date comment
- removed few commented code

Fixes: f2a768d4d186 ("net/bnxt: add completion ring")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_cpr.c  |  2 --
 drivers/net/bnxt/bnxt_hwrm.c | 26 +++++++++-----------------
 2 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
index a00fdb4d30..f3f08059ef 100644
--- a/drivers/net/bnxt/bnxt_cpr.c
+++ b/drivers/net/bnxt/bnxt_cpr.c
@@ -48,8 +48,6 @@ void bnxt_handle_async_event(struct bnxt *bp,
 				(struct hwrm_async_event_cmpl *)cmp;
 	uint16_t event_id = rte_le_to_cpu_16(async_cmp->event_id);
 
-	/* TODO: HWRM async events are not defined yet */
-	/* Needs to handle: link events, error events, etc. */
 	switch (event_id) {
 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:
 	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE:
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 25b392eb4a..0636c66c54 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -86,9 +86,9 @@ static int page_roundup(size_t size)
 
 /*
  * HWRM Functions (sent to HWRM)
- * These are named bnxt_hwrm_*() and return -1 if bnxt_hwrm_send_message()
- * fails (ie: a timeout), and a positive non-zero HWRM error code if the HWRM
- * command was failed by the ChiMP.
+ * These are named bnxt_hwrm_*() and return 0 on success or -110 if the
+ * HWRM command times out, or a negative error code if the HWRM
+ * command was failed by the FW.
  */
 
 static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
@@ -171,11 +171,11 @@ err_ret:
 }
 
 /*
- * HWRM_PREP() should be used to prepare *ALL* HWRM commands.  It grabs the
+ * HWRM_PREP() should be used to prepare *ALL* HWRM commands. It grabs the
  * spinlock, and does initial processing.
  *
  * HWRM_CHECK_RESULT() returns errors on failure and may not be used.  It
- * releases the spinlock only if it returns.  If the regular int return codes
+ * releases the spinlock only if it returns. If the regular int return codes
  * are not used by the function, HWRM_CHECK_RESULT() should not be used
  * directly, rather it should be copied and modified to suit the function.
  *
@@ -1563,10 +1563,6 @@ int bnxt_hwrm_func_clr_stats(struct bnxt *bp, uint16_t fid)
 	return rc;
 }
 
-/*
- * HWRM utility functions
- */
-
 int bnxt_clear_all_hwrm_stat_ctxs(struct bnxt *bp)
 {
 	unsigned int i;
@@ -1768,6 +1764,10 @@ int bnxt_alloc_all_hwrm_ring_grps(struct bnxt *bp)
 	return rc;
 }
 
+/*
+ * HWRM utility functions
+ */
+
 void bnxt_free_hwrm_resources(struct bnxt *bp)
 {
 	/* Release memzone */
@@ -1816,8 +1816,6 @@ int bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 		else
 			rc = bnxt_hwrm_clear_l2_filter(bp, filter);
 		STAILQ_REMOVE(&vnic->filter, filter, bnxt_filter_info, next);
-		//if (rc)
-			//break;
 	}
 	return rc;
 }
@@ -1841,8 +1839,6 @@ bnxt_clear_hwrm_vnic_flows(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 
 		STAILQ_REMOVE(&vnic->flow_list, flow, rte_flow, next);
 		rte_free(flow);
-		//if (rc)
-			//break;
 	}
 	return rc;
 }
@@ -3544,10 +3540,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
 	    HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_MACADDR)
 		memcpy(req.src_macaddr, filter->src_macaddr,
 		       ETHER_ADDR_LEN);
-	//if (enables &
-	    //HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_MACADDR)
-		//memcpy(req.dst_macaddr, filter->dst_macaddr,
-		       //ETHER_ADDR_LEN);
 	if (enables &
 	    HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_ETHERTYPE)
 		req.ethertype = rte_cpu_to_be_16(filter->ethertype);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.985752115 +0000
+++ 0067-net-bnxt-cleanup-comments.patch	2019-12-19 14:32:26.149298698 +0000
@@ -1,8 +1,10 @@
-From aa1fbf6bf74f26c2946909a0ab453d7de28a8e41 Mon Sep 17 00:00:00 2001
+From f9d6260f40a154a8a20811efef6d45555278277b Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Thu, 10 Oct 2019 14:14:23 +0530
 Subject: [PATCH] net/bnxt: cleanup comments
 
+[ upstream commit aa1fbf6bf74f26c2946909a0ab453d7de28a8e41 ]
+
 - updated one comment for more readability and understanding
 - fixed typo in comments
 - moved a comment to right place
@@ -10,73 +12,33 @@
 - removed few commented code
 
 Fixes: f2a768d4d186 ("net/bnxt: add completion ring")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
- drivers/net/bnxt/bnxt_cpr.c    |  2 --
- drivers/net/bnxt/bnxt_filter.c |  1 -
- drivers/net/bnxt/bnxt_flow.c   |  7 -------
- drivers/net/bnxt/bnxt_hwrm.c   | 28 +++++++++-------------------
- 4 files changed, 9 insertions(+), 29 deletions(-)
+ drivers/net/bnxt/bnxt_cpr.c  |  2 --
+ drivers/net/bnxt/bnxt_hwrm.c | 26 +++++++++-----------------
+ 2 files changed, 9 insertions(+), 19 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
-index 118cf034d2..e6f30fecbf 100644
+index a00fdb4d30..f3f08059ef 100644
 --- a/drivers/net/bnxt/bnxt_cpr.c
 +++ b/drivers/net/bnxt/bnxt_cpr.c
-@@ -58,8 +58,6 @@ void bnxt_handle_async_event(struct bnxt *bp,
- 	struct bnxt_error_recovery_info *info;
- 	uint32_t event_data;
+@@ -48,8 +48,6 @@ void bnxt_handle_async_event(struct bnxt *bp,
+ 				(struct hwrm_async_event_cmpl *)cmp;
+ 	uint16_t event_id = rte_le_to_cpu_16(async_cmp->event_id);
  
 -	/* TODO: HWRM async events are not defined yet */
 -	/* Needs to handle: link events, error events, etc. */
  	switch (event_id) {
  	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:
  	case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE:
-diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c
-index e95d47d296..8120b39165 100644
---- a/drivers/net/bnxt/bnxt_filter.c
-+++ b/drivers/net/bnxt/bnxt_filter.c
-@@ -82,7 +82,6 @@ void bnxt_free_all_filters(struct bnxt *bp)
- 	struct bnxt_filter_info *filter, *temp_filter;
- 	unsigned int i;
- 
--//	for (i = 0; i < MAX_FF_POOLS; i++) {
- 	for (i = 0; i < bp->nr_vnics; i++) {
- 		vnic = &bp->vnic_info[i];
- 		filter = STAILQ_FIRST(&vnic->filter);
-diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c
-index 5aeb001408..85d23540fe 100644
---- a/drivers/net/bnxt/bnxt_flow.c
-+++ b/drivers/net/bnxt/bnxt_flow.c
-@@ -1087,10 +1087,6 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev,
- 		    vnic->fw_vnic_id != INVALID_HW_RING_ID)
- 			goto use_vnic;
- 
--		//if (!rxq ||
--		    //bp->vnic_info[0].fw_grp_ids[act_q->index] !=
--		    //INVALID_HW_RING_ID ||
--		    //!rxq->rx_deferred_start) {
- 		if (!rxq ||
- 		    bp->vnic_info[0].fw_grp_ids[act_q->index] !=
- 		    INVALID_HW_RING_ID) {
-@@ -1320,9 +1316,6 @@ use_vnic:
- 			}
- 			rxq = bp->rx_queues[rss->queue[i]];
- 
--			//if (bp->vnic_info[0].fw_grp_ids[rss->queue[i]] !=
--			    //INVALID_HW_RING_ID ||
--			    //!rxq->rx_deferred_start) {
- 			if (bp->vnic_info[0].fw_grp_ids[rss->queue[i]] !=
- 			    INVALID_HW_RING_ID) {
- 				PMD_DRV_LOG(ERR,
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 5b430b9415..1a1ea1bdef 100644
+index 25b392eb4a..0636c66c54 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -74,9 +74,9 @@ static void bnxt_hwrm_set_pg_attr(struct bnxt_ring_mem_info *rmem,
+@@ -86,9 +86,9 @@ static int page_roundup(size_t size)
  
  /*
   * HWRM Functions (sent to HWRM)
@@ -89,7 +51,7 @@
   */
  
  static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
-@@ -176,11 +176,11 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
+@@ -171,11 +171,11 @@ err_ret:
  }
  
  /*
@@ -103,15 +65,7 @@
   * are not used by the function, HWRM_CHECK_RESULT() should not be used
   * directly, rather it should be copied and modified to suit the function.
   *
-@@ -518,7 +518,6 @@ static int bnxt_hwrm_ptp_qcfg(struct bnxt *bp)
- 	struct hwrm_port_mac_ptp_qcfg_output *resp = bp->hwrm_cmd_resp_addr;
- 	struct bnxt_ptp_cfg *ptp = bp->ptp_cfg;
- 
--/*	if (bp->hwrm_spec_code < 0x10801 || ptp)  TBD  */
- 	if (ptp)
- 		return 0;
- 
-@@ -2161,10 +2160,6 @@ int bnxt_hwrm_func_clr_stats(struct bnxt *bp, uint16_t fid)
+@@ -1563,10 +1563,6 @@ int bnxt_hwrm_func_clr_stats(struct bnxt *bp, uint16_t fid)
  	return rc;
  }
  
@@ -122,7 +76,7 @@
  int bnxt_clear_all_hwrm_stat_ctxs(struct bnxt *bp)
  {
  	unsigned int i;
-@@ -2383,6 +2378,10 @@ int bnxt_alloc_all_hwrm_ring_grps(struct bnxt *bp)
+@@ -1768,6 +1764,10 @@ int bnxt_alloc_all_hwrm_ring_grps(struct bnxt *bp)
  	return rc;
  }
  
@@ -133,16 +87,16 @@
  void bnxt_free_hwrm_resources(struct bnxt *bp)
  {
  	/* Release memzone */
-@@ -2432,8 +2431,6 @@ int bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic)
+@@ -1816,8 +1816,6 @@ int bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic)
+ 		else
  			rc = bnxt_hwrm_clear_l2_filter(bp, filter);
  		STAILQ_REMOVE(&vnic->filter, filter, bnxt_filter_info, next);
- 		bnxt_free_filter(bp, filter);
 -		//if (rc)
 -			//break;
  	}
  	return rc;
  }
-@@ -2458,8 +2455,6 @@ bnxt_clear_hwrm_vnic_flows(struct bnxt *bp, struct bnxt_vnic_info *vnic)
+@@ -1841,8 +1839,6 @@ bnxt_clear_hwrm_vnic_flows(struct bnxt *bp, struct bnxt_vnic_info *vnic)
  
  		STAILQ_REMOVE(&vnic->flow_list, flow, rte_flow, next);
  		rte_free(flow);
@@ -151,22 +105,14 @@
  	}
  	return rc;
  }
-@@ -2514,7 +2509,6 @@ void bnxt_free_all_hwrm_resources(struct bnxt *bp)
- 	for (i = bp->max_vnics - 1; i >= 0; i--) {
- 		struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
- 
--		// If the VNIC ID is invalid we are not currently using the VNIC
- 		if (vnic->fw_vnic_id == INVALID_HW_RING_ID)
- 			continue;
- 
-@@ -4226,10 +4220,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
+@@ -3544,10 +3540,6 @@ int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp,
  	    HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_MACADDR)
  		memcpy(req.src_macaddr, filter->src_macaddr,
- 		       RTE_ETHER_ADDR_LEN);
+ 		       ETHER_ADDR_LEN);
 -	//if (enables &
 -	    //HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_MACADDR)
 -		//memcpy(req.dst_macaddr, filter->dst_macaddr,
--		       //RTE_ETHER_ADDR_LEN);
+-		       //ETHER_ADDR_LEN);
  	if (enables &
  	    HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_ETHERTYPE)
  		req.ethertype = rte_cpu_to_be_16(filter->ethertype);

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

* [dpdk-stable] patch 'net/bnxt: move macro definitions to header file' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (65 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: cleanup comments' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix error handling in xstats' " luca.boccassi
                   ` (70 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Lance Richardson, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 56524e5288ea2d45160038195b5aee3bf4454f21 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Thu, 10 Oct 2019 15:14:32 +0530
Subject: [PATCH] net/bnxt: move macro definitions to header file

[ upstream commit 9924dfd601fadeacb6c9968437cad8c6f853f77f ]

Move device and vendor ids macro definition from bnxt_ethdev.c
to bnxt.h.
There is no functionality impact.

Fixes: 882aa9c6e2e1 ("net/bnxt: move PCI device ids to the driver")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        | 40 ++++++++++++++++++++++++++++++++++
 drivers/net/bnxt/bnxt_ethdev.c | 38 --------------------------------
 2 files changed, 40 insertions(+), 38 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 1fae24b801..3c29ee5d51 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -47,6 +47,46 @@
 
 #include "bnxt_cpr.h"
 
+/* Vendor ID */
+#define PCI_VENDOR_ID_BROADCOM 0x14E4
+
+/* Device IDs */
+#define BROADCOM_DEV_ID_STRATUS_NIC_VF 0x1609
+#define BROADCOM_DEV_ID_STRATUS_NIC 0x1614
+#define BROADCOM_DEV_ID_57414_VF 0x16c1
+#define BROADCOM_DEV_ID_57301 0x16c8
+#define BROADCOM_DEV_ID_57302 0x16c9
+#define BROADCOM_DEV_ID_57304_PF 0x16ca
+#define BROADCOM_DEV_ID_57304_VF 0x16cb
+#define BROADCOM_DEV_ID_57417_MF 0x16cc
+#define BROADCOM_DEV_ID_NS2 0x16cd
+#define BROADCOM_DEV_ID_57311 0x16ce
+#define BROADCOM_DEV_ID_57312 0x16cf
+#define BROADCOM_DEV_ID_57402 0x16d0
+#define BROADCOM_DEV_ID_57404 0x16d1
+#define BROADCOM_DEV_ID_57406_PF 0x16d2
+#define BROADCOM_DEV_ID_57406_VF 0x16d3
+#define BROADCOM_DEV_ID_57402_MF 0x16d4
+#define BROADCOM_DEV_ID_57407_RJ45 0x16d5
+#define BROADCOM_DEV_ID_57412 0x16d6
+#define BROADCOM_DEV_ID_57414 0x16d7
+#define BROADCOM_DEV_ID_57416_RJ45 0x16d8
+#define BROADCOM_DEV_ID_57417_RJ45 0x16d9
+#define BROADCOM_DEV_ID_5741X_VF 0x16dc
+#define BROADCOM_DEV_ID_57412_MF 0x16de
+#define BROADCOM_DEV_ID_57314 0x16df
+#define BROADCOM_DEV_ID_57317_RJ45 0x16e0
+#define BROADCOM_DEV_ID_5731X_VF 0x16e1
+#define BROADCOM_DEV_ID_57417_SFP 0x16e2
+#define BROADCOM_DEV_ID_57416_SFP 0x16e3
+#define BROADCOM_DEV_ID_57317_SFP 0x16e4
+#define BROADCOM_DEV_ID_57404_MF 0x16e7
+#define BROADCOM_DEV_ID_57406_MF 0x16e8
+#define BROADCOM_DEV_ID_57407_SFP 0x16e9
+#define BROADCOM_DEV_ID_57407_MF 0x16ea
+#define BROADCOM_DEV_ID_57414_MF 0x16ec
+#define BROADCOM_DEV_ID_57416_MF 0x16ee
+
 #define BNXT_MAX_MTU		9500
 #define VLAN_TAG_SIZE		4
 #define BNXT_MAX_LED		4
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 0813865edc..7610626306 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -58,44 +58,6 @@
 static const char bnxt_version[] =
 	"Broadcom Cumulus driver " DRV_MODULE_NAME "\n";
 
-#define PCI_VENDOR_ID_BROADCOM 0x14E4
-
-#define BROADCOM_DEV_ID_STRATUS_NIC_VF 0x1609
-#define BROADCOM_DEV_ID_STRATUS_NIC 0x1614
-#define BROADCOM_DEV_ID_57414_VF 0x16c1
-#define BROADCOM_DEV_ID_57301 0x16c8
-#define BROADCOM_DEV_ID_57302 0x16c9
-#define BROADCOM_DEV_ID_57304_PF 0x16ca
-#define BROADCOM_DEV_ID_57304_VF 0x16cb
-#define BROADCOM_DEV_ID_57417_MF 0x16cc
-#define BROADCOM_DEV_ID_NS2 0x16cd
-#define BROADCOM_DEV_ID_57311 0x16ce
-#define BROADCOM_DEV_ID_57312 0x16cf
-#define BROADCOM_DEV_ID_57402 0x16d0
-#define BROADCOM_DEV_ID_57404 0x16d1
-#define BROADCOM_DEV_ID_57406_PF 0x16d2
-#define BROADCOM_DEV_ID_57406_VF 0x16d3
-#define BROADCOM_DEV_ID_57402_MF 0x16d4
-#define BROADCOM_DEV_ID_57407_RJ45 0x16d5
-#define BROADCOM_DEV_ID_57412 0x16d6
-#define BROADCOM_DEV_ID_57414 0x16d7
-#define BROADCOM_DEV_ID_57416_RJ45 0x16d8
-#define BROADCOM_DEV_ID_57417_RJ45 0x16d9
-#define BROADCOM_DEV_ID_5741X_VF 0x16dc
-#define BROADCOM_DEV_ID_57412_MF 0x16de
-#define BROADCOM_DEV_ID_57314 0x16df
-#define BROADCOM_DEV_ID_57317_RJ45 0x16e0
-#define BROADCOM_DEV_ID_5731X_VF 0x16e1
-#define BROADCOM_DEV_ID_57417_SFP 0x16e2
-#define BROADCOM_DEV_ID_57416_SFP 0x16e3
-#define BROADCOM_DEV_ID_57317_SFP 0x16e4
-#define BROADCOM_DEV_ID_57404_MF 0x16e7
-#define BROADCOM_DEV_ID_57406_MF 0x16e8
-#define BROADCOM_DEV_ID_57407_SFP 0x16e9
-#define BROADCOM_DEV_ID_57407_MF 0x16ea
-#define BROADCOM_DEV_ID_57414_MF 0x16ec
-#define BROADCOM_DEV_ID_57416_MF 0x16ee
-
 static const struct rte_pci_id bnxt_pci_id_map[] = {
 	{ RTE_PCI_DEVICE(PCI_VENDOR_ID_BROADCOM,
 			 BROADCOM_DEV_ID_STRATUS_NIC_VF) },
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.028911491 +0000
+++ 0068-net-bnxt-move-macro-definitions-to-header-file.patch	2019-12-19 14:32:26.153298777 +0000
@@ -1,96 +1,86 @@
-From 9924dfd601fadeacb6c9968437cad8c6f853f77f Mon Sep 17 00:00:00 2001
+From 56524e5288ea2d45160038195b5aee3bf4454f21 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Thu, 10 Oct 2019 15:14:32 +0530
 Subject: [PATCH] net/bnxt: move macro definitions to header file
 
+[ upstream commit 9924dfd601fadeacb6c9968437cad8c6f853f77f ]
+
 Move device and vendor ids macro definition from bnxt_ethdev.c
 to bnxt.h.
 There is no functionality impact.
 
 Fixes: 882aa9c6e2e1 ("net/bnxt: move PCI device ids to the driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
- drivers/net/bnxt/bnxt.h        | 50 +++++++++++++++++++++++++++++++++
- drivers/net/bnxt/bnxt_ethdev.c | 51 ++--------------------------------
- 2 files changed, 53 insertions(+), 48 deletions(-)
+ drivers/net/bnxt/bnxt.h        | 40 ++++++++++++++++++++++++++++++++++
+ drivers/net/bnxt/bnxt_ethdev.c | 38 --------------------------------
+ 2 files changed, 40 insertions(+), 38 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
-index 080365804c..189f693b06 100644
+index 1fae24b801..3c29ee5d51 100644
 --- a/drivers/net/bnxt/bnxt.h
 +++ b/drivers/net/bnxt/bnxt.h
-@@ -21,6 +21,56 @@
+@@ -47,6 +47,46 @@
+ 
  #include "bnxt_cpr.h"
- #include "bnxt_util.h"
  
 +/* Vendor ID */
-+#define PCI_VENDOR_ID_BROADCOM		0x14E4
++#define PCI_VENDOR_ID_BROADCOM 0x14E4
 +
 +/* Device IDs */
-+#define BROADCOM_DEV_ID_STRATUS_NIC_VF1 0x1606
-+#define BROADCOM_DEV_ID_STRATUS_NIC_VF2 0x1609
-+#define BROADCOM_DEV_ID_STRATUS_NIC	0x1614
-+#define BROADCOM_DEV_ID_57414_VF	0x16c1
-+#define BROADCOM_DEV_ID_57301		0x16c8
-+#define BROADCOM_DEV_ID_57302		0x16c9
-+#define BROADCOM_DEV_ID_57304_PF	0x16ca
-+#define BROADCOM_DEV_ID_57304_VF	0x16cb
-+#define BROADCOM_DEV_ID_57417_MF	0x16cc
-+#define BROADCOM_DEV_ID_NS2		0x16cd
-+#define BROADCOM_DEV_ID_57311		0x16ce
-+#define BROADCOM_DEV_ID_57312		0x16cf
-+#define BROADCOM_DEV_ID_57402		0x16d0
-+#define BROADCOM_DEV_ID_57404		0x16d1
-+#define BROADCOM_DEV_ID_57406_PF	0x16d2
-+#define BROADCOM_DEV_ID_57406_VF	0x16d3
-+#define BROADCOM_DEV_ID_57402_MF	0x16d4
-+#define BROADCOM_DEV_ID_57407_RJ45	0x16d5
-+#define BROADCOM_DEV_ID_57412		0x16d6
-+#define BROADCOM_DEV_ID_57414		0x16d7
-+#define BROADCOM_DEV_ID_57416_RJ45	0x16d8
-+#define BROADCOM_DEV_ID_57417_RJ45	0x16d9
-+#define BROADCOM_DEV_ID_5741X_VF	0x16dc
-+#define BROADCOM_DEV_ID_57412_MF	0x16de
-+#define BROADCOM_DEV_ID_57314		0x16df
-+#define BROADCOM_DEV_ID_57317_RJ45	0x16e0
-+#define BROADCOM_DEV_ID_5731X_VF	0x16e1
-+#define BROADCOM_DEV_ID_57417_SFP	0x16e2
-+#define BROADCOM_DEV_ID_57416_SFP	0x16e3
-+#define BROADCOM_DEV_ID_57317_SFP	0x16e4
-+#define BROADCOM_DEV_ID_57404_MF	0x16e7
-+#define BROADCOM_DEV_ID_57406_MF	0x16e8
-+#define BROADCOM_DEV_ID_57407_SFP	0x16e9
-+#define BROADCOM_DEV_ID_57407_MF	0x16ea
-+#define BROADCOM_DEV_ID_57414_MF	0x16ec
-+#define BROADCOM_DEV_ID_57416_MF	0x16ee
-+#define BROADCOM_DEV_ID_57508		0x1750
-+#define BROADCOM_DEV_ID_57504		0x1751
-+#define BROADCOM_DEV_ID_57502		0x1752
-+#define BROADCOM_DEV_ID_57500_VF1	0x1806
-+#define BROADCOM_DEV_ID_57500_VF2	0x1807
-+#define BROADCOM_DEV_ID_58802		0xd802
-+#define BROADCOM_DEV_ID_58804		0xd804
-+#define BROADCOM_DEV_ID_58808		0x16f0
-+#define BROADCOM_DEV_ID_58802_VF	0xd800
++#define BROADCOM_DEV_ID_STRATUS_NIC_VF 0x1609
++#define BROADCOM_DEV_ID_STRATUS_NIC 0x1614
++#define BROADCOM_DEV_ID_57414_VF 0x16c1
++#define BROADCOM_DEV_ID_57301 0x16c8
++#define BROADCOM_DEV_ID_57302 0x16c9
++#define BROADCOM_DEV_ID_57304_PF 0x16ca
++#define BROADCOM_DEV_ID_57304_VF 0x16cb
++#define BROADCOM_DEV_ID_57417_MF 0x16cc
++#define BROADCOM_DEV_ID_NS2 0x16cd
++#define BROADCOM_DEV_ID_57311 0x16ce
++#define BROADCOM_DEV_ID_57312 0x16cf
++#define BROADCOM_DEV_ID_57402 0x16d0
++#define BROADCOM_DEV_ID_57404 0x16d1
++#define BROADCOM_DEV_ID_57406_PF 0x16d2
++#define BROADCOM_DEV_ID_57406_VF 0x16d3
++#define BROADCOM_DEV_ID_57402_MF 0x16d4
++#define BROADCOM_DEV_ID_57407_RJ45 0x16d5
++#define BROADCOM_DEV_ID_57412 0x16d6
++#define BROADCOM_DEV_ID_57414 0x16d7
++#define BROADCOM_DEV_ID_57416_RJ45 0x16d8
++#define BROADCOM_DEV_ID_57417_RJ45 0x16d9
++#define BROADCOM_DEV_ID_5741X_VF 0x16dc
++#define BROADCOM_DEV_ID_57412_MF 0x16de
++#define BROADCOM_DEV_ID_57314 0x16df
++#define BROADCOM_DEV_ID_57317_RJ45 0x16e0
++#define BROADCOM_DEV_ID_5731X_VF 0x16e1
++#define BROADCOM_DEV_ID_57417_SFP 0x16e2
++#define BROADCOM_DEV_ID_57416_SFP 0x16e3
++#define BROADCOM_DEV_ID_57317_SFP 0x16e4
++#define BROADCOM_DEV_ID_57404_MF 0x16e7
++#define BROADCOM_DEV_ID_57406_MF 0x16e8
++#define BROADCOM_DEV_ID_57407_SFP 0x16e9
++#define BROADCOM_DEV_ID_57407_MF 0x16ea
++#define BROADCOM_DEV_ID_57414_MF 0x16ec
++#define BROADCOM_DEV_ID_57416_MF 0x16ee
 +
- #define BNXT_MAX_MTU		9574
+ #define BNXT_MAX_MTU		9500
  #define VLAN_TAG_SIZE		4
- #define BNXT_NUM_VLANS		2
+ #define BNXT_MAX_LED		4
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 90a97fac1b..b58a875c7d 100644
+index 0813865edc..7610626306 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -32,54 +32,9 @@ static const char bnxt_version[] =
- 	"Broadcom NetXtreme driver " DRV_MODULE_NAME;
- int bnxt_logtype_driver;
+@@ -58,44 +58,6 @@
+ static const char bnxt_version[] =
+ 	"Broadcom Cumulus driver " DRV_MODULE_NAME "\n";
  
 -#define PCI_VENDOR_ID_BROADCOM 0x14E4
 -
--#define BROADCOM_DEV_ID_STRATUS_NIC_VF1 0x1606
--#define BROADCOM_DEV_ID_STRATUS_NIC_VF2 0x1609
+-#define BROADCOM_DEV_ID_STRATUS_NIC_VF 0x1609
 -#define BROADCOM_DEV_ID_STRATUS_NIC 0x1614
 -#define BROADCOM_DEV_ID_57414_VF 0x16c1
 -#define BROADCOM_DEV_ID_57301 0x16c8
@@ -125,22 +115,10 @@
 -#define BROADCOM_DEV_ID_57407_MF 0x16ea
 -#define BROADCOM_DEV_ID_57414_MF 0x16ec
 -#define BROADCOM_DEV_ID_57416_MF 0x16ee
--#define BROADCOM_DEV_ID_57508 0x1750
--#define BROADCOM_DEV_ID_57504 0x1751
--#define BROADCOM_DEV_ID_57502 0x1752
--#define BROADCOM_DEV_ID_57500_VF1 0x1806
--#define BROADCOM_DEV_ID_57500_VF2 0x1807
--#define BROADCOM_DEV_ID_58802 0xd802
--#define BROADCOM_DEV_ID_58804 0xd804
--#define BROADCOM_DEV_ID_58808 0x16f0
--#define BROADCOM_DEV_ID_58802_VF 0xd800
 -
-+/*
-+ * The set of PCI devices this driver supports
-+ */
  static const struct rte_pci_id bnxt_pci_id_map[] = {
  	{ RTE_PCI_DEVICE(PCI_VENDOR_ID_BROADCOM,
- 			 BROADCOM_DEV_ID_STRATUS_NIC_VF1) },
+ 			 BROADCOM_DEV_ID_STRATUS_NIC_VF) },
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix error handling in xstats' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (66 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: move macro definitions to header file' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:57   ` Kalesh Anakkur Purayil
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: translate incoming log address to GPA' " luca.boccassi
                   ` (69 subsequent siblings)
  137 siblings, 1 reply; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From cf96c144f07d6ac3800a8abccef4f7d3d7e367f6 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Fri, 11 Oct 2019 10:46:44 +0530
Subject: [PATCH] net/bnxt: fix error handling in xstats

[ upstream commit 9bc556e3ecec6c1127c6d6c99660742315c59282 ]

Add missing return instead of setting the error status in case of error.

Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_stats.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index 6497926162..e85db7f6d0 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -365,6 +365,7 @@ void bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
 	if (BNXT_VF(bp) || !BNXT_NPAR_PF(bp) ||
 	    !(bp->flags & BNXT_FLAG_PORT_STATS)) {
 		RTE_LOG(ERR, PMD, "Operation not supported\n");
+		return;
 	}
 
 	ret = bnxt_hwrm_port_clr_stats(bp);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.067360477 +0000
+++ 0069-net-bnxt-fix-error-handling-in-xstats.patch	2019-12-19 14:32:26.153298777 +0000
@@ -1,30 +1,30 @@
-From 9bc556e3ecec6c1127c6d6c99660742315c59282 Mon Sep 17 00:00:00 2001
+From cf96c144f07d6ac3800a8abccef4f7d3d7e367f6 Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Fri, 11 Oct 2019 10:46:44 +0530
 Subject: [PATCH] net/bnxt: fix error handling in xstats
 
+[ upstream commit 9bc556e3ecec6c1127c6d6c99660742315c59282 ]
+
 Add missing return instead of setting the error status in case of error.
 
 Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
- drivers/net/bnxt/bnxt_stats.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ drivers/net/bnxt/bnxt_stats.c | 1 +
+ 1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
-index f486a5634b..fa29f9de19 100644
+index 6497926162..e85db7f6d0 100644
 --- a/drivers/net/bnxt/bnxt_stats.c
 +++ b/drivers/net/bnxt/bnxt_stats.c
-@@ -575,7 +575,7 @@ int bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
- 	if (BNXT_VF(bp) || !BNXT_SINGLE_PF(bp) ||
+@@ -365,6 +365,7 @@ void bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev)
+ 	if (BNXT_VF(bp) || !BNXT_NPAR_PF(bp) ||
  	    !(bp->flags & BNXT_FLAG_PORT_STATS)) {
- 		PMD_DRV_LOG(ERR, "Operation not supported\n");
--		ret = -ENOTSUP;
-+		return -ENOTSUP;
+ 		RTE_LOG(ERR, PMD, "Operation not supported\n");
++		return;
  	}
  
  	ret = bnxt_hwrm_port_clr_stats(bp);

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

* [dpdk-stable] patch 'vhost: translate incoming log address to GPA' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (67 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix error handling in xstats' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: prevent zero copy mode if IOMMU is on' " luca.boccassi
                   ` (68 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Adrian Moreno; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0797241df9cafe74469e784bf18a50fb6cd9230e Mon Sep 17 00:00:00 2001
From: Adrian Moreno <amorenoz@redhat.com>
Date: Wed, 9 Oct 2019 13:54:30 +0200
Subject: [PATCH] vhost: translate incoming log address to GPA

[ upstream commit fbda9f1459271435df3ea2575ca5845d04733466 ]

When IOMMU is enabled the incoming log address is in IOVA space. In that
case, look in IOTLB table and translate the resulting HVA to GPA.

If IOMMU is not enabled, the incoming log address is already a GPA so no
transformation is needed.

Fixes: 69c90e98f483 ("vhost: enable IOMMU support")

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.c      |  1 +
 lib/librte_vhost/vhost.h      | 20 +++++++++++++++++
 lib/librte_vhost/vhost_user.c | 42 ++++++++++++++++++++++++++++++++++-
 3 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index 08ab6eab35..ec584695c2 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -208,6 +208,7 @@ vring_invalidate(struct virtio_net *dev, struct vhost_virtqueue *vq)
 	vq->desc = NULL;
 	vq->avail = NULL;
 	vq->used = NULL;
+	vq->log_guest_addr = 0;
 
 	if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
 		vhost_user_iotlb_wr_unlock(vq);
diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 55bfb0b25f..f8b587a9d5 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -477,6 +477,26 @@ gpa_to_hpa(struct virtio_net *dev, uint64_t gpa, uint64_t size)
 	return 0;
 }
 
+static __rte_always_inline uint64_t
+hva_to_gpa(struct virtio_net *dev, uint64_t vva, uint64_t len)
+{
+	struct rte_vhost_mem_region *r;
+	uint32_t i;
+
+	if (unlikely(!dev || !dev->mem))
+		return 0;
+
+	for (i = 0; i < dev->mem->nregions; i++) {
+		r = &dev->mem->regions[i];
+
+		if (vva >= r->host_user_addr &&
+		    vva + len <  r->host_user_addr + r->size) {
+			return r->guest_phys_addr + vva - r->host_user_addr;
+		}
+	}
+	return 0;
+}
+
 struct virtio_net *get_device(int vid);
 
 int vhost_new_device(void);
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 635b6f3ddd..f039ce8706 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -462,6 +462,39 @@ ring_addr_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq,
 	return qva_to_vva(dev, ra, size);
 }
 
+/*
+ * Converts vring log address to GPA
+ * If IOMMU is enabled, the log address is IOVA
+ * If IOMMU not enabled, the log address is already GPA
+ */
+static uint64_t
+translate_log_addr(struct virtio_net *dev, struct vhost_virtqueue *vq,
+		uint64_t log_addr)
+{
+	if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)) {
+		const uint64_t exp_size = sizeof(struct vring_used) +
+			sizeof(struct vring_used_elem) * vq->size;
+		uint64_t hva, gpa;
+		uint64_t size = exp_size;
+
+		hva = vhost_iova_to_vva(dev, vq, log_addr,
+					&size, VHOST_ACCESS_RW);
+		if (size != exp_size)
+			return 0;
+
+		gpa = hva_to_gpa(dev, hva, exp_size);
+		if (!gpa) {
+			RTE_LOG(ERR, VHOST_CONFIG,
+				"VQ: Failed to find GPA for log_addr: 0x%" PRIx64 " hva: 0x%" PRIx64 "\n",
+				log_addr, hva);
+			return 0;
+		}
+		return gpa;
+
+	} else
+		return log_addr;
+}
+
 static struct virtio_net *
 translate_ring_addresses(struct virtio_net *dev, int vq_index)
 {
@@ -520,7 +553,14 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
 		vq->last_avail_idx = vq->used->idx;
 	}
 
-	vq->log_guest_addr = addr->log_guest_addr;
+	vq->log_guest_addr =
+		translate_log_addr(dev, vq, addr->log_guest_addr);
+	if (vq->log_guest_addr == 0) {
+		RTE_LOG(DEBUG, VHOST_CONFIG,
+			"(%d) failed to map log_guest_addr .\n",
+			dev->vid);
+		return dev;
+	}
 	vq->access_ok = 1;
 
 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.103902354 +0000
+++ 0070-vhost-translate-incoming-log-address-to-GPA.patch	2019-12-19 14:32:26.161298936 +0000
@@ -1,8 +1,10 @@
-From fbda9f1459271435df3ea2575ca5845d04733466 Mon Sep 17 00:00:00 2001
+From 0797241df9cafe74469e784bf18a50fb6cd9230e Mon Sep 17 00:00:00 2001
 From: Adrian Moreno <amorenoz@redhat.com>
 Date: Wed, 9 Oct 2019 13:54:30 +0200
 Subject: [PATCH] vhost: translate incoming log address to GPA
 
+[ upstream commit fbda9f1459271435df3ea2575ca5845d04733466 ]
+
 When IOMMU is enabled the incoming log address is in IOVA space. In that
 case, look in IOTLB table and translate the resulting HVA to GPA.
 
@@ -10,7 +12,6 @@
 transformation is needed.
 
 Fixes: 69c90e98f483 ("vhost: enable IOMMU support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -21,10 +22,10 @@
  3 files changed, 62 insertions(+), 1 deletion(-)
 
 diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
-index cea44df8cb..76e753475b 100644
+index 08ab6eab35..ec584695c2 100644
 --- a/lib/librte_vhost/vhost.c
 +++ b/lib/librte_vhost/vhost.c
-@@ -382,6 +382,7 @@ vring_invalidate(struct virtio_net *dev, struct vhost_virtqueue *vq)
+@@ -208,6 +208,7 @@ vring_invalidate(struct virtio_net *dev, struct vhost_virtqueue *vq)
  	vq->desc = NULL;
  	vq->avail = NULL;
  	vq->used = NULL;
@@ -33,10 +34,10 @@
  	if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
  		vhost_user_iotlb_wr_unlock(vq);
 diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
-index 099a0d3f6b..7a314717df 100644
+index 55bfb0b25f..f8b587a9d5 100644
 --- a/lib/librte_vhost/vhost.h
 +++ b/lib/librte_vhost/vhost.h
-@@ -447,6 +447,26 @@ gpa_to_hpa(struct virtio_net *dev, uint64_t gpa, uint64_t size)
+@@ -477,6 +477,26 @@ gpa_to_hpa(struct virtio_net *dev, uint64_t gpa, uint64_t size)
  	return 0;
  }
  
@@ -60,14 +61,14 @@
 +	return 0;
 +}
 +
- static __rte_always_inline struct virtio_net *
- get_device(int vid)
- {
+ struct virtio_net *get_device(int vid);
+ 
+ int vhost_new_device(void);
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index ce4e9fb32f..5ae561e55a 100644
+index 635b6f3ddd..f039ce8706 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -575,6 +575,39 @@ ring_addr_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -462,6 +462,39 @@ ring_addr_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq,
  	return qva_to_vva(dev, ra, size);
  }
  
@@ -107,7 +108,7 @@
  static struct virtio_net *
  translate_ring_addresses(struct virtio_net *dev, int vq_index)
  {
-@@ -682,7 +715,14 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
+@@ -520,7 +553,14 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
  		vq->last_avail_idx = vq->used->idx;
  	}
  
@@ -122,7 +123,7 @@
 +	}
  	vq->access_ok = 1;
  
- 	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
+ 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'vhost: prevent zero copy mode if IOMMU is on' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (68 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: translate incoming log address to GPA' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix descriptor addressed in Tx' " luca.boccassi
                   ` (67 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Adrian Moreno; +Cc: Tiwei Bie, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ab6aaeebdb71aab690ceb2aa4cf05c06c93087fd Mon Sep 17 00:00:00 2001
From: Adrian Moreno <amorenoz@redhat.com>
Date: Wed, 9 Oct 2019 13:54:32 +0200
Subject: [PATCH] vhost: prevent zero copy mode if IOMMU is on

[ upstream commit c49197ff29fbd67e19a927683b7100dba602718d ]

The simultaneous use of dequeue_zero_copy and IOMMU is problematic.
Not only because IOVA_VA mode is not supported but also because the
potential invalidation of guest pages while the buffers are in use,
is not handled.

Prevent these two features to be enabled simultaneously.

Fixes: 69c90e98f483 ("vhost: enable IOMMU support")

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/socket.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index 2fa7ea0e09..c035b6ab5e 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -675,6 +675,14 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
 	}
 	vsocket->dequeue_zero_copy = flags & RTE_VHOST_USER_DEQUEUE_ZERO_COPY;
 
+	if (vsocket->dequeue_zero_copy &&
+	    (flags & RTE_VHOST_USER_IOMMU_SUPPORT)) {
+		RTE_LOG(ERR, VHOST_CONFIG,
+			"error: enabling dequeue zero copy and IOMMU features "
+			"simultaneously is not supported\n");
+		goto out_mutex;
+	}
+
 	/*
 	 * Set the supported features correctly for the builtin vhost-user
 	 * net driver.
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.148663283 +0000
+++ 0071-vhost-prevent-zero-copy-mode-if-IOMMU-is-on.patch	2019-12-19 14:32:26.161298936 +0000
@@ -1,8 +1,10 @@
-From c49197ff29fbd67e19a927683b7100dba602718d Mon Sep 17 00:00:00 2001
+From ab6aaeebdb71aab690ceb2aa4cf05c06c93087fd Mon Sep 17 00:00:00 2001
 From: Adrian Moreno <amorenoz@redhat.com>
 Date: Wed, 9 Oct 2019 13:54:32 +0200
 Subject: [PATCH] vhost: prevent zero copy mode if IOMMU is on
 
+[ upstream commit c49197ff29fbd67e19a927683b7100dba602718d ]
+
 The simultaneous use of dequeue_zero_copy and IOMMU is problematic.
 Not only because IOVA_VA mode is not supported but also because the
 potential invalidation of guest pages while the buffers are in use,
@@ -11,7 +13,6 @@
 Prevent these two features to be enabled simultaneously.
 
 Fixes: 69c90e98f483 ("vhost: enable IOMMU support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
 Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
@@ -21,10 +22,10 @@
  1 file changed, 8 insertions(+)
 
 diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
-index 274988c4d7..810049c158 100644
+index 2fa7ea0e09..c035b6ab5e 100644
 --- a/lib/librte_vhost/socket.c
 +++ b/lib/librte_vhost/socket.c
-@@ -871,6 +871,14 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
+@@ -675,6 +675,14 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
  	}
  	vsocket->dequeue_zero_copy = flags & RTE_VHOST_USER_DEQUEUE_ZERO_COPY;
  

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

* [dpdk-stable] patch 'net/virtio: fix descriptor addressed in Tx' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (69 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: prevent zero copy mode if IOMMU is on' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix address of first segment' " luca.boccassi
                   ` (66 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: Tiwei Bie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 87a984b6db89dce652464e660e0fe643654619ae Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Tue, 15 Oct 2019 09:11:27 +0100
Subject: [PATCH] net/virtio: fix descriptor addressed in Tx

[ upstream commit be048a1aaa7276cc99a5a6a30e7825cfcb523112 ]

Previous fix removes usage of rte_pktmbuf_prepend() to get pointer
to virtio net header which changes mbuf data_off and data_len.
Size of virtio net header is added to segment length when Tx descriptor
is composed, but segment address (calculated using data_off) is not
adjusted to take size of virtio net header into account.

Fixes: 1ae55ad38e5e ("net/virtio: fix mbuf data and packet length mismatch")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/virtio/virtio_rxtx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index 40255eee4e..c608575722 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -388,6 +388,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
 		start_dp[idx].len   = cookie->data_len;
 		if (prepend_header) {
+			start_dp[idx].addr -= head_size;
 			start_dp[idx].len += head_size;
 			prepend_header = false;
 		}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.184711742 +0000
+++ 0072-net-virtio-fix-descriptor-addressed-in-Tx.patch	2019-12-19 14:32:26.165299015 +0000
@@ -1,8 +1,10 @@
-From be048a1aaa7276cc99a5a6a30e7825cfcb523112 Mon Sep 17 00:00:00 2001
+From 87a984b6db89dce652464e660e0fe643654619ae Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Tue, 15 Oct 2019 09:11:27 +0100
 Subject: [PATCH] net/virtio: fix descriptor addressed in Tx
 
+[ upstream commit be048a1aaa7276cc99a5a6a30e7825cfcb523112 ]
+
 Previous fix removes usage of rte_pktmbuf_prepend() to get pointer
 to virtio net header which changes mbuf data_off and data_len.
 Size of virtio net header is added to segment length when Tx descriptor
@@ -10,46 +12,18 @@
 adjusted to take size of virtio net header into account.
 
 Fixes: 1ae55ad38e5e ("net/virtio: fix mbuf data and packet length mismatch")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
 ---
- drivers/net/virtio/virtio_rxtx.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ drivers/net/virtio/virtio_rxtx.c | 1 +
+ 1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index 701c1cf47b..b5fc4ecbe1 100644
+index 40255eee4e..c608575722 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -657,7 +657,8 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
- 		else
- 			virtqueue_xmit_offload(hdr, cookies[i], true);
- 
--		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookies[i], vq);
-+		start_dp[idx].addr  =
-+			VIRTIO_MBUF_DATA_DMA_ADDR(cookies[i], vq) - head_size;
- 		start_dp[idx].len   = cookies[i]->data_len + head_size;
- 		start_dp[idx].flags = 0;
- 
-@@ -704,7 +705,7 @@ virtqueue_enqueue_xmit_packed_fast(struct virtnet_tx *txvq,
- 	else
- 		virtqueue_xmit_offload(hdr, cookie, true);
- 
--	dp->addr = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
-+	dp->addr = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq) - head_size;
- 	dp->len  = cookie->data_len + head_size;
- 	dp->id   = id;
- 
-@@ -786,6 +787,7 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 		start_dp[idx].addr = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
- 		start_dp[idx].len  = cookie->data_len;
- 		if (prepend_header) {
-+			start_dp[idx].addr -= head_size;
- 			start_dp[idx].len += head_size;
- 			prepend_header = false;
- 		}
-@@ -889,6 +891,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+@@ -388,6 +388,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  		start_dp[idx].addr  = VIRTIO_MBUF_DATA_DMA_ADDR(cookie, vq);
  		start_dp[idx].len   = cookie->data_len;
  		if (prepend_header) {

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

* [dpdk-stable] patch 'net/i40e: fix address of first segment' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (70 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix descriptor addressed in Tx' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
                   ` (65 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Joyce Kong; +Cc: Xiao Zhang, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 820e4efd2d8e76fe7cdc591171bdd4be98375b68 Mon Sep 17 00:00:00 2001
From: Joyce Kong <joyce.kong@arm.com>
Date: Tue, 24 Sep 2019 13:48:44 +0800
Subject: [PATCH] net/i40e: fix address of first segment

[ upstream commit ff4f8e24d535df81557f3dcef64d1aef8251f277 ]

This patch fixes (dereference after null check) coverity issue.
The address of first segmented packets was not set correctly during
reassembling packets which led to this issue.

Coverity issue: 343422, 343403
Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector driver")

Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/i40e/i40e_rxtx_vec_neon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
index c2a85fcc20..4b77e8cf4f 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -503,6 +503,7 @@ i40e_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			i++;
 		if (i == nb_bufs)
 			return nb_bufs;
+		rxq->pkt_first_seg = rx_pkts[i];
 	}
 	return i + reassemble_packets(rxq, &rx_pkts[i], nb_bufs - i,
 		&split_flags[i]);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.221706237 +0000
+++ 0073-net-i40e-fix-address-of-first-segment.patch	2019-12-19 14:32:26.165299015 +0000
@@ -1,15 +1,16 @@
-From ff4f8e24d535df81557f3dcef64d1aef8251f277 Mon Sep 17 00:00:00 2001
+From 820e4efd2d8e76fe7cdc591171bdd4be98375b68 Mon Sep 17 00:00:00 2001
 From: Joyce Kong <joyce.kong@arm.com>
 Date: Tue, 24 Sep 2019 13:48:44 +0800
 Subject: [PATCH] net/i40e: fix address of first segment
 
+[ upstream commit ff4f8e24d535df81557f3dcef64d1aef8251f277 ]
+
 This patch fixes (dereference after null check) coverity issue.
 The address of first segmented packets was not set correctly during
 reassembling packets which led to this issue.
 
 Coverity issue: 343422, 343403
 Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Joyce Kong <joyce.kong@arm.com>
 Reviewed-by: Xiao Zhang <xiao.zhang@intel.com>
@@ -19,10 +20,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-index 864eb9a325..deb185fe2f 100644
+index c2a85fcc20..4b77e8cf4f 100644
 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
 +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-@@ -474,6 +474,7 @@ i40e_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -503,6 +503,7 @@ i40e_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  			i++;
  		if (i == nb_bufs)
  			return nb_bufs;

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

* [dpdk-stable] patch 'net/ixgbe: fix address of first segment' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (71 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix address of first segment' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix a common typo in NIC guides' " luca.boccassi
                   ` (64 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Joyce Kong; +Cc: Xiao Zhang, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e2d7c98653f151eaa64964352f7e3fde22b35065 Mon Sep 17 00:00:00 2001
From: Joyce Kong <joyce.kong@arm.com>
Date: Tue, 24 Sep 2019 13:48:45 +0800
Subject: [PATCH] net/ixgbe: fix address of first segment

[ upstream commit 648255d43e4a820274cbb02cca3ece445d8de302 ]

This patch fixes (dereference after null check) coverity issue.
The address of first segmented packets was not set correctly during
reassembling packets which led to this issue.

Coverity issue: 13245
Fixes: 8a44c15aa57d ("net/ixgbe: extract non-x86 specific code from vector driver")

Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index 4d7726f406..0b38d97fa0 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -403,6 +403,7 @@ ixgbe_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			i++;
 		if (i == nb_bufs)
 			return nb_bufs;
+		rxq->pkt_first_seg = rx_pkts[i];
 	}
 	return i + reassemble_packets(rxq, &rx_pkts[i], nb_bufs - i,
 		&split_flags[i]);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.261099526 +0000
+++ 0074-net-ixgbe-fix-address-of-first-segment.patch	2019-12-19 14:32:26.165299015 +0000
@@ -1,15 +1,16 @@
-From 648255d43e4a820274cbb02cca3ece445d8de302 Mon Sep 17 00:00:00 2001
+From e2d7c98653f151eaa64964352f7e3fde22b35065 Mon Sep 17 00:00:00 2001
 From: Joyce Kong <joyce.kong@arm.com>
 Date: Tue, 24 Sep 2019 13:48:45 +0800
 Subject: [PATCH] net/ixgbe: fix address of first segment
 
+[ upstream commit 648255d43e4a820274cbb02cca3ece445d8de302 ]
+
 This patch fixes (dereference after null check) coverity issue.
 The address of first segmented packets was not set correctly during
 reassembling packets which led to this issue.
 
 Coverity issue: 13245
 Fixes: 8a44c15aa57d ("net/ixgbe: extract non-x86 specific code from vector driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Joyce Kong <joyce.kong@arm.com>
 Reviewed-by: Xiao Zhang <xiao.zhang@intel.com>
@@ -19,10 +20,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
-index eeb825911c..26c0ef5aec 100644
+index 4d7726f406..0b38d97fa0 100644
 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
 +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
-@@ -375,6 +375,7 @@ ixgbe_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -403,6 +403,7 @@ ixgbe_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  			i++;
  		if (i == nb_bufs)
  			return nb_bufs;

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

* [dpdk-stable] patch 'doc: fix a common typo in NIC guides' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (72 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix help for loop topology option' " luca.boccassi
                   ` (63 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5819d41a32a4be25eda2d531e7a4329bd22c6c51 Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Fri, 18 Oct 2019 17:06:57 +0200
Subject: [PATCH] doc: fix a common typo in NIC guides

[ upstream commit e599bbf442f502fce0671f6b6f39f728b14259a7 ]

'CRC striping' should be spelled 'CRC stripping'.

Fixes: 3eee1f067e7c ("fm10k: add guide")
Fixes: 7a4d9f6676d7 ("doc: add liquidio")
Fixes: f820b5896631 ("doc: add octeontx ethdev driver documentation")
Fixes: 920717e4d8ba ("net/octeontx2: add device start operation")
Fixes: f994cecafdcf ("doc: add ThunderX nicvf")

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/guides/nics/fm10k.rst    | 4 ++--
 doc/guides/nics/liquidio.rst | 4 ++--
 doc/guides/nics/octeontx.rst | 4 ++--
 doc/guides/nics/thunderx.rst | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/doc/guides/nics/fm10k.rst b/doc/guides/nics/fm10k.rst
index b47fc0db08..470c5798b9 100644
--- a/doc/guides/nics/fm10k.rst
+++ b/doc/guides/nics/fm10k.rst
@@ -172,8 +172,8 @@ the Rx/Tx queues. When switch comes up, a LSC event indicating ``LINK_UP`` is
 sent to the app, which can then restart the FM10000 port to resume network
 processing.
 
-CRC striping
-~~~~~~~~~~~~
+CRC stripping
+~~~~~~~~~~~~~
 
 The FM10000 family of NICs strip the CRC for every packets coming into the
 host interface.  So, CRC will be stripped even when the
diff --git a/doc/guides/nics/liquidio.rst b/doc/guides/nics/liquidio.rst
index 7bc1604005..fffa7b5dec 100644
--- a/doc/guides/nics/liquidio.rst
+++ b/doc/guides/nics/liquidio.rst
@@ -225,8 +225,8 @@ Ring size
 
 Number of descriptors for Rx/Tx ring should be in the range 128 to 512.
 
-CRC striping
-~~~~~~~~~~~~
+CRC stripping
+~~~~~~~~~~~~~
 
 LiquidIO adapters strip ethernet FCS of every packet coming to the host
 interface. So, CRC will be stripped even when the ``rxmode.hw_strip_crc``
diff --git a/doc/guides/nics/octeontx.rst b/doc/guides/nics/octeontx.rst
index 90bb9e5dbe..8da0867556 100644
--- a/doc/guides/nics/octeontx.rst
+++ b/doc/guides/nics/octeontx.rst
@@ -209,8 +209,8 @@ This driver will only work with ``octeontx_fpavf`` external mempool handler
 as it is the most performance effective way for packet allocation and Tx buffer
 recycling on OCTEONTX SoC platform.
 
-CRC striping
-~~~~~~~~~~~~
+CRC stripping
+~~~~~~~~~~~~~
 
 The OCTEONTX SoC family NICs strip the CRC for every packets coming into the
 host interface. So, CRC will be stripped even when the
diff --git a/doc/guides/nics/thunderx.rst b/doc/guides/nics/thunderx.rst
index 45bc690ad2..f8896842da 100644
--- a/doc/guides/nics/thunderx.rst
+++ b/doc/guides/nics/thunderx.rst
@@ -354,8 +354,8 @@ The nicvf thunderx driver will make use of attached secondary VFs automatically
 Limitations
 -----------
 
-CRC striping
-~~~~~~~~~~~~
+CRC stripping
+~~~~~~~~~~~~~
 
 The ThunderX SoC family NICs strip the CRC for every packets coming into the
 host interface. So, CRC will be stripped even when the
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.296342550 +0000
+++ 0075-doc-fix-a-common-typo-in-NIC-guides.patch	2019-12-19 14:32:26.169299095 +0000
@@ -1,8 +1,10 @@
-From e599bbf442f502fce0671f6b6f39f728b14259a7 Mon Sep 17 00:00:00 2001
+From 5819d41a32a4be25eda2d531e7a4329bd22c6c51 Mon Sep 17 00:00:00 2001
 From: Thierry Herbelot <thierry.herbelot@6wind.com>
 Date: Fri, 18 Oct 2019 17:06:57 +0200
 Subject: [PATCH] doc: fix a common typo in NIC guides
 
+[ upstream commit e599bbf442f502fce0671f6b6f39f728b14259a7 ]
+
 'CRC striping' should be spelled 'CRC stripping'.
 
 Fixes: 3eee1f067e7c ("fm10k: add guide")
@@ -10,23 +12,21 @@
 Fixes: f820b5896631 ("doc: add octeontx ethdev driver documentation")
 Fixes: 920717e4d8ba ("net/octeontx2: add device start operation")
 Fixes: f994cecafdcf ("doc: add ThunderX nicvf")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
 ---
- doc/guides/nics/fm10k.rst     | 4 ++--
- doc/guides/nics/liquidio.rst  | 4 ++--
- doc/guides/nics/octeontx.rst  | 4 ++--
- doc/guides/nics/octeontx2.rst | 4 ++--
- doc/guides/nics/thunderx.rst  | 4 ++--
- 5 files changed, 10 insertions(+), 10 deletions(-)
+ doc/guides/nics/fm10k.rst    | 4 ++--
+ doc/guides/nics/liquidio.rst | 4 ++--
+ doc/guides/nics/octeontx.rst | 4 ++--
+ doc/guides/nics/thunderx.rst | 4 ++--
+ 4 files changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/doc/guides/nics/fm10k.rst b/doc/guides/nics/fm10k.rst
-index 764e089c86..20a1cde535 100644
+index b47fc0db08..470c5798b9 100644
 --- a/doc/guides/nics/fm10k.rst
 +++ b/doc/guides/nics/fm10k.rst
-@@ -135,8 +135,8 @@ the Rx/Tx queues. When switch comes up, a LSC event indicating ``LINK_UP`` is
+@@ -172,8 +172,8 @@ the Rx/Tx queues. When switch comes up, a LSC event indicating ``LINK_UP`` is
  sent to the app, which can then restart the FM10000 port to resume network
  processing.
  
@@ -36,12 +36,12 @@
 +~~~~~~~~~~~~~
  
  The FM10000 family of NICs strip the CRC for every packets coming into the
- host interface. So, keeping CRC is not supported.
+ host interface.  So, CRC will be stripped even when the
 diff --git a/doc/guides/nics/liquidio.rst b/doc/guides/nics/liquidio.rst
-index e2a38004d0..0534146720 100644
+index 7bc1604005..fffa7b5dec 100644
 --- a/doc/guides/nics/liquidio.rst
 +++ b/doc/guides/nics/liquidio.rst
-@@ -190,7 +190,7 @@ Ring size
+@@ -225,8 +225,8 @@ Ring size
  
  Number of descriptors for Rx/Tx ring should be in the range 128 to 512.
  
@@ -50,42 +50,28 @@
 +CRC stripping
 +~~~~~~~~~~~~~
  
- LiquidIO adapters strip ethernet FCS of every packet coming to the host interface.
+ LiquidIO adapters strip ethernet FCS of every packet coming to the host
+ interface. So, CRC will be stripped even when the ``rxmode.hw_strip_crc``
 diff --git a/doc/guides/nics/octeontx.rst b/doc/guides/nics/octeontx.rst
-index 012a3ec21f..3c19c912db 100644
+index 90bb9e5dbe..8da0867556 100644
 --- a/doc/guides/nics/octeontx.rst
 +++ b/doc/guides/nics/octeontx.rst
-@@ -161,8 +161,8 @@ This driver will only work with ``octeontx_fpavf`` external mempool handler
+@@ -209,8 +209,8 @@ This driver will only work with ``octeontx_fpavf`` external mempool handler
  as it is the most performance effective way for packet allocation and Tx buffer
- recycling on OCTEON TX SoC platform.
- 
--CRC striping
--~~~~~~~~~~~~
-+CRC stripping
-+~~~~~~~~~~~~~
- 
- The OCTEON TX SoC family NICs strip the CRC for every packets coming into the
- host interface irrespective of the offload configuration.
-diff --git a/doc/guides/nics/octeontx2.rst b/doc/guides/nics/octeontx2.rst
-index 3b567a55e8..fc8a130fb9 100644
---- a/doc/guides/nics/octeontx2.rst
-+++ b/doc/guides/nics/octeontx2.rst
-@@ -188,8 +188,8 @@ The OCTEON TX2 SoC family NIC has inbuilt HW assisted external mempool manager.
- as it is performance wise most effective way for packet allocation and Tx buffer
- recycling on OCTEON TX2 SoC platform.
+ recycling on OCTEONTX SoC platform.
  
 -CRC striping
 -~~~~~~~~~~~~
 +CRC stripping
 +~~~~~~~~~~~~~
  
- The OCTEON TX2 SoC family NICs strip the CRC for every packet being received by
- the host interface irrespective of the offload configuration.
+ The OCTEONTX SoC family NICs strip the CRC for every packets coming into the
+ host interface. So, CRC will be stripped even when the
 diff --git a/doc/guides/nics/thunderx.rst b/doc/guides/nics/thunderx.rst
-index 53eaec72a7..3b75a9a9af 100644
+index 45bc690ad2..f8896842da 100644
 --- a/doc/guides/nics/thunderx.rst
 +++ b/doc/guides/nics/thunderx.rst
-@@ -331,8 +331,8 @@ Example:
+@@ -354,8 +354,8 @@ The nicvf thunderx driver will make use of attached secondary VFs automatically
  Limitations
  -----------
  
@@ -95,7 +81,7 @@
 +~~~~~~~~~~~~~
  
  The ThunderX SoC family NICs strip the CRC for every packets coming into the
- host interface irrespective of the offload configuration.
+ host interface. So, CRC will be stripped even when the
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'app/testpmd: fix help for loop topology option' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (73 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix a common typo in NIC guides' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/af_packet: improve Tx statistics accuracy' " luca.boccassi
                   ` (62 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ciara Power; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 54bbd07a7155851b21e7d840dd1ccd7771c50214 Mon Sep 17 00:00:00 2001
From: Ciara Power <ciara.power@intel.com>
Date: Fri, 18 Oct 2019 16:45:40 +0100
Subject: [PATCH] app/testpmd: fix help for loop topology option

[ upstream commit e71df49e08f5b76513b3ee93583b9856a99ba2d8 ]

The testpmd --help option did not show all possible choices for port
topology previously. The loop topology option is now added.

Fixes: 3e2006d6186c ("app/testpmd: add loopback topology")

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/test-pmd/parameters.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 1dfbcc4f99..8fcd72d297 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -168,8 +168,8 @@ usage(char* progname)
 	printf("  --disable-hw-vlan-extend: disable hardware vlan extend.\n");
 	printf("  --enable-drop-en: enable per queue packet drop.\n");
 	printf("  --disable-rss: disable rss.\n");
-	printf("  --port-topology=N: set port topology (N: paired (default) or "
-	       "chained).\n");
+	printf("  --port-topology=<paired|chained|loop>: set port topology (paired "
+	       "is default).\n");
 	printf("  --forward-mode=N: set forwarding mode (N: %s).\n",
 	       list_pkt_forwarding_modes());
 	printf("  --rss-ip: set RSS functions to IPv4/IPv6 only .\n");
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.332542957 +0000
+++ 0076-app-testpmd-fix-help-for-loop-topology-option.patch	2019-12-19 14:32:26.173299174 +0000
@@ -1,13 +1,14 @@
-From e71df49e08f5b76513b3ee93583b9856a99ba2d8 Mon Sep 17 00:00:00 2001
+From 54bbd07a7155851b21e7d840dd1ccd7771c50214 Mon Sep 17 00:00:00 2001
 From: Ciara Power <ciara.power@intel.com>
 Date: Fri, 18 Oct 2019 16:45:40 +0100
 Subject: [PATCH] app/testpmd: fix help for loop topology option
 
+[ upstream commit e71df49e08f5b76513b3ee93583b9856a99ba2d8 ]
+
 The testpmd --help option did not show all possible choices for port
 topology previously. The loop topology option is now added.
 
 Fixes: 3e2006d6186c ("app/testpmd: add loopback topology")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ciara Power <ciara.power@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -16,11 +17,11 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
-index 5e55263eb4..9ea87c1471 100644
+index 1dfbcc4f99..8fcd72d297 100644
 --- a/app/test-pmd/parameters.c
 +++ b/app/test-pmd/parameters.c
-@@ -139,8 +139,8 @@ usage(char* progname)
- 	printf("  --enable-hw-qinq-strip: enable hardware qinq strip.\n");
+@@ -168,8 +168,8 @@ usage(char* progname)
+ 	printf("  --disable-hw-vlan-extend: disable hardware vlan extend.\n");
  	printf("  --enable-drop-en: enable per queue packet drop.\n");
  	printf("  --disable-rss: disable rss.\n");
 -	printf("  --port-topology=N: set port topology (N: paired (default) or "

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

* [dpdk-stable] patch 'net/af_packet: improve Tx statistics accuracy' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (74 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix help for loop topology option' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/igb: fix global variable multiple definitions' " luca.boccassi
                   ` (61 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Flavia Musatescu; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 88a449cc34a5bfaf019c60b8a8b0093226550787 Mon Sep 17 00:00:00 2001
From: Flavia Musatescu <flavia.musatescu@intel.com>
Date: Fri, 18 Oct 2019 15:24:31 +0100
Subject: [PATCH] net/af_packet: improve Tx statistics accuracy

[ upstream commit d4bda0ab2972cb3fd65fbb2575a51de5a68757cb ]

When sendto call fails and ENOBUFS/EAGAIN error is being set
some of the packets are actually successfully transmitted.
There is no available count of those packets, so in order to
make the statistics more accurate, all the previously enqueued
packets will be considered successful, even though this is not
entirely correct.

Statistics numbers before this update:

Pktgen:
   Total Rx Pkts:               1360084
         Tx Pkts:               2000000
testpmd:
   RX-packets: 1408346  RX-missed: 0       RX-bytes:  84503418
   TX-packets: 526486   TX-errors: 881851  TX-bytes:  31589724

Statistics numbers after this update:

Pktgen:
   Total Rx Pkts:               1329872
         Tx Pkts:               2000000
testpmd:
   RX-packets: 1389156  RX-missed: 0       RX-bytes:  83349360
   TX-packets: 1389156  TX-errors: 0       TX-bytes:  83349360

Fixes: 74b7fc0a0ff1 ("net/af_packet: fix packet bytes counting")

Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/af_packet/rte_eth_af_packet.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 4735280902..ae9b0e25f0 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -263,8 +263,14 @@ eth_af_packet_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 	}
 
 	/* kick-off transmits */
-	if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1) {
-		/* error sending -- no packets transmitted */
+	if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1 &&
+			errno != ENOBUFS && errno != EAGAIN) {
+		/*
+		 * In case of a ENOBUFS/EAGAIN error all of the enqueued
+		 * packets will be considered successful even though only some
+		 * are sent.
+		 */
+
 		num_tx = 0;
 		num_tx_bytes = 0;
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.368474807 +0000
+++ 0077-net-af_packet-improve-Tx-statistics-accuracy.patch	2019-12-19 14:32:26.173299174 +0000
@@ -1,8 +1,10 @@
-From d4bda0ab2972cb3fd65fbb2575a51de5a68757cb Mon Sep 17 00:00:00 2001
+From 88a449cc34a5bfaf019c60b8a8b0093226550787 Mon Sep 17 00:00:00 2001
 From: Flavia Musatescu <flavia.musatescu@intel.com>
 Date: Fri, 18 Oct 2019 15:24:31 +0100
 Subject: [PATCH] net/af_packet: improve Tx statistics accuracy
 
+[ upstream commit d4bda0ab2972cb3fd65fbb2575a51de5a68757cb ]
+
 When sendto call fails and ENOBUFS/EAGAIN error is being set
 some of the packets are actually successfully transmitted.
 There is no available count of those packets, so in order to
@@ -29,7 +31,6 @@
    TX-packets: 1389156  TX-errors: 0       TX-bytes:  83349360
 
 Fixes: 74b7fc0a0ff1 ("net/af_packet: fix packet bytes counting")
-Cc: stable@dpdk.org
 
 Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -38,10 +39,10 @@
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
-index dce76b04e5..5b71db7078 100644
+index 4735280902..ae9b0e25f0 100644
 --- a/drivers/net/af_packet/rte_eth_af_packet.c
 +++ b/drivers/net/af_packet/rte_eth_af_packet.c
-@@ -244,8 +244,14 @@ eth_af_packet_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+@@ -263,8 +263,14 @@ eth_af_packet_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
  	}
  
  	/* kick-off transmits */

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

* [dpdk-stable] patch 'net/igb: fix global variable multiple definitions' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (75 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/af_packet: improve Tx statistics accuracy' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'test: " luca.boccassi
                   ` (60 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From eec95b017daf7b4beca531b2c4a526cb467c23f4 Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Thu, 5 Sep 2019 15:53:07 +0100
Subject: [PATCH] net/igb: fix global variable multiple definitions

[ upstream commit b6730d93a13ace701d4f53adcdbbd7c50a90cfbd ]

Filtering related global variables are defined in a header file which
was causing multiple definitions of the variables, fixed it by moving
them to the .c file.

Issue has been detected by '-fno-common' gcc flag.

Fixes: 22bb13410cb2 ("net/igb: create consistent filter")
Fixes: 424ae915baf0 ("net/e1000: move RSS to flow API")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/e1000/e1000_ethdev.h | 10 +++++-----
 drivers/net/e1000/igb_flow.c     |  6 ++++++
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h
index 5668910c5a..70a4798bae 100644
--- a/drivers/net/e1000/e1000_ethdev.h
+++ b/drivers/net/e1000/e1000_ethdev.h
@@ -350,15 +350,15 @@ struct igb_flow_mem {
 };
 
 TAILQ_HEAD(igb_ntuple_filter_list, igb_ntuple_filter_ele);
-struct igb_ntuple_filter_list igb_filter_ntuple_list;
+extern struct igb_ntuple_filter_list igb_filter_ntuple_list;
 TAILQ_HEAD(igb_ethertype_filter_list, igb_ethertype_filter_ele);
-struct igb_ethertype_filter_list igb_filter_ethertype_list;
+extern struct igb_ethertype_filter_list igb_filter_ethertype_list;
 TAILQ_HEAD(igb_syn_filter_list, igb_eth_syn_filter_ele);
-struct igb_syn_filter_list igb_filter_syn_list;
+extern struct igb_syn_filter_list igb_filter_syn_list;
 TAILQ_HEAD(igb_flex_filter_list, igb_flex_filter_ele);
-struct igb_flex_filter_list igb_filter_flex_list;
+extern struct igb_flex_filter_list igb_filter_flex_list;
 TAILQ_HEAD(igb_flow_mem_list, igb_flow_mem);
-struct igb_flow_mem_list igb_flow_list;
+extern struct igb_flow_mem_list igb_flow_list;
 
 extern const struct rte_flow_ops igb_flow_ops;
 
diff --git a/drivers/net/e1000/igb_flow.c b/drivers/net/e1000/igb_flow.c
index 057579b346..894f8a14d5 100644
--- a/drivers/net/e1000/igb_flow.c
+++ b/drivers/net/e1000/igb_flow.c
@@ -78,6 +78,12 @@
 
 #define	IGB_FLEX_RAW_NUM	12
 
+struct igb_flow_mem_list igb_flow_list;
+struct igb_ntuple_filter_list igb_filter_ntuple_list;
+struct igb_ethertype_filter_list igb_filter_ethertype_list;
+struct igb_syn_filter_list igb_filter_syn_list;
+struct igb_flex_filter_list igb_filter_flex_list;
+
 /**
  * Please aware there's an asumption for all the parsers.
  * rte_flow_item is using big endian, rte_flow_attr and
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.456504518 +0000
+++ 0078-net-igb-fix-global-variable-multiple-definitions.patch	2019-12-19 14:32:26.177299253 +0000
@@ -1,8 +1,10 @@
-From b6730d93a13ace701d4f53adcdbbd7c50a90cfbd Mon Sep 17 00:00:00 2001
+From eec95b017daf7b4beca531b2c4a526cb467c23f4 Mon Sep 17 00:00:00 2001
 From: Ferruh Yigit <ferruh.yigit@intel.com>
 Date: Thu, 5 Sep 2019 15:53:07 +0100
 Subject: [PATCH] net/igb: fix global variable multiple definitions
 
+[ upstream commit b6730d93a13ace701d4f53adcdbbd7c50a90cfbd ]
+
 Filtering related global variables are defined in a header file which
 was causing multiple definitions of the variables, fixed it by moving
 them to the .c file.
@@ -11,19 +13,18 @@
 
 Fixes: 22bb13410cb2 ("net/igb: create consistent filter")
 Fixes: 424ae915baf0 ("net/e1000: move RSS to flow API")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 ---
- drivers/net/e1000/e1000_ethdev.h | 12 ++++++------
- drivers/net/e1000/igb_flow.c     |  7 +++++++
- 2 files changed, 13 insertions(+), 6 deletions(-)
+ drivers/net/e1000/e1000_ethdev.h | 10 +++++-----
+ drivers/net/e1000/igb_flow.c     |  6 ++++++
+ 2 files changed, 11 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h
-index 01ff9433b3..1e41ae9de1 100644
+index 5668910c5a..70a4798bae 100644
 --- a/drivers/net/e1000/e1000_ethdev.h
 +++ b/drivers/net/e1000/e1000_ethdev.h
-@@ -351,17 +351,17 @@ struct igb_flow_mem {
+@@ -350,15 +350,15 @@ struct igb_flow_mem {
  };
  
  TAILQ_HEAD(igb_ntuple_filter_list, igb_ntuple_filter_ele);
@@ -38,9 +39,6 @@
  TAILQ_HEAD(igb_flex_filter_list, igb_flex_filter_ele);
 -struct igb_flex_filter_list igb_filter_flex_list;
 +extern struct igb_flex_filter_list igb_filter_flex_list;
- TAILQ_HEAD(igb_rss_filter_list, igb_rss_conf_ele);
--struct igb_rss_filter_list igb_filter_rss_list;
-+extern struct igb_rss_filter_list igb_filter_rss_list;
  TAILQ_HEAD(igb_flow_mem_list, igb_flow_mem);
 -struct igb_flow_mem_list igb_flow_list;
 +extern struct igb_flow_mem_list igb_flow_list;
@@ -48,10 +46,10 @@
  extern const struct rte_flow_ops igb_flow_ops;
  
 diff --git a/drivers/net/e1000/igb_flow.c b/drivers/net/e1000/igb_flow.c
-index 4e0b38fcf1..31ca9bb1c3 100644
+index 057579b346..894f8a14d5 100644
 --- a/drivers/net/e1000/igb_flow.c
 +++ b/drivers/net/e1000/igb_flow.c
-@@ -49,6 +49,13 @@
+@@ -78,6 +78,12 @@
  
  #define	IGB_FLEX_RAW_NUM	12
  
@@ -60,7 +58,6 @@
 +struct igb_ethertype_filter_list igb_filter_ethertype_list;
 +struct igb_syn_filter_list igb_filter_syn_list;
 +struct igb_flex_filter_list igb_filter_flex_list;
-+struct igb_rss_filter_list igb_filter_rss_list;
 +
  /**
   * Please aware there's an asumption for all the parsers.

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

* [dpdk-stable] patch 'test: fix global variable multiple definitions' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (76 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/igb: fix global variable multiple definitions' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'vfio: fix truncated BAR offset for 32-bit' " luca.boccassi
                   ` (59 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From fb474b5fb2117e96be06f9a78fc0e10a27c75de3 Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Thu, 5 Sep 2019 15:53:15 +0100
Subject: [PATCH] test: fix global variable multiple definitions

[ upstream commit d170527643bcee1ef35390d8ac57ddccf6621b82 ]

Multiple global variable are defined in multiple unit test files with
same name, but all unit test files are linked into single executable,
which means those variables share same storage which is not the
intention, fixed by making global variables 'static'.

Issue has been detected by '-fno-common' gcc flag.

Fixes: fdeb30fa7102 ("test/bitrate: add unit tests for bitrate library")
Fixes: c3eabff124e6 ("distributor: add unit tests")
Fixes: 0e925aef2779 ("app/test: add EFD functional and perf tests")
Fixes: 359e17bf081f ("app/test: improve hash unit tests")
Fixes: c7eb0972e74b ("test/hash: add lock-free r/w concurrency")
Fixes: 1e3676a06e4c ("test/latency: add unit tests for latencystats library")
Fixes: 0cc67a96e486 ("test/member: add functional and perf tests")
Fixes: e6a14121f4ae ("test/rcu: remove arbitrary limit on max core count")
Fixes: 104dbec2081a ("test/rcu: increase size of core numbers")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 test/test/test_distributor_perf.c |  2 +-
 test/test/test_efd.c              |  2 +-
 test/test/test_efd_perf.c         |  6 +++---
 test/test/test_hash_perf.c        | 12 ++++++------
 test/test/test_member_perf.c      | 16 ++++++++--------
 5 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/test/test/test_distributor_perf.c b/test/test/test_distributor_perf.c
index 4a62a9226f..a1fe0bbb10 100644
--- a/test/test/test_distributor_perf.c
+++ b/test/test/test_distributor_perf.c
@@ -54,7 +54,7 @@ static volatile unsigned worker_idx;
 struct worker_stats {
 	volatile unsigned handled_packets;
 } __rte_cache_aligned;
-struct worker_stats worker_stats[RTE_MAX_LCORE];
+static struct worker_stats worker_stats[RTE_MAX_LCORE];
 
 /*
  * worker thread used for testing the time to do a round-trip of a cache
diff --git a/test/test/test_efd.c b/test/test/test_efd.c
index 544306166a..0ee09c903c 100644
--- a/test/test/test_efd.c
+++ b/test/test/test_efd.c
@@ -125,7 +125,7 @@ static struct flow_key keys[5] = {
 	}
 };
 /* Array to store the data */
-efd_value_t data[5];
+static efd_value_t data[5];
 
 static inline uint8_t efd_get_all_sockets_bitmask(void)
 {
diff --git a/test/test/test_efd_perf.c b/test/test/test_efd_perf.c
index 2b8a8eac5b..7dca182abe 100644
--- a/test/test/test_efd_perf.c
+++ b/test/test/test_efd_perf.c
@@ -100,13 +100,13 @@ static uint32_t hashtest_key_lens[] = {
 };
 
 /* Array to store number of cycles per operation */
-uint64_t cycles[NUM_KEYSIZES][NUM_OPERATIONS];
+static uint64_t cycles[NUM_KEYSIZES][NUM_OPERATIONS];
 
 /* Array to store the data */
-efd_value_t data[KEYS_TO_ADD];
+static efd_value_t data[KEYS_TO_ADD];
 
 /* Array to store all input keys */
-uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
+static uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
 
 /* Shuffle the keys that have been added, so lookups will be totally random */
 static void
diff --git a/test/test/test_hash_perf.c b/test/test/test_hash_perf.c
index b965d9b255..6cd87a600b 100644
--- a/test/test/test_hash_perf.c
+++ b/test/test/test_hash_perf.c
@@ -81,22 +81,22 @@ static uint32_t hashtest_key_lens[] = {
 struct rte_hash *h[NUM_KEYSIZES];
 
 /* Array that stores if a slot is full */
-uint8_t slot_taken[MAX_ENTRIES];
+static uint8_t slot_taken[MAX_ENTRIES];
 
 /* Array to store number of cycles per operation */
-uint64_t cycles[NUM_KEYSIZES][NUM_OPERATIONS][2][2];
+static uint64_t cycles[NUM_KEYSIZES][NUM_OPERATIONS][2][2];
 
 /* Array to store all input keys */
-uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
+static uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
 
 /* Array to store the precomputed hash for 'keys' */
-hash_sig_t signatures[KEYS_TO_ADD];
+static hash_sig_t signatures[KEYS_TO_ADD];
 
 /* Array to store how many busy entries have each bucket */
-uint8_t buckets[NUM_BUCKETS];
+static uint8_t buckets[NUM_BUCKETS];
 
 /* Array to store the positions where keys are added */
-int32_t positions[KEYS_TO_ADD];
+static int32_t positions[KEYS_TO_ADD];
 
 /* Parameters used for hash table in unit test functions. */
 static struct rte_hash_parameters ut_params = {
diff --git a/test/test/test_member_perf.c b/test/test/test_member_perf.c
index e13066f19b..554d3d70e3 100644
--- a/test/test/test_member_perf.c
+++ b/test/test/test_member_perf.c
@@ -94,18 +94,18 @@ static uint32_t hashtest_key_lens[] = {
 };
 
 /* Array to store number of cycles per operation */
-uint64_t cycles[NUM_TYPE][NUM_KEYSIZES][NUM_OPERATIONS];
-uint64_t false_data[NUM_TYPE][NUM_KEYSIZES];
-uint64_t false_data_bulk[NUM_TYPE][NUM_KEYSIZES];
-uint64_t false_data_multi[NUM_TYPE][NUM_KEYSIZES];
-uint64_t false_data_multi_bulk[NUM_TYPE][NUM_KEYSIZES];
+static uint64_t cycles[NUM_TYPE][NUM_KEYSIZES][NUM_OPERATIONS];
+static uint64_t false_data[NUM_TYPE][NUM_KEYSIZES];
+static uint64_t false_data_bulk[NUM_TYPE][NUM_KEYSIZES];
+static uint64_t false_data_multi[NUM_TYPE][NUM_KEYSIZES];
+static uint64_t false_data_multi_bulk[NUM_TYPE][NUM_KEYSIZES];
 
-uint64_t false_hit[NUM_TYPE][NUM_KEYSIZES];
+static uint64_t false_hit[NUM_TYPE][NUM_KEYSIZES];
 
-member_set_t data[NUM_TYPE][/* Array to store the data */KEYS_TO_ADD];
+static member_set_t data[NUM_TYPE][/* Array to store the data */KEYS_TO_ADD];
 
 /* Array to store all input keys */
-uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
+static uint8_t keys[KEYS_TO_ADD][MAX_KEYSIZE];
 
 /* Shuffle the keys that have been added, so lookups will be totally random */
 static void
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.502060524 +0000
+++ 0079-test-fix-global-variable-multiple-definitions.patch	2019-12-19 14:32:26.181299332 +0000
@@ -1,8 +1,10 @@
-From d170527643bcee1ef35390d8ac57ddccf6621b82 Mon Sep 17 00:00:00 2001
+From fb474b5fb2117e96be06f9a78fc0e10a27c75de3 Mon Sep 17 00:00:00 2001
 From: Ferruh Yigit <ferruh.yigit@intel.com>
 Date: Thu, 5 Sep 2019 15:53:15 +0100
 Subject: [PATCH] test: fix global variable multiple definitions
 
+[ upstream commit d170527643bcee1ef35390d8ac57ddccf6621b82 ]
+
 Multiple global variable are defined in multiple unit test files with
 same name, but all unit test files are linked into single executable,
 which means those variables share same storage which is not the
@@ -19,43 +21,21 @@
 Fixes: 0cc67a96e486 ("test/member: add functional and perf tests")
 Fixes: e6a14121f4ae ("test/rcu: remove arbitrary limit on max core count")
 Fixes: 104dbec2081a ("test/rcu: increase size of core numbers")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 ---
- app/test/test_bitratestats.c      |  6 +++---
- app/test/test_distributor_perf.c  |  2 +-
- app/test/test_efd.c               |  2 +-
- app/test/test_efd_perf.c          |  6 +++---
- app/test/test_hash_perf.c         | 12 ++++++------
- app/test/test_hash_readwrite_lf.c |  8 ++++----
- app/test/test_latencystats.c      |  6 +++---
- app/test/test_member_perf.c       | 16 ++++++++--------
- app/test/test_rcu_qsbr.c          | 10 +++++-----
- 9 files changed, 34 insertions(+), 34 deletions(-)
-
-diff --git a/app/test/test_bitratestats.c b/app/test/test_bitratestats.c
-index 32b1b0fc0e..3a7d9c037a 100644
---- a/app/test/test_bitratestats.c
-+++ b/app/test/test_bitratestats.c
-@@ -18,9 +18,9 @@
- #define BIT_NUM_PACKETS 10
- #define QUEUE_ID 0
- 
--uint16_t portid;
--struct rte_stats_bitrates *bitrate_data;
--struct rte_ring *ring;
-+static uint16_t portid;
-+static struct rte_stats_bitrates *bitrate_data;
-+static struct rte_ring *ring;
- 
- /* To test whether rte_stats_bitrate_create is successful */
- static int
-diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c
-index 664530ff9e..f153bcf9bd 100644
---- a/app/test/test_distributor_perf.c
-+++ b/app/test/test_distributor_perf.c
-@@ -25,7 +25,7 @@ static volatile unsigned worker_idx;
+ test/test/test_distributor_perf.c |  2 +-
+ test/test/test_efd.c              |  2 +-
+ test/test/test_efd_perf.c         |  6 +++---
+ test/test/test_hash_perf.c        | 12 ++++++------
+ test/test/test_member_perf.c      | 16 ++++++++--------
+ 5 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/test/test/test_distributor_perf.c b/test/test/test_distributor_perf.c
+index 4a62a9226f..a1fe0bbb10 100644
+--- a/test/test/test_distributor_perf.c
++++ b/test/test/test_distributor_perf.c
+@@ -54,7 +54,7 @@ static volatile unsigned worker_idx;
  struct worker_stats {
  	volatile unsigned handled_packets;
  } __rte_cache_aligned;
@@ -64,11 +44,11 @@
  
  /*
   * worker thread used for testing the time to do a round-trip of a cache
-diff --git a/app/test/test_efd.c b/app/test/test_efd.c
-index 73b3044316..a779a71f2d 100644
---- a/app/test/test_efd.c
-+++ b/app/test/test_efd.c
-@@ -94,7 +94,7 @@ static struct flow_key keys[5] = {
+diff --git a/test/test/test_efd.c b/test/test/test_efd.c
+index 544306166a..0ee09c903c 100644
+--- a/test/test/test_efd.c
++++ b/test/test/test_efd.c
+@@ -125,7 +125,7 @@ static struct flow_key keys[5] = {
  	}
  };
  /* Array to store the data */
@@ -77,11 +57,11 @@
  
  static inline uint8_t efd_get_all_sockets_bitmask(void)
  {
-diff --git a/app/test/test_efd_perf.c b/app/test/test_efd_perf.c
-index 1dcb992c6e..d47622d5ca 100644
---- a/app/test/test_efd_perf.c
-+++ b/app/test/test_efd_perf.c
-@@ -71,13 +71,13 @@ static uint32_t hashtest_key_lens[] = {
+diff --git a/test/test/test_efd_perf.c b/test/test/test_efd_perf.c
+index 2b8a8eac5b..7dca182abe 100644
+--- a/test/test/test_efd_perf.c
++++ b/test/test/test_efd_perf.c
+@@ -100,13 +100,13 @@ static uint32_t hashtest_key_lens[] = {
  };
  
  /* Array to store number of cycles per operation */
@@ -98,11 +78,11 @@
  
  /* Shuffle the keys that have been added, so lookups will be totally random */
  static void
-diff --git a/app/test/test_hash_perf.c b/app/test/test_hash_perf.c
-index 5648fce023..a438eae6c8 100644
---- a/app/test/test_hash_perf.c
-+++ b/app/test/test_hash_perf.c
-@@ -53,22 +53,22 @@ static uint32_t hashtest_key_lens[] = {
+diff --git a/test/test/test_hash_perf.c b/test/test/test_hash_perf.c
+index b965d9b255..6cd87a600b 100644
+--- a/test/test/test_hash_perf.c
++++ b/test/test/test_hash_perf.c
+@@ -81,22 +81,22 @@ static uint32_t hashtest_key_lens[] = {
  struct rte_hash *h[NUM_KEYSIZES];
  
  /* Array that stores if a slot is full */
@@ -131,63 +111,11 @@
  
  /* Parameters used for hash table in unit test functions. */
  static struct rte_hash_parameters ut_params = {
-diff --git a/app/test/test_hash_readwrite_lf.c b/app/test/test_hash_readwrite_lf.c
-index 1f2fba41f1..97c304054c 100644
---- a/app/test/test_hash_readwrite_lf.c
-+++ b/app/test/test_hash_readwrite_lf.c
-@@ -48,7 +48,7 @@
- #define WRITE_EXT_BKT 2
- 
- #define NUM_TEST 3
--unsigned int rwc_core_cnt[NUM_TEST] = {1, 2, 4};
-+static unsigned int rwc_core_cnt[NUM_TEST] = {1, 2, 4};
- 
- struct rwc_perf {
- 	uint32_t w_no_ks_r_hit[2][NUM_TEST];
-@@ -62,7 +62,7 @@ struct rwc_perf {
- 
- static struct rwc_perf rwc_lf_results, rwc_non_lf_results;
- 
--struct {
-+static struct {
- 	uint32_t *keys;
- 	uint32_t *keys_no_ks;
- 	uint32_t *keys_ks;
-@@ -87,9 +87,9 @@ static rte_atomic64_t greads;
- 
- static volatile uint8_t writer_done;
- 
--uint16_t enabled_core_ids[RTE_MAX_LCORE];
-+static uint16_t enabled_core_ids[RTE_MAX_LCORE];
- 
--uint8_t *scanned_bkts;
-+static uint8_t *scanned_bkts;
- 
- static inline uint16_t
- get_short_sig(const hash_sig_t hash)
-diff --git a/app/test/test_latencystats.c b/app/test/test_latencystats.c
-index 8dd794be46..968e0bc470 100644
---- a/app/test/test_latencystats.c
-+++ b/app/test/test_latencystats.c
-@@ -17,10 +17,10 @@
- #define LATENCY_NUM_PACKETS 10
- #define QUEUE_ID 0
- 
--uint16_t portid;
--struct rte_ring *ring;
-+static uint16_t portid;
-+static struct rte_ring *ring;
- 
--struct rte_metric_name lat_stats_strings[] = {
-+static struct rte_metric_name lat_stats_strings[] = {
- 	{"min_latency_ns"},
- 	{"avg_latency_ns"},
- 	{"max_latency_ns"},
-diff --git a/app/test/test_member_perf.c b/app/test/test_member_perf.c
-index 564a2b3c1e..e2840f12d3 100644
---- a/app/test/test_member_perf.c
-+++ b/app/test/test_member_perf.c
-@@ -65,18 +65,18 @@ static uint32_t hashtest_key_lens[] = {
+diff --git a/test/test/test_member_perf.c b/test/test/test_member_perf.c
+index e13066f19b..554d3d70e3 100644
+--- a/test/test/test_member_perf.c
++++ b/test/test/test_member_perf.c
+@@ -94,18 +94,18 @@ static uint32_t hashtest_key_lens[] = {
  };
  
  /* Array to store number of cycles per operation */
@@ -214,41 +142,6 @@
  
  /* Shuffle the keys that have been added, so lookups will be totally random */
  static void
-diff --git a/app/test/test_rcu_qsbr.c b/app/test/test_rcu_qsbr.c
-index 2f71ec6ad3..85d80e0fbd 100644
---- a/app/test/test_rcu_qsbr.c
-+++ b/app/test/test_rcu_qsbr.c
-@@ -25,8 +25,8 @@
- /* Make sure that this has the same value as __RTE_QSBR_CNT_INIT */
- #define TEST_RCU_QSBR_CNT_INIT 1
- 
--uint16_t enabled_core_ids[RTE_MAX_LCORE];
--unsigned int num_cores;
-+static uint16_t enabled_core_ids[RTE_MAX_LCORE];
-+static unsigned int num_cores;
- 
- static uint32_t *keys;
- #define TOTAL_ENTRY (1024 * 8)
-@@ -35,8 +35,8 @@ static uint32_t *hash_data[RTE_MAX_LCORE][TOTAL_ENTRY];
- static uint8_t writer_done;
- 
- static struct rte_rcu_qsbr *t[RTE_MAX_LCORE];
--struct rte_hash *h[RTE_MAX_LCORE];
--char hash_name[RTE_MAX_LCORE][8];
-+static struct rte_hash *h[RTE_MAX_LCORE];
-+static char hash_name[RTE_MAX_LCORE][8];
- 
- struct test_rcu_thread_info {
- 	/* Index in RCU array */
-@@ -46,7 +46,7 @@ struct test_rcu_thread_info {
- 	/* lcore IDs registered on the RCU variable */
- 	uint16_t r_core_ids[2];
- };
--struct test_rcu_thread_info thread_info[RTE_MAX_LCORE/4];
-+static struct test_rcu_thread_info thread_info[RTE_MAX_LCORE/4];
- 
- static int
- alloc_rcu(void)
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'vfio: fix truncated BAR offset for 32-bit' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (77 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'test: " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'ethdev: fix include of ethernet header file' " luca.boccassi
                   ` (58 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Michal Krawczyk; +Cc: Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e19a6f68c34f091c9b7e814a722f25b8c4cb513b Mon Sep 17 00:00:00 2001
From: Michal Krawczyk <mk@semihalf.com>
Date: Thu, 24 Oct 2019 14:10:46 +0200
Subject: [PATCH] vfio: fix truncated BAR offset for 32-bit

[ upstream commit 8108393d982b805ee4911c0d5cdfed53acec5d36 ]

When 32-bit application is built on 64-bit system it is possible that
the offset of the resource is outside of the 32-bit value.

The problem with the unsigned long is, that it is 32-bit and not 64-bit
when using armhf compiler. Although the system is returning u64 value,
we are losing it's value if it's higher than 32-bit in the conversion
process. It can further cause mmap to fail due to offset being 0 or to
map not intended memory region.

To make it more portable, the uint64_t value is now being used for
storing offset instead of unsigned long. The size of being 32-bit seems
to be fine as the 32-bit application won't be able to access bigger
memory and it is further converted to size_t anyway. But for better
readability and to be consistent, it's type was changed to size_t as
well.

Fixes: 0205f873557c ("vfio: fix overflow of BAR region offset and size")

Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 drivers/bus/pci/linux/pci_vfio.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 5093265e56..98f2ec9b8e 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -356,7 +356,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
 		int bar_index, int additional_flags)
 {
 	struct memreg {
-		unsigned long offset, size;
+		uint64_t offset;
+		size_t   size;
 	} memreg[2] = {};
 	void *bar_addr;
 	struct pci_msix_table *msix_table = &vfio_res->msix_table;
@@ -392,7 +393,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
 		RTE_LOG(DEBUG, EAL,
 			"Trying to map BAR%d that contains the MSI-X "
 			"table. Trying offsets: "
-			"0x%04lx:0x%04lx, 0x%04lx:0x%04lx\n", bar_index,
+			"0x%04" PRIx64 ":0x%04zx, 0x%04" PRIx64 ":0x%04zx\n",
+			bar_index,
 			memreg[0].offset, memreg[0].size,
 			memreg[1].offset, memreg[1].size);
 	} else {
@@ -417,8 +419,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
 		if (map_addr != MAP_FAILED
 			&& memreg[1].offset && memreg[1].size) {
 			void *second_addr = RTE_PTR_ADD(bar_addr,
-							memreg[1].offset -
-							(uintptr_t)bar->offset);
+						(uintptr_t)(memreg[1].offset -
+						bar->offset));
 			map_addr = pci_map_resource(second_addr,
 							vfio_dev_fd,
 							memreg[1].offset,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.548858558 +0000
+++ 0080-vfio-fix-truncated-BAR-offset-for-32-bit.patch	2019-12-19 14:32:26.185299412 +0000
@@ -1,8 +1,10 @@
-From 8108393d982b805ee4911c0d5cdfed53acec5d36 Mon Sep 17 00:00:00 2001
+From e19a6f68c34f091c9b7e814a722f25b8c4cb513b Mon Sep 17 00:00:00 2001
 From: Michal Krawczyk <mk@semihalf.com>
 Date: Thu, 24 Oct 2019 14:10:46 +0200
 Subject: [PATCH] vfio: fix truncated BAR offset for 32-bit
 
+[ upstream commit 8108393d982b805ee4911c0d5cdfed53acec5d36 ]
+
 When 32-bit application is built on 64-bit system it is possible that
 the offset of the resource is outside of the 32-bit value.
 
@@ -20,7 +22,6 @@
 well.
 
 Fixes: 0205f873557c ("vfio: fix overflow of BAR region offset and size")
-Cc: stable@dpdk.org
 
 Signed-off-by: Michal Krawczyk <mk@semihalf.com>
 Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
@@ -29,10 +30,10 @@
  1 file changed, 6 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
-index faf2990a73..b8faa23f82 100644
+index 5093265e56..98f2ec9b8e 100644
 --- a/drivers/bus/pci/linux/pci_vfio.c
 +++ b/drivers/bus/pci/linux/pci_vfio.c
-@@ -451,7 +451,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
+@@ -356,7 +356,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
  		int bar_index, int additional_flags)
  {
  	struct memreg {
@@ -42,7 +43,7 @@
  	} memreg[2] = {};
  	void *bar_addr;
  	struct pci_msix_table *msix_table = &vfio_res->msix_table;
-@@ -504,7 +505,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
+@@ -392,7 +393,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
  		RTE_LOG(DEBUG, EAL,
  			"Trying to map BAR%d that contains the MSI-X "
  			"table. Trying offsets: "
@@ -52,7 +53,7 @@
  			memreg[0].offset, memreg[0].size,
  			memreg[1].offset, memreg[1].size);
  	} else {
-@@ -529,8 +531,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
+@@ -417,8 +419,8 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
  		if (map_addr != MAP_FAILED
  			&& memreg[1].offset && memreg[1].size) {
  			void *second_addr = RTE_PTR_ADD(bar_addr,

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

* [dpdk-stable] patch 'ethdev: fix include of ethernet header file' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (78 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'vfio: fix truncated BAR offset for 32-bit' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix mbuf free when clearing Tx queue' " luca.boccassi
                   ` (57 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Ciara Power; +Cc: Thomas Monjalon, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 33fe8e8a0ddba6eb58ac527eb70edb95cc9a9060 Mon Sep 17 00:00:00 2001
From: Ciara Power <ciara.power@intel.com>
Date: Wed, 23 Oct 2019 13:53:00 +0100
Subject: [PATCH] ethdev: fix include of ethernet header file

[ upstream commit 22a076367369a04391a7b16d60a2905cf5c1da46 ]

The include for rte_ether.h in each of these files should not use
quotes, as the header file is not in the librte_ethdev directory.

These are now updated to use <> symbols, to search directories
pre-designated by the compiler.

Fixes: 57668ed7bc08 ("net: move ethernet definitions to the net library")

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
---
 lib/librte_ether/rte_eth_ctrl.h | 2 +-
 lib/librte_ether/rte_ethdev.c   | 2 +-
 lib/librte_ether/rte_ethdev.h   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/librte_ether/rte_eth_ctrl.h b/lib/librte_ether/rte_eth_ctrl.h
index 8386904243..c1c97bd638 100644
--- a/lib/librte_ether/rte_eth_ctrl.h
+++ b/lib/librte_ether/rte_eth_ctrl.h
@@ -36,7 +36,7 @@
 
 #include <stdint.h>
 #include <rte_common.h>
-#include "rte_ether.h"
+#include <rte_ether.h>
 
 /**
  * @file
diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 7998a3af4d..d8595ab34a 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -63,8 +63,8 @@
 #include <rte_errno.h>
 #include <rte_spinlock.h>
 #include <rte_string_fns.h>
+#include <rte_ether.h>
 
-#include "rte_ether.h"
 #include "rte_ethdev.h"
 #include "ethdev_profile.h"
 
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 0d56cde76d..16a150842e 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -182,8 +182,8 @@ extern "C" {
 #include <rte_errno.h>
 #include <rte_common.h>
 #include <rte_config.h>
+#include <rte_ether.h>
 
-#include "rte_ether.h"
 #include "rte_eth_ctrl.h"
 #include "rte_dev_info.h"
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.588454409 +0000
+++ 0081-ethdev-fix-include-of-ethernet-header-file.patch	2019-12-19 14:32:26.197299650 +0000
@@ -1,8 +1,10 @@
-From 22a076367369a04391a7b16d60a2905cf5c1da46 Mon Sep 17 00:00:00 2001
+From 33fe8e8a0ddba6eb58ac527eb70edb95cc9a9060 Mon Sep 17 00:00:00 2001
 From: Ciara Power <ciara.power@intel.com>
 Date: Wed, 23 Oct 2019 13:53:00 +0100
 Subject: [PATCH] ethdev: fix include of ethernet header file
 
+[ upstream commit 22a076367369a04391a7b16d60a2905cf5c1da46 ]
+
 The include for rte_ether.h in each of these files should not use
 quotes, as the header file is not in the librte_ethdev directory.
 
@@ -10,57 +12,56 @@
 pre-designated by the compiler.
 
 Fixes: 57668ed7bc08 ("net: move ethernet definitions to the net library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ciara Power <ciara.power@intel.com>
 Acked-by: Thomas Monjalon <thomas@monjalon.net>
 ---
- lib/librte_ethdev/rte_eth_ctrl.h | 2 +-
- lib/librte_ethdev/rte_ethdev.c   | 2 +-
- lib/librte_ethdev/rte_ethdev.h   | 2 +-
+ lib/librte_ether/rte_eth_ctrl.h | 2 +-
+ lib/librte_ether/rte_ethdev.c   | 2 +-
+ lib/librte_ether/rte_ethdev.h   | 2 +-
  3 files changed, 3 insertions(+), 3 deletions(-)
 
-diff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h
-index be4b4af65b..1416c371fb 100644
---- a/lib/librte_ethdev/rte_eth_ctrl.h
-+++ b/lib/librte_ethdev/rte_eth_ctrl.h
-@@ -7,7 +7,7 @@
+diff --git a/lib/librte_ether/rte_eth_ctrl.h b/lib/librte_ether/rte_eth_ctrl.h
+index 8386904243..c1c97bd638 100644
+--- a/lib/librte_ether/rte_eth_ctrl.h
++++ b/lib/librte_ether/rte_eth_ctrl.h
+@@ -36,7 +36,7 @@
  
  #include <stdint.h>
  #include <rte_common.h>
 -#include "rte_ether.h"
 +#include <rte_ether.h>
- #include "rte_flow.h"
  
  /**
-diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
-index 78da293979..7743205d38 100644
---- a/lib/librte_ethdev/rte_ethdev.c
-+++ b/lib/librte_ethdev/rte_ethdev.c
-@@ -37,8 +37,8 @@
+  * @file
+diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
+index 7998a3af4d..d8595ab34a 100644
+--- a/lib/librte_ether/rte_ethdev.c
++++ b/lib/librte_ether/rte_ethdev.c
+@@ -63,8 +63,8 @@
+ #include <rte_errno.h>
+ #include <rte_spinlock.h>
  #include <rte_string_fns.h>
- #include <rte_kvargs.h>
- #include <rte_class.h>
 +#include <rte_ether.h>
  
 -#include "rte_ether.h"
  #include "rte_ethdev.h"
- #include "rte_ethdev_driver.h"
  #include "ethdev_profile.h"
-diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
-index 33c528bb8e..c36c1b631f 100644
---- a/lib/librte_ethdev/rte_ethdev.h
-+++ b/lib/librte_ethdev/rte_ethdev.h
-@@ -156,8 +156,8 @@ extern "C" {
+ 
+diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
+index 0d56cde76d..16a150842e 100644
+--- a/lib/librte_ether/rte_ethdev.h
++++ b/lib/librte_ether/rte_ethdev.h
+@@ -182,8 +182,8 @@ extern "C" {
  #include <rte_errno.h>
  #include <rte_common.h>
  #include <rte_config.h>
 +#include <rte_ether.h>
  
 -#include "rte_ether.h"
+ #include "rte_eth_ctrl.h"
  #include "rte_dev_info.h"
  
- extern int rte_eth_dev_logtype;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: fix mbuf free when clearing Tx queue' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (79 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'ethdev: fix include of ethernet header file' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix exception with multi-driver' " luca.boccassi
                   ` (56 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Lance Richardson; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 1cf806df108542fa2e002200f4a05718c70e26a6 Mon Sep 17 00:00:00 2001
From: Lance Richardson <lance.richardson@broadcom.com>
Date: Wed, 23 Oct 2019 10:27:35 -0400
Subject: [PATCH] net/bnxt: fix mbuf free when clearing Tx queue

[ upstream commit 00932678c6bbbe922a2790e59fd68b34719f3171 ]

When freeing pending transmit mbufs, use rte_pktmbuf_free_seg()
instead of rte_pktmbuf_free(), otherwise linked mbufs may be freed
more than once.

Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")

Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
---
 drivers/net/bnxt/bnxt_txq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
index 4ecb037674..f0098c3b4a 100644
--- a/drivers/net/bnxt/bnxt_txq.c
+++ b/drivers/net/bnxt/bnxt_txq.c
@@ -61,7 +61,7 @@ static void bnxt_tx_queue_release_mbufs(struct bnxt_tx_queue *txq)
 	if (sw_ring) {
 		for (i = 0; i < txq->tx_ring->tx_ring_struct->ring_size; i++) {
 			if (sw_ring[i].mbuf) {
-				rte_pktmbuf_free(sw_ring[i].mbuf);
+				rte_pktmbuf_free_seg(sw_ring[i].mbuf);
 				sw_ring[i].mbuf = NULL;
 			}
 		}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.633200847 +0000
+++ 0082-net-bnxt-fix-mbuf-free-when-clearing-Tx-queue.patch	2019-12-19 14:32:26.197299650 +0000
@@ -1,14 +1,15 @@
-From 00932678c6bbbe922a2790e59fd68b34719f3171 Mon Sep 17 00:00:00 2001
+From 1cf806df108542fa2e002200f4a05718c70e26a6 Mon Sep 17 00:00:00 2001
 From: Lance Richardson <lance.richardson@broadcom.com>
 Date: Wed, 23 Oct 2019 10:27:35 -0400
 Subject: [PATCH] net/bnxt: fix mbuf free when clearing Tx queue
 
+[ upstream commit 00932678c6bbbe922a2790e59fd68b34719f3171 ]
+
 When freeing pending transmit mbufs, use rte_pktmbuf_free_seg()
 instead of rte_pktmbuf_free(), otherwise linked mbufs may be freed
 more than once.
 
 Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
-Cc: stable@dpdk.org
 
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
@@ -17,10 +18,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
-index ebb9199d2d..6b866d4454 100644
+index 4ecb037674..f0098c3b4a 100644
 --- a/drivers/net/bnxt/bnxt_txq.c
 +++ b/drivers/net/bnxt/bnxt_txq.c
-@@ -34,7 +34,7 @@ static void bnxt_tx_queue_release_mbufs(struct bnxt_tx_queue *txq)
+@@ -61,7 +61,7 @@ static void bnxt_tx_queue_release_mbufs(struct bnxt_tx_queue *txq)
  	if (sw_ring) {
  		for (i = 0; i < txq->tx_ring->tx_ring_struct->ring_size; i++) {
  			if (sw_ring[i].mbuf) {

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

* [dpdk-stable] patch 'net/i40e: fix exception with multi-driver' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (80 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix mbuf free when clearing Tx queue' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-20  1:45   ` Zhang, AlvinX
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Rx start' " luca.boccassi
                   ` (55 subsequent siblings)
  137 siblings, 1 reply; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Alvin Zhang; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 97d3af2037014e15165aaf5fafe5c24ab61d7805 Mon Sep 17 00:00:00 2001
From: Alvin Zhang <alvinx.zhang@intel.com>
Date: Tue, 8 Oct 2019 18:52:31 +0800
Subject: [PATCH] net/i40e: fix exception with multi-driver

[ upstream commit 39de80b267e05d6f3322044e5851306acc84f892 ]

If support-multi-driver is enabled, the global registers should not
be configured. But with the current code base, if creating a flow
with rte_flow API, the global register GLQF_FD_MSK may be changed.

Fixes: cfdfca493cae ("net/i40e: fix multiple driver support")

Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/i40e/i40e_flow.c | 38 +++++++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 4ebf925a68..4fa099481a 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -2366,6 +2366,37 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
 	if (num < 0)
 		return -EINVAL;
 
+	if (pf->support_multi_driver) {
+		for (i = 0; i < num; i++)
+			if (i40e_read_rx_ctl(hw,
+					I40E_GLQF_FD_MSK(i, pctype)) !=
+					mask_reg[i]) {
+				PMD_DRV_LOG(ERR, "Input set setting is not"
+						" supported with"
+						" `support-multi-driver`"
+						" enabled!");
+				return -EPERM;
+			}
+		for (i = num; i < I40E_INSET_MASK_NUM_REG; i++)
+			if (i40e_read_rx_ctl(hw,
+					I40E_GLQF_FD_MSK(i, pctype)) != 0) {
+				PMD_DRV_LOG(ERR, "Input set setting is not"
+						" supported with"
+						" `support-multi-driver`"
+						" enabled!");
+				return -EPERM;
+			}
+
+	} else {
+		for (i = 0; i < num; i++)
+			i40e_check_write_reg(hw, I40E_GLQF_FD_MSK(i, pctype),
+				mask_reg[i]);
+		/*clear unused mask registers of the pctype */
+		for (i = num; i < I40E_INSET_MASK_NUM_REG; i++)
+			i40e_check_write_reg(hw,
+					I40E_GLQF_FD_MSK(i, pctype), 0);
+	}
+
 	inset_reg |= i40e_translate_input_set_reg(hw->mac.type, input_set);
 
 	i40e_check_write_reg(hw, I40E_PRTQF_FD_INSET(pctype, 0),
@@ -2374,13 +2405,6 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
 			     (uint32_t)((inset_reg >>
 					 I40E_32_BIT_WIDTH) & UINT32_MAX));
 
-	for (i = 0; i < num; i++)
-		i40e_check_write_reg(hw, I40E_GLQF_FD_MSK(i, pctype),
-				     mask_reg[i]);
-
-	/*clear unused mask registers of the pctype */
-	for (i = num; i < I40E_INSET_MASK_NUM_REG; i++)
-		i40e_check_write_reg(hw, I40E_GLQF_FD_MSK(i, pctype), 0);
 	I40E_WRITE_FLUSH(hw);
 
 	pf->fdir.input_set[pctype] = input_set;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.667640280 +0000
+++ 0083-net-i40e-fix-exception-with-multi-driver.patch	2019-12-19 14:32:26.201299729 +0000
@@ -1,14 +1,15 @@
-From 39de80b267e05d6f3322044e5851306acc84f892 Mon Sep 17 00:00:00 2001
+From 97d3af2037014e15165aaf5fafe5c24ab61d7805 Mon Sep 17 00:00:00 2001
 From: Alvin Zhang <alvinx.zhang@intel.com>
 Date: Tue, 8 Oct 2019 18:52:31 +0800
 Subject: [PATCH] net/i40e: fix exception with multi-driver
 
+[ upstream commit 39de80b267e05d6f3322044e5851306acc84f892 ]
+
 If support-multi-driver is enabled, the global registers should not
 be configured. But with the current code base, if creating a flow
 with rte_flow API, the global register GLQF_FD_MSK may be changed.
 
 Fixes: cfdfca493cae ("net/i40e: fix multiple driver support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
 Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -17,10 +18,10 @@
  1 file changed, 31 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
-index 9e038fa48f..61021037c8 100644
+index 4ebf925a68..4fa099481a 100644
 --- a/drivers/net/i40e/i40e_flow.c
 +++ b/drivers/net/i40e/i40e_flow.c
-@@ -2349,6 +2349,37 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
+@@ -2366,6 +2366,37 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
  	if (num < 0)
  		return -EINVAL;
  
@@ -58,7 +59,7 @@
  	inset_reg |= i40e_translate_input_set_reg(hw->mac.type, input_set);
  
  	i40e_check_write_reg(hw, I40E_PRTQF_FD_INSET(pctype, 0),
-@@ -2357,13 +2388,6 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
+@@ -2374,13 +2405,6 @@ i40e_flow_set_fdir_inset(struct i40e_pf *pf,
  			     (uint32_t)((inset_reg >>
  					 I40E_32_BIT_WIDTH) & UINT32_MAX));
  

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

* [dpdk-stable] patch 'net/virtio: reject deferred Rx start' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (81 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix exception with multi-driver' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Tx " luca.boccassi
                   ` (54 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Dilshod Urazov; +Cc: Andrew Rybchenko, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 4ffa05031dc3ef78fc6037472e34fd6e520a56b3 Mon Sep 17 00:00:00 2001
From: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
Date: Wed, 9 Oct 2019 13:32:05 +0100
Subject: [PATCH] net/virtio: reject deferred Rx start

[ upstream commit 955d7c1f03d049b2018db3d2c4a78920368d7aa3 ]

Deferred start Rx queue is not supported by the driver.

Fixes: 0748be2cf9a2 ("ethdev: queue start and stop")

Signed-off-by: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_rxtx.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index c608575722..90bc2c2298 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -421,7 +421,7 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev,
 			uint16_t queue_idx,
 			uint16_t nb_desc,
 			unsigned int socket_id __rte_unused,
-			__rte_unused const struct rte_eth_rxconf *rx_conf,
+			const struct rte_eth_rxconf *rx_conf,
 			struct rte_mempool *mp)
 {
 	uint16_t vtpci_queue_idx = 2 * queue_idx + VTNET_SQ_RQ_QUEUE_IDX;
@@ -431,6 +431,11 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev,
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (rx_conf->rx_deferred_start) {
+		PMD_INIT_LOG(ERR, "Rx deferred start is not supported");
+		return -EINVAL;
+	}
+
 	if (nb_desc == 0 || nb_desc > vq->vq_nentries)
 		nb_desc = vq->vq_nentries;
 	vq->vq_free_cnt = RTE_MIN(vq->vq_free_cnt, nb_desc);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.707626710 +0000
+++ 0084-net-virtio-reject-deferred-Rx-start.patch	2019-12-19 14:32:26.201299729 +0000
@@ -1,12 +1,13 @@
-From 955d7c1f03d049b2018db3d2c4a78920368d7aa3 Mon Sep 17 00:00:00 2001
+From 4ffa05031dc3ef78fc6037472e34fd6e520a56b3 Mon Sep 17 00:00:00 2001
 From: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
 Date: Wed, 9 Oct 2019 13:32:05 +0100
 Subject: [PATCH] net/virtio: reject deferred Rx start
 
+[ upstream commit 955d7c1f03d049b2018db3d2c4a78920368d7aa3 ]
+
 Deferred start Rx queue is not supported by the driver.
 
 Fixes: 0748be2cf9a2 ("ethdev: queue start and stop")
-Cc: stable@dpdk.org
 
 Signed-off-by: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -16,19 +17,19 @@
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index b5fc4ecbe1..405c313f20 100644
+index c608575722..90bc2c2298 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -929,7 +929,7 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -421,7 +421,7 @@ virtio_dev_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 __rte_unused,
+-			__rte_unused const struct rte_eth_rxconf *rx_conf,
 +			const struct rte_eth_rxconf *rx_conf,
  			struct rte_mempool *mp)
  {
  	uint16_t vtpci_queue_idx = 2 * queue_idx + VTNET_SQ_RQ_QUEUE_IDX;
-@@ -939,6 +939,11 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -431,6 +431,11 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev,
  
  	PMD_INIT_FUNC_TRACE();
  

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

* [dpdk-stable] patch 'net/virtio: reject deferred Tx start' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (82 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Rx start' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: fix IPv4 checksum' " luca.boccassi
                   ` (53 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Dilshod Urazov; +Cc: Andrew Rybchenko, Tiwei Bie, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 2232241936628e186a11d3895f2c178f2b6b65e6 Mon Sep 17 00:00:00 2001
From: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
Date: Wed, 9 Oct 2019 13:32:06 +0100
Subject: [PATCH] net/virtio: reject deferred Tx start

[ upstream commit c0e03310ee90c5d7aff9fffb243f3374f0b0cd61 ]

Deferred start Tx queue is not supported by the driver.

Fixes: 0748be2cf9a2 ("ethdev: queue start and stop")

Signed-off-by: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_rxtx.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index 90bc2c2298..2d00a9444e 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -538,6 +538,11 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev,
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (tx_conf->tx_deferred_start) {
+		PMD_INIT_LOG(ERR, "Tx deferred start is not supported");
+		return -EINVAL;
+	}
+
 	/* cannot use simple rxtx funcs with multisegs or offloads */
 	if ((tx_conf->txq_flags & VIRTIO_SIMPLE_FLAGS) != VIRTIO_SIMPLE_FLAGS)
 		hw->use_simple_tx = 0;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.745141682 +0000
+++ 0085-net-virtio-reject-deferred-Tx-start.patch	2019-12-19 14:32:26.205299809 +0000
@@ -1,12 +1,13 @@
-From c0e03310ee90c5d7aff9fffb243f3374f0b0cd61 Mon Sep 17 00:00:00 2001
+From 2232241936628e186a11d3895f2c178f2b6b65e6 Mon Sep 17 00:00:00 2001
 From: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
 Date: Wed, 9 Oct 2019 13:32:06 +0100
 Subject: [PATCH] net/virtio: reject deferred Tx start
 
+[ upstream commit c0e03310ee90c5d7aff9fffb243f3374f0b0cd61 ]
+
 Deferred start Tx queue is not supported by the driver.
 
 Fixes: 0748be2cf9a2 ("ethdev: queue start and stop")
-Cc: stable@dpdk.org
 
 Signed-off-by: Dilshod Urazov <dilshod.urazov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -17,10 +18,10 @@
  1 file changed, 5 insertions(+)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index 405c313f20..0959250a33 100644
+index 90bc2c2298..2d00a9444e 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -1067,6 +1067,11 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -538,6 +538,11 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev,
  
  	PMD_INIT_FUNC_TRACE();
  
@@ -29,9 +30,9 @@
 +		return -EINVAL;
 +	}
 +
- 	if (nb_desc == 0 || nb_desc > vq->vq_nentries)
- 		nb_desc = vq->vq_nentries;
- 	vq->vq_free_cnt = RTE_MIN(vq->vq_free_cnt, nb_desc);
+ 	/* cannot use simple rxtx funcs with multisegs or offloads */
+ 	if ((tx_conf->txq_flags & VIRTIO_SIMPLE_FLAGS) != VIRTIO_SIMPLE_FLAGS)
+ 		hw->use_simple_tx = 0;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'vhost: fix IPv4 checksum' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (83 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Tx " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/mlx: fix debug build with icc' " luca.boccassi
                   ` (52 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Flavio Leitner; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 42c20078cdbbbe86e4d4735f6d60b1109e1d8da0 Mon Sep 17 00:00:00 2001
From: Flavio Leitner <fbl@sysclose.org>
Date: Thu, 24 Oct 2019 13:29:19 -0300
Subject: [PATCH] vhost: fix IPv4 checksum

[ upstream commit 84c39beb2fdbef86b917a18ade8d2e2baa3de732 ]

Currently the IPv4 header checksum is calculated including its
current value, which can be a valid checksum or just garbage.
In any case, if the original value is not zero, then the result
is always wrong.

The IPv4 checksum is defined in RFC791, page 14 says:
  Header Checksum:  16 bits

  The checksum algorithm is:
  The checksum field is the 16 bit one's complement of the one's
  complement sum of all 16 bit words in the header.  For purposes of
  computing the checksum, the value of the checksum field is zero.

Thus force the csum field to always be zero.

Fixes: b08b8cfeb2ae ("vhost: fix IP checksum")

Signed-off-by: Flavio Leitner <fbl@sysclose.org>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/virtio_net.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index de8e4c57e4..b302c384d4 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -221,6 +221,7 @@ virtio_enqueue_offload(struct rte_mbuf *m_buf, struct virtio_net_hdr *net_hdr)
 
 		ipv4_hdr = rte_pktmbuf_mtod_offset(m_buf, struct ipv4_hdr *,
 						   m_buf->l2_len);
+		ipv4_hdr->hdr_checksum = 0;
 		ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr);
 	}
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.781624575 +0000
+++ 0086-vhost-fix-IPv4-checksum.patch	2019-12-19 14:32:26.205299809 +0000
@@ -1,8 +1,10 @@
-From 84c39beb2fdbef86b917a18ade8d2e2baa3de732 Mon Sep 17 00:00:00 2001
+From 42c20078cdbbbe86e4d4735f6d60b1109e1d8da0 Mon Sep 17 00:00:00 2001
 From: Flavio Leitner <fbl@sysclose.org>
 Date: Thu, 24 Oct 2019 13:29:19 -0300
 Subject: [PATCH] vhost: fix IPv4 checksum
 
+[ upstream commit 84c39beb2fdbef86b917a18ade8d2e2baa3de732 ]
+
 Currently the IPv4 header checksum is calculated including its
 current value, which can be a valid checksum or just garbage.
 In any case, if the original value is not zero, then the result
@@ -19,7 +21,6 @@
 Thus force the csum field to always be zero.
 
 Fixes: b08b8cfeb2ae ("vhost: fix IP checksum")
-Cc: stable@dpdk.org
 
 Signed-off-by: Flavio Leitner <fbl@sysclose.org>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -28,12 +29,12 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index eae7825f04..cde7498c76 100644
+index de8e4c57e4..b302c384d4 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -445,6 +445,7 @@ virtio_enqueue_offload(struct rte_mbuf *m_buf, struct virtio_net_hdr *net_hdr)
+@@ -221,6 +221,7 @@ virtio_enqueue_offload(struct rte_mbuf *m_buf, struct virtio_net_hdr *net_hdr)
  
- 		ipv4_hdr = rte_pktmbuf_mtod_offset(m_buf, struct rte_ipv4_hdr *,
+ 		ipv4_hdr = rte_pktmbuf_mtod_offset(m_buf, struct ipv4_hdr *,
  						   m_buf->l2_len);
 +		ipv4_hdr->hdr_checksum = 0;
  		ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr);

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

* [dpdk-stable] patch 'net/mlx: fix debug build with icc' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (84 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: fix IPv4 checksum' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix Tx checksum when TSO enabled' " luca.boccassi
                   ` (51 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: Viacheslav Ovsiienko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5aa7b1b186e4fab11edc259052e57e95826f7427 Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Wed, 23 Oct 2019 11:31:45 +0000
Subject: [PATCH] net/mlx: fix debug build with icc

[ upstream commit 38e118c0d8304190d4f24297fe2279a7b658c071 ]

Trying to compile mlx5 pmd in debug mode with icc
will lead to compilation failures due to the fact that
icc doesn't have support for the pragma of pedantic.

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx4/Makefile | 5 ++++-
 drivers/net/mlx5/Makefile | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
index e0a8aaceca..0bde672958 100644
--- a/drivers/net/mlx4/Makefile
+++ b/drivers/net/mlx4/Makefile
@@ -73,7 +73,10 @@ endif
 
 # User-defined CFLAGS.
 ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
-CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+CFLAGS += -pedantic -UNDEBUG
+ifneq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
+CFLAGS += -DPEDANTIC
+endif
 AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index ed720b6a70..e6fe1c60ae 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -83,7 +83,10 @@ endif
 
 # User-defined CFLAGS.
 ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y)
-CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
+CFLAGS += -pedantic -UNDEBUG
+ifneq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
+CFLAGS += -DPEDANTIC
+endif
 AUTO_CONFIG_CFLAGS += -Wno-pedantic
 else
 CFLAGS += -DNDEBUG -UPEDANTIC
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.815184915 +0000
+++ 0087-net-mlx-fix-debug-build-with-icc.patch	2019-12-19 14:32:26.209299888 +0000
@@ -1,14 +1,14 @@
-From 38e118c0d8304190d4f24297fe2279a7b658c071 Mon Sep 17 00:00:00 2001
+From 5aa7b1b186e4fab11edc259052e57e95826f7427 Mon Sep 17 00:00:00 2001
 From: Raslan Darawsheh <rasland@mellanox.com>
 Date: Wed, 23 Oct 2019 11:31:45 +0000
 Subject: [PATCH] net/mlx: fix debug build with icc
 
+[ upstream commit 38e118c0d8304190d4f24297fe2279a7b658c071 ]
+
 Trying to compile mlx5 pmd in debug mode with icc
 will lead to compilation failures due to the fact that
 icc doesn't have support for the pragma of pedantic.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
 Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 ---
@@ -17,10 +17,10 @@
  2 files changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
-index 25d7c7555d..7ea6f74895 100644
+index e0a8aaceca..0bde672958 100644
 --- a/drivers/net/mlx4/Makefile
 +++ b/drivers/net/mlx4/Makefile
-@@ -67,7 +67,10 @@ endif
+@@ -73,7 +73,10 @@ endif
  
  # User-defined CFLAGS.
  ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
@@ -33,7 +33,7 @@
  else
  CFLAGS += -DNDEBUG -UPEDANTIC
 diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
-index 04de93a881..dae5b9fac1 100644
+index ed720b6a70..e6fe1c60ae 100644
 --- a/drivers/net/mlx5/Makefile
 +++ b/drivers/net/mlx5/Makefile
 @@ -83,7 +83,10 @@ endif

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

* [dpdk-stable] patch 'app/testpmd: fix Tx checksum when TSO enabled' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (85 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/mlx: fix debug build with icc' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: expose some missing counters in port stats' " luca.boccassi
                   ` (50 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Peng Huang; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 7daf128b8294ddd1599ab34a105ada53b0305284 Mon Sep 17 00:00:00 2001
From: Peng Huang <peng.huang@intel.com>
Date: Thu, 24 Oct 2019 09:37:34 +0000
Subject: [PATCH] app/testpmd: fix Tx checksum when TSO enabled

[ upstream commit 0322272c9fd39e1a5942c73232d43d3ebeeff7b1 ]

This patch fixed the TX checksum value problem when enabled TSO in
tunnel packets, because outer UDP checksum calculation depend on
the TSO configuration.

Fixes: 0f62d63593ed ("app/testpmd: support tunneled TSO in checksum engine")

Signed-off-by: Peng Huang <peng.huang@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/csumonly.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index ae59e76c31..70f3b392cf 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -432,6 +432,9 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info,
 
 	udp_hdr = (struct udp_hdr *)((char *)outer_l3_hdr + info->outer_l3_len);
 
+	if (tso_enabled)
+		ol_flags |= PKT_TX_TCP_SEG;
+
 	/* outer UDP checksum is done in software as we have no hardware
 	 * supporting it today, and no API for it. In the other side, for
 	 * UDP tunneling, like VXLAN or Geneve, outer UDP checksum can be
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.855222072 +0000
+++ 0088-app-testpmd-fix-Tx-checksum-when-TSO-enabled.patch	2019-12-19 14:32:26.209299888 +0000
@@ -1,14 +1,15 @@
-From 0322272c9fd39e1a5942c73232d43d3ebeeff7b1 Mon Sep 17 00:00:00 2001
+From 7daf128b8294ddd1599ab34a105ada53b0305284 Mon Sep 17 00:00:00 2001
 From: Peng Huang <peng.huang@intel.com>
 Date: Thu, 24 Oct 2019 09:37:34 +0000
 Subject: [PATCH] app/testpmd: fix Tx checksum when TSO enabled
 
+[ upstream commit 0322272c9fd39e1a5942c73232d43d3ebeeff7b1 ]
+
 This patch fixed the TX checksum value problem when enabled TSO in
 tunnel packets, because outer UDP checksum calculation depend on
 the TSO configuration.
 
 Fixes: 0f62d63593ed ("app/testpmd: support tunneled TSO in checksum engine")
-Cc: stable@dpdk.org
 
 Signed-off-by: Peng Huang <peng.huang@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -17,19 +18,19 @@
  1 file changed, 3 insertions(+)
 
 diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
-index e12695d947..5738128e69 100644
+index ae59e76c31..70f3b392cf 100644
 --- a/app/test-pmd/csumonly.c
 +++ b/app/test-pmd/csumonly.c
-@@ -544,6 +544,9 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info,
- 	udp_hdr = (struct rte_udp_hdr *)
- 		((char *)outer_l3_hdr + info->outer_l3_len);
+@@ -432,6 +432,9 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info,
+ 
+ 	udp_hdr = (struct udp_hdr *)((char *)outer_l3_hdr + info->outer_l3_len);
  
 +	if (tso_enabled)
 +		ol_flags |= PKT_TX_TCP_SEG;
 +
- 	/* Skip SW outer UDP checksum generation if HW supports it */
- 	if (tx_offloads & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) {
- 		if (info->outer_ethertype == _htons(RTE_ETHER_TYPE_IPV4))
+ 	/* outer UDP checksum is done in software as we have no hardware
+ 	 * supporting it today, and no API for it. In the other side, for
+ 	 * UDP tunneling, like VXLAN or Geneve, outer UDP checksum can be
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bnxt: expose some missing counters in port stats' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (86 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix Tx checksum when TSO enabled' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix memory leak' " luca.boccassi
                   ` (49 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Somnath Kotur; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0b99dc969951865780d8f70f06ef0d440e79d8eb Mon Sep 17 00:00:00 2001
From: Somnath Kotur <somnath.kotur@broadcom.com>
Date: Thu, 24 Oct 2019 13:14:25 +0530
Subject: [PATCH] net/bnxt: expose some missing counters in port stats

[ upstream commit bd94753fc79c5a37e249ca440d081fdb7d5dc9fa ]

Rx/Tx Port statistics record PFC enabled frames for each priority.
Modify the Rx/Tx port stats array to report these as well.

Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")

Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_stats.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index e85db7f6d0..02e8e6ecbd 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -108,6 +108,22 @@ static const struct bnxt_xstats_name_off bnxt_rx_stats_strings[] = {
 				rx_runt_bytes)},
 	{"rx_runt_frames", offsetof(struct rx_port_stats,
 				rx_runt_frames)},
+	{"rx_pfc_ena_frames_pri0", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri0)},
+	{"rx_pfc_ena_frames_pri1", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri1)},
+	{"rx_pfc_ena_frames_pri2", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri2)},
+	{"rx_pfc_ena_frames_pri3", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri3)},
+	{"rx_pfc_ena_frames_pri4", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri4)},
+	{"rx_pfc_ena_frames_pri5", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri5)},
+	{"rx_pfc_ena_frames_pri6", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri6)},
+	{"rx_pfc_ena_frames_pri7", offsetof(struct rx_port_stats,
+				rx_pfc_ena_frames_pri7)},
 };
 
 static const struct bnxt_xstats_name_off bnxt_tx_stats_strings[] = {
@@ -163,6 +179,22 @@ static const struct bnxt_xstats_name_off bnxt_tx_stats_strings[] = {
 				tx_total_collisions)},
 	{"tx_bytes", offsetof(struct tx_port_stats,
 				tx_bytes)},
+	{"tx_pfc_ena_frames_pri0", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri0)},
+	{"tx_pfc_ena_frames_pri1", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri1)},
+	{"tx_pfc_ena_frames_pri2", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri2)},
+	{"tx_pfc_ena_frames_pri3", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri3)},
+	{"tx_pfc_ena_frames_pri4", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri4)},
+	{"tx_pfc_ena_frames_pri5", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri5)},
+	{"tx_pfc_ena_frames_pri6", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri6)},
+	{"tx_pfc_ena_frames_pri7", offsetof(struct tx_port_stats,
+				tx_pfc_ena_frames_pri7)},
 };
 
 static const struct bnxt_xstats_name_off bnxt_func_stats_strings[] = {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.892672676 +0000
+++ 0089-net-bnxt-expose-some-missing-counters-in-port-stats.patch	2019-12-19 14:32:26.213299967 +0000
@@ -1,13 +1,14 @@
-From bd94753fc79c5a37e249ca440d081fdb7d5dc9fa Mon Sep 17 00:00:00 2001
+From 0b99dc969951865780d8f70f06ef0d440e79d8eb Mon Sep 17 00:00:00 2001
 From: Somnath Kotur <somnath.kotur@broadcom.com>
 Date: Thu, 24 Oct 2019 13:14:25 +0530
 Subject: [PATCH] net/bnxt: expose some missing counters in port stats
 
+[ upstream commit bd94753fc79c5a37e249ca440d081fdb7d5dc9fa ]
+
 Rx/Tx Port statistics record PFC enabled frames for each priority.
 Modify the Rx/Tx port stats array to report these as well.
 
 Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset")
-Cc: stable@dpdk.org
 
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
@@ -16,10 +17,10 @@
  1 file changed, 32 insertions(+)
 
 diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
-index fa29f9de19..40b496ac00 100644
+index e85db7f6d0..02e8e6ecbd 100644
 --- a/drivers/net/bnxt/bnxt_stats.c
 +++ b/drivers/net/bnxt/bnxt_stats.c
-@@ -81,6 +81,22 @@ static const struct bnxt_xstats_name_off bnxt_rx_stats_strings[] = {
+@@ -108,6 +108,22 @@ static const struct bnxt_xstats_name_off bnxt_rx_stats_strings[] = {
  				rx_runt_bytes)},
  	{"rx_runt_frames", offsetof(struct rx_port_stats,
  				rx_runt_frames)},
@@ -42,7 +43,7 @@
  };
  
  static const struct bnxt_xstats_name_off bnxt_tx_stats_strings[] = {
-@@ -136,6 +152,22 @@ static const struct bnxt_xstats_name_off bnxt_tx_stats_strings[] = {
+@@ -163,6 +179,22 @@ static const struct bnxt_xstats_name_off bnxt_tx_stats_strings[] = {
  				tx_total_collisions)},
  	{"tx_bytes", offsetof(struct tx_port_stats,
  				tx_bytes)},

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

* [dpdk-stable] patch 'net/bnxt: fix memory leak' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (87 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: expose some missing counters in port stats' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix Tx checksum offloads' " luca.boccassi
                   ` (48 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Kalesh AP; +Cc: Somnath Kotur, Santoshkumar Karanappa Rastapur, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 318e5f390a4fae5057bb3ac134d18c5b4267c54d Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date: Thu, 24 Oct 2019 13:14:31 +0530
Subject: [PATCH] net/bnxt: fix memory leak

[ upstream commit f5019a53d7fc82474710c98bb48b4a09ee07c9f7 ]

During hot fw upgrade or error recovery, driver does cleanup and
reallocation of resources. But driver reallocates memory for ring
group info table without freeing the allocated memory during
device init.

Fix this memory leak by moving the freeing of ring group info table
to bnxt_free_mem() in bnxt_uninit_resources().

Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 7610626306..1a6d09f9d3 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -125,6 +125,9 @@ static void bnxt_free_mem(struct bnxt *bp)
 	bnxt_free_tx_rings(bp);
 	bnxt_free_rx_rings(bp);
 	bnxt_free_def_cp_ring(bp);
+
+	rte_free(bp->grp_info);
+	bp->grp_info = NULL;
 }
 
 static int bnxt_alloc_mem(struct bnxt *bp)
@@ -3079,10 +3082,6 @@ bnxt_dev_uninit(struct rte_eth_dev *eth_dev) {
 		rte_free(eth_dev->data->mac_addrs);
 		eth_dev->data->mac_addrs = NULL;
 	}
-	if (bp->grp_info != NULL) {
-		rte_free(bp->grp_info);
-		bp->grp_info = NULL;
-	}
 	rc = bnxt_hwrm_func_driver_unregister(bp, 0);
 	bnxt_free_hwrm_resources(bp);
 	rte_memzone_free((const struct rte_memzone *)bp->tx_mem_zone);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.930625309 +0000
+++ 0090-net-bnxt-fix-memory-leak.patch	2019-12-19 14:32:26.217300046 +0000
@@ -1,8 +1,10 @@
-From f5019a53d7fc82474710c98bb48b4a09ee07c9f7 Mon Sep 17 00:00:00 2001
+From 318e5f390a4fae5057bb3ac134d18c5b4267c54d Mon Sep 17 00:00:00 2001
 From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Date: Thu, 24 Oct 2019 13:14:31 +0530
 Subject: [PATCH] net/bnxt: fix memory leak
 
+[ upstream commit f5019a53d7fc82474710c98bb48b4a09ee07c9f7 ]
+
 During hot fw upgrade or error recovery, driver does cleanup and
 reallocation of resources. But driver reallocates memory for ring
 group info table without freeing the allocated memory during
@@ -12,41 +14,39 @@
 to bnxt_free_mem() in bnxt_uninit_resources().
 
 Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
 Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
 Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
 ---
- drivers/net/bnxt/bnxt_ethdev.c | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
+ drivers/net/bnxt/bnxt_ethdev.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 013b968355..9642796eeb 100644
+index 7610626306..1a6d09f9d3 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -183,6 +183,9 @@ static void bnxt_free_mem(struct bnxt *bp, bool reconfig)
- 	}
- 	bnxt_free_async_cp_ring(bp);
- 	bnxt_free_rxtx_nq_ring(bp);
+@@ -125,6 +125,9 @@ static void bnxt_free_mem(struct bnxt *bp)
+ 	bnxt_free_tx_rings(bp);
+ 	bnxt_free_rx_rings(bp);
+ 	bnxt_free_def_cp_ring(bp);
 +
 +	rte_free(bp->grp_info);
 +	bp->grp_info = NULL;
  }
  
- static int bnxt_alloc_mem(struct bnxt *bp, bool reconfig)
-@@ -4821,11 +4824,6 @@ bnxt_dev_uninit(struct rte_eth_dev *eth_dev)
- 
- 	rc = bnxt_uninit_resources(bp, false);
- 
+ static int bnxt_alloc_mem(struct bnxt *bp)
+@@ -3079,10 +3082,6 @@ bnxt_dev_uninit(struct rte_eth_dev *eth_dev) {
+ 		rte_free(eth_dev->data->mac_addrs);
+ 		eth_dev->data->mac_addrs = NULL;
+ 	}
 -	if (bp->grp_info != NULL) {
 -		rte_free(bp->grp_info);
 -		bp->grp_info = NULL;
 -	}
--
- 	if (bp->tx_mem_zone) {
- 		rte_memzone_free((const struct rte_memzone *)bp->tx_mem_zone);
- 		bp->tx_mem_zone = NULL;
+ 	rc = bnxt_hwrm_func_driver_unregister(bp, 0);
+ 	bnxt_free_hwrm_resources(bp);
+ 	rte_memzone_free((const struct rte_memzone *)bp->tx_mem_zone);
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/virtio: fix Tx checksum offloads' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (88 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix memory leak' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: use non deprecated PCI API' " luca.boccassi
                   ` (47 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: Tiwei Bie, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 204911c5871177ab7f8148dcd26557af0450a41b Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Thu, 24 Oct 2019 18:46:09 +0100
Subject: [PATCH] net/virtio: fix Tx checksum offloads

[ upstream commit 1526dd05328a97ebe77cf86cbf05edfa5ff17963 ]

Missing parenthesis around expression before type cast to struct
virtio_net_hdr pointer makes the arithmetic to be in
sizeof(struct virtio_net_hdr) units.

Use rte_pktmbuf_mtod_offset() to fix the problem.

Type of head_size is changed to signed since some compilers bark
on unary minus applied to unsigned.

Fixes: 1ae55ad38e5e ("net/virtio: fix mbuf data and packet length mismatch")

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

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index 2d00a9444e..cea097a9db 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -283,7 +283,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 	struct vring_desc *start_dp;
 	uint16_t seg_num = cookie->nb_segs;
 	uint16_t head_idx, idx;
-	uint16_t head_size = vq->hw->vtnet_hdr_size;
+	int16_t head_size = vq->hw->vtnet_hdr_size;
 	struct virtio_net_hdr *hdr;
 	int offload;
 	bool prepend_header = false;
@@ -299,8 +299,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
 
 	if (can_push) {
 		/* prepend cannot fail, checked by caller */
-		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
-			cookie->data_off - head_size;
+		hdr = rte_pktmbuf_mtod_offset(cookie, struct virtio_net_hdr *,
+									  -head_size);
 		prepend_header = true;
 		/* if offload disabled, it is not zeroed below, do it now */
 		if (offload == 0) {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:29.966229385 +0000
+++ 0091-net-virtio-fix-Tx-checksum-offloads.patch	2019-12-19 14:32:26.217300046 +0000
@@ -1,8 +1,10 @@
-From 1526dd05328a97ebe77cf86cbf05edfa5ff17963 Mon Sep 17 00:00:00 2001
+From 204911c5871177ab7f8148dcd26557af0450a41b Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Thu, 24 Oct 2019 18:46:09 +0100
 Subject: [PATCH] net/virtio: fix Tx checksum offloads
 
+[ upstream commit 1526dd05328a97ebe77cf86cbf05edfa5ff17963 ]
+
 Missing parenthesis around expression before type cast to struct
 virtio_net_hdr pointer makes the arithmetic to be in
 sizeof(struct virtio_net_hdr) units.
@@ -13,99 +15,38 @@
 on unary minus applied to unsigned.
 
 Fixes: 1ae55ad38e5e ("net/virtio: fix mbuf data and packet length mismatch")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- drivers/net/virtio/virtio_rxtx.c | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
+ drivers/net/virtio/virtio_rxtx.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
-index 0959250a33..752faa0f6e 100644
+index 2d00a9444e..cea097a9db 100644
 --- a/drivers/net/virtio/virtio_rxtx.c
 +++ b/drivers/net/virtio/virtio_rxtx.c
-@@ -635,7 +635,7 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
- 	struct vring_desc *start_dp;
- 	struct virtio_net_hdr *hdr;
- 	uint16_t idx;
--	uint16_t head_size = vq->hw->vtnet_hdr_size;
-+	int16_t head_size = vq->hw->vtnet_hdr_size;
- 	uint16_t i = 0;
- 
- 	idx = vq->vq_desc_head_idx;
-@@ -648,8 +648,8 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq,
- 		dxp->ndescs = 1;
- 		virtio_update_packet_stats(&txvq->stats, cookies[i]);
- 
--		hdr = (struct virtio_net_hdr *)(char *)cookies[i]->buf_addr +
--			cookies[i]->data_off - head_size;
-+		hdr = rte_pktmbuf_mtod_offset(cookies[i],
-+				struct virtio_net_hdr *, -head_size);
- 
- 		/* if offload disabled, hdr is not zeroed yet, do it now */
- 		if (!vq->hw->has_tx_offload)
-@@ -682,7 +682,7 @@ virtqueue_enqueue_xmit_packed_fast(struct virtnet_tx *txvq,
- 	struct vring_packed_desc *dp;
- 	struct vq_desc_extra *dxp;
- 	uint16_t idx, id, flags;
--	uint16_t head_size = vq->hw->vtnet_hdr_size;
-+	int16_t head_size = vq->hw->vtnet_hdr_size;
- 	struct virtio_net_hdr *hdr;
- 
- 	id = in_order ? vq->vq_avail_idx : vq->vq_desc_head_idx;
-@@ -696,8 +696,8 @@ virtqueue_enqueue_xmit_packed_fast(struct virtnet_tx *txvq,
- 	flags = vq->vq_packed.cached_flags;
- 
- 	/* prepend cannot fail, checked by caller */
--	hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
--		cookie->data_off - head_size;
-+	hdr = rte_pktmbuf_mtod_offset(cookie, struct virtio_net_hdr *,
-+				      -head_size);
- 
- 	/* if offload disabled, hdr is not zeroed yet, do it now */
- 	if (!vq->hw->has_tx_offload)
-@@ -734,7 +734,7 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 	struct virtqueue *vq = txvq->vq;
- 	struct vring_packed_desc *start_dp, *head_dp;
- 	uint16_t idx, id, head_idx, head_flags;
--	uint16_t head_size = vq->hw->vtnet_hdr_size;
-+	int16_t head_size = vq->hw->vtnet_hdr_size;
- 	struct virtio_net_hdr *hdr;
- 	uint16_t prev;
- 	bool prepend_header = false;
-@@ -756,8 +756,8 @@ virtqueue_enqueue_xmit_packed(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
- 
- 	if (can_push) {
- 		/* prepend cannot fail, checked by caller */
--		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
--			cookie->data_off - head_size;
-+		hdr = rte_pktmbuf_mtod_offset(cookie, struct virtio_net_hdr *,
-+					      -head_size);
- 		prepend_header = true;
- 
- 		/* if offload disabled, it is not zeroed below, do it now */
-@@ -832,7 +832,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+@@ -283,7 +283,7 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  	struct vring_desc *start_dp;
  	uint16_t seg_num = cookie->nb_segs;
  	uint16_t head_idx, idx;
 -	uint16_t head_size = vq->hw->vtnet_hdr_size;
 +	int16_t head_size = vq->hw->vtnet_hdr_size;
- 	bool prepend_header = false;
  	struct virtio_net_hdr *hdr;
- 
-@@ -849,8 +849,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
+ 	int offload;
+ 	bool prepend_header = false;
+@@ -299,8 +299,8 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie,
  
  	if (can_push) {
  		/* prepend cannot fail, checked by caller */
 -		hdr = (struct virtio_net_hdr *)(char *)cookie->buf_addr +
 -			cookie->data_off - head_size;
 +		hdr = rte_pktmbuf_mtod_offset(cookie, struct virtio_net_hdr *,
-+					      -head_size);
++									  -head_size);
  		prepend_header = true;
- 
  		/* if offload disabled, it is not zeroed below, do it now */
+ 		if (offload == 0) {
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/bonding: use non deprecated PCI API' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (89 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix Tx checksum offloads' " luca.boccassi
@ 2019-12-19 14:33 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix type of cmdline token in cli' " luca.boccassi
                   ` (46 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:33 UTC (permalink / raw)
  To: David Marchand; +Cc: Thomas Monjalon, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 924cd8b3b32a12caa9c3515919de258c3b6dad6e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 25 Oct 2019 15:56:04 +0200
Subject: [PATCH] net/bonding: use non deprecated PCI API

[ upstream commit ce77e6bf5113650e6d026e0b7fb395b60ab1f363 ]

rte_eal_compare_pci_addr has been deprecated since v17.11.
Convert to rte_pci_addr_cmp.

Fixes: c848b518bbc7 ("net/bonding: support bifurcated driver in eal")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
---
 drivers/net/bonding/rte_eth_bond_args.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c
index 8c94cc6171..e543f53ed6 100644
--- a/drivers/net/bonding/rte_eth_bond_args.c
+++ b/drivers/net/bonding/rte_eth_bond_args.c
@@ -92,11 +92,10 @@ find_port_id_by_dev_name(const char *name)
 static inline int
 bond_pci_addr_cmp(const struct rte_device *dev, const void *_pci_addr)
 {
-	struct rte_pci_device *pdev;
+	const struct rte_pci_device *pdev = RTE_DEV_TO_PCI_CONST(dev);
 	const struct rte_pci_addr *paddr = _pci_addr;
 
-	pdev = RTE_DEV_TO_PCI(*(struct rte_device **)(void *)&dev);
-	return rte_eal_compare_pci_addr(&pdev->addr, paddr);
+	return rte_pci_addr_cmp(&pdev->addr, paddr);
 }
 
 /**
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.003580830 +0000
+++ 0092-net-bonding-use-non-deprecated-PCI-API.patch	2019-12-19 14:32:26.217300046 +0000
@@ -1,13 +1,14 @@
-From ce77e6bf5113650e6d026e0b7fb395b60ab1f363 Mon Sep 17 00:00:00 2001
+From 924cd8b3b32a12caa9c3515919de258c3b6dad6e Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Fri, 25 Oct 2019 15:56:04 +0200
 Subject: [PATCH] net/bonding: use non deprecated PCI API
 
+[ upstream commit ce77e6bf5113650e6d026e0b7fb395b60ab1f363 ]
+
 rte_eal_compare_pci_addr has been deprecated since v17.11.
 Convert to rte_pci_addr_cmp.
 
 Fixes: c848b518bbc7 ("net/bonding: support bifurcated driver in eal")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Acked-by: Thomas Monjalon <thomas@monjalon.net>
@@ -16,10 +17,10 @@
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c
-index f298ea0e17..bfe03c3d06 100644
+index 8c94cc6171..e543f53ed6 100644
 --- a/drivers/net/bonding/rte_eth_bond_args.c
 +++ b/drivers/net/bonding/rte_eth_bond_args.c
-@@ -60,11 +60,10 @@ find_port_id_by_dev_name(const char *name)
+@@ -92,11 +92,10 @@ find_port_id_by_dev_name(const char *name)
  static inline int
  bond_pci_addr_cmp(const struct rte_device *dev, const void *_pci_addr)
  {

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

* [dpdk-stable] patch 'examples/vm_power: fix type of cmdline token in cli' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (90 preceding siblings ...)
  2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: use non deprecated PCI API' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/l3fwd-power: fix Rx interrupt disabling' " luca.boccassi
                   ` (45 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: David Hunt, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 289e2019fe9d50d133b1e296ee8c05f305281c44 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 22 Oct 2019 16:43:09 +0100
Subject: [PATCH] examples/vm_power: fix type of cmdline token in cli

[ upstream commit 99dc01446e62361d8d0046c2e007bba86cb8ec30 ]

Building the example with clang gives the error:

  error: expression which evaluates to zero treated as a null pointer
  constant of type 'const char *' [-Werror,-Wnon-literal-null-conversion]
                        lcore_id, UINT8);
                                  ^~~~~

This error is due to the wrong data type being given for the
cmd_set_cpu_freq_core_num value - it was specified as string rather than
numeric type.

Fixes: f5e5c3347ae3 ("examples/vm_power: cli in guest")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---
 examples/vm_power_manager/guest_cli/vm_power_cli_guest.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
index 63f711e08f..61a3dd6630 100644
--- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
+++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
@@ -121,7 +121,7 @@ cmd_set_cpu_freq_parsed(void *parsed_result, struct cmdline *cl,
 cmdline_parse_token_string_t cmd_set_cpu_freq =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_cpu_freq_result,
 			set_cpu_freq, "set_cpu_freq");
-cmdline_parse_token_string_t cmd_set_cpu_freq_core_num =
+cmdline_parse_token_num_t cmd_set_cpu_freq_core_num =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_cpu_freq_result,
 			lcore_id, UINT8);
 cmdline_parse_token_string_t cmd_set_cpu_freq_cmd_cmd =
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.047694257 +0000
+++ 0093-examples-vm_power-fix-type-of-cmdline-token-in-cli.patch	2019-12-19 14:32:26.221300126 +0000
@@ -1,8 +1,10 @@
-From 99dc01446e62361d8d0046c2e007bba86cb8ec30 Mon Sep 17 00:00:00 2001
+From 289e2019fe9d50d133b1e296ee8c05f305281c44 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Tue, 22 Oct 2019 16:43:09 +0100
 Subject: [PATCH] examples/vm_power: fix type of cmdline token in cli
 
+[ upstream commit 99dc01446e62361d8d0046c2e007bba86cb8ec30 ]
+
 Building the example with clang gives the error:
 
   error: expression which evaluates to zero treated as a null pointer
@@ -15,7 +17,6 @@
 numeric type.
 
 Fixes: f5e5c3347ae3 ("examples/vm_power: cli in guest")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 Acked-by: David Hunt <david.hunt@intel.com>
@@ -24,10 +25,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
-index fe09b0778a..610d9aeac5 100644
+index 63f711e08f..61a3dd6630 100644
 --- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
 +++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
-@@ -171,7 +171,7 @@ cmd_set_cpu_freq_parsed(void *parsed_result, struct cmdline *cl,
+@@ -121,7 +121,7 @@ cmd_set_cpu_freq_parsed(void *parsed_result, struct cmdline *cl,
  cmdline_parse_token_string_t cmd_set_cpu_freq =
  	TOKEN_STRING_INITIALIZER(struct cmd_set_cpu_freq_result,
  			set_cpu_freq, "set_cpu_freq");

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

* [dpdk-stable] patch 'examples/l3fwd-power: fix Rx interrupt disabling' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (91 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix type of cmdline token in cli' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'power: fix socket indicator value' " luca.boccassi
                   ` (44 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Marvin Liu, David Hunt, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 1fce227f6a11f1e9968ce93ebe6923f53d854469 Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Wed, 11 Sep 2019 00:10:14 +0800
Subject: [PATCH] examples/l3fwd-power: fix Rx interrupt disabling

[ upstream commit 0412cfeff907bb9102a2ca834e95ef8c6767f538 ]

Interrupt will not be received when disabling RX interrupt without
synchronization mechanism sometimes which leads to wake up issue.
Add spinlock to fix it.

Fixes: b736d64787 ("examples/l3fwd-power: disable Rx interrupt when waking up")

Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Marvin Liu <yong.liu@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---
 examples/l3fwd-power/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 50c3702f6c..c669f6a441 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -813,7 +813,9 @@ sleep_until_rx_interrupt(int num)
 		port_id = ((uintptr_t)data) >> CHAR_BIT;
 		queue_id = ((uintptr_t)data) &
 			RTE_LEN2MASK(CHAR_BIT, uint8_t);
+		rte_spinlock_lock(&(locks[port_id]));
 		rte_eth_dev_rx_intr_disable(port_id, queue_id);
+		rte_spinlock_unlock(&(locks[port_id]));
 		RTE_LOG(INFO, L3FWD_POWER,
 			"lcore %u is waked up from rx interrupt on"
 			" port %d queue %d\n",
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.082985348 +0000
+++ 0094-examples-l3fwd-power-fix-Rx-interrupt-disabling.patch	2019-12-19 14:32:26.221300126 +0000
@@ -1,14 +1,15 @@
-From 0412cfeff907bb9102a2ca834e95ef8c6767f538 Mon Sep 17 00:00:00 2001
+From 1fce227f6a11f1e9968ce93ebe6923f53d854469 Mon Sep 17 00:00:00 2001
 From: Xiao Zhang <xiao.zhang@intel.com>
 Date: Wed, 11 Sep 2019 00:10:14 +0800
 Subject: [PATCH] examples/l3fwd-power: fix Rx interrupt disabling
 
+[ upstream commit 0412cfeff907bb9102a2ca834e95ef8c6767f538 ]
+
 Interrupt will not be received when disabling RX interrupt without
 synchronization mechanism sometimes which leads to wake up issue.
 Add spinlock to fix it.
 
 Fixes: b736d64787 ("examples/l3fwd-power: disable Rx interrupt when waking up")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
 Reviewed-by: Marvin Liu <yong.liu@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
-index a03f64a1a3..d049d8a5dc 100644
+index 50c3702f6c..c669f6a441 100644
 --- a/examples/l3fwd-power/main.c
 +++ b/examples/l3fwd-power/main.c
-@@ -880,7 +880,9 @@ sleep_until_rx_interrupt(int num)
+@@ -813,7 +813,9 @@ sleep_until_rx_interrupt(int num)
  		port_id = ((uintptr_t)data) >> CHAR_BIT;
  		queue_id = ((uintptr_t)data) &
  			RTE_LEN2MASK(CHAR_BIT, uint8_t);

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

* [dpdk-stable] patch 'power: fix socket indicator value' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (92 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/l3fwd-power: fix Rx interrupt disabling' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix build without i40e' " luca.boccassi
                   ` (43 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Marcin Hajkowski; +Cc: Maxime Coquelin, Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From aaae8df858cc6e7615bad466d2e97f35eafda14e Mon Sep 17 00:00:00 2001
From: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Date: Fri, 27 Sep 2019 09:42:13 +0100
Subject: [PATCH] power: fix socket indicator value

[ upstream commit b4b2f84a5970709e7fb060e3bcd4afb7c19b0121 ]

Currently 0 is being used for not connected slot indication.
This is not consistent with linux doc which identifies 0 as valid
(connected) slot, thus modification was done to change it.

Fixes: cd0d5547 ("power: vm communication channels in guest")

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_power/guest_channel.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/librte_power/guest_channel.c b/lib/librte_power/guest_channel.c
index fa5de0f53a..2c3ee7daf6 100644
--- a/lib/librte_power/guest_channel.c
+++ b/lib/librte_power/guest_channel.c
@@ -48,7 +48,7 @@
 
 #define RTE_LOGTYPE_GUEST_CHANNEL RTE_LOGTYPE_USER1
 
-static int global_fds[RTE_MAX_LCORE];
+static int global_fds[RTE_MAX_LCORE] = { [0 ... RTE_MAX_LCORE-1] = -1 };
 
 int
 guest_channel_host_connect(const char *path, unsigned lcore_id)
@@ -64,7 +64,7 @@ guest_channel_host_connect(const char *path, unsigned lcore_id)
 		return -1;
 	}
 	/* check if path is already open */
-	if (global_fds[lcore_id] != 0) {
+	if (global_fds[lcore_id] != -1) {
 		RTE_LOG(ERR, GUEST_CHANNEL, "Channel(%u) is already open with fd %d\n",
 				lcore_id, global_fds[lcore_id]);
 		return -1;
@@ -113,7 +113,7 @@ guest_channel_host_connect(const char *path, unsigned lcore_id)
 	return 0;
 error:
 	close(fd);
-	global_fds[lcore_id] = 0;
+	global_fds[lcore_id] = -1;
 	return -1;
 }
 
@@ -129,7 +129,7 @@ guest_channel_send_msg(struct channel_packet *pkt, unsigned lcore_id)
 		return -1;
 	}
 
-	if (global_fds[lcore_id] == 0) {
+	if (global_fds[lcore_id] < 0) {
 		RTE_LOG(ERR, GUEST_CHANNEL, "Channel is not connected\n");
 		return -1;
 	}
@@ -163,8 +163,8 @@ guest_channel_host_disconnect(unsigned lcore_id)
 				lcore_id, RTE_MAX_LCORE-1);
 		return;
 	}
-	if (global_fds[lcore_id] == 0)
+	if (global_fds[lcore_id] < 0)
 		return;
 	close(global_fds[lcore_id]);
-	global_fds[lcore_id] = 0;
+	global_fds[lcore_id] = -1;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.120938562 +0000
+++ 0095-power-fix-socket-indicator-value.patch	2019-12-19 14:32:26.221300126 +0000
@@ -1,14 +1,15 @@
-From b4b2f84a5970709e7fb060e3bcd4afb7c19b0121 Mon Sep 17 00:00:00 2001
+From aaae8df858cc6e7615bad466d2e97f35eafda14e Mon Sep 17 00:00:00 2001
 From: Marcin Hajkowski <marcinx.hajkowski@intel.com>
 Date: Fri, 27 Sep 2019 09:42:13 +0100
 Subject: [PATCH] power: fix socket indicator value
 
+[ upstream commit b4b2f84a5970709e7fb060e3bcd4afb7c19b0121 ]
+
 Currently 0 is being used for not connected slot indication.
 This is not consistent with linux doc which identifies 0 as valid
 (connected) slot, thus modification was done to change it.
 
 Fixes: cd0d5547 ("power: vm communication channels in guest")
-Cc: stable@dpdk.org
 
 Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -18,10 +19,10 @@
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 diff --git a/lib/librte_power/guest_channel.c b/lib/librte_power/guest_channel.c
-index c17ea46b49..9cf7d2cb24 100644
+index fa5de0f53a..2c3ee7daf6 100644
 --- a/lib/librte_power/guest_channel.c
 +++ b/lib/librte_power/guest_channel.c
-@@ -19,7 +19,7 @@
+@@ -48,7 +48,7 @@
  
  #define RTE_LOGTYPE_GUEST_CHANNEL RTE_LOGTYPE_USER1
  
@@ -29,8 +30,8 @@
 +static int global_fds[RTE_MAX_LCORE] = { [0 ... RTE_MAX_LCORE-1] = -1 };
  
  int
- guest_channel_host_connect(const char *path, unsigned int lcore_id)
-@@ -35,7 +35,7 @@ guest_channel_host_connect(const char *path, unsigned int lcore_id)
+ guest_channel_host_connect(const char *path, unsigned lcore_id)
+@@ -64,7 +64,7 @@ guest_channel_host_connect(const char *path, unsigned lcore_id)
  		return -1;
  	}
  	/* check if path is already open */
@@ -39,7 +40,7 @@
  		RTE_LOG(ERR, GUEST_CHANNEL, "Channel(%u) is already open with fd %d\n",
  				lcore_id, global_fds[lcore_id]);
  		return -1;
-@@ -84,7 +84,7 @@ guest_channel_host_connect(const char *path, unsigned int lcore_id)
+@@ -113,7 +113,7 @@ guest_channel_host_connect(const char *path, unsigned lcore_id)
  	return 0;
  error:
  	close(fd);
@@ -48,7 +49,7 @@
  	return -1;
  }
  
-@@ -100,7 +100,7 @@ guest_channel_send_msg(struct channel_packet *pkt, unsigned int lcore_id)
+@@ -129,7 +129,7 @@ guest_channel_send_msg(struct channel_packet *pkt, unsigned lcore_id)
  		return -1;
  	}
  
@@ -57,7 +58,7 @@
  		RTE_LOG(ERR, GUEST_CHANNEL, "Channel is not connected\n");
  		return -1;
  	}
-@@ -134,8 +134,8 @@ guest_channel_host_disconnect(unsigned int lcore_id)
+@@ -163,8 +163,8 @@ guest_channel_host_disconnect(unsigned lcore_id)
  				lcore_id, RTE_MAX_LCORE-1);
  		return;
  	}

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

* [dpdk-stable] patch 'examples/vm_power: fix build without i40e' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (93 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'power: fix socket indicator value' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'usertools: fix pmdinfo with python 3 and pyelftools>=0.24' " luca.boccassi
                   ` (42 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: David Hunt; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3b096e804f651a3b15826ee8e37ef13a666ab5f6 Mon Sep 17 00:00:00 2001
From: David Hunt <david.hunt@intel.com>
Date: Thu, 24 Oct 2019 15:26:10 +0100
Subject: [PATCH] examples/vm_power: fix build without i40e

[ upstream commit e4d028a0fb53809a341f62a39e59f9e13e7c7f59 ]

channel_monitor.c was dependent on i40e driver being available.
This is only necessary for the TRAFFIC policy, so use #ifdef's
to not call these when i40e not available.

Fixes: f14791a8126e ("examples/vm_power_mgr: add policy to channels")

Signed-off-by: David Hunt <david.hunt@intel.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 examples/vm_power_manager/channel_monitor.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/examples/vm_power_manager/channel_monitor.c b/examples/vm_power_manager/channel_monitor.c
index 37e71ed905..6e73d54dd5 100644
--- a/examples/vm_power_manager/channel_monitor.c
+++ b/examples/vm_power_manager/channel_monitor.c
@@ -49,7 +49,9 @@
 #include <rte_atomic.h>
 #include <rte_cycles.h>
 #include <rte_ethdev.h>
+#ifdef RTE_LIBRTE_I40E_PMD
 #include <rte_pmd_i40e.h>
+#endif
 
 #include <libvirt/libvirt.h>
 #include "channel_monitor.h"
@@ -145,8 +147,12 @@ get_pfid(struct policy *pol)
 	for (i = 0; i < pol->pkt.nb_mac_to_monitor; i++) {
 
 		for (x = 0; x < nb_ports; x++) {
+#ifdef RTE_LIBRTE_I40E_PMD
 			ret = rte_pmd_i40e_query_vfid_by_mac(x,
 				(struct ether_addr *)&(pol->pkt.vfid[i]));
+#else
+			ret = -ENOTSUP;
+#endif
 			if (ret != -EINVAL) {
 				pol->port[i] = x;
 				break;
@@ -209,15 +215,21 @@ get_pkt_diff(struct policy *pol)
 		vsi_pkt_count_prev_total = 0;
 	double rdtsc_curr, rdtsc_diff, diff;
 	int x;
+#ifdef RTE_LIBRTE_I40E_PMD
 	struct rte_eth_stats vf_stats;
+#endif
 
 	for (x = 0; x < pol->pkt.nb_mac_to_monitor; x++) {
 
+#ifdef RTE_LIBRTE_I40E_PMD
 		/*Read vsi stats*/
 		if (rte_pmd_i40e_get_vf_stats(x, pol->pfid[x], &vf_stats) == 0)
 			vsi_pkt_count = vf_stats.ipackets;
 		else
 			vsi_pkt_count = -1;
+#else
+		vsi_pkt_count = -1;
+#endif
 
 		vsi_pkt_total += vsi_pkt_count;
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.153668706 +0000
+++ 0096-examples-vm_power-fix-build-without-i40e.patch	2019-12-19 14:32:26.225300205 +0000
@@ -1,14 +1,15 @@
-From e4d028a0fb53809a341f62a39e59f9e13e7c7f59 Mon Sep 17 00:00:00 2001
+From 3b096e804f651a3b15826ee8e37ef13a666ab5f6 Mon Sep 17 00:00:00 2001
 From: David Hunt <david.hunt@intel.com>
 Date: Thu, 24 Oct 2019 15:26:10 +0100
 Subject: [PATCH] examples/vm_power: fix build without i40e
 
+[ upstream commit e4d028a0fb53809a341f62a39e59f9e13e7c7f59 ]
+
 channel_monitor.c was dependent on i40e driver being available.
 This is only necessary for the TRAFFIC policy, so use #ifdef's
 to not call these when i40e not available.
 
 Fixes: f14791a8126e ("examples/vm_power_mgr: add policy to channels")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Hunt <david.hunt@intel.com>
 Tested-by: Bruce Richardson <bruce.richardson@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 12 insertions(+)
 
 diff --git a/examples/vm_power_manager/channel_monitor.c b/examples/vm_power_manager/channel_monitor.c
-index 0c73fac558..29e1cb64d0 100644
+index 37e71ed905..6e73d54dd5 100644
 --- a/examples/vm_power_manager/channel_monitor.c
 +++ b/examples/vm_power_manager/channel_monitor.c
-@@ -28,7 +28,9 @@
+@@ -49,7 +49,9 @@
  #include <rte_atomic.h>
  #include <rte_cycles.h>
  #include <rte_ethdev.h>
@@ -31,20 +32,20 @@
  
  #include <libvirt/libvirt.h>
  #include "channel_monitor.h"
-@@ -436,8 +438,12 @@ get_pfid(struct policy *pol)
+@@ -145,8 +147,12 @@ get_pfid(struct policy *pol)
  	for (i = 0; i < pol->pkt.nb_mac_to_monitor; i++) {
  
- 		RTE_ETH_FOREACH_DEV(x) {
+ 		for (x = 0; x < nb_ports; x++) {
 +#ifdef RTE_LIBRTE_I40E_PMD
  			ret = rte_pmd_i40e_query_vfid_by_mac(x,
- 				(struct rte_ether_addr *)&(pol->pkt.vfid[i]));
+ 				(struct ether_addr *)&(pol->pkt.vfid[i]));
 +#else
 +			ret = -ENOTSUP;
 +#endif
  			if (ret != -EINVAL) {
  				pol->port[i] = x;
  				break;
-@@ -531,15 +537,21 @@ get_pkt_diff(struct policy *pol)
+@@ -209,15 +215,21 @@ get_pkt_diff(struct policy *pol)
  		vsi_pkt_count_prev_total = 0;
  	double rdtsc_curr, rdtsc_diff, diff;
  	int x;

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

* [dpdk-stable] patch 'usertools: fix pmdinfo with python 3 and pyelftools>=0.24' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (94 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix build without i40e' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: add retry and timeout in packet enqueue API' " luca.boccassi
                   ` (41 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Robin Jarry; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 4bb877c4bf4c583f5556865494ff69c3ae57a1b1 Mon Sep 17 00:00:00 2001
From: Robin Jarry <robin.jarry@6wind.com>
Date: Tue, 15 Oct 2019 14:39:17 +0200
Subject: [PATCH] usertools: fix pmdinfo with python 3 and pyelftools>=0.24

[ upstream commit 4da069194ef4578aac7ae10cf05abd992c61723c ]

Running dpdk-pmdinfo.py on Ubuntu 18.04 (bionic) with python 3 and
pyelftools installed produces no output but no error is reported
neither:

  ~$ python3 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  ~$ echo $?
  0

While with python 2, it works:

  ~# python2 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  {"pci_ids": [], "name": "dpio"}
  {"pci_ids": [], "name": "dpbp"}
  {"pci_ids": [], "name": "dpaa2_qdma"}
  .....

On Ubuntu 18.04, pyelftools is version 0.24. The change log of
pyelftools v0.24 says:

 - Symbol/section names are strings internally now, not bytestrings
   (this may affect API usage in Python 3) (#76).

We cannot guess which version of pyelftools is actually being used. The
elftools.__version__ symbol is not consistent with each distro's package
version. For example, on Ubuntu 16.04 (xenial), the .deb package version
is '0.23-2' but elftools.__version__ contains '0.25'. This is certainly
due to partial backports.

To have a more consistent behaviour of this script across all versions
of python, add the unicode_literals future import so that literal
strings are now always "unicode".

Add 2 utility functions to force a string into bytes or bytes into an
unicode string.

Force pyelftools return values to unicode strings (will do nothing with
recent version of pyelftools).

If elffile.get_section_by_name returns None with a unicode section name,
try with the same one encoded as bytes.

Also, replace all open() calls by io.open() which behaves like the
builtin open in python 3. The only non-binary opened file is
/usr/share/hwdata/pci.ids which is UTF-8 encoded text. Explicitly
specify that encoding.

Link: https://github.com/eliben/pyelftools/blob/v0.24/CHANGES#L7
Link: https://github.com/eliben/pyelftools/commit/108eaea9e75a8b5a

Fixes: 54ca545dce4b ("make python scripts python2/3 compliant")

Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
---
 usertools/dpdk-pmdinfo.py | 65 +++++++++++++++++++++++++++------------
 1 file changed, 46 insertions(+), 19 deletions(-)

diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py
index 46c1be081b..0fc51f0cbf 100755
--- a/usertools/dpdk-pmdinfo.py
+++ b/usertools/dpdk-pmdinfo.py
@@ -6,13 +6,15 @@
 #
 # -------------------------------------------------------------------------
 from __future__ import print_function
+from __future__ import unicode_literals
 import json
+import io
 import os
 import platform
 import string
 import sys
 from elftools.common.exceptions import ELFError
-from elftools.common.py3compat import (byte2int, bytes2str, str2bytes)
+from elftools.common.py3compat import byte2int
 from elftools.elf.elffile import ELFFile
 from optparse import OptionParser
 
@@ -211,7 +213,8 @@ class PCIIds:
         """
         Reads the local file
         """
-        self.contents = open(filename).readlines()
+        with io.open(filename, 'r', encoding='utf-8') as f:
+            self.contents = f.readlines()
         self.date = self.findDate(self.contents)
 
     def loadLocal(self):
@@ -265,7 +268,13 @@ class ReadElf(object):
                 return None
         except ValueError:
             # Not a number. Must be a name then
-            return self.elffile.get_section_by_name(str2bytes(spec))
+            section = self.elffile.get_section_by_name(force_unicode(spec))
+            if section is None:
+                # No match with a unicode name.
+                # Some versions of pyelftools (<= 0.23) store internal strings
+                # as bytes. Try again with the name encoded as bytes.
+                section = self.elffile.get_section_by_name(force_bytes(spec))
+            return section
 
     def pretty_print_pmdinfo(self, pmdinfo):
         global pcidb
@@ -337,7 +346,8 @@ class ReadElf(object):
             while endptr < len(data) and byte2int(data[endptr]) != 0:
                 endptr += 1
 
-            mystring = bytes2str(data[dataptr:endptr])
+            # pyelftools may return byte-strings, force decode them
+            mystring = force_unicode(data[dataptr:endptr])
             rc = mystring.find("PMD_INFO_STRING")
             if (rc != -1):
                 self.parse_pmd_info_string(mystring)
@@ -346,9 +356,10 @@ class ReadElf(object):
 
     def find_librte_eal(self, section):
         for tag in section.iter_tags():
-            if tag.entry.d_tag == 'DT_NEEDED':
-                if "librte_eal" in tag.needed:
-                    return tag.needed
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_NEEDED':
+                if "librte_eal" in force_unicode(tag.needed):
+                    return force_unicode(tag.needed)
         return None
 
     def search_for_autoload_path(self):
@@ -371,7 +382,7 @@ class ReadElf(object):
                     return (None, None)
                 if raw_output is False:
                     print("Scanning for autoload path in %s" % library)
-                scanfile = open(library, 'rb')
+                scanfile = io.open(library, 'rb')
                 scanelf = ReadElf(scanfile, sys.stdout)
         except AttributeError:
             # Not a dynamic binary
@@ -401,7 +412,8 @@ class ReadElf(object):
             while endptr < len(data) and byte2int(data[endptr]) != 0:
                 endptr += 1
 
-            mystring = bytes2str(data[dataptr:endptr])
+            # pyelftools may return byte-strings, force decode them
+            mystring = force_unicode(data[dataptr:endptr])
             rc = mystring.find("DPDK_PLUGIN_PATH")
             if (rc != -1):
                 rc = mystring.find("=")
@@ -414,8 +426,9 @@ class ReadElf(object):
 
     def get_dt_runpath(self, dynsec):
         for tag in dynsec.iter_tags():
-            if tag.entry.d_tag == 'DT_RUNPATH':
-                return tag.runpath
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_RUNPATH':
+                return force_unicode(tag.runpath)
         return ""
 
     def process_dt_needed_entries(self):
@@ -436,16 +449,16 @@ class ReadElf(object):
             return
 
         for tag in dynsec.iter_tags():
-            if tag.entry.d_tag == 'DT_NEEDED':
-                rc = tag.needed.find(b"librte_pmd")
-                if (rc != -1):
-                    library = search_file(tag.needed,
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_NEEDED':
+                if 'librte_pmd' in force_unicode(tag.needed):
+                    library = search_file(force_unicode(tag.needed),
                                           runpath + ":" + ldlibpath +
                                           ":/usr/lib64:/lib64:/usr/lib:/lib")
                     if library is not None:
                         if raw_output is False:
                             print("Scanning %s for pmd information" % library)
-                        with open(library, 'rb') as file:
+                        with io.open(library, 'rb') as file:
                             try:
                                 libelf = ReadElf(file, sys.stdout)
                             except ELFError:
@@ -456,6 +469,20 @@ class ReadElf(object):
                             file.close()
 
 
+# compat: remove force_unicode & force_bytes when pyelftools<=0.23 support is
+# dropped.
+def force_unicode(s):
+    if hasattr(s, 'decode') and callable(s.decode):
+        s = s.decode('latin-1')  # same encoding used in pyelftools py3compat
+    return s
+
+
+def force_bytes(s):
+    if hasattr(s, 'encode') and callable(s.encode):
+        s = s.encode('latin-1')  # same encoding used in pyelftools py3compat
+    return s
+
+
 def scan_autoload_path(autoload_path):
     global raw_output
 
@@ -474,7 +501,7 @@ def scan_autoload_path(autoload_path):
             scan_autoload_path(dpath)
         if os.path.isfile(dpath):
             try:
-                file = open(dpath, 'rb')
+                file = io.open(dpath, 'rb')
                 readelf = ReadElf(file, sys.stdout)
             except ELFError:
                 # this is likely not an elf file, skip it
@@ -501,7 +528,7 @@ def scan_for_autoload_pmds(dpdk_path):
             print("Must specify a file name")
         return
 
-    file = open(dpdk_path, 'rb')
+    file = io.open(dpdk_path, 'rb')
     try:
         readelf = ReadElf(file, sys.stdout)
     except ElfError:
@@ -593,7 +620,7 @@ def main(stream=None):
         print("File not found")
         sys.exit(1)
 
-    with open(myelffile, 'rb') as file:
+    with io.open(myelffile, 'rb') as file:
         try:
             readelf = ReadElf(file, sys.stdout)
             readelf.process_dt_needed_entries()
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.195909058 +0000
+++ 0097-usertools-fix-pmdinfo-with-python-3-and-pyelftools-0.patch	2019-12-19 14:32:26.225300205 +0000
@@ -1,8 +1,10 @@
-From 4da069194ef4578aac7ae10cf05abd992c61723c Mon Sep 17 00:00:00 2001
+From 4bb877c4bf4c583f5556865494ff69c3ae57a1b1 Mon Sep 17 00:00:00 2001
 From: Robin Jarry <robin.jarry@6wind.com>
 Date: Tue, 15 Oct 2019 14:39:17 +0200
 Subject: [PATCH] usertools: fix pmdinfo with python 3 and pyelftools>=0.24
 
+[ upstream commit 4da069194ef4578aac7ae10cf05abd992c61723c ]
+
 Running dpdk-pmdinfo.py on Ubuntu 18.04 (bionic) with python 3 and
 pyelftools installed produces no output but no error is reported
 neither:
@@ -53,7 +55,6 @@
 Link: https://github.com/eliben/pyelftools/commit/108eaea9e75a8b5a
 
 Fixes: 54ca545dce4b ("make python scripts python2/3 compliant")
-Cc: stable@dpdk.org
 
 Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
 Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
@@ -62,10 +63,10 @@
  1 file changed, 46 insertions(+), 19 deletions(-)
 
 diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py
-index 03623d5b8b..069a3bf124 100755
+index 46c1be081b..0fc51f0cbf 100755
 --- a/usertools/dpdk-pmdinfo.py
 +++ b/usertools/dpdk-pmdinfo.py
-@@ -8,13 +8,15 @@
+@@ -6,13 +6,15 @@
  #
  # -------------------------------------------------------------------------
  from __future__ import print_function
@@ -82,7 +83,7 @@
  from elftools.elf.elffile import ELFFile
  from optparse import OptionParser
  
-@@ -213,7 +215,8 @@ class PCIIds:
+@@ -211,7 +213,8 @@ class PCIIds:
          """
          Reads the local file
          """
@@ -92,7 +93,7 @@
          self.date = self.findDate(self.contents)
  
      def loadLocal(self):
-@@ -267,7 +270,13 @@ class ReadElf(object):
+@@ -265,7 +268,13 @@ class ReadElf(object):
                  return None
          except ValueError:
              # Not a number. Must be a name then
@@ -107,7 +108,7 @@
  
      def pretty_print_pmdinfo(self, pmdinfo):
          global pcidb
-@@ -339,7 +348,8 @@ class ReadElf(object):
+@@ -337,7 +346,8 @@ class ReadElf(object):
              while endptr < len(data) and byte2int(data[endptr]) != 0:
                  endptr += 1
  
@@ -117,7 +118,7 @@
              rc = mystring.find("PMD_INFO_STRING")
              if (rc != -1):
                  self.parse_pmd_info_string(mystring)
-@@ -348,9 +358,10 @@ class ReadElf(object):
+@@ -346,9 +356,10 @@ class ReadElf(object):
  
      def find_librte_eal(self, section):
          for tag in section.iter_tags():
@@ -131,7 +132,7 @@
          return None
  
      def search_for_autoload_path(self):
-@@ -373,7 +384,7 @@ class ReadElf(object):
+@@ -371,7 +382,7 @@ class ReadElf(object):
                      return (None, None)
                  if raw_output is False:
                      print("Scanning for autoload path in %s" % library)
@@ -140,7 +141,7 @@
                  scanelf = ReadElf(scanfile, sys.stdout)
          except AttributeError:
              # Not a dynamic binary
-@@ -403,7 +414,8 @@ class ReadElf(object):
+@@ -401,7 +412,8 @@ class ReadElf(object):
              while endptr < len(data) and byte2int(data[endptr]) != 0:
                  endptr += 1
  
@@ -150,7 +151,7 @@
              rc = mystring.find("DPDK_PLUGIN_PATH")
              if (rc != -1):
                  rc = mystring.find("=")
-@@ -416,8 +428,9 @@ class ReadElf(object):
+@@ -414,8 +426,9 @@ class ReadElf(object):
  
      def get_dt_runpath(self, dynsec):
          for tag in dynsec.iter_tags():
@@ -162,7 +163,7 @@
          return ""
  
      def process_dt_needed_entries(self):
-@@ -438,16 +451,16 @@ class ReadElf(object):
+@@ -436,16 +449,16 @@ class ReadElf(object):
              return
  
          for tag in dynsec.iter_tags():
@@ -184,7 +185,7 @@
                              try:
                                  libelf = ReadElf(file, sys.stdout)
                              except ELFError:
-@@ -458,6 +471,20 @@ class ReadElf(object):
+@@ -456,6 +469,20 @@ class ReadElf(object):
                              file.close()
  
  
@@ -205,7 +206,7 @@
  def scan_autoload_path(autoload_path):
      global raw_output
  
-@@ -476,7 +503,7 @@ def scan_autoload_path(autoload_path):
+@@ -474,7 +501,7 @@ def scan_autoload_path(autoload_path):
              scan_autoload_path(dpath)
          if os.path.isfile(dpath):
              try:
@@ -214,7 +215,7 @@
                  readelf = ReadElf(file, sys.stdout)
              except ELFError:
                  # this is likely not an elf file, skip it
-@@ -503,7 +530,7 @@ def scan_for_autoload_pmds(dpdk_path):
+@@ -501,7 +528,7 @@ def scan_for_autoload_pmds(dpdk_path):
              print("Must specify a file name")
          return
  
@@ -223,7 +224,7 @@
      try:
          readelf = ReadElf(file, sys.stdout)
      except ElfError:
-@@ -595,7 +622,7 @@ def main(stream=None):
+@@ -593,7 +620,7 @@ def main(stream=None):
          print("File not found")
          sys.exit(1)
  

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

* [dpdk-stable] patch 'net/dpaa2: add retry and timeout in packet enqueue API' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (95 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'usertools: fix pmdinfo with python 3 and pyelftools>=0.24' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'mempool/dpaa2: report error on endless loop in mbuf release' " luca.boccassi
                   ` (40 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Nipun Gupta; +Cc: Radu Bulie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 78ffee310f5b56511603de118258819e2b255f45 Mon Sep 17 00:00:00 2001
From: Nipun Gupta <nipun.gupta@nxp.com>
Date: Tue, 5 Nov 2019 19:53:16 +0530
Subject: [PATCH] net/dpaa2: add retry and timeout in packet enqueue API

[ upstream commit ce4fd609b4d7724533ccf9eb8b667afadc5a1687 ]

In the packet transmit, if the QBMAN is not able to process the
packets, the Tx function loops infinitely to send the packet out.
This patch changes the logic retry for some time (count) and then
return.

Fixes: cd9935cec873 ("net/dpaa2: enable Rx and Tx operations")
Fixes: 16c4a3c46ab7 ("bus/fslmc: add enqueue response read in qbman")

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h |  2 ++
 drivers/net/dpaa2/dpaa2_rxtx.c          | 36 ++++++++++++++++++++-----
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index ece1a7d432..4f7e49cc3c 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -63,6 +63,8 @@
 #define DPAA2_DQRR_RING_SIZE	16
 	/** <Maximum number of slots available in RX ring*/
 
+#define DPAA2_MAX_TX_RETRY_COUNT	10000
+
 #define MC_PORTAL_INDEX		0
 #define NUM_DPIO_REGIONS	2
 #define NUM_DQS_PER_QUEUE       2
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index bcac19af5e..4459424e1e 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -636,15 +636,28 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 			}
 			bufs++;
 		}
+
 		loop = 0;
+		retry_count = 0;
 		while (loop < frames_to_send) {
-			loop += qbman_swp_enqueue_multiple(swp, &eqdesc,
+			ret = qbman_swp_enqueue_multiple(swp, &eqdesc,
 					&fd_arr[loop], frames_to_send - loop);
+			if (unlikely(ret < 0)) {
+				retry_count++;
+				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) {
+					num_tx += loop;
+					nb_pkts -= loop;
+					goto send_n_return;
+				}
+			} else {
+				loop += ret;
+				retry_count = 0;
+			}
 		}
 
-		num_tx += frames_to_send;
-		dpaa2_q->tx_pkts += frames_to_send;
-		nb_pkts -= frames_to_send;
+		num_tx += loop;
+		dpaa2_q->tx_pkts += loop;
+		nb_pkts -= loop;
 	}
 	return num_tx;
 
@@ -653,12 +666,21 @@ send_n_return:
 	if (loop) {
 		unsigned int i = 0;
 
+		retry_count = 0;
 		while (i < loop) {
-			i += qbman_swp_enqueue_multiple(swp, &eqdesc,
+			ret = qbman_swp_enqueue_multiple(swp, &eqdesc,
 							&fd_arr[i], loop - i);
+			if (unlikely(ret < 0)) {
+				retry_count++;
+				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT)
+					break;
+			} else {
+				i += ret;
+				retry_count = 0;
+			}
 		}
-		num_tx += loop;
-		dpaa2_q->tx_pkts += loop;
+		num_tx += i;
+		dpaa2_q->tx_pkts += i;
 	}
 skip_tx:
 	return num_tx;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.234433702 +0000
+++ 0098-net-dpaa2-add-retry-and-timeout-in-packet-enqueue-AP.patch	2019-12-19 14:32:26.229300284 +0000
@@ -1,8 +1,10 @@
-From ce4fd609b4d7724533ccf9eb8b667afadc5a1687 Mon Sep 17 00:00:00 2001
+From 78ffee310f5b56511603de118258819e2b255f45 Mon Sep 17 00:00:00 2001
 From: Nipun Gupta <nipun.gupta@nxp.com>
 Date: Tue, 5 Nov 2019 19:53:16 +0530
 Subject: [PATCH] net/dpaa2: add retry and timeout in packet enqueue API
 
+[ upstream commit ce4fd609b4d7724533ccf9eb8b667afadc5a1687 ]
+
 In the packet transmit, if the QBMAN is not able to process the
 packets, the Tx function loops infinitely to send the packet out.
 This patch changes the logic retry for some time (count) and then
@@ -10,22 +12,21 @@
 
 Fixes: cd9935cec873 ("net/dpaa2: enable Rx and Tx operations")
 Fixes: 16c4a3c46ab7 ("bus/fslmc: add enqueue response read in qbman")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
 Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
 ---
- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h |  2 +
- drivers/net/dpaa2/dpaa2_rxtx.c          | 72 ++++++++++++++++++++-----
- 2 files changed, 60 insertions(+), 14 deletions(-)
+ drivers/bus/fslmc/portal/dpaa2_hw_pvt.h |  2 ++
+ drivers/net/dpaa2/dpaa2_rxtx.c          | 36 ++++++++++++++++++++-----
+ 2 files changed, 31 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
-index db6dad5444..4ed82f5749 100644
+index ece1a7d432..4f7e49cc3c 100644
 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
 +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
-@@ -59,6 +59,8 @@
- #define DPAA2_SWP_CINH_REGION		1
- #define DPAA2_SWP_CENA_MEM_REGION	2
+@@ -63,6 +63,8 @@
+ #define DPAA2_DQRR_RING_SIZE	16
+ 	/** <Maximum number of slots available in RX ring*/
  
 +#define DPAA2_MAX_TX_RETRY_COUNT	10000
 +
@@ -33,11 +34,11 @@
  #define NUM_DPIO_REGIONS	2
  #define NUM_DQS_PER_QUEUE       2
 diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
-index b7b2d8652a..52d913d9ea 100644
+index bcac19af5e..4459424e1e 100644
 --- a/drivers/net/dpaa2/dpaa2_rxtx.c
 +++ b/drivers/net/dpaa2/dpaa2_rxtx.c
-@@ -1135,15 +1135,28 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- #endif
+@@ -636,15 +636,28 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+ 			}
  			bufs++;
  		}
 +
@@ -46,8 +47,7 @@
  		while (loop < frames_to_send) {
 -			loop += qbman_swp_enqueue_multiple(swp, &eqdesc,
 +			ret = qbman_swp_enqueue_multiple(swp, &eqdesc,
- 					&fd_arr[loop], &flags[loop],
- 					frames_to_send - loop);
+ 					&fd_arr[loop], frames_to_send - loop);
 +			if (unlikely(ret < 0)) {
 +				retry_count++;
 +				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) {
@@ -62,26 +62,23 @@
  		}
  
 -		num_tx += frames_to_send;
+-		dpaa2_q->tx_pkts += frames_to_send;
 -		nb_pkts -= frames_to_send;
 +		num_tx += loop;
++		dpaa2_q->tx_pkts += loop;
 +		nb_pkts -= loop;
  	}
- 	dpaa2_q->tx_pkts += num_tx;
  	return num_tx;
-@@ -1153,13 +1166,22 @@ send_n_return:
+ 
+@@ -653,12 +666,21 @@ send_n_return:
  	if (loop) {
  		unsigned int i = 0;
  
 +		retry_count = 0;
  		while (i < loop) {
 -			i += qbman_swp_enqueue_multiple(swp, &eqdesc,
--							&fd_arr[i],
--							&flags[loop],
--							loop - i);
 +			ret = qbman_swp_enqueue_multiple(swp, &eqdesc,
-+							 &fd_arr[i],
-+							 &flags[i],
-+							 loop - i);
+ 							&fd_arr[i], loop - i);
 +			if (unlikely(ret < 0)) {
 +				retry_count++;
 +				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT)
@@ -92,66 +89,12 @@
 +			}
  		}
 -		num_tx += loop;
+-		dpaa2_q->tx_pkts += loop;
 +		num_tx += i;
++		dpaa2_q->tx_pkts += i;
  	}
  skip_tx:
- 	dpaa2_q->tx_pkts += num_tx;
-@@ -1365,15 +1387,28 @@ dpaa2_dev_tx_ordered(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
- 			}
- 			bufs++;
- 		}
-+
- 		loop = 0;
-+		retry_count = 0;
- 		while (loop < frames_to_send) {
--			loop += qbman_swp_enqueue_multiple_desc(swp,
-+			ret = qbman_swp_enqueue_multiple_desc(swp,
- 					&eqdesc[loop], &fd_arr[loop],
- 					frames_to_send - loop);
-+			if (unlikely(ret < 0)) {
-+				retry_count++;
-+				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) {
-+					num_tx += loop;
-+					nb_pkts -= loop;
-+					goto send_n_return;
-+				}
-+			} else {
-+				loop += ret;
-+				retry_count = 0;
-+			}
- 		}
- 
--		num_tx += frames_to_send;
--		nb_pkts -= frames_to_send;
-+		num_tx += loop;
-+		nb_pkts -= loop;
- 	}
- 	dpaa2_q->tx_pkts += num_tx;
  	return num_tx;
-@@ -1383,11 +1418,20 @@ send_n_return:
- 	if (loop) {
- 		unsigned int i = 0;
- 
-+		retry_count = 0;
- 		while (i < loop) {
--			i += qbman_swp_enqueue_multiple_desc(swp, &eqdesc[loop],
--							&fd_arr[i], loop - i);
-+			ret = qbman_swp_enqueue_multiple_desc(swp,
-+				       &eqdesc[loop], &fd_arr[i], loop - i);
-+			if (unlikely(ret < 0)) {
-+				retry_count++;
-+				if (retry_count > DPAA2_MAX_TX_RETRY_COUNT)
-+					break;
-+			} else {
-+				i += ret;
-+				retry_count = 0;
-+			}
- 		}
--		num_tx += loop;
-+		num_tx += i;
- 	}
- skip_tx:
- 	dpaa2_q->tx_pkts += num_tx;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'mempool/dpaa2: report error on endless loop in mbuf release' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (96 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: add retry and timeout in packet enqueue API' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'doc: fix description of versioning macros' " luca.boccassi
                   ` (39 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Radu Bulie; +Cc: Nipun Gupta, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From ddbaab62521e6d5db2c9a216db1f71abc456a92f Mon Sep 17 00:00:00 2001
From: Radu Bulie <radu-andrei.bulie@nxp.com>
Date: Tue, 5 Nov 2019 19:53:19 +0530
Subject: [PATCH] mempool/dpaa2: report error on endless loop in mbuf release

[ upstream commit f0617163b8d2678371d0c93926cebb6c1e7981d7 ]

When BMAN is not able to accept more buffers, it could be that
there are no FBPR's (internal mem provided to bman) left.
Report error in such condition.

Fixes: 5dc43d22b5ad ("mempool/dpaa2: add hardware offloaded mempool")

Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 27 +++++++++++++++++-------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 8bcbaa8927..81b7e85d4e 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -200,7 +200,7 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
 	struct qbman_release_desc releasedesc;
 	struct qbman_swp *swp;
 	int ret;
-	int i, n;
+	int i, n, retry_count;
 	uint64_t bufs[DPAA2_MBUF_MAX_ACQ_REL];
 
 	if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
@@ -233,9 +233,15 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
 	}
 
 	/* feed them to bman */
-	do {
-		ret = qbman_swp_release(swp, &releasedesc, bufs, n);
-	} while (ret == -EBUSY);
+	retry_count = 0;
+	while ((ret = qbman_swp_release(swp, &releasedesc, bufs, n)) ==
+			-EBUSY) {
+		retry_count++;
+		if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) {
+			DPAA2_MEMPOOL_ERR("bman release retry exceeded, low fbpr?");
+			return;
+		}
+	}
 
 aligned:
 	/* if there are more buffers to free */
@@ -251,10 +257,15 @@ aligned:
 #endif
 		}
 
-		do {
-			ret = qbman_swp_release(swp, &releasedesc, bufs,
-						DPAA2_MBUF_MAX_ACQ_REL);
-		} while (ret == -EBUSY);
+		retry_count = 0;
+		while ((ret = qbman_swp_release(swp, &releasedesc, bufs,
+					DPAA2_MBUF_MAX_ACQ_REL)) == -EBUSY) {
+			retry_count++;
+			if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) {
+				DPAA2_MEMPOOL_ERR("bman release retry exceeded, low fbpr?");
+				return;
+			}
+		}
 		n += DPAA2_MBUF_MAX_ACQ_REL;
 	}
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.271833366 +0000
+++ 0099-mempool-dpaa2-report-error-on-endless-loop-in-mbuf-r.patch	2019-12-19 14:32:26.229300284 +0000
@@ -1,14 +1,15 @@
-From f0617163b8d2678371d0c93926cebb6c1e7981d7 Mon Sep 17 00:00:00 2001
+From ddbaab62521e6d5db2c9a216db1f71abc456a92f Mon Sep 17 00:00:00 2001
 From: Radu Bulie <radu-andrei.bulie@nxp.com>
 Date: Tue, 5 Nov 2019 19:53:19 +0530
 Subject: [PATCH] mempool/dpaa2: report error on endless loop in mbuf release
 
+[ upstream commit f0617163b8d2678371d0c93926cebb6c1e7981d7 ]
+
 When BMAN is not able to accept more buffers, it could be that
 there are no FBPR's (internal mem provided to bman) left.
 Report error in such condition.
 
 Fixes: 5dc43d22b5ad ("mempool/dpaa2: add hardware offloaded mempool")
-Cc: stable@dpdk.org
 
 Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
 Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
@@ -17,10 +18,10 @@
  1 file changed, 19 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
-index f26c30b007..cc4f837b68 100644
+index 8bcbaa8927..81b7e85d4e 100644
 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
 +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
-@@ -192,7 +192,7 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
+@@ -200,7 +200,7 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
  	struct qbman_release_desc releasedesc;
  	struct qbman_swp *swp;
  	int ret;
@@ -29,7 +30,7 @@
  	uint64_t bufs[DPAA2_MBUF_MAX_ACQ_REL];
  
  	if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
-@@ -225,9 +225,15 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
+@@ -233,9 +233,15 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused,
  	}
  
  	/* feed them to bman */
@@ -48,7 +49,7 @@
  
  aligned:
  	/* if there are more buffers to free */
-@@ -243,10 +249,15 @@ aligned:
+@@ -251,10 +257,15 @@ aligned:
  #endif
  		}
  

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

* [dpdk-stable] patch 'doc: fix description of versioning macros' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (97 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'mempool/dpaa2: report error on endless loop in mbuf release' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: fix possible use of uninitialized vars' " luca.boccassi
                   ` (38 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Andrzej Ostruszka; +Cc: Neil Horman, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 074a6d6927a4ef58e03bdbeea7e3fdda9a0356a6 Mon Sep 17 00:00:00 2001
From: Andrzej Ostruszka <aostruszka@marvell.com>
Date: Thu, 7 Nov 2019 16:03:07 +0100
Subject: [PATCH] doc: fix description of versioning macros

[ upstream commit 519e6548f7a679d769182866a71df98f6b6a85d8 ]

This patch fixes documentation of versioning macros so that they are
aligned with their implementation (no underscore is added by macros).

Fixes: f1ef9794f9bd ("doc: add ABI guidelines")

Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
---
 doc/guides/contributing/versioning.rst | 4 ++--
 lib/librte_compat/rte_compat.h         | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst
index 4000906289..fe15e9afd7 100644
--- a/doc/guides/contributing/versioning.rst
+++ b/doc/guides/contributing/versioning.rst
@@ -149,11 +149,11 @@ library so that older binaries need not be immediately recompiled.
 The macros exported are:
 
 * ``VERSION_SYMBOL(b, e, n)``: Creates a symbol version table entry binding
-  versioned symbol ``b@DPDK_n`` to the internal function ``b_e``.
+  versioned symbol ``b@DPDK_n`` to the internal function ``be``.
 
 * ``BIND_DEFAULT_SYMBOL(b, e, n)``: Creates a symbol version entry instructing
   the linker to bind references to symbol ``b`` to the internal symbol
-  ``b_e``.
+  ``be``.
 
 * ``MAP_STATIC_SYMBOL(f, p)``: Declare the prototype ``f``, and map it to the
   fully qualified function ``p``, so that if a symbol becomes versioned, it
diff --git a/lib/librte_compat/rte_compat.h b/lib/librte_compat/rte_compat.h
index 41e8032ba1..f45b434f1b 100644
--- a/lib/librte_compat/rte_compat.h
+++ b/lib/librte_compat/rte_compat.h
@@ -63,14 +63,14 @@
 /*
  * VERSION_SYMBOL
  * Creates a symbol version table entry binding symbol <b>@DPDK_<n> to the internal
- * function name <b>_<e>
+ * function name <b><e>
  */
 #define VERSION_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", " RTE_STR(b) "@DPDK_" RTE_STR(n))
 
 /*
  * BIND_DEFAULT_SYMBOL
  * Creates a symbol version entry instructing the linker to bind references to
- * symbol <b> to the internal symbol <b>_<e>
+ * symbol <b> to the internal symbol <b><e>
  */
 #define BIND_DEFAULT_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", " RTE_STR(b) "@@DPDK_" RTE_STR(n))
 #define __vsym __attribute__((used))
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.304519073 +0000
+++ 0100-doc-fix-description-of-versioning-macros.patch	2019-12-19 14:32:26.233300364 +0000
@@ -1,26 +1,27 @@
-From 519e6548f7a679d769182866a71df98f6b6a85d8 Mon Sep 17 00:00:00 2001
+From 074a6d6927a4ef58e03bdbeea7e3fdda9a0356a6 Mon Sep 17 00:00:00 2001
 From: Andrzej Ostruszka <aostruszka@marvell.com>
 Date: Thu, 7 Nov 2019 16:03:07 +0100
 Subject: [PATCH] doc: fix description of versioning macros
 
+[ upstream commit 519e6548f7a679d769182866a71df98f6b6a85d8 ]
+
 This patch fixes documentation of versioning macros so that they are
 aligned with their implementation (no underscore is added by macros).
 
 Fixes: f1ef9794f9bd ("doc: add ABI guidelines")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>
 Acked-by: Neil Horman <nhorman@tuxdriver.com>
 ---
- doc/guides/contributing/versioning.rst                  | 4 ++--
- lib/librte_eal/common/include/rte_function_versioning.h | 4 ++--
+ doc/guides/contributing/versioning.rst | 4 ++--
+ lib/librte_compat/rte_compat.h         | 4 ++--
  2 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst
-index 64984c54e6..8a38928c02 100644
+index 4000906289..fe15e9afd7 100644
 --- a/doc/guides/contributing/versioning.rst
 +++ b/doc/guides/contributing/versioning.rst
-@@ -215,11 +215,11 @@ library so that older binaries need not be immediately recompiled.
+@@ -149,11 +149,11 @@ library so that older binaries need not be immediately recompiled.
  The macros exported are:
  
  * ``VERSION_SYMBOL(b, e, n)``: Creates a symbol version table entry binding
@@ -34,11 +35,11 @@
  
  * ``MAP_STATIC_SYMBOL(f, p)``: Declare the prototype ``f``, and map it to the
    fully qualified function ``p``, so that if a symbol becomes versioned, it
-diff --git a/lib/librte_eal/common/include/rte_function_versioning.h b/lib/librte_eal/common/include/rte_function_versioning.h
-index 55e88ffae6..eae619d605 100644
---- a/lib/librte_eal/common/include/rte_function_versioning.h
-+++ b/lib/librte_eal/common/include/rte_function_versioning.h
-@@ -42,14 +42,14 @@
+diff --git a/lib/librte_compat/rte_compat.h b/lib/librte_compat/rte_compat.h
+index 41e8032ba1..f45b434f1b 100644
+--- a/lib/librte_compat/rte_compat.h
++++ b/lib/librte_compat/rte_compat.h
+@@ -63,14 +63,14 @@
  /*
   * VERSION_SYMBOL
   * Creates a symbol version table entry binding symbol <b>@DPDK_<n> to the internal

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

* [dpdk-stable] patch 'net/dpaa2: fix possible use of uninitialized vars' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (98 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'doc: fix description of versioning macros' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/bnxt: remove commented out code' " luca.boccassi
                   ` (37 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Andrzej Ostruszka; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 89d047629f76872094fbbdd7bb324c6b82fd50dd Mon Sep 17 00:00:00 2001
From: Andrzej Ostruszka <aostruszka@marvell.com>
Date: Thu, 7 Nov 2019 16:03:14 +0100
Subject: [PATCH] net/dpaa2: fix possible use of uninitialized vars
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit 7bbc7dc431a66e81514219f1734ed263a3db3359 ]

This patch fixes 'maybe-uninitialized' warnings reported by compiler
when using LTO.

Compiler warning pointing to this error (with LTO enabled):
error: ‘kg_cfg.extracts[0].masks[0].mask’ may be used uninitialized in
this function [-Werror=maybe-uninitialized]
    extr->masks[j].mask = cfg->extracts[i].masks[j].mask;

Fixes: 16bbc98a3e63 ("bus/fslmc: update MC to 10.3.x")

Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>
---
 drivers/net/dpaa2/mc/dpkg.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dpaa2/mc/dpkg.c b/drivers/net/dpaa2/mc/dpkg.c
index 3f98907f49..34d37bfd88 100644
--- a/drivers/net/dpaa2/mc/dpkg.c
+++ b/drivers/net/dpaa2/mc/dpkg.c
@@ -96,7 +96,10 @@ dpkg_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, uint8_t *key_cfg_buf)
 		dpkg_set_field(extr->extract_type, EXTRACT_TYPE,
 			       cfg->extracts[i].type);
 
-		for (j = 0; j < DPKG_NUM_OF_MASKS; j++) {
+		if (extr->num_of_byte_masks > DPKG_NUM_OF_MASKS)
+			return -EINVAL;
+
+		for (j = 0; j < extr->num_of_byte_masks; j++) {
 			extr->masks[j].mask = cfg->extracts[i].masks[j].mask;
 			extr->masks[j].offset =
 				cfg->extracts[i].masks[j].offset;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.345947534 +0000
+++ 0101-net-dpaa2-fix-possible-use-of-uninitialized-vars.patch	2019-12-19 14:32:26.233300364 +0000
@@ -1,4 +1,4 @@
-From 7bbc7dc431a66e81514219f1734ed263a3db3359 Mon Sep 17 00:00:00 2001
+From 89d047629f76872094fbbdd7bb324c6b82fd50dd Mon Sep 17 00:00:00 2001
 From: Andrzej Ostruszka <aostruszka@marvell.com>
 Date: Thu, 7 Nov 2019 16:03:14 +0100
 Subject: [PATCH] net/dpaa2: fix possible use of uninitialized vars
@@ -6,6 +6,8 @@
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
+[ upstream commit 7bbc7dc431a66e81514219f1734ed263a3db3359 ]
+
 This patch fixes 'maybe-uninitialized' warnings reported by compiler
 when using LTO.
 
@@ -15,31 +17,17 @@
     extr->masks[j].mask = cfg->extracts[i].masks[j].mask;
 
 Fixes: 16bbc98a3e63 ("bus/fslmc: update MC to 10.3.x")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>
 ---
- drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 1 +
- drivers/net/dpaa2/mc/dpkg.c            | 5 ++++-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
-index 16555d7b0b..47a8bda6aa 100644
---- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
-+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
-@@ -51,6 +51,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
- 	kg_cfg.extracts[0].type = DPKG_EXTRACT_FROM_DATA;
- 	kg_cfg.extracts[0].extract.from_data.offset = offset;
- 	kg_cfg.extracts[0].extract.from_data.size = size;
-+	kg_cfg.extracts[0].num_of_byte_masks = 0;
- 	kg_cfg.num_extracts = 1;
- 
- 	ret = dpkg_prepare_key_cfg(&kg_cfg, p_params);
+ drivers/net/dpaa2/mc/dpkg.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
 diff --git a/drivers/net/dpaa2/mc/dpkg.c b/drivers/net/dpaa2/mc/dpkg.c
-index 80f94f40ed..1e171eedc7 100644
+index 3f98907f49..34d37bfd88 100644
 --- a/drivers/net/dpaa2/mc/dpkg.c
 +++ b/drivers/net/dpaa2/mc/dpkg.c
-@@ -63,7 +63,10 @@ dpkg_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, uint8_t *key_cfg_buf)
+@@ -96,7 +96,10 @@ dpkg_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, uint8_t *key_cfg_buf)
  		dpkg_set_field(extr->extract_type, EXTRACT_TYPE,
  			       cfg->extracts[i].type);
  

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

* [dpdk-stable] patch 'net/bnxt: remove commented out code' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (99 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: fix possible use of uninitialized vars' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/dpaa2_sec: fix length retrieved from hardware' " luca.boccassi
                   ` (36 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 7b02d5c8582131f6857aa6c70ca1946b56784f98 Mon Sep 17 00:00:00 2001
From: Kevin Traynor <ktraynor@redhat.com>
Date: Wed, 6 Nov 2019 19:02:03 +0000
Subject: [PATCH] net/bnxt: remove commented out code

[ upstream commit 41c59e1180f6303059af6211dc24f3b1d345fbae ]

This commented out todo and code is old. Remove it.

Fixes: b7435d660a8c ("net/bnxt: add ntuple filtering support")

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 1a6d09f9d3..7747c20a58 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1944,9 +1944,6 @@ parse_ntuple_filter(struct bnxt *bp,
 		return -EINVAL;
 	}
 
-	//TODO Priority
-	//nfilter->priority = (uint8_t)filter->priority;
-
 	bfilter->enables = en;
 	return 0;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.384913991 +0000
+++ 0102-net-bnxt-remove-commented-out-code.patch	2019-12-19 14:32:26.237300443 +0000
@@ -1,12 +1,13 @@
-From 41c59e1180f6303059af6211dc24f3b1d345fbae Mon Sep 17 00:00:00 2001
+From 7b02d5c8582131f6857aa6c70ca1946b56784f98 Mon Sep 17 00:00:00 2001
 From: Kevin Traynor <ktraynor@redhat.com>
 Date: Wed, 6 Nov 2019 19:02:03 +0000
 Subject: [PATCH] net/bnxt: remove commented out code
 
+[ upstream commit 41c59e1180f6303059af6211dc24f3b1d345fbae ]
+
 This commented out todo and code is old. Remove it.
 
 Fixes: b7435d660a8c ("net/bnxt: add ntuple filtering support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
 Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -15,10 +16,10 @@
  1 file changed, 3 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 7d9459f0a1..58a4f98c9f 100644
+index 1a6d09f9d3..7747c20a58 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -2616,9 +2616,6 @@ parse_ntuple_filter(struct bnxt *bp,
+@@ -1944,9 +1944,6 @@ parse_ntuple_filter(struct bnxt *bp,
  		return -EINVAL;
  	}
  

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

* [dpdk-stable] patch 'crypto/dpaa2_sec: fix length retrieved from hardware' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (100 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/bnxt: remove commented out code' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix GCM IV length' " luca.boccassi
                   ` (35 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Akhil Goyal; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8540e08047880d0eedd578499e538ad29674f883 Mon Sep 17 00:00:00 2001
From: Akhil Goyal <akhil.goyal@nxp.com>
Date: Wed, 6 Nov 2019 02:37:12 +0530
Subject: [PATCH] crypto/dpaa2_sec: fix length retrieved from hardware

[ upstream commit 4bc65cf1190f3ba6b613dd4c76224c8d710c1d04 ]

FD retrieved from SEC after crypto processing provides
an updated length of the buffer which need to be updated
in mbuf. The difference in length can be negative hence
changing diff to int32_t from uint32_t.

Fixes: 0a23d4b6f4c2 ("crypto/dpaa2_sec: support protocol offload IPsec")

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
index 8ccb663531..56259ceb89 100644
--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
@@ -716,7 +716,7 @@ sec_simple_fd_to_mbuf(const struct qbman_fd *fd, __rte_unused uint8_t id)
 {
 	struct rte_crypto_op *op;
 	uint16_t len = DPAA2_GET_FD_LEN(fd);
-	uint16_t diff = 0;
+	int16_t diff = 0;
 	dpaa2_sec_session *sess_priv;
 
 	struct rte_mbuf *mbuf = DPAA2_INLINE_MBUF_FROM_BUF(
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.423988864 +0000
+++ 0103-crypto-dpaa2_sec-fix-length-retrieved-from-hardware.patch	2019-12-19 14:32:26.237300443 +0000
@@ -1,15 +1,16 @@
-From 4bc65cf1190f3ba6b613dd4c76224c8d710c1d04 Mon Sep 17 00:00:00 2001
+From 8540e08047880d0eedd578499e538ad29674f883 Mon Sep 17 00:00:00 2001
 From: Akhil Goyal <akhil.goyal@nxp.com>
 Date: Wed, 6 Nov 2019 02:37:12 +0530
 Subject: [PATCH] crypto/dpaa2_sec: fix length retrieved from hardware
 
+[ upstream commit 4bc65cf1190f3ba6b613dd4c76224c8d710c1d04 ]
+
 FD retrieved from SEC after crypto processing provides
 an updated length of the buffer which need to be updated
 in mbuf. The difference in length can be negative hence
 changing diff to int32_t from uint32_t.
 
 Fixes: 0a23d4b6f4c2 ("crypto/dpaa2_sec: support protocol offload IPsec")
-Cc: stable@dpdk.org
 
 Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
 ---
@@ -17,16 +18,16 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
-index add3b9ea65..b04890a489 100644
+index 8ccb663531..56259ceb89 100644
 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
 +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
-@@ -1511,7 +1511,7 @@ sec_simple_fd_to_mbuf(const struct qbman_fd *fd)
+@@ -716,7 +716,7 @@ sec_simple_fd_to_mbuf(const struct qbman_fd *fd, __rte_unused uint8_t id)
  {
  	struct rte_crypto_op *op;
  	uint16_t len = DPAA2_GET_FD_LEN(fd);
 -	uint16_t diff = 0;
 +	int16_t diff = 0;
- 	dpaa2_sec_session *sess_priv __rte_unused;
+ 	dpaa2_sec_session *sess_priv;
  
  	struct rte_mbuf *mbuf = DPAA2_INLINE_MBUF_FROM_BUF(
 -- 

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

* [dpdk-stable] patch 'examples/ipsec-secgw: fix GCM IV length' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (101 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/dpaa2_sec: fix length retrieved from hardware' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix SHA256-HMAC digest " luca.boccassi
                   ` (34 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Marcin Smoczynski; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0a742f17f247694e9710d4574e52d131216086ad Mon Sep 17 00:00:00 2001
From: Marcin Smoczynski <marcinx.smoczynski@intel.com>
Date: Thu, 31 Oct 2019 15:04:45 +0100
Subject: [PATCH] examples/ipsec-secgw: fix GCM IV length

[ upstream commit ce00b504f19896604d60d121008b8a2df48ef114 ]

The example IPsec application does not work properly when using
AES-GCM with crypto_openssl.

ESP with AES-GCM uses standard 96bit long algorithm IV ([1]) which
later concatenated with be32(1) forms a J0 block. GCM specification
([2], chapter 7.1) states that when length of IV is different than
96b, in order to format a J0 block, GHASH function must be used.

According to specification ([2], chapter 5.1.1) GCM implementations
should support standard 96bit IVs, other lengths are optional. Every
DPDK cryptodev supports 96bit IV and few of them supports 128bit
IV as well (openssl, mrvl, ccp). When passing iv::length=16 to a
cryptodev which does support standard IVs only (e.g. qat) it
implicitly uses starting 96 bits. On the other hand, openssl follows
specification and uses GHASH to compute J0 for that case which results
in different than expected J0 values used for encryption/decryption.

Fix an inability to use AES-GCM with crypto_openssl by changing IV
length to the standard value of 12.

[1] RFC4106, section "4. Nonce format" and "3.1. Initialization Vector"
    https://tools.ietf.org/html/rfc4106
[2] NIST SP800-38D
    https://csrc.nist.gov/publications/detail/sp/800-38d/final

Fixes: 0fbd75a99f ("cryptodev: move IV parameters to session")

Signed-off-by: Marcin Smoczynski <marcinx.smoczynski@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 examples/ipsec-secgw/sa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c
index eb83d94cdc..67127d0401 100644
--- a/examples/ipsec-secgw/sa.c
+++ b/examples/ipsec-secgw/sa.c
@@ -822,7 +822,7 @@ sa_add_rules(struct sa_ctx *sa_ctx, const struct ipsec_sa entries[],
 		}
 
 		if (sa->aead_algo == RTE_CRYPTO_AEAD_AES_GCM) {
-			iv_length = 16;
+			iv_length = 12;
 
 			sa_ctx->xf[idx].a.type = RTE_CRYPTO_SYM_XFORM_AEAD;
 			sa_ctx->xf[idx].a.aead.algo = sa->aead_algo;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.462404069 +0000
+++ 0104-examples-ipsec-secgw-fix-GCM-IV-length.patch	2019-12-19 14:32:26.241300522 +0000
@@ -1,8 +1,10 @@
-From ce00b504f19896604d60d121008b8a2df48ef114 Mon Sep 17 00:00:00 2001
+From 0a742f17f247694e9710d4574e52d131216086ad Mon Sep 17 00:00:00 2001
 From: Marcin Smoczynski <marcinx.smoczynski@intel.com>
 Date: Thu, 31 Oct 2019 15:04:45 +0100
 Subject: [PATCH] examples/ipsec-secgw: fix GCM IV length
 
+[ upstream commit ce00b504f19896604d60d121008b8a2df48ef114 ]
+
 The example IPsec application does not work properly when using
 AES-GCM with crypto_openssl.
 
@@ -29,7 +31,6 @@
     https://csrc.nist.gov/publications/detail/sp/800-38d/final
 
 Fixes: 0fbd75a99f ("cryptodev: move IV parameters to session")
-Cc: stable@dpdk.org
 
 Signed-off-by: Marcin Smoczynski <marcinx.smoczynski@intel.com>
 Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -38,13 +39,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c
-index 4cb90857c7..a8dee342eb 100644
+index eb83d94cdc..67127d0401 100644
 --- a/examples/ipsec-secgw/sa.c
 +++ b/examples/ipsec-secgw/sa.c
-@@ -985,7 +985,7 @@ sa_add_rules(struct sa_ctx *sa_ctx, const struct ipsec_sa entries[],
+@@ -822,7 +822,7 @@ sa_add_rules(struct sa_ctx *sa_ctx, const struct ipsec_sa entries[],
+ 		}
  
  		if (sa->aead_algo == RTE_CRYPTO_AEAD_AES_GCM) {
- 			struct rte_ipsec_session *ips;
 -			iv_length = 16;
 +			iv_length = 12;
  

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

* [dpdk-stable] patch 'examples/ipsec-secgw: fix SHA256-HMAC digest length' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (102 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix GCM IV length' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/openssl: use local copy for session contexts' " luca.boccassi
                   ` (33 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Vakul Garg; +Cc: Akhil Goyal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 9a2ae0c6c12d375d0da89af38c62224ae895eb7b Mon Sep 17 00:00:00 2001
From: Vakul Garg <vakul.garg@nxp.com>
Date: Wed, 6 Nov 2019 15:23:22 +0530
Subject: [PATCH] examples/ipsec-secgw: fix SHA256-HMAC digest length

[ upstream commit 2fcf3f70d19af191eef79fbc9f2d978b2ffb1588 ]

As per RFC4868, SHA-256 should use 128 bits of ICV.
Fixes: b5350285ce6e ("examples/ipsec-secgw: support SHA256 HMAC")

Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 examples/ipsec-secgw/sa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c
index 67127d0401..f01a53116a 100644
--- a/examples/ipsec-secgw/sa.c
+++ b/examples/ipsec-secgw/sa.c
@@ -123,7 +123,7 @@ const struct supported_auth_algo auth_algos[] = {
 	{
 		.keyword = "sha256-hmac",
 		.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
-		.digest_len = 12,
+		.digest_len = 16,
 		.key_len = 32
 	}
 };
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.500958231 +0000
+++ 0105-examples-ipsec-secgw-fix-SHA256-HMAC-digest-length.patch	2019-12-19 14:32:26.241300522 +0000
@@ -1,11 +1,12 @@
-From 2fcf3f70d19af191eef79fbc9f2d978b2ffb1588 Mon Sep 17 00:00:00 2001
+From 9a2ae0c6c12d375d0da89af38c62224ae895eb7b Mon Sep 17 00:00:00 2001
 From: Vakul Garg <vakul.garg@nxp.com>
 Date: Wed, 6 Nov 2019 15:23:22 +0530
 Subject: [PATCH] examples/ipsec-secgw: fix SHA256-HMAC digest length
 
+[ upstream commit 2fcf3f70d19af191eef79fbc9f2d978b2ffb1588 ]
+
 As per RFC4868, SHA-256 should use 128 bits of ICV.
 Fixes: b5350285ce6e ("examples/ipsec-secgw: support SHA256 HMAC")
-Cc: stable@dpdk.org
 
 Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
 Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -14,10 +15,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c
-index a8dee342eb..f56e16bfc7 100644
+index 67127d0401..f01a53116a 100644
 --- a/examples/ipsec-secgw/sa.c
 +++ b/examples/ipsec-secgw/sa.c
-@@ -115,7 +115,7 @@ const struct supported_auth_algo auth_algos[] = {
+@@ -123,7 +123,7 @@ const struct supported_auth_algo auth_algos[] = {
  	{
  		.keyword = "sha256-hmac",
  		.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,

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

* [dpdk-stable] patch 'crypto/openssl: use local copy for session contexts' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (103 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix SHA256-HMAC digest " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/fm10k: fix mbuf free in vector Rx' " luca.boccassi
                   ` (32 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Thierry Herbelot; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0a6364cb0886cfdc7c6dc349ce56d4c45f51fb34 Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Wed, 11 Sep 2019 18:06:01 +0200
Subject: [PATCH] crypto/openssl: use local copy for session contexts

[ upstream commit 67ab783b5d70aed77d9ee3f3ae4688a70c42a49a ]

Session contexts are used for temporary storage when processing a
packet.
If packets for the same session are to be processed simultaneously on
multiple cores, separate contexts must be used.

Note: with openssl 1.1.1 EVP_CIPHER_CTX can no longer be defined as a
variable on the stack: it must be allocated. This in turn reduces the
performance.

Fixes: d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library")

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
---
 drivers/crypto/openssl/rte_openssl_pmd.c | 34 +++++++++++++++++-------
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 7b18bd42e7..24304d539c 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -1296,6 +1296,7 @@ process_openssl_combined_op
 	int srclen, aadlen, status = -1;
 	uint32_t offset;
 	uint8_t taglen;
+	EVP_CIPHER_CTX *ctx_copy;
 
 	/*
 	 * Segmented destination buffer is not supported for
@@ -1332,6 +1333,8 @@ process_openssl_combined_op
 	}
 
 	taglen = sess->auth.digest_length;
+	ctx_copy = EVP_CIPHER_CTX_new();
+	EVP_CIPHER_CTX_copy(ctx_copy, sess->cipher.ctx);
 
 	if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
 		if (sess->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC ||
@@ -1339,12 +1342,12 @@ process_openssl_combined_op
 			status = process_openssl_auth_encryption_gcm(
 					mbuf_src, offset, srclen,
 					aad, aadlen, iv,
-					dst, tag, sess->cipher.ctx);
+					dst, tag, ctx_copy);
 		else
 			status = process_openssl_auth_encryption_ccm(
 					mbuf_src, offset, srclen,
 					aad, aadlen, iv,
-					dst, tag, taglen, sess->cipher.ctx);
+					dst, tag, taglen, ctx_copy);
 
 	} else {
 		if (sess->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC ||
@@ -1352,14 +1355,15 @@ process_openssl_combined_op
 			status = process_openssl_auth_decryption_gcm(
 					mbuf_src, offset, srclen,
 					aad, aadlen, iv,
-					dst, tag, sess->cipher.ctx);
+					dst, tag, ctx_copy);
 		else
 			status = process_openssl_auth_decryption_ccm(
 					mbuf_src, offset, srclen,
 					aad, aadlen, iv,
-					dst, tag, taglen, sess->cipher.ctx);
+					dst, tag, taglen, ctx_copy);
 	}
 
+	EVP_CIPHER_CTX_free(ctx_copy);
 	if (status != 0) {
 		if (status == (-EFAULT) &&
 				sess->auth.operation ==
@@ -1378,6 +1382,7 @@ process_openssl_cipher_op
 {
 	uint8_t *dst, *iv;
 	int srclen, status;
+	EVP_CIPHER_CTX *ctx_copy;
 
 	/*
 	 * Segmented destination buffer is not supported for
@@ -1394,22 +1399,25 @@ process_openssl_cipher_op
 
 	iv = rte_crypto_op_ctod_offset(op, uint8_t *,
 			sess->iv.offset);
+	ctx_copy = EVP_CIPHER_CTX_new();
+	EVP_CIPHER_CTX_copy(ctx_copy, sess->cipher.ctx);
 
 	if (sess->cipher.mode == OPENSSL_CIPHER_LIB)
 		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					srclen, sess->cipher.ctx);
+					srclen, ctx_copy);
 		else
 			status = process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					srclen, sess->cipher.ctx);
+					srclen, ctx_copy);
 	else
 		status = process_openssl_cipher_des3ctr(mbuf_src, dst,
 				op->sym->cipher.data.offset, iv,
 				sess->cipher.key.data, srclen,
-				sess->cipher.ctx);
+				ctx_copy);
 
+	EVP_CIPHER_CTX_free(ctx_copy);
 	if (status != 0)
 		op->status = RTE_CRYPTO_OP_STATUS_ERROR;
 }
@@ -1513,6 +1521,8 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
 {
 	uint8_t *dst;
 	int srclen, status;
+	EVP_MD_CTX *ctx_a;
+	HMAC_CTX *ctx_h;
 
 	srclen = op->sym->auth.data.length;
 
@@ -1528,14 +1538,20 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
 
 	switch (sess->auth.mode) {
 	case OPENSSL_AUTH_AS_AUTH:
+		ctx_a = EVP_MD_CTX_create();
+		EVP_MD_CTX_copy_ex(ctx_a, sess->auth.auth.ctx);
 		status = process_openssl_auth(mbuf_src, dst,
 				op->sym->auth.data.offset, NULL, NULL, srclen,
-				sess->auth.auth.ctx, sess->auth.auth.evp_algo);
+				ctx_a, sess->auth.auth.evp_algo);
+		EVP_MD_CTX_destroy(ctx_a);
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
+		ctx_h = HMAC_CTX_new();
+		HMAC_CTX_copy(ctx_h, sess->auth.hmac.ctx);
 		status = process_openssl_auth_hmac(mbuf_src, dst,
 				op->sym->auth.data.offset, srclen,
-				sess->auth.hmac.ctx);
+				ctx_h);
+		HMAC_CTX_free(ctx_h);
 		break;
 	default:
 		status = -1;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.537009914 +0000
+++ 0106-crypto-openssl-use-local-copy-for-session-contexts.patch	2019-12-19 14:32:26.245300601 +0000
@@ -1,8 +1,10 @@
-From 67ab783b5d70aed77d9ee3f3ae4688a70c42a49a Mon Sep 17 00:00:00 2001
+From 0a6364cb0886cfdc7c6dc349ce56d4c45f51fb34 Mon Sep 17 00:00:00 2001
 From: Thierry Herbelot <thierry.herbelot@6wind.com>
 Date: Wed, 11 Sep 2019 18:06:01 +0200
 Subject: [PATCH] crypto/openssl: use local copy for session contexts
 
+[ upstream commit 67ab783b5d70aed77d9ee3f3ae4688a70c42a49a ]
+
 Session contexts are used for temporary storage when processing a
 packet.
 If packets for the same session are to be processed simultaneously on
@@ -13,7 +15,6 @@
 performance.
 
 Fixes: d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
 ---
@@ -21,10 +22,10 @@
  1 file changed, 25 insertions(+), 9 deletions(-)
 
 diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
-index 6a75223fff..d68713e7e5 100644
+index 7b18bd42e7..24304d539c 100644
 --- a/drivers/crypto/openssl/rte_openssl_pmd.c
 +++ b/drivers/crypto/openssl/rte_openssl_pmd.c
-@@ -1290,6 +1290,7 @@ process_openssl_combined_op
+@@ -1296,6 +1296,7 @@ process_openssl_combined_op
  	int srclen, aadlen, status = -1;
  	uint32_t offset;
  	uint8_t taglen;
@@ -32,7 +33,7 @@
  
  	/*
  	 * Segmented destination buffer is not supported for
-@@ -1326,6 +1327,8 @@ process_openssl_combined_op
+@@ -1332,6 +1333,8 @@ process_openssl_combined_op
  	}
  
  	taglen = sess->auth.digest_length;
@@ -41,7 +42,7 @@
  
  	if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
  		if (sess->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC ||
-@@ -1333,12 +1336,12 @@ process_openssl_combined_op
+@@ -1339,12 +1342,12 @@ process_openssl_combined_op
  			status = process_openssl_auth_encryption_gcm(
  					mbuf_src, offset, srclen,
  					aad, aadlen, iv,
@@ -56,7 +57,7 @@
  
  	} else {
  		if (sess->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC ||
-@@ -1346,14 +1349,15 @@ process_openssl_combined_op
+@@ -1352,14 +1355,15 @@ process_openssl_combined_op
  			status = process_openssl_auth_decryption_gcm(
  					mbuf_src, offset, srclen,
  					aad, aadlen, iv,
@@ -74,7 +75,7 @@
  	if (status != 0) {
  		if (status == (-EFAULT) &&
  				sess->auth.operation ==
-@@ -1372,6 +1376,7 @@ process_openssl_cipher_op
+@@ -1378,6 +1382,7 @@ process_openssl_cipher_op
  {
  	uint8_t *dst, *iv;
  	int srclen, status;
@@ -82,7 +83,7 @@
  
  	/*
  	 * Segmented destination buffer is not supported for
-@@ -1388,22 +1393,25 @@ process_openssl_cipher_op
+@@ -1394,22 +1399,25 @@ process_openssl_cipher_op
  
  	iv = rte_crypto_op_ctod_offset(op, uint8_t *,
  			sess->iv.offset);
@@ -111,7 +112,7 @@
  	if (status != 0)
  		op->status = RTE_CRYPTO_OP_STATUS_ERROR;
  }
-@@ -1507,6 +1515,8 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
+@@ -1513,6 +1521,8 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
  {
  	uint8_t *dst;
  	int srclen, status;
@@ -120,7 +121,7 @@
  
  	srclen = op->sym->auth.data.length;
  
-@@ -1514,14 +1524,20 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
+@@ -1528,14 +1538,20 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
  
  	switch (sess->auth.mode) {
  	case OPENSSL_AUTH_AS_AUTH:

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

* [dpdk-stable] patch 'net/fm10k: fix mbuf free in vector Rx' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (104 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/openssl: use local copy for session contexts' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/igb: fix PHY status if PHY reset is not blocked' " luca.boccassi
                   ` (31 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Xiao Wang; +Cc: Anna Lukin, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 6963f948b9281856e1b5f07377307090aa48d392 Mon Sep 17 00:00:00 2001
From: Xiao Wang <xiao.w.wang@intel.com>
Date: Fri, 25 Oct 2019 20:33:22 -0400
Subject: [PATCH] net/fm10k: fix mbuf free in vector Rx

[ upstream commit 84fff3425b896a465a29b92a81aab563c07847cd ]

There's a corner case that all the Rx queue mbufs are allocated but none
of them is used, this patch fixes mbuf free for this case.

Fixes: b6719f8a04bb ("fm10k: release mbuf for vector Rx")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Signed-off-by: Anna Lukin <annal@silicom.co.il>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/fm10k/fm10k_rxtx_vec.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/fm10k/fm10k_rxtx_vec.c b/drivers/net/fm10k/fm10k_rxtx_vec.c
index 1a66dc3dbf..9e86c28b07 100644
--- a/drivers/net/fm10k/fm10k_rxtx_vec.c
+++ b/drivers/net/fm10k/fm10k_rxtx_vec.c
@@ -388,8 +388,15 @@ fm10k_rx_queue_release_mbufs_vec(struct fm10k_rx_queue *rxq)
 		return;
 
 	/* free all mbufs that are valid in the ring */
-	for (i = rxq->next_dd; i != rxq->rxrearm_start; i = (i + 1) & mask)
-		rte_pktmbuf_free_seg(rxq->sw_ring[i]);
+	if (rxq->rxrearm_nb == 0) {
+		for (i = 0; i < rxq->nb_desc; i++)
+			if (rxq->sw_ring[i] != NULL)
+				rte_pktmbuf_free_seg(rxq->sw_ring[i]);
+	} else {
+		for (i = rxq->next_dd; i != rxq->rxrearm_start;
+				i = (i + 1) & mask)
+			rte_pktmbuf_free_seg(rxq->sw_ring[i]);
+	}
 	rxq->rxrearm_nb = rxq->nb_desc;
 
 	/* set all entries to NULL */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.573730158 +0000
+++ 0107-net-fm10k-fix-mbuf-free-in-vector-Rx.patch	2019-12-19 14:32:26.245300601 +0000
@@ -1,13 +1,14 @@
-From 84fff3425b896a465a29b92a81aab563c07847cd Mon Sep 17 00:00:00 2001
+From 6963f948b9281856e1b5f07377307090aa48d392 Mon Sep 17 00:00:00 2001
 From: Xiao Wang <xiao.w.wang@intel.com>
 Date: Fri, 25 Oct 2019 20:33:22 -0400
 Subject: [PATCH] net/fm10k: fix mbuf free in vector Rx
 
+[ upstream commit 84fff3425b896a465a29b92a81aab563c07847cd ]
+
 There's a corner case that all the Rx queue mbufs are allocated but none
 of them is used, this patch fixes mbuf free for this case.
 
 Fixes: b6719f8a04bb ("fm10k: release mbuf for vector Rx")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
 Signed-off-by: Anna Lukin <annal@silicom.co.il>
@@ -17,10 +18,10 @@
  1 file changed, 9 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/fm10k/fm10k_rxtx_vec.c b/drivers/net/fm10k/fm10k_rxtx_vec.c
-index 45542bef30..d76dfd16fd 100644
+index 1a66dc3dbf..9e86c28b07 100644
 --- a/drivers/net/fm10k/fm10k_rxtx_vec.c
 +++ b/drivers/net/fm10k/fm10k_rxtx_vec.c
-@@ -359,8 +359,15 @@ fm10k_rx_queue_release_mbufs_vec(struct fm10k_rx_queue *rxq)
+@@ -388,8 +388,15 @@ fm10k_rx_queue_release_mbufs_vec(struct fm10k_rx_queue *rxq)
  		return;
  
  	/* free all mbufs that are valid in the ring */

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

* [dpdk-stable] patch 'net/igb: fix PHY status if PHY reset is not blocked' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (105 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/fm10k: fix mbuf free in vector Rx' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/bonding: fix port ID check' " luca.boccassi
                   ` (30 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Shweta Choudaha; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3a35b9f9696eb4448019fe8c25c76148df0e974a Mon Sep 17 00:00:00 2001
From: Shweta Choudaha <shweta.choudaha@att.com>
Date: Thu, 16 May 2019 23:03:31 +0100
Subject: [PATCH] net/igb: fix PHY status if PHY reset is not blocked

[ upstream commit 260dd6952600b5b44d0a1ce70a582116e6bd74fa ]

When PHY reset is blocked as is the case when BMC is connected via NC-SI
do not set GO_LINKD bit in PHY power management register in dev_stop as
this will disconnect the PHY. Also, in dev_close clear the GO_LINKD
bit only if PHY reset is not blocked

Fixes: 3af34dec0b41 ("igb: force phy power up/down")

Signed-off-by: Shweta Choudaha <shweta.choudaha@att.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/e1000/igb_ethdev.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 4378f08209..cef6fded96 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -1557,8 +1557,9 @@ eth_igb_stop(struct rte_eth_dev *dev)
 	igb_pf_reset_hw(hw);
 	E1000_WRITE_REG(hw, E1000_WUC, 0);
 
-	/* Set bit for Go Link disconnect */
-	if (hw->mac.type >= e1000_82580) {
+	/* Set bit for Go Link disconnect if PHY reset is not blocked */
+	if (hw->mac.type >= e1000_82580 &&
+	    (e1000_check_reset_block(hw) != E1000_BLK_PHY_RESET)) {
 		uint32_t phpm_reg;
 
 		phpm_reg = E1000_READ_REG(hw, E1000_82580_PHY_POWER_MGMT);
@@ -1632,8 +1633,9 @@ eth_igb_close(struct rte_eth_dev *dev)
 	igb_release_manageability(hw);
 	igb_hw_control_release(hw);
 
-	/* Clear bit for Go Link disconnect */
-	if (hw->mac.type >= e1000_82580) {
+	/* Clear bit for Go Link disconnect if PHY reset is not blocked */
+	if (hw->mac.type >= e1000_82580 &&
+	    (e1000_check_reset_block(hw) != E1000_BLK_PHY_RESET)) {
 		uint32_t phpm_reg;
 
 		phpm_reg = E1000_READ_REG(hw, E1000_82580_PHY_POWER_MGMT);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.611022045 +0000
+++ 0108-net-igb-fix-PHY-status-if-PHY-reset-is-not-blocked.patch	2019-12-19 14:32:26.253300760 +0000
@@ -1,15 +1,16 @@
-From 260dd6952600b5b44d0a1ce70a582116e6bd74fa Mon Sep 17 00:00:00 2001
+From 3a35b9f9696eb4448019fe8c25c76148df0e974a Mon Sep 17 00:00:00 2001
 From: Shweta Choudaha <shweta.choudaha@att.com>
 Date: Thu, 16 May 2019 23:03:31 +0100
 Subject: [PATCH] net/igb: fix PHY status if PHY reset is not blocked
 
+[ upstream commit 260dd6952600b5b44d0a1ce70a582116e6bd74fa ]
+
 When PHY reset is blocked as is the case when BMC is connected via NC-SI
 do not set GO_LINKD bit in PHY power management register in dev_stop as
 this will disconnect the PHY. Also, in dev_close clear the GO_LINKD
 bit only if PHY reset is not blocked
 
 Fixes: 3af34dec0b41 ("igb: force phy power up/down")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shweta Choudaha <shweta.choudaha@att.com>
 Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 6 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
-index ce7c9e6646..53e83d5ec2 100644
+index 4378f08209..cef6fded96 100644
 --- a/drivers/net/e1000/igb_ethdev.c
 +++ b/drivers/net/e1000/igb_ethdev.c
-@@ -1468,8 +1468,9 @@ eth_igb_stop(struct rte_eth_dev *dev)
+@@ -1557,8 +1557,9 @@ eth_igb_stop(struct rte_eth_dev *dev)
  	igb_pf_reset_hw(hw);
  	E1000_WRITE_REG(hw, E1000_WUC, 0);
  
@@ -33,7 +34,7 @@
  		uint32_t phpm_reg;
  
  		phpm_reg = E1000_READ_REG(hw, E1000_82580_PHY_POWER_MGMT);
-@@ -1544,8 +1545,9 @@ eth_igb_close(struct rte_eth_dev *dev)
+@@ -1632,8 +1633,9 @@ eth_igb_close(struct rte_eth_dev *dev)
  	igb_release_manageability(hw);
  	igb_hw_control_release(hw);
  

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

* [dpdk-stable] patch 'net/bonding: fix port ID check' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (106 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/igb: fix PHY status if PHY reset is not blocked' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting MTU' " luca.boccassi
                   ` (29 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Junyu Jiang; +Cc: Chas Williams, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 281bcf2c7ea315d0d6ecf06d555f4b6c0c860766 Mon Sep 17 00:00:00 2001
From: Junyu Jiang <junyux.jiang@intel.com>
Date: Tue, 29 Oct 2019 02:23:41 +0000
Subject: [PATCH] net/bonding: fix port ID check

[ upstream commit 588ae95e79834495f78192fc6bb3ae14c152439f ]

Port validation should be prior to getting device data
to avoid segment fault. This patch fixed the segment fault
caused by invalid port using.

Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
Acked-by: Chas Williams <chas3@att.com>
---
 drivers/net/bonding/rte_eth_bond_8023ad.c | 36 +++++++++++++++--------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index faaaddec69..4b98730bd7 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -1321,11 +1321,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
 	struct bond_dev_private *internals;
 	struct mode8023ad_private *mode4;
 
-	bond_dev = &rte_eth_devices[port_id];
-	internals = bond_dev->data->dev_private;
-
 	if (valid_bonded_port_id(port_id) != 0)
 		return -EINVAL;
+
+	bond_dev = &rte_eth_devices[port_id];
+	internals = bond_dev->data->dev_private;
+
 	if (internals->mode != 4)
 		return -EINVAL;
 
@@ -1342,11 +1343,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
 	struct bond_dev_private *internals;
 	struct mode8023ad_private *mode4;
 
-	bond_dev = &rte_eth_devices[port_id];
-	internals = bond_dev->data->dev_private;
-
 	if (valid_bonded_port_id(port_id) != 0)
 		return -EINVAL;
+
+	bond_dev = &rte_eth_devices[port_id];
+	internals = bond_dev->data->dev_private;
+
 	if (internals->mode != 4)
 		return -EINVAL;
 	mode4 = &internals->mode4;
@@ -1599,9 +1601,14 @@ int
 rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port)
 {
 	int retval = 0;
-	struct rte_eth_dev *dev = &rte_eth_devices[port];
-	struct bond_dev_private *internals = (struct bond_dev_private *)
-		dev->data->dev_private;
+	struct rte_eth_dev *dev;
+	struct bond_dev_private *internals;
+
+	if (valid_bonded_port_id(port) != 0)
+		return -EINVAL;
+
+	dev = &rte_eth_devices[port];
+	internals = dev->data->dev_private;
 
 	if (check_for_bonded_ethdev(dev) != 0)
 		return -1;
@@ -1623,9 +1630,14 @@ int
 rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port)
 {
 	int retval = 0;
-	struct rte_eth_dev *dev = &rte_eth_devices[port];
-	struct bond_dev_private *internals = (struct bond_dev_private *)
-		dev->data->dev_private;
+	struct rte_eth_dev *dev;
+	struct bond_dev_private *internals;
+
+	if (valid_bonded_port_id(port) != 0)
+		return -EINVAL;
+
+	dev = &rte_eth_devices[port];
+	internals = dev->data->dev_private;
 
 	if (check_for_bonded_ethdev(dev) != 0)
 		return -1;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.651954122 +0000
+++ 0109-net-bonding-fix-port-ID-check.patch	2019-12-19 14:32:26.257300840 +0000
@@ -1,15 +1,16 @@
-From 588ae95e79834495f78192fc6bb3ae14c152439f Mon Sep 17 00:00:00 2001
+From 281bcf2c7ea315d0d6ecf06d555f4b6c0c860766 Mon Sep 17 00:00:00 2001
 From: Junyu Jiang <junyux.jiang@intel.com>
 Date: Tue, 29 Oct 2019 02:23:41 +0000
 Subject: [PATCH] net/bonding: fix port ID check
 
+[ upstream commit 588ae95e79834495f78192fc6bb3ae14c152439f ]
+
 Port validation should be prior to getting device data
 to avoid segment fault. This patch fixed the segment fault
 caused by invalid port using.
 
 Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
 Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")
-Cc: stable@dpdk.org
 
 Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
 Acked-by: Chas Williams <chas3@att.com>
@@ -18,10 +19,10 @@
  1 file changed, 24 insertions(+), 12 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
-index badcd109ae..05b3004c4c 100644
+index faaaddec69..4b98730bd7 100644
 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
 +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
-@@ -1387,11 +1387,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
+@@ -1321,11 +1321,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
  	struct bond_dev_private *internals;
  	struct mode8023ad_private *mode4;
  
@@ -37,7 +38,7 @@
  	if (internals->mode != 4)
  		return -EINVAL;
  
-@@ -1408,11 +1409,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
+@@ -1342,11 +1343,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
  	struct bond_dev_private *internals;
  	struct mode8023ad_private *mode4;
  
@@ -53,7 +54,7 @@
  	if (internals->mode != 4)
  		return -EINVAL;
  	mode4 = &internals->mode4;
-@@ -1665,9 +1667,14 @@ int
+@@ -1599,9 +1601,14 @@ int
  rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port)
  {
  	int retval = 0;
@@ -71,7 +72,7 @@
  
  	if (check_for_bonded_ethdev(dev) != 0)
  		return -1;
-@@ -1689,9 +1696,14 @@ int
+@@ -1623,9 +1630,14 @@ int
  rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port)
  {
  	int retval = 0;

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

* [dpdk-stable] patch 'net/qede: fix setting MTU' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (107 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/bonding: fix port ID check' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting VLAN strip mode' " luca.boccassi
                   ` (28 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 5ddd68d7fbd2b6956f9d14b7652b69a7649faa07 Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Sat, 19 Oct 2019 22:20:50 -0700
Subject: [PATCH] net/qede: fix setting MTU

[ upstream commit 29bb154ff047d7fd7b0d4f08ce3ca25f1abfd1fe ]

New MTU value is not propagated to vport in HW when MTU update request
is sent while ports are stopped.

This patch fixes the logic error for above mentioned condition.

Fixes: d121a6b5f781 ("net/qede: fix VF MTU update")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
Reviewed-by: Rasesh Mody <rmody@marvell.com>
---
 drivers/net/qede/qede_ethdev.c | 8 +++++---
 drivers/net/qede/qede_ethdev.h | 1 +
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 43403e6a8d..d5851a6513 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1178,9 +1178,11 @@ static int qede_dev_start(struct rte_eth_dev *eth_dev)
 	PMD_INIT_FUNC_TRACE(edev);
 
 	/* Update MTU only if it has changed */
-	if (eth_dev->data->mtu != qdev->mtu) {
-		if (qede_update_mtu(eth_dev, qdev->mtu))
+	if (qdev->new_mtu && qdev->new_mtu != qdev->mtu) {
+		if (qede_update_mtu(eth_dev, qdev->new_mtu))
 			goto err;
+		qdev->mtu = qdev->new_mtu;
+		qdev->new_mtu = 0;
 	}
 
 	/* Configure TPA parameters */
@@ -2408,7 +2410,7 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 		restart = true;
 	}
 	rte_delay_ms(1000);
-	qdev->mtu = mtu;
+	qdev->new_mtu = mtu;
 
 	/* Fix up RX buf size for all queues of the port */
 	for_each_rss(i) {
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index cc1a409f63..39d582296d 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -185,6 +185,7 @@ struct qede_dev {
 	struct ecore_sb_info *sb_array;
 	struct qede_fastpath *fp_array;
 	uint16_t mtu;
+	uint16_t new_mtu;
 	bool enable_tx_switching;
 	bool rss_enable;
 	struct rte_eth_rss_conf rss_conf;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.694790877 +0000
+++ 0110-net-qede-fix-setting-MTU.patch	2019-12-19 14:32:26.261300919 +0000
@@ -1,15 +1,16 @@
-From 29bb154ff047d7fd7b0d4f08ce3ca25f1abfd1fe Mon Sep 17 00:00:00 2001
+From 5ddd68d7fbd2b6956f9d14b7652b69a7649faa07 Mon Sep 17 00:00:00 2001
 From: Shahed Shaikh <shshaikh@marvell.com>
 Date: Sat, 19 Oct 2019 22:20:50 -0700
 Subject: [PATCH] net/qede: fix setting MTU
 
+[ upstream commit 29bb154ff047d7fd7b0d4f08ce3ca25f1abfd1fe ]
+
 New MTU value is not propagated to vport in HW when MTU update request
 is sent while ports are stopped.
 
 This patch fixes the logic error for above mentioned condition.
 
 Fixes: d121a6b5f781 ("net/qede: fix VF MTU update")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
 Reviewed-by: Rasesh Mody <rmody@marvell.com>
@@ -19,10 +20,10 @@
  2 files changed, 6 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
-index 53fdfde9a8..42e2b50831 100644
+index 43403e6a8d..d5851a6513 100644
 --- a/drivers/net/qede/qede_ethdev.c
 +++ b/drivers/net/qede/qede_ethdev.c
-@@ -1038,9 +1038,11 @@ static int qede_dev_start(struct rte_eth_dev *eth_dev)
+@@ -1178,9 +1178,11 @@ static int qede_dev_start(struct rte_eth_dev *eth_dev)
  	PMD_INIT_FUNC_TRACE(edev);
  
  	/* Update MTU only if it has changed */
@@ -36,7 +37,7 @@
  	}
  
  	/* Configure TPA parameters */
-@@ -2248,7 +2250,7 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+@@ -2408,7 +2410,7 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
  		restart = true;
  	}
  	rte_delay_ms(1000);
@@ -44,14 +45,14 @@
 +	qdev->new_mtu = mtu;
  
  	/* Fix up RX buf size for all queues of the port */
- 	for (i = 0; i < qdev->num_rx_queues; i++) {
+ 	for_each_rss(i) {
 diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
-index 21115a077e..b988a73f23 100644
+index cc1a409f63..39d582296d 100644
 --- a/drivers/net/qede/qede_ethdev.h
 +++ b/drivers/net/qede/qede_ethdev.h
-@@ -225,6 +225,7 @@ struct qede_dev {
+@@ -185,6 +185,7 @@ struct qede_dev {
+ 	struct ecore_sb_info *sb_array;
  	struct qede_fastpath *fp_array;
- 	struct qede_fastpath_cmt *fp_array_cmt;
  	uint16_t mtu;
 +	uint16_t new_mtu;
  	bool enable_tx_switching;

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

* [dpdk-stable] patch 'net/qede: fix setting VLAN strip mode' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (108 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting MTU' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: support packet type with NEON' " luca.boccassi
                   ` (27 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 0f3696826407e2b890327155aee0447eab1e547f Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shshaikh@marvell.com>
Date: Sat, 19 Oct 2019 22:20:51 -0700
Subject: [PATCH] net/qede: fix setting VLAN strip mode

[ upstream commit 30b170b4a56f313f1668d4f583d9572ce48823c7 ]

Commit 9a6d30ae6d46 ("net/qede: refactoring vport handling code")
deleted the code as part of refactoring which sets vlan strip mode.
Revert it back and fix vlan strip feature.

Fixes: 9a6d30ae6d46 ("net/qede: refactoring vport handling code")

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
Reviewed-by: Rasesh Mody <rmody@marvell.com>
---
 drivers/net/qede/qede_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index d5851a6513..1fa64e1808 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -970,6 +970,8 @@ static int qede_vlan_stripping(struct rte_eth_dev *eth_dev, bool flg)
 		}
 	}
 
+	qdev->vlan_strip_flg = flg;
+
 	DP_INFO(edev, "VLAN stripping %s\n", flg ? "enabled" : "disabled");
 	return 0;
 }
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.734138816 +0000
+++ 0111-net-qede-fix-setting-VLAN-strip-mode.patch	2019-12-19 14:32:26.265300998 +0000
@@ -1,14 +1,15 @@
-From 30b170b4a56f313f1668d4f583d9572ce48823c7 Mon Sep 17 00:00:00 2001
+From 0f3696826407e2b890327155aee0447eab1e547f Mon Sep 17 00:00:00 2001
 From: Shahed Shaikh <shshaikh@marvell.com>
 Date: Sat, 19 Oct 2019 22:20:51 -0700
 Subject: [PATCH] net/qede: fix setting VLAN strip mode
 
+[ upstream commit 30b170b4a56f313f1668d4f583d9572ce48823c7 ]
+
 Commit 9a6d30ae6d46 ("net/qede: refactoring vport handling code")
 deleted the code as part of refactoring which sets vlan strip mode.
 Revert it back and fix vlan strip feature.
 
 Fixes: 9a6d30ae6d46 ("net/qede: refactoring vport handling code")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
 Reviewed-by: Rasesh Mody <rmody@marvell.com>
@@ -17,10 +18,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
-index 42e2b50831..575982fd08 100644
+index d5851a6513..1fa64e1808 100644
 --- a/drivers/net/qede/qede_ethdev.c
 +++ b/drivers/net/qede/qede_ethdev.c
-@@ -833,6 +833,8 @@ static int qede_vlan_stripping(struct rte_eth_dev *eth_dev, bool flg)
+@@ -970,6 +970,8 @@ static int qede_vlan_stripping(struct rte_eth_dev *eth_dev, bool flg)
  		}
  	}
  

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

* [dpdk-stable] patch 'net/ixgbe: support packet type with NEON' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (109 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting VLAN strip mode' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: fix link status' " luca.boccassi
                   ` (26 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Ruifeng Wang; +Cc: Gavin Hu, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 3a9454f74848a4ca6f36f36b16272b7d3a50c4f1 Mon Sep 17 00:00:00 2001
From: Ruifeng Wang <ruifeng.wang@arm.com>
Date: Thu, 24 Oct 2019 10:58:02 +0800
Subject: [PATCH] net/ixgbe: support packet type with NEON

[ upstream commit 41fdc03e72c55ac7f28f0d52f3c1935a19015180 ]

Ptype parse is missing in aarch64 vector PMD. It makes packet type info
provided by NIC get lost, thus requires extra CPU cycles to do this.
Add the parse process to utilize NIC hardware capability.

In test with l3fwd (removed port conf DEV_RX_OFFLOAD_CHECKSUM),
observed over 3% performance gain.

Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM")

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c        |  2 +-
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 64 +++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 6f8cfd9b00..ca7109e6f0 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3822,7 +3822,7 @@ ixgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)
 	    dev->rx_pkt_burst == ixgbe_recv_pkts_bulk_alloc)
 		return ptypes;
 
-#if defined(RTE_ARCH_X86)
+#if defined(RTE_ARCH_X86) || defined(RTE_MACHINE_CPUFLAG_NEON)
 	if (dev->rx_pkt_burst == ixgbe_recv_pkts_vec ||
 	    dev->rx_pkt_burst == ixgbe_recv_scattered_pkts_vec)
 		return ptypes;
diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index 0b38d97fa0..fd01d97e6f 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -174,6 +174,68 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 #define IXGBE_VPMD_DESC_DD_MASK		0x01010101
 #define IXGBE_VPMD_DESC_EOP_MASK	0x02020202
 
+static inline uint32_t
+get_packet_type(uint32_t pkt_info,
+		uint32_t etqf_check,
+		uint32_t tunnel_check)
+{
+	if (etqf_check)
+		return RTE_PTYPE_UNKNOWN;
+
+	if (tunnel_check) {
+		pkt_info &= IXGBE_PACKET_TYPE_MASK_TUNNEL;
+		return ptype_table_tn[pkt_info];
+	}
+
+	pkt_info &= IXGBE_PACKET_TYPE_MASK_82599;
+	return ptype_table[pkt_info];
+}
+
+static inline void
+desc_to_ptype_v(uint64x2_t descs[4], uint16_t pkt_type_mask,
+		struct rte_mbuf **rx_pkts)
+{
+	uint32x4_t etqf_check, tunnel_check;
+	uint32x4_t etqf_mask = vdupq_n_u32(0x8000);
+	uint32x4_t tunnel_mask = vdupq_n_u32(0x10000);
+	uint32x4_t ptype_mask = vdupq_n_u32((uint32_t)pkt_type_mask);
+	uint32x4_t ptype0 = vzipq_u32(vreinterpretq_u32_u64(descs[0]),
+				vreinterpretq_u32_u64(descs[2])).val[0];
+	uint32x4_t ptype1 = vzipq_u32(vreinterpretq_u32_u64(descs[1]),
+				vreinterpretq_u32_u64(descs[3])).val[0];
+
+	/* interleave low 32 bits,
+	 * now we have 4 ptypes in a NEON register
+	 */
+	ptype0 = vzipq_u32(ptype0, ptype1).val[0];
+
+	/* mask etqf bits */
+	etqf_check = vandq_u32(ptype0, etqf_mask);
+	/* mask tunnel bits */
+	tunnel_check = vandq_u32(ptype0, tunnel_mask);
+
+	/* shift right by IXGBE_PACKET_TYPE_SHIFT, and apply ptype mask */
+	ptype0 = vandq_u32(vshrq_n_u32(ptype0, IXGBE_PACKET_TYPE_SHIFT),
+			ptype_mask);
+
+	rx_pkts[0]->packet_type =
+		get_packet_type(vgetq_lane_u32(ptype0, 0),
+				vgetq_lane_u32(etqf_check, 0),
+				vgetq_lane_u32(tunnel_check, 0));
+	rx_pkts[1]->packet_type =
+		get_packet_type(vgetq_lane_u32(ptype0, 1),
+				vgetq_lane_u32(etqf_check, 1),
+				vgetq_lane_u32(tunnel_check, 1));
+	rx_pkts[2]->packet_type =
+		get_packet_type(vgetq_lane_u32(ptype0, 2),
+				vgetq_lane_u32(etqf_check, 2),
+				vgetq_lane_u32(tunnel_check, 2));
+	rx_pkts[3]->packet_type =
+		get_packet_type(vgetq_lane_u32(ptype0, 3),
+				vgetq_lane_u32(etqf_check, 3),
+				vgetq_lane_u32(tunnel_check, 3));
+}
+
 static inline uint16_t
 _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		   uint16_t nb_pkts, uint8_t *split_packet)
@@ -325,6 +387,8 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		vst1q_u8((uint8_t *)&rx_pkts[pos]->rx_descriptor_fields1,
 			 pkt_mb1);
 
+		desc_to_ptype_v(descs, rxq->pkt_type_mask, &rx_pkts[pos]);
+
 		stat &= IXGBE_VPMD_DESC_DD_MASK;
 
 		/* C.4 calc avaialbe number of desc */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.771234016 +0000
+++ 0112-net-ixgbe-support-packet-type-with-NEON.patch	2019-12-19 14:32:26.277301236 +0000
@@ -1,8 +1,10 @@
-From 41fdc03e72c55ac7f28f0d52f3c1935a19015180 Mon Sep 17 00:00:00 2001
+From 3a9454f74848a4ca6f36f36b16272b7d3a50c4f1 Mon Sep 17 00:00:00 2001
 From: Ruifeng Wang <ruifeng.wang@arm.com>
 Date: Thu, 24 Oct 2019 10:58:02 +0800
 Subject: [PATCH] net/ixgbe: support packet type with NEON
 
+[ upstream commit 41fdc03e72c55ac7f28f0d52f3c1935a19015180 ]
+
 Ptype parse is missing in aarch64 vector PMD. It makes packet type info
 provided by NIC get lost, thus requires extra CPU cycles to do this.
 Add the parse process to utilize NIC hardware capability.
@@ -11,7 +13,6 @@
 observed over 3% performance gain.
 
 Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
 Reviewed-by: Gavin Hu <gavin.hu@arm.com>
@@ -22,10 +23,10 @@
  2 files changed, 65 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index dbce7a80e9..3c7624f3a1 100644
+index 6f8cfd9b00..ca7109e6f0 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -3908,7 +3908,7 @@ ixgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)
+@@ -3822,7 +3822,7 @@ ixgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)
  	    dev->rx_pkt_burst == ixgbe_recv_pkts_bulk_alloc)
  		return ptypes;
  
@@ -35,12 +36,12 @@
  	    dev->rx_pkt_burst == ixgbe_recv_scattered_pkts_vec)
  		return ptypes;
 diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
-index 26c0ef5aec..ee11fab96a 100644
+index 0b38d97fa0..fd01d97e6f 100644
 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
 +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
-@@ -146,6 +146,68 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
+@@ -174,6 +174,68 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
+ #define IXGBE_VPMD_DESC_DD_MASK		0x01010101
  #define IXGBE_VPMD_DESC_EOP_MASK	0x02020202
- #define IXGBE_UINT8_BIT			(CHAR_BIT * sizeof(uint8_t))
  
 +static inline uint32_t
 +get_packet_type(uint32_t pkt_info,
@@ -107,15 +108,15 @@
  static inline uint16_t
  _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		   uint16_t nb_pkts, uint8_t *split_packet)
-@@ -303,6 +365,8 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -325,6 +387,8 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		vst1q_u8((uint8_t *)&rx_pkts[pos]->rx_descriptor_fields1,
  			 pkt_mb1);
  
 +		desc_to_ptype_v(descs, rxq->pkt_type_mask, &rx_pkts[pos]);
 +
- 		/* C.5 calc available number of desc */
- 		if (unlikely(stat == 0)) {
- 			nb_pkts_recd += RTE_IXGBE_DESCS_PER_LOOP;
+ 		stat &= IXGBE_VPMD_DESC_DD_MASK;
+ 
+ 		/* C.4 calc avaialbe number of desc */
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/ixgbe: fix link status' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (110 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: support packet type with NEON' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'vhost: fix virtqueue not accessible' " luca.boccassi
                   ` (25 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Xiao Zhang; +Cc: Wei Zhao, Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From fe7eecb8ea669a195751b3112f06cb5c9d278ae8 Mon Sep 17 00:00:00 2001
From: Xiao Zhang <xiao.zhang@intel.com>
Date: Tue, 29 Oct 2019 13:33:23 +0800
Subject: [PATCH] net/ixgbe: fix link status

[ upstream commit 1ca05831b9be946001ebabba2b3fdb0456684d9a ]

The link status for 82599eb got from link status register was not
correct, check the enable/disable flag of tx laser when getting the link
status, set the link status down if tx laser disabled since the tx laser
flag could be set correctly when up/down the link status.

Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF")

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

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index ca7109e6f0..8325d66f2f 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2852,6 +2852,7 @@ ixgbe_dev_set_link_up(struct rte_eth_dev *dev)
 	} else {
 		/* Turn on the laser */
 		ixgbe_enable_tx_laser(hw);
+		ixgbe_dev_link_update(dev, 0);
 	}
 
 	return 0;
@@ -2882,6 +2883,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev)
 	} else {
 		/* Turn off the laser */
 		ixgbe_disable_tx_laser(hw);
+		ixgbe_dev_link_update(dev, 0);
 	}
 
 	return 0;
@@ -4012,6 +4014,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
 	int link_up;
 	int diag;
 	int wait = 1;
+	u32 esdp_reg;
 
 	link.link_status = ETH_LINK_DOWN;
 	link.link_speed = 0;
@@ -4047,6 +4050,10 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
 		return 0;
 	}
 
+	esdp_reg = IXGBE_READ_REG(hw, IXGBE_ESDP);
+	if ((esdp_reg & IXGBE_ESDP_SDP3))
+		link_up = 0;
+
 	if (link_up == 0) {
 		rte_ixgbe_dev_atomic_write_link_status(dev, &link);
 		if (ixgbe_get_media_type(hw) == ixgbe_media_type_fiber) {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.814963251 +0000
+++ 0113-net-ixgbe-fix-link-status.patch	2019-12-19 14:32:26.285301395 +0000
@@ -1,15 +1,16 @@
-From 1ca05831b9be946001ebabba2b3fdb0456684d9a Mon Sep 17 00:00:00 2001
+From fe7eecb8ea669a195751b3112f06cb5c9d278ae8 Mon Sep 17 00:00:00 2001
 From: Xiao Zhang <xiao.zhang@intel.com>
 Date: Tue, 29 Oct 2019 13:33:23 +0800
 Subject: [PATCH] net/ixgbe: fix link status
 
+[ upstream commit 1ca05831b9be946001ebabba2b3fdb0456684d9a ]
+
 The link status for 82599eb got from link status register was not
 correct, check the enable/disable flag of tx laser when getting the link
 status, set the link status down if tx laser disabled since the tx laser
 flag could be set correctly when up/down the link status.
 
 Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
 Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
@@ -19,10 +20,10 @@
  1 file changed, 7 insertions(+)
 
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
-index 9c386f5c99..30c0379d41 100644
+index ca7109e6f0..8325d66f2f 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
-@@ -2912,6 +2912,7 @@ ixgbe_dev_set_link_up(struct rte_eth_dev *dev)
+@@ -2852,6 +2852,7 @@ ixgbe_dev_set_link_up(struct rte_eth_dev *dev)
  	} else {
  		/* Turn on the laser */
  		ixgbe_enable_tx_laser(hw);
@@ -30,7 +31,7 @@
  	}
  
  	return 0;
-@@ -2942,6 +2943,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev)
+@@ -2882,6 +2883,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev)
  	} else {
  		/* Turn off the laser */
  		ixgbe_disable_tx_laser(hw);
@@ -38,16 +39,16 @@
  	}
  
  	return 0;
-@@ -4116,6 +4118,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
+@@ -4012,6 +4014,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
  	int link_up;
  	int diag;
  	int wait = 1;
 +	u32 esdp_reg;
  
- 	memset(&link, 0, sizeof(link));
  	link.link_status = ETH_LINK_DOWN;
-@@ -4143,6 +4146,10 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
- 		return rte_eth_linkstatus_set(dev, &link);
+ 	link.link_speed = 0;
+@@ -4047,6 +4050,10 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
+ 		return 0;
  	}
  
 +	esdp_reg = IXGBE_READ_REG(hw, IXGBE_ESDP);
@@ -55,8 +56,8 @@
 +		link_up = 0;
 +
  	if (link_up == 0) {
+ 		rte_ixgbe_dev_atomic_write_link_status(dev, &link);
  		if (ixgbe_get_media_type(hw) == ixgbe_media_type_fiber) {
- 			intr->flags |= IXGBE_FLAG_NEED_LINK_CONFIG;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'vhost: fix virtqueue not accessible' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (111 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: fix link status' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/virtio-user: fix setting filters' " luca.boccassi
                   ` (24 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Marvin Liu; +Cc: Adrian Moreno, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From f1c2db80a906572df5dc40cd7d5eccfa94226103 Mon Sep 17 00:00:00 2001
From: Marvin Liu <yong.liu@intel.com>
Date: Mon, 4 Nov 2019 18:13:22 +0800
Subject: [PATCH] vhost: fix virtqueue not accessible

[ upstream commit bc42ca1787233617e5ce8a848e268784884a8d07 ]

Log feature is disabled in vhost user, so that log address was invalid
when checking. Check whether log address is valid can work around it.
Log address should also be translated in packed ring virtqueue.

Fixes: fbda9f145927 ("vhost: translate incoming log address to GPA")

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Adrian Moreno <amorenoz@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index f039ce8706..7bb2868011 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -502,6 +502,17 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
 	struct vhost_vring_addr *addr = &vq->ring_addrs;
 	uint64_t len;
 
+	if (addr->flags & (1 << VHOST_VRING_F_LOG)) {
+		vq->log_guest_addr =
+			translate_log_addr(dev, vq, addr->log_guest_addr);
+		if (vq->log_guest_addr == 0) {
+			RTE_LOG(DEBUG, VHOST_CONFIG,
+				"(%d) failed to map log_guest_addr.\n",
+				dev->vid);
+			return dev;
+		}
+	}
+
 	/* The addresses are converted from QEMU virtual to Vhost virtual. */
 	if (vq->desc && vq->avail && vq->used)
 		return dev;
@@ -553,14 +564,6 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
 		vq->last_avail_idx = vq->used->idx;
 	}
 
-	vq->log_guest_addr =
-		translate_log_addr(dev, vq, addr->log_guest_addr);
-	if (vq->log_guest_addr == 0) {
-		RTE_LOG(DEBUG, VHOST_CONFIG,
-			"(%d) failed to map log_guest_addr .\n",
-			dev->vid);
-		return dev;
-	}
 	vq->access_ok = 1;
 
 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.861378103 +0000
+++ 0114-vhost-fix-virtqueue-not-accessible.patch	2019-12-19 14:32:26.289301474 +0000
@@ -1,29 +1,30 @@
-From bc42ca1787233617e5ce8a848e268784884a8d07 Mon Sep 17 00:00:00 2001
+From f1c2db80a906572df5dc40cd7d5eccfa94226103 Mon Sep 17 00:00:00 2001
 From: Marvin Liu <yong.liu@intel.com>
 Date: Mon, 4 Nov 2019 18:13:22 +0800
 Subject: [PATCH] vhost: fix virtqueue not accessible
 
+[ upstream commit bc42ca1787233617e5ce8a848e268784884a8d07 ]
+
 Log feature is disabled in vhost user, so that log address was invalid
 when checking. Check whether log address is valid can work around it.
 Log address should also be translated in packed ring virtqueue.
 
 Fixes: fbda9f145927 ("vhost: translate incoming log address to GPA")
-Cc: stable@dpdk.org
 
 Signed-off-by: Marvin Liu <yong.liu@intel.com>
 Reviewed-by: Adrian Moreno <amorenoz@redhat.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- lib/librte_vhost/vhost_user.c | 20 +++++++++++---------
- 1 file changed, 11 insertions(+), 9 deletions(-)
+ lib/librte_vhost/vhost_user.c | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index 3f649c802c..cc660e03a8 100644
+index f039ce8706..7bb2868011 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -653,11 +653,21 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
+@@ -502,6 +502,17 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
  	struct vhost_vring_addr *addr = &vq->ring_addrs;
- 	uint64_t len, expected_len;
+ 	uint64_t len;
  
 +	if (addr->flags & (1 << VHOST_VRING_F_LOG)) {
 +		vq->log_guest_addr =
@@ -36,15 +37,10 @@
 +		}
 +	}
 +
- 	if (vq_is_packed(dev)) {
- 		len = sizeof(struct vring_packed_desc) * vq->size;
- 		vq->desc_packed = (struct vring_packed_desc *)(uintptr_t)
- 			ring_addr_to_vva(dev, vq, addr->desc_user_addr, &len);
--		vq->log_guest_addr = 0;
- 		if (vq->desc_packed == NULL ||
- 				len != sizeof(struct vring_packed_desc) *
- 				vq->size) {
-@@ -753,14 +763,6 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
+ 	/* The addresses are converted from QEMU virtual to Vhost virtual. */
+ 	if (vq->desc && vq->avail && vq->used)
+ 		return dev;
+@@ -553,14 +564,6 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)
  		vq->last_avail_idx = vq->used->idx;
  	}
  
@@ -58,7 +54,7 @@
 -	}
  	vq->access_ok = 1;
  
- 	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
+ 	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'net/virtio-user: fix setting filters' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (112 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'vhost: fix virtqueue not accessible' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/sfc: fix adapter lock usage on rule creation' " luca.boccassi
                   ` (23 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Marvin Liu; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e3ecf90edcff2b29658dc2dc37347b6e0bba3abf Mon Sep 17 00:00:00 2001
From: Marvin Liu <yong.liu@intel.com>
Date: Wed, 6 Nov 2019 17:02:50 +0800
Subject: [PATCH] net/virtio-user: fix setting filters

[ upstream commit a76552d48f17a990662592ff5e13a6e83b62025c ]

As doc mentioned, Rx/Mac/vlan filters are all supported by best effort.
These control commands should return success.

Fixes: f9b9d1a55775 ("net/virtio-user: add multiple queues in device emulation")

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 23510a9906..95433f7c43 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -484,6 +484,10 @@ virtio_user_handle_ctrl_msg(struct virtio_user_dev *dev, struct vring *vring,
 
 		queues = *(uint16_t *)(uintptr_t)vring->desc[idx_data].addr;
 		status = virtio_user_handle_mq(dev, queues);
+	} else if (hdr->class == VIRTIO_NET_CTRL_RX  ||
+		   hdr->class == VIRTIO_NET_CTRL_MAC ||
+		   hdr->class == VIRTIO_NET_CTRL_VLAN) {
+		status = 0;
 	}
 
 	/* Update status */
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.903299430 +0000
+++ 0115-net-virtio-user-fix-setting-filters.patch	2019-12-19 14:32:26.289301474 +0000
@@ -1,41 +1,31 @@
-From a76552d48f17a990662592ff5e13a6e83b62025c Mon Sep 17 00:00:00 2001
+From e3ecf90edcff2b29658dc2dc37347b6e0bba3abf Mon Sep 17 00:00:00 2001
 From: Marvin Liu <yong.liu@intel.com>
 Date: Wed, 6 Nov 2019 17:02:50 +0800
 Subject: [PATCH] net/virtio-user: fix setting filters
 
+[ upstream commit a76552d48f17a990662592ff5e13a6e83b62025c ]
+
 As doc mentioned, Rx/Mac/vlan filters are all supported by best effort.
 These control commands should return success.
 
 Fixes: f9b9d1a55775 ("net/virtio-user: add multiple queues in device emulation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Marvin Liu <yong.liu@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- drivers/net/virtio/virtio_user/virtio_user_dev.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
+ drivers/net/virtio/virtio_user/virtio_user_dev.c | 4 ++++
+ 1 file changed, 4 insertions(+)
 
 diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
-index 1c575d0cdd..a4400e7720 100644
+index 23510a9906..95433f7c43 100644
 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
 +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
-@@ -613,6 +613,10 @@ virtio_user_handle_ctrl_msg(struct virtio_user_dev *dev, struct vring *vring,
+@@ -484,6 +484,10 @@ virtio_user_handle_ctrl_msg(struct virtio_user_dev *dev, struct vring *vring,
  
  		queues = *(uint16_t *)(uintptr_t)vring->desc[idx_data].addr;
  		status = virtio_user_handle_mq(dev, queues);
 +	} else if (hdr->class == VIRTIO_NET_CTRL_RX  ||
 +		   hdr->class == VIRTIO_NET_CTRL_MAC ||
-+		   hdr->class == VIRTIO_NET_CTRL_VLAN) {
-+		status = 0;
- 	}
- 
- 	/* Update status */
-@@ -664,6 +668,10 @@ virtio_user_handle_ctrl_msg_packed(struct virtio_user_dev *dev,
- 		queues = *(uint16_t *)(uintptr_t)
- 				vring->desc[idx_data].addr;
- 		status = virtio_user_handle_mq(dev, queues);
-+	} else if (hdr->class == VIRTIO_NET_CTRL_RX  ||
-+		   hdr->class == VIRTIO_NET_CTRL_MAC ||
 +		   hdr->class == VIRTIO_NET_CTRL_VLAN) {
 +		status = 0;
  	}

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

* [dpdk-stable] patch 'net/sfc: fix adapter lock usage on rule creation' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (113 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/virtio-user: fix setting filters' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'app/testpmd: block xstats for hidden ports' " luca.boccassi
                   ` (22 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 54bbd54fd2eacadb328e1286015ecf8706400eaf Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Sun, 3 Nov 2019 13:33:09 +0300
Subject: [PATCH] net/sfc: fix adapter lock usage on rule creation

[ upstream commit 653b285ff11380c44c96a92bedf08fe1614a2fdc ]

The point is that adapter lock has to be held on
list accesses, as well as when talking to the HW.

Fixes: a9825ccf5bb8 ("net/sfc: support flow API filters")

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

diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
index 90ef5bf204..9d46abeb6f 100644
--- a/drivers/net/sfc/sfc_flow.c
+++ b/drivers/net/sfc/sfc_flow.c
@@ -1185,10 +1185,10 @@ sfc_flow_create(struct rte_eth_dev *dev,
 	if (rc != 0)
 		goto fail_bad_value;
 
+	sfc_adapter_lock(sa);
+
 	TAILQ_INSERT_TAIL(&sa->filter.flow_list, flow, entries);
 
-	sfc_adapter_lock(sa);
-
 	if (sa->state == SFC_ADAPTER_STARTED) {
 		rc = sfc_flow_filter_insert(sa, flow);
 		if (rc != 0) {
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.943652508 +0000
+++ 0116-net-sfc-fix-adapter-lock-usage-on-rule-creation.patch	2019-12-19 14:32:26.293301553 +0000
@@ -1,13 +1,14 @@
-From 653b285ff11380c44c96a92bedf08fe1614a2fdc Mon Sep 17 00:00:00 2001
+From 54bbd54fd2eacadb328e1286015ecf8706400eaf Mon Sep 17 00:00:00 2001
 From: Ivan Malov <ivan.malov@oktetlabs.ru>
 Date: Sun, 3 Nov 2019 13:33:09 +0300
 Subject: [PATCH] net/sfc: fix adapter lock usage on rule creation
 
+[ upstream commit 653b285ff11380c44c96a92bedf08fe1614a2fdc ]
+
 The point is that adapter lock has to be held on
 list accesses, as well as when talking to the HW.
 
 Fixes: a9825ccf5bb8 ("net/sfc: support flow API filters")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -16,10 +17,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
-index e4a9ba0ff9..8d636f6923 100644
+index 90ef5bf204..9d46abeb6f 100644
 --- a/drivers/net/sfc/sfc_flow.c
 +++ b/drivers/net/sfc/sfc_flow.c
-@@ -2315,10 +2315,10 @@ sfc_flow_create(struct rte_eth_dev *dev,
+@@ -1185,10 +1185,10 @@ sfc_flow_create(struct rte_eth_dev *dev,
  	if (rc != 0)
  		goto fail_bad_value;
  

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

* [dpdk-stable] patch 'app/testpmd: block xstats for hidden ports' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (114 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'net/sfc: fix adapter lock usage on rule creation' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'bus/pci: align next mapping address on page boundary' " luca.boccassi
                   ` (21 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From e6ab914663fc2e134d44720424df2bbf4bfd60d8 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Fri, 1 Nov 2019 13:12:55 -0700
Subject: [PATCH] app/testpmd: block xstats for hidden ports

[ upstream commit bd67b6772492cdd9f7249bdff7163e9698bdcc16 ]

All the other testpmd commands block access to devices that
are owned. Looks like xstat got overlooked.

Fixes: bfd5051b43b5 ("app/testpmd: new command to get extended statistics")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/config.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 18126a0f4a..4e3531b8e5 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -242,6 +242,10 @@ nic_xstats_display(portid_t port_id)
 	int cnt_xstats, idx_xstat;
 	struct rte_eth_xstat_name *xstats_names;
 
+	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
+		print_valid_ports();
+		return;
+	}
 	printf("###### NIC extended statistics for port %-2d\n", port_id);
 	if (!rte_eth_dev_is_valid_port(port_id)) {
 		printf("Error: Invalid port number %i\n", port_id);
@@ -297,6 +301,10 @@ nic_xstats_display(portid_t port_id)
 void
 nic_xstats_clear(portid_t port_id)
 {
+	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
+		print_valid_ports();
+		return;
+	}
 	rte_eth_xstats_reset(port_id);
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.981102466 +0000
+++ 0117-app-testpmd-block-xstats-for-hidden-ports.patch	2019-12-19 14:32:26.297301633 +0000
@@ -1,13 +1,14 @@
-From bd67b6772492cdd9f7249bdff7163e9698bdcc16 Mon Sep 17 00:00:00 2001
+From e6ab914663fc2e134d44720424df2bbf4bfd60d8 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Fri, 1 Nov 2019 13:12:55 -0700
 Subject: [PATCH] app/testpmd: block xstats for hidden ports
 
+[ upstream commit bd67b6772492cdd9f7249bdff7163e9698bdcc16 ]
+
 All the other testpmd commands block access to devices that
 are owned. Looks like xstat got overlooked.
 
 Fixes: bfd5051b43b5 ("app/testpmd: new command to get extended statistics")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -16,10 +17,10 @@
  1 file changed, 8 insertions(+)
 
 diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
-index b6039749cb..2a51d96644 100644
+index 18126a0f4a..4e3531b8e5 100644
 --- a/app/test-pmd/config.c
 +++ b/app/test-pmd/config.c
-@@ -238,6 +238,10 @@ nic_xstats_display(portid_t port_id)
+@@ -242,6 +242,10 @@ nic_xstats_display(portid_t port_id)
  	int cnt_xstats, idx_xstat;
  	struct rte_eth_xstat_name *xstats_names;
  
@@ -30,17 +31,17 @@
  	printf("###### NIC extended statistics for port %-2d\n", port_id);
  	if (!rte_eth_dev_is_valid_port(port_id)) {
  		printf("Error: Invalid port number %i\n", port_id);
-@@ -295,6 +299,10 @@ nic_xstats_clear(portid_t port_id)
+@@ -297,6 +301,10 @@ nic_xstats_display(portid_t port_id)
+ void
+ nic_xstats_clear(portid_t port_id)
  {
- 	int ret;
- 
 +	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
 +		print_valid_ports();
 +		return;
 +	}
- 	ret = rte_eth_xstats_reset(port_id);
- 	if (ret != 0) {
- 		printf("%s: Error: failed to reset xstats (port %u): %s",
+ 	rte_eth_xstats_reset(port_id);
+ }
+ 
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'bus/pci: align next mapping address on page boundary' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (115 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'app/testpmd: block xstats for hidden ports' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'test: optimise fd closing in forks' " luca.boccassi
                   ` (20 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Wangyu (Eric)
  Cc: Xiaofeng Deng, Wei Hu, Min Hu, Anatoly Burakov, Gavin Hu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 950af583f277b5563e3d101ae982732090a7ad2b Mon Sep 17 00:00:00 2001
From: "Wangyu (Eric)" <seven.wangyu@huawei.com>
Date: Wed, 13 Nov 2019 07:17:30 +0000
Subject: [PATCH] bus/pci: align next mapping address on page boundary

[ upstream commit d25ab4b7f128610cb5310b424c1f608686173f13 ]

Currently, the next address picked by PCI mapping infrastructure
may be page-unaligned due to BAR length being smaller than page size.
This leads to a situation where the requested map address is invalid,
resulting in mmap() call returning an arbitrary address,
which will later interfere with device BAR mapping in secondary processes.

Fix it by always aligning the next requested address on page boundary.

Fixes: c752998b5e2e ("pci: introduce library and driver")

Signed-off-by: Xiaofeng Deng <dengxiaofeng@huawei.com>
Signed-off-by: Wangyu (Eric) <seven.wangyu@huawei.com>
Acked-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Acked-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Gavin Hu <gavin.hu@arm.com>
---
 drivers/bus/pci/linux/pci_uio.c  | 2 ++
 drivers/bus/pci/linux/pci_vfio.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c
index 39176ac73a..2b2ad77ec7 100644
--- a/drivers/bus/pci/linux/pci_uio.c
+++ b/drivers/bus/pci/linux/pci_uio.c
@@ -358,6 +358,8 @@ pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx,
 	pci_map_addr = RTE_PTR_ADD(mapaddr,
 			(size_t)dev->mem_resource[res_idx].len);
 
+	pci_map_addr = RTE_PTR_ALIGN(pci_map_addr, sysconf(_SC_PAGE_SIZE));
+
 	maps[map_idx].phaddr = dev->mem_resource[res_idx].phys_addr;
 	maps[map_idx].size = dev->mem_resource[res_idx].len;
 	maps[map_idx].addr = mapaddr;
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 98f2ec9b8e..8b485deace 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -532,6 +532,9 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)
 		bar_addr = pci_map_addr;
 		pci_map_addr = RTE_PTR_ADD(bar_addr, (size_t) reg.size);
 
+		pci_map_addr = RTE_PTR_ALIGN(pci_map_addr,
+					sysconf(_SC_PAGE_SIZE));
+
 		maps[i].addr = bar_addr;
 		maps[i].offset = reg.offset;
 		maps[i].size = reg.size;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:31.017070037 +0000
+++ 0118-bus-pci-align-next-mapping-address-on-page-boundary.patch	2019-12-19 14:32:26.297301633 +0000
@@ -1,8 +1,10 @@
-From d25ab4b7f128610cb5310b424c1f608686173f13 Mon Sep 17 00:00:00 2001
+From 950af583f277b5563e3d101ae982732090a7ad2b Mon Sep 17 00:00:00 2001
 From: "Wangyu (Eric)" <seven.wangyu@huawei.com>
 Date: Wed, 13 Nov 2019 07:17:30 +0000
 Subject: [PATCH] bus/pci: align next mapping address on page boundary
 
+[ upstream commit d25ab4b7f128610cb5310b424c1f608686173f13 ]
+
 Currently, the next address picked by PCI mapping infrastructure
 may be page-unaligned due to BAR length being smaller than page size.
 This leads to a situation where the requested map address is invalid,
@@ -12,7 +14,6 @@
 Fix it by always aligning the next requested address on page boundary.
 
 Fixes: c752998b5e2e ("pci: introduce library and driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiaofeng Deng <dengxiaofeng@huawei.com>
 Signed-off-by: Wangyu (Eric) <seven.wangyu@huawei.com>
@@ -26,10 +27,10 @@
  2 files changed, 5 insertions(+)
 
 diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c
-index 6dca05a986..097dc19225 100644
+index 39176ac73a..2b2ad77ec7 100644
 --- a/drivers/bus/pci/linux/pci_uio.c
 +++ b/drivers/bus/pci/linux/pci_uio.c
-@@ -351,6 +351,8 @@ pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx,
+@@ -358,6 +358,8 @@ pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx,
  	pci_map_addr = RTE_PTR_ADD(mapaddr,
  			(size_t)dev->mem_resource[res_idx].len);
  
@@ -39,19 +40,19 @@
  	maps[map_idx].size = dev->mem_resource[res_idx].len;
  	maps[map_idx].addr = mapaddr;
 diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
-index b8faa23f82..64cd84a689 100644
+index 98f2ec9b8e..8b485deace 100644
 --- a/drivers/bus/pci/linux/pci_vfio.c
 +++ b/drivers/bus/pci/linux/pci_vfio.c
-@@ -750,6 +750,9 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)
+@@ -532,6 +532,9 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)
  		bar_addr = pci_map_addr;
- 		pci_map_addr = RTE_PTR_ADD(bar_addr, (size_t) reg->size);
+ 		pci_map_addr = RTE_PTR_ADD(bar_addr, (size_t) reg.size);
  
 +		pci_map_addr = RTE_PTR_ALIGN(pci_map_addr,
 +					sysconf(_SC_PAGE_SIZE));
 +
  		maps[i].addr = bar_addr;
- 		maps[i].offset = reg->offset;
- 		maps[i].size = reg->size;
+ 		maps[i].offset = reg.offset;
+ 		maps[i].size = reg.size;
 -- 
 2.20.1
 

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

* [dpdk-stable] patch 'test: optimise fd closing in forks' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (116 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'bus/pci: align next mapping address on page boundary' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'doc/guides: clean repeated words' " luca.boccassi
                   ` (19 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: Krzysztof Kanas; +Cc: David Marchand, Kevin Traynor, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From b4b273762aacf76a06374c3672a5065a0e693c5b Mon Sep 17 00:00:00 2001
From: Krzysztof Kanas <kkanas@marvell.com>
Date: Tue, 12 Nov 2019 21:31:02 +0100
Subject: [PATCH] test: optimise fd closing in forks

[ upstream commit 18562261abadfbdf7e19006c381bcb1d6fd6c2fe ]

Caught while investigating timeouts on a ARM64 server.

Stracing a test process running the eal_flags_autotest, we can see that
the fork helper is checking all possible file descriptors from
getdtablesize() to 2, and close the existing ones.
We can do better by inspecting this forked process /proc/self/fd
directory.

Besides, checking file descriptors via /proc/self/fd only makes sense for
Linux. This code was a noop on FreeBSD.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Krzysztof Kanas <kkanas@marvell.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
---
 test/test/process.h | 51 +++++++++++++++++++++++++++++++++++++++------
 1 file changed, 45 insertions(+), 6 deletions(-)

diff --git a/test/test/process.h b/test/test/process.h
index 51ced12237..505d2f9e7a 100644
--- a/test/test/process.h
+++ b/test/test/process.h
@@ -34,6 +34,8 @@
 #ifndef _PROCESS_H_
 #define _PROCESS_H_
 
+#include <dirent.h>
+
 #ifdef RTE_EXEC_ENV_BSDAPP
 #define self "curproc"
 #define exe "file"
@@ -53,7 +55,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
 {
 	int num;
 	char *argv_cpy[numargs + 1];
-	int i, fd, status;
+	int i, status;
 	char path[32];
 
 	pid_t pid = fork();
@@ -66,13 +68,50 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
 		argv_cpy[i] = NULL;
 		num = numargs;
 
-		/* close all open file descriptors, check /proc/self/fd to only
-		 * call close on open fds. Exclude fds 0, 1 and 2*/
-		for (fd = getdtablesize(); fd > 2; fd-- ) {
-			snprintf(path, sizeof(path), "/proc/" exe "/fd/%d", fd);
-			if (access(path, F_OK) == 0)
+#ifdef RTE_EXEC_ENV_LINUX
+		{
+			const char *procdir = "/proc/" self "/fd/";
+			struct dirent *dirent;
+			char *endptr;
+			int fd, fdir;
+			DIR *dir;
+
+			/* close all open file descriptors, check /proc/self/fd
+			 * to only call close on open fds. Exclude fds 0, 1 and
+			 * 2
+			 */
+			dir = opendir(procdir);
+			if (dir == NULL) {
+				rte_panic("Error opening %s: %s\n", procdir,
+						strerror(errno));
+			}
+
+			fdir = dirfd(dir);
+			if (fdir < 0) {
+				status = errno;
+				closedir(dir);
+				rte_panic("Error %d obtaining fd for dir %s: %s\n",
+						fdir, procdir,
+						strerror(status));
+			}
+
+			while ((dirent = readdir(dir)) != NULL) {
+				errno = 0;
+				fd = strtol(dirent->d_name, &endptr, 10);
+				if (errno != 0 || endptr[0] != '\0') {
+					printf("Error converting name fd %d %s:\n",
+						fd, dirent->d_name);
+					continue;
+				}
+
+				if (fd == fdir || fd <= 2)
+					continue;
+
 				close(fd);
+			}
+			closedir(dir);
 		}
+#endif
 		printf("Running binary with argv[]:");
 		for (i = 0; i < num; i++)
 			printf("'%s' ", argv_cpy[i]);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:31.059399500 +0000
+++ 0119-test-optimise-fd-closing-in-forks.patch	2019-12-19 14:32:26.297301633 +0000
@@ -1,8 +1,10 @@
-From 18562261abadfbdf7e19006c381bcb1d6fd6c2fe Mon Sep 17 00:00:00 2001
+From b4b273762aacf76a06374c3672a5065a0e693c5b Mon Sep 17 00:00:00 2001
 From: Krzysztof Kanas <kkanas@marvell.com>
 Date: Tue, 12 Nov 2019 21:31:02 +0100
 Subject: [PATCH] test: optimise fd closing in forks
 
+[ upstream commit 18562261abadfbdf7e19006c381bcb1d6fd6c2fe ]
+
 Caught while investigating timeouts on a ARM64 server.
 
 Stracing a test process running the eal_flags_autotest, we can see that
@@ -15,38 +17,38 @@
 Linux. This code was a noop on FreeBSD.
 
 Fixes: af75078fece3 ("first public release")
-Cc: stable@dpdk.org
 
 Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Tested-by: Krzysztof Kanas <kkanas@marvell.com>
 Acked-by: Kevin Traynor <ktraynor@redhat.com>
 ---
- app/test/process.h | 50 ++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 44 insertions(+), 6 deletions(-)
+ test/test/process.h | 51 +++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 45 insertions(+), 6 deletions(-)
 
-diff --git a/app/test/process.h b/app/test/process.h
-index 128ce41219..191d2796a9 100644
---- a/app/test/process.h
-+++ b/app/test/process.h
-@@ -11,6 +11,7 @@
- #include <stdlib.h> /* NULL */
- #include <string.h> /* strerror */
- #include <unistd.h> /* readlink */
-+#include <dirent.h>
- #include <sys/wait.h>
+diff --git a/test/test/process.h b/test/test/process.h
+index 51ced12237..505d2f9e7a 100644
+--- a/test/test/process.h
++++ b/test/test/process.h
+@@ -34,6 +34,8 @@
+ #ifndef _PROCESS_H_
+ #define _PROCESS_H_
  
- #include <rte_string_fns.h> /* strlcpy */
-@@ -40,7 +41,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
++#include <dirent.h>
++
+ #ifdef RTE_EXEC_ENV_BSDAPP
+ #define self "curproc"
+ #define exe "file"
+@@ -53,7 +55,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
  {
  	int num;
  	char *argv_cpy[numargs + 1];
 -	int i, fd, status;
 +	int i, status;
  	char path[32];
- #ifdef RTE_LIBRTE_PDUMP
- 	pthread_t thread;
-@@ -56,13 +57,50 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
+ 
+ 	pid_t pid = fork();
+@@ -66,13 +68,50 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
  		argv_cpy[i] = NULL;
  		num = numargs;
  

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

* [dpdk-stable] patch 'doc/guides: clean repeated words' has been queued to LTS release 17.11.10
  2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' has been queued to LTS release 17.11.10 luca.boccassi
                   ` (117 preceding siblings ...)
  2019-12-19 14:34 ` [dpdk-stable] patch 'test: optimise fd closing in forks' " luca.boccassi
@ 2019-12-19 14:34 ` luca.boccassi
  2019-12-19 14:34 ` [dpdk-stable] patch 'lib: fix log typos' " luca.boccassi
                   ` (18 subsequent siblings)
  137 siblings, 0 replies; 145+ messages in thread
From: luca.boccassi @ 2019-12-19 14:34 UTC (permalink / raw)
  To: David Marchand; +Cc: Kevin Traynor, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

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

Thanks.

Luca Boccassi

---
From 8a47bd04c814e689229e5dad9db813c1861d62c9 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 12 Nov 2019 20:33:41 +0100
Subject: [PATCH] doc/guides: clean repeated words

[ upstream commit f43d3dbbd90c9e195d26d18ac7da9ca2854c3f1e ]

Shoot repeated words in all our guides.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
---
 doc/guides/contributing/coding_style.rst                  | 8 ++++----
 doc/guides/cryptodevs/zuc.rst                             | 2 +-
 doc/guides/linux_gsg/nic_perf_intel_platform.rst          | 2 +-
 doc/guides/nics/fm10k.rst                                 | 2 +-
 .../prog_guide/generic_segmentation_offload_lib.rst       | 2 +-
 doc/guides/prog_guide/packet_classif_access_ctrl.rst      | 4 ++--
 doc/guides/prog_guide/rte_security.rst                    | 4 ++--
 doc/guides/rel_notes/release_17_11.rst                    | 2 +-
 doc/guides/sample_app_ug/ethtool.rst                      | 2 +-
 doc/guides/sample_app_ug/performance_thread.rst           | 2 +-
 doc/guides/testpmd_app_ug/testpmd_funcs.rst               | 4 ++--
 11 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index d8e4a0f9c1..38acd5adfe 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -619,10 +619,10 @@ In the DPDK environment, use the logging interface provided:
 
  /* log in debug level */
  rte_log_set_global_level(RTE_LOG_DEBUG);
- RTE_LOG(DEBUG, my_logtype1, "this is is a debug level message\n");
- RTE_LOG(INFO, my_logtype1, "this is is a info level message\n");
- RTE_LOG(WARNING, my_logtype1, "this is is a warning level message\n");
- RTE_LOG(WARNING, my_logtype2, "this is is a debug level message (not displayed)\n");
+ RTE_LOG(DEBUG, my_logtype1, "this is a debug level message\n");
+ RTE_LOG(INFO, my_logtype1, "this is a info level message\n");
+ RTE_LOG(WARNING, my_logtype1, "this is a warning level message\n");
+ RTE_LOG(WARNING, my_logtype2, "this is a debug level message (not displayed)\n");
 
  /* log in info level */
  rte_log_set_global_level(RTE_LOG_INFO);
diff --git a/doc/guides/cryptodevs/zuc.rst b/doc/guides/cryptodevs/zuc.rst
index 7fcfc07740..bf334799b8 100644
--- a/doc/guides/cryptodevs/zuc.rst
+++ b/doc/guides/cryptodevs/zuc.rst
@@ -54,7 +54,7 @@ Limitations
 * ZUC (EIA3) supported only if hash offset field is byte-aligned.
 * ZUC (EEA3) supported only if cipher length, cipher offset fields are byte-aligned.
 * ZUC PMD cannot be built as a shared library, due to limitations in
-  in the underlying library.
+  the underlying library.
 
 
 Installation
diff --git a/doc/guides/linux_gsg/nic_perf_intel_platform.rst b/doc/guides/linux_gsg/nic_perf_intel_platform.rst
index 2ef6ed7cdf..dd0c6224fa 100644
--- a/doc/guides/linux_gsg/nic_perf_intel_platform.rst
+++ b/doc/guides/linux_gsg/nic_perf_intel_platform.rst
@@ -152,7 +152,7 @@ Configurations before running DPDK
       # Mount to the specific folder.
       mount -t hugetlbfs nodev /mnt/huge
 
-2. Check the CPU layout using using the DPDK ``cpu_layout`` utility:
+2. Check the CPU layout using the DPDK ``cpu_layout`` utility:
 
    .. code-block:: console
 
diff --git a/doc/guides/nics/fm10k.rst b/doc/guides/nics/fm10k.rst
index 470c5798b9..c23f411133 100644
--- a/doc/guides/nics/fm10k.rst
+++ b/doc/guides/nics/fm10k.rst
@@ -156,7 +156,7 @@ Switch manager
 
 The Intel FM10000 family of NICs integrate a hardware switch and multiple host
 interfaces. The FM10000 PMD driver only manages host interfaces. For the
-switch component another switch driver has to be loaded prior to to the
+switch component another switch driver has to be loaded prior to the
 FM10000 PMD driver. The switch driver can be acquired from Intel support.
 Only Testpoint is validated with DPDK, the latest version that has been
 validated with DPDK is 4.1.6.
diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
index ef1de53d94..008b9ddce6 100644
--- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
+++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
@@ -223,7 +223,7 @@ To segment an outgoing packet, an application must:
 2. Set the appropriate ol_flags in the mbuf.
 
    - The GSO library use the value of an mbuf's ``ol_flags`` attribute to
-     to determine how a packet should be segmented. It is the application's
+     determine how a packet should be segmented. It is the application's
      responsibility to ensure that these flags are set.
 
    - For example, in order to segment TCP/IPv4 packets, the application should
diff --git a/doc/guides/prog_guide/packet_classif_access_ctrl.rst b/doc/guides/prog_guide/packet_classif_access_ctrl.rst
index a6bee9ba2d..a5748e2cef 100644
--- a/doc/guides/prog_guide/packet_classif_access_ctrl.rst
+++ b/doc/guides/prog_guide/packet_classif_access_ctrl.rst
@@ -181,7 +181,7 @@ To define classification for the IPv6 2-tuple: <protocol, IPv6 source address> o
 
 .. code-block:: c
 
-    struct struct ipv6_hdr {
+    struct ipv6_hdr {
         uint32_t vtc_flow;     /* IP version, traffic class & flow label. */
         uint16_t payload_len;  /* IP packet length - includes sizeof(ip_header). */
         uint8_t proto;         /* Protocol, next header. */
@@ -194,7 +194,7 @@ The following array of field definitions can be used:
 
 .. code-block:: c
 
-    struct struct rte_acl_field_def ipv6_2tuple_defs[5] = {
+    struct rte_acl_field_def ipv6_2tuple_defs[5] = {
         {
             .type = RTE_ACL_FIELD_TYPE_BITMASK,
             .size = sizeof (uint8_t),
diff --git a/doc/guides/prog_guide/rte_security.rst b/doc/guides/prog_guide/rte_security.rst
index 71be036c66..4253ee999a 100644
--- a/doc/guides/prog_guide/rte_security.rst
+++ b/doc/guides/prog_guide/rte_security.rst
@@ -76,7 +76,7 @@ however all security protocol related headers are still attached to the
 packet. e.g. In case of IPSec, the IPSec tunnel headers (if any),
 ESP/AH headers will remain in the packet but the received packet
 contains the decrypted data where the encrypted data was when the packet
-arrived. The driver Rx path check the descriptors and and based on the
+arrived. The driver Rx path check the descriptors and based on the
 crypto status sets additional flags in the rte_mbuf.ol_flags field.
 
 .. note::
@@ -90,7 +90,7 @@ Egress Data path - The software prepares the egress packet by adding
 relevant security protocol headers. Only the data will not be
 encrypted by the software. The driver will accordingly configure the
 tx descriptors. The hardware device will encrypt the data before sending the
-the packet out.
+packet out.
 
 .. note::
 
diff --git a/doc/guides/rel_notes/release_17_11.rst b/doc/guides/rel_notes/release_17_11.rst
index bc1d88d7cb..4202dae2ae 100644
--- a/doc/guides/rel_notes/release_17_11.rst
+++ b/doc/guides/rel_notes/release_17_11.rst
@@ -459,7 +459,7 @@ API Changes
 * **Added mbuf flags PKT_RX_VLAN and PKT_RX_QINQ.**
 
   Two ``mbuf`` flags have been added to indicate that the VLAN
-  identifier has been saved in in the ``mbuf`` structure. For instance:
+  identifier has been saved in the ``mbuf`` structure. For instance:
 
   - If VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
   - If VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6dd11dc9a5..4cefc2f694 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -68,7 +68,7 @@ The application is console-driven using the cmdline DPDK interface:
         EthApp>
 
 From this interface the available commands and descriptions of what
-they do as as follows:
+they do as follows:
 
 * ``drvinfo``: Print driver info
 * ``eeprom``: Dump EEPROM to file
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index 57391caffc..b194c3b68b 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -308,7 +308,7 @@ functionality into different threads, and the pairs of RX and TX threads are
 interconnected via software rings.
 
 On initialization an L-thread scheduler is started on every EAL thread. On all
-but the master EAL thread only a a dummy L-thread is initially started.
+but the master EAL thread only a dummy L-thread is initially started.
 The L-thread started on the master EAL thread then spawns other L-threads on
 different L-thread schedulers according the the command line parameters.
 
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 0193f93662..e2d1715ec7 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -60,7 +60,7 @@ If you type a partial command and hit ``<TAB>`` you get a list of the available
 
 .. note::
 
-   Some examples in this document are too long to fit on one line are are shown wrapped at `"\\"` for display purposes::
+   Some examples in this document are too long to fit on one line are shown wrapped at `"\\"` for display purposes::
 
       testpmd> set flow_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \
                (pause_time) (send_xon) (port_id)
@@ -2182,7 +2182,7 @@ Traffic Management
 ------------------
 
 The following section shows functions for configuring traffic management on
-on the ethernet device through the use of generic TM API.
+the ethernet device through the use of generic TM API.
 
 show port traffic management capability
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:31.096681388 +0000
+++ 0120-doc-guides-clean-repeated-words.patch	2019-12-19 14:32:26.317302029 +0000
@@ -1,11 +1,11 @@
-From f43d3dbbd90c9e195d26d18ac7da9ca2854c3f1e Mon Sep 17 00:00:00 2001
+From 8a47bd04c814e689229e5dad9db813c1861d62c9 Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 12 Nov 2019 20:33:41 +0100
 Subject: [PATCH] doc/guides: clean repeated words
 
-Shoot repeated words in all our guides.
+[ upstream commit f43d3dbbd90c9e195d26d18ac7da9ca2854c3f1e ]
 
-Cc: stable@dpdk.org
+Shoot repeated words in all our guides.
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Acked-by: Kevin Traynor <ktraynor@redhat.com>
@@ -14,31 +14,20 @@
  doc/guides/cryptodevs/zuc.rst                             | 2 +-
  doc/guides/linux_gsg/nic_perf_intel_platform.rst          | 2 +-
  doc/guides/nics/fm10k.rst                                 | 2 +-
- doc/guides/prog_guide/bbdev.rst                           | 2 +-
- doc/guides/prog_guide/cryptodev_lib.rst                   | 4 ++--
- doc/guides/prog_guide/env_abstraction_layer.rst           | 2 +-
  .../prog_guide/generic_segmentation_offload_lib.rst       | 2 +-
- doc/guides/prog_guide/kernel_nic_interface.rst            | 2 +-
  doc/guides/prog_guide/packet_classif_access_ctrl.rst      | 4 ++--
- doc/guides/prog_guide/rte_flow.rst                        | 2 +-
  doc/guides/prog_guide/rte_security.rst                    | 4 ++--
  doc/guides/rel_notes/release_17_11.rst                    | 2 +-
- doc/guides/rel_notes/release_18_02.rst                    | 2 +-
- doc/guides/rel_notes/release_19_02.rst                    | 4 ++--
- doc/guides/rel_notes/release_19_11.rst                    | 2 +-
  doc/guides/sample_app_ug/ethtool.rst                      | 2 +-
- doc/guides/sample_app_ug/ipsec_secgw.rst                  | 2 +-
- doc/guides/sample_app_ug/ntb.rst                          | 2 +-
  doc/guides/sample_app_ug/performance_thread.rst           | 2 +-
  doc/guides/testpmd_app_ug/testpmd_funcs.rst               | 4 ++--
- doc/guides/tools/proc_info.rst                            | 2 +-
- 22 files changed, 30 insertions(+), 30 deletions(-)
+ 11 files changed, 17 insertions(+), 17 deletions(-)
 
 diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
-index e95a1a2be2..a6843de5ad 100644
+index d8e4a0f9c1..38acd5adfe 100644
 --- a/doc/guides/contributing/coding_style.rst
 +++ b/doc/guides/contributing/coding_style.rst
-@@ -631,10 +631,10 @@ In the DPDK environment, use the logging interface provided:
+@@ -619,10 +619,10 @@ In the DPDK environment, use the logging interface provided:
  
   /* log in debug level */
   rte_log_set_global_level(RTE_LOG_DEBUG);
@@ -54,10 +43,10 @@
   /* log in info level */
   rte_log_set_global_level(RTE_LOG_INFO);
 diff --git a/doc/guides/cryptodevs/zuc.rst b/doc/guides/cryptodevs/zuc.rst
-index 69a5218b1e..002e986da4 100644
+index 7fcfc07740..bf334799b8 100644
 --- a/doc/guides/cryptodevs/zuc.rst
 +++ b/doc/guides/cryptodevs/zuc.rst
-@@ -28,7 +28,7 @@ Limitations
+@@ -54,7 +54,7 @@ Limitations
  * ZUC (EIA3) supported only if hash offset field is byte-aligned.
  * ZUC (EEA3) supported only if cipher length, cipher offset fields are byte-aligned.
  * ZUC PMD cannot be built as a shared library, due to limitations in
@@ -67,10 +56,10 @@
  
  Installation
 diff --git a/doc/guides/linux_gsg/nic_perf_intel_platform.rst b/doc/guides/linux_gsg/nic_perf_intel_platform.rst
-index 0c25ec03d4..c554c2159c 100644
+index 2ef6ed7cdf..dd0c6224fa 100644
 --- a/doc/guides/linux_gsg/nic_perf_intel_platform.rst
 +++ b/doc/guides/linux_gsg/nic_perf_intel_platform.rst
-@@ -150,7 +150,7 @@ Configurations before running DPDK
+@@ -152,7 +152,7 @@ Configurations before running DPDK
        # Mount to the specific folder.
        mount -t hugetlbfs nodev /mnt/huge
  
@@ -80,10 +69,10 @@
     .. code-block:: console
  
 diff --git a/doc/guides/nics/fm10k.rst b/doc/guides/nics/fm10k.rst
-index 20a1cde535..4e178c2cc6 100644
+index 470c5798b9..c23f411133 100644
 --- a/doc/guides/nics/fm10k.rst
 +++ b/doc/guides/nics/fm10k.rst
-@@ -119,7 +119,7 @@ Switch manager
+@@ -156,7 +156,7 @@ Switch manager
  
  The Intel FM10000 family of NICs integrate a hardware switch and multiple host
  interfaces. The FM10000 PMD driver only manages host interfaces. For the
@@ -92,59 +81,11 @@
  FM10000 PMD driver. The switch driver can be acquired from Intel support.
  Only Testpoint is validated with DPDK, the latest version that has been
  validated with DPDK is 4.1.6.
-diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
-index d491849675..d39167af1f 100644
---- a/doc/guides/prog_guide/bbdev.rst
-+++ b/doc/guides/prog_guide/bbdev.rst
-@@ -1069,7 +1069,7 @@ The mbuf ``length`` is inclusive of CRC24A/B where present and is equal
- the code block size ``K``.
- 
- The first CB Virtual Circular Buffer (VCB) index is given by ``r`` but the
--the number of the remaining CB VCBs is calculated automatically by BBDEV
-+number of the remaining CB VCBs is calculated automatically by BBDEV
- and passed down to the driver.
- 
- The number of remaining CB VCBs should not be confused with ``c``, the
-diff --git a/doc/guides/prog_guide/cryptodev_lib.rst b/doc/guides/prog_guide/cryptodev_lib.rst
-index bf0ee79f8d..ac16437740 100644
---- a/doc/guides/prog_guide/cryptodev_lib.rst
-+++ b/doc/guides/prog_guide/cryptodev_lib.rst
-@@ -498,7 +498,7 @@ to specify the details of the Crypto operation. For chaining of symmetric
- operations such as cipher encrypt and authentication generate, the next pointer
- allows transform to be chained together. Crypto devices which support chaining
- must publish the chaining of symmetric Crypto operations feature flag. Allocation of the
--xform structure is in the the application domain. To allow future API extensions in a
-+xform structure is in the application domain. To allow future API extensions in a
- backwardly compatible manner, e.g. addition of a new parameter, the application should
- zero the full xform struct before populating it.
- 
-@@ -893,7 +893,7 @@ Asymmetric Crypto transforms (``rte_crypto_asym_xform``) are the mechanism used
- to specify the details of the asymmetric Crypto operation. Next pointer within
- xform allows transform to be chained together. Also it is important to note that
- the order in which the transforms are passed indicates the order of the chaining. Allocation
--of the xform structure is in the the application domain. To allow future API extensions in a
-+of the xform structure is in the application domain. To allow future API extensions in a
- backwardly compatible manner, e.g. addition of a new parameter, the application should
- zero the full xform struct before populating it.
- 
-diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
-index 6e59faeea9..cd8e3003e4 100644
---- a/doc/guides/prog_guide/env_abstraction_layer.rst
-+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
-@@ -249,7 +249,7 @@ manual memory management.
- 
- + Using heap API's for externally allocated memory
- 
--Using using a set of malloc heap API's is the recommended way to use externally
-+Using a set of malloc heap API's is the recommended way to use externally
- allocated memory in DPDK. In this way, support for externally allocated memory
- is implemented through overloading the socket ID - externally allocated heaps
- will have socket ID's that would be considered invalid under normal
 diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
-index 0cfc1198cd..73e768740c 100644
+index ef1de53d94..008b9ddce6 100644
 --- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
 +++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
-@@ -206,7 +206,7 @@ To segment an outgoing packet, an application must:
+@@ -223,7 +223,7 @@ To segment an outgoing packet, an application must:
  2. Set the appropriate ol_flags in the mbuf.
  
     - The GSO library use the value of an mbuf's ``ol_flags`` attribute to
@@ -153,33 +94,20 @@
       responsibility to ensure that these flags are set.
  
     - For example, in order to segment TCP/IPv4 packets, the application should
-diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst
-index 2fd58e1175..e12634ddc8 100644
---- a/doc/guides/prog_guide/kernel_nic_interface.rst
-+++ b/doc/guides/prog_guide/kernel_nic_interface.rst
-@@ -254,7 +254,7 @@ to create a separate thread or secondary process to periodically call
- 
- The KNI interfaces can be deleted by a DPDK application with
- ``rte_kni_release()``.  All KNI interfaces not explicitly deleted will be
--deleted when the the ``/dev/kni`` device is closed, either explicitly with
-+deleted when the ``/dev/kni`` device is closed, either explicitly with
- ``rte_kni_close()`` or when the DPDK application is closed.
- 
- DPDK mbuf Flow
 diff --git a/doc/guides/prog_guide/packet_classif_access_ctrl.rst b/doc/guides/prog_guide/packet_classif_access_ctrl.rst
-index c16b11af49..2945eacf55 100644
+index a6bee9ba2d..a5748e2cef 100644
 --- a/doc/guides/prog_guide/packet_classif_access_ctrl.rst
 +++ b/doc/guides/prog_guide/packet_classif_access_ctrl.rst
-@@ -154,7 +154,7 @@ To define classification for the IPv6 2-tuple: <protocol, IPv6 source address> o
+@@ -181,7 +181,7 @@ To define classification for the IPv6 2-tuple: <protocol, IPv6 source address> o
  
  .. code-block:: c
  
--    struct struct rte_ipv6_hdr {
-+    struct rte_ipv6_hdr {
+-    struct struct ipv6_hdr {
++    struct ipv6_hdr {
          uint32_t vtc_flow;     /* IP version, traffic class & flow label. */
          uint16_t payload_len;  /* IP packet length - includes sizeof(ip_header). */
          uint8_t proto;         /* Protocol, next header. */
-@@ -167,7 +167,7 @@ The following array of field definitions can be used:
+@@ -194,7 +194,7 @@ The following array of field definitions can be used:
  
  .. code-block:: c
  
@@ -188,25 +116,12 @@
          {
              .type = RTE_ACL_FIELD_TYPE_BITMASK,
              .size = sizeof (uint8_t),
-diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst
-index ac0020e44d..a254c81efa 100644
---- a/doc/guides/prog_guide/rte_flow.rst
-+++ b/doc/guides/prog_guide/rte_flow.rst
-@@ -1650,7 +1650,7 @@ Counters can be retrieved and reset through ``rte_flow_query()``, see
- The shared flag indicates whether the counter is unique to the flow rule the
- action is specified with, or whether it is a shared counter.
- 
--For a count action with the shared flag set, then then a global device
-+For a count action with the shared flag set, then a global device
- namespace is assumed for the counter id, so that any matched flow rules using
- a count action with the same counter id on the same port will contribute to
- that counter.
 diff --git a/doc/guides/prog_guide/rte_security.rst b/doc/guides/prog_guide/rte_security.rst
-index 7d0734a37e..f77fb89dc8 100644
+index 71be036c66..4253ee999a 100644
 --- a/doc/guides/prog_guide/rte_security.rst
 +++ b/doc/guides/prog_guide/rte_security.rst
-@@ -51,7 +51,7 @@ however all security protocol related headers are still attached to the
- packet. e.g. In case of IPsec, the IPsec tunnel headers (if any),
+@@ -76,7 +76,7 @@ however all security protocol related headers are still attached to the
+ packet. e.g. In case of IPSec, the IPSec tunnel headers (if any),
  ESP/AH headers will remain in the packet but the received packet
  contains the decrypted data where the encrypted data was when the packet
 -arrived. The driver Rx path check the descriptors and and based on the
@@ -214,7 +129,7 @@
  crypto status sets additional flags in the rte_mbuf.ol_flags field.
  
  .. note::
-@@ -65,7 +65,7 @@ Egress Data path - The software prepares the egress packet by adding
+@@ -90,7 +90,7 @@ Egress Data path - The software prepares the egress packet by adding
  relevant security protocol headers. Only the data will not be
  encrypted by the software. The driver will accordingly configure the
  tx descriptors. The hardware device will encrypt the data before sending the
@@ -224,10 +139,10 @@
  .. note::
  
 diff --git a/doc/guides/rel_notes/release_17_11.rst b/doc/guides/rel_notes/release_17_11.rst
-index 6448b6cb1e..1f3b45ef61 100644
+index bc1d88d7cb..4202dae2ae 100644
 --- a/doc/guides/rel_notes/release_17_11.rst
 +++ b/doc/guides/rel_notes/release_17_11.rst
-@@ -475,7 +475,7 @@ API Changes
+@@ -459,7 +459,7 @@ API Changes
  * **Added mbuf flags PKT_RX_VLAN and PKT_RX_QINQ.**
  
    Two ``mbuf`` flags have been added to indicate that the VLAN
@@ -236,55 +151,11 @@
  
    - If VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
    - If VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
-diff --git a/doc/guides/rel_notes/release_18_02.rst b/doc/guides/rel_notes/release_18_02.rst
-index 8e403118a5..3523ea7fdc 100644
---- a/doc/guides/rel_notes/release_18_02.rst
-+++ b/doc/guides/rel_notes/release_18_02.rst
-@@ -210,7 +210,7 @@ New Features
-   A set of northbound APIs have been defined which encompass a generic set of
-   operations by allowing applications to interact with device using opaque
-   structures/buffers. Also, southbound APIs provide a means of integrating devices
--  either as as part of a physical bus (PCI, FSLMC etc) or through ``vdev``.
-+  either as part of a physical bus (PCI, FSLMC etc) or through ``vdev``.
- 
-   See the :doc:`../prog_guide/rawdev` programmer's guide for more details.
- 
-diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
-index b353620b72..ace1534eff 100644
---- a/doc/guides/rel_notes/release_19_02.rst
-+++ b/doc/guides/rel_notes/release_19_02.rst
-@@ -265,11 +265,11 @@ ABI Changes
- * mbuf: The format of the sched field of ``rte_mbuf`` has been changed
-   to include the following fields: ``queue ID``, ``traffic class``, ``color``.
- 
--* cryptodev: as shown in the the 18.11 deprecation notice, the structure
-+* cryptodev: as shown in the 18.11 deprecation notice, the structure
-   ``rte_cryptodev_qp_conf`` has added two parameters for symmetric session
-   mempool and symmetric session private data mempool.
- 
--* cryptodev: as shown in the the 18.11 deprecation notice, the structure
-+* cryptodev: as shown in the 18.11 deprecation notice, the structure
-   ``rte_cryptodev_sym_session`` has been updated to contain more information
-   to ensure safely accessing the session and session private data.
- 
-diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
-index 682c1bdf38..c0045a91ff 100644
---- a/doc/guides/rel_notes/release_19_11.rst
-+++ b/doc/guides/rel_notes/release_19_11.rst
-@@ -97,7 +97,7 @@ New Features
- * **Added ethdev API to set supported packet types**
- 
-   * Added new API ``rte_eth_dev_set_ptypes`` that allows an application to
--    inform PMD about about reduced range of packet types to handle.
-+    inform PMD about reduced range of packet types to handle.
-   * This scheme will allow PMDs to avoid lookup to internal ptype table on Rx
-     and thereby improve Rx performance if application wishes do so.
- 
 diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
-index 47e09f6ed2..8f7fc6ca66 100644
+index 6dd11dc9a5..4cefc2f694 100644
 --- a/doc/guides/sample_app_ug/ethtool.rst
 +++ b/doc/guides/sample_app_ug/ethtool.rst
-@@ -40,7 +40,7 @@ The application is console-driven using the cmdline DPDK interface:
+@@ -68,7 +68,7 @@ The application is console-driven using the cmdline DPDK interface:
          EthApp>
  
  From this interface the available commands and descriptions of what
@@ -293,50 +164,24 @@
  
  * ``drvinfo``: Print driver info
  * ``eeprom``: Dump EEPROM to file
-diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
-index ae8cce2356..d6d8d44686 100644
---- a/doc/guides/sample_app_ug/ipsec_secgw.rst
-+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
-@@ -158,7 +158,7 @@ Where:
-     If packet is not reassembled within this time, received fragments
-     will be discarded. Fragment lifetime should be decreased when
-     there is a high fragmented traffic loss in high bandwidth networks.
--    Should be lower for for low number of reassembly buckets.
-+    Should be lower for low number of reassembly buckets.
-     Valid values: from 1 ns to 10 s. Default value: 10000000 (10 s).
- 
- *   ``--reassemble NUM``: max number of entries in reassemble fragment table.
-diff --git a/doc/guides/sample_app_ug/ntb.rst b/doc/guides/sample_app_ug/ntb.rst
-index df16af86c1..93fb752f25 100644
---- a/doc/guides/sample_app_ug/ntb.rst
-+++ b/doc/guides/sample_app_ug/ntb.rst
-@@ -82,7 +82,7 @@ The application is console-driven using the cmdline DPDK interface:
-         ntb>
- 
- From this interface the available commands and descriptions of what
--they do as as follows:
-+they do as follows:
- 
- * ``send [filepath]``: Send file to the peer host. Need to be in
-   file-trans forwarding mode first.
 diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
-index ac6ee8ac22..5fed46465f 100644
+index 57391caffc..b194c3b68b 100644
 --- a/doc/guides/sample_app_ug/performance_thread.rst
 +++ b/doc/guides/sample_app_ug/performance_thread.rst
-@@ -280,7 +280,7 @@ functionality into different threads, and the pairs of RX and TX threads are
+@@ -308,7 +308,7 @@ functionality into different threads, and the pairs of RX and TX threads are
  interconnected via software rings.
  
  On initialization an L-thread scheduler is started on every EAL thread. On all
 -but the master EAL thread only a a dummy L-thread is initially started.
 +but the master EAL thread only a dummy L-thread is initially started.
  The L-thread started on the master EAL thread then spawns other L-threads on
- different L-thread schedulers according the command line parameters.
+ different L-thread schedulers according the the command line parameters.
  
 diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-index 48473d8e2a..6779822e1e 100644
+index 0193f93662..e2d1715ec7 100644
 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-@@ -33,7 +33,7 @@ If you type a partial command and hit ``<TAB>`