patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Luca Boccassi <bluca@debian.org>
To: Wenzhuo Lu <wenzhuo.lu@intel.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>,
	Andrew Rybchenko <arybchenko@solarflare.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'ethdev: fix invalid configuration after failure' has been queued to LTS release 16.11.9
Date: Mon, 19 Nov 2018 12:25:30 +0000	[thread overview]
Message-ID: <20181119122538.14207-13-bluca@debian.org> (raw)
In-Reply-To: <20181119122538.14207-1-bluca@debian.org>

Hi,

FYI, your patch has been queued to LTS release 16.11.9

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

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Luca Boccassi

---
>From 729e04dd9956bcccd08acf7f97e76b3ec452100f Mon Sep 17 00:00:00 2001
From: Wenzhuo Lu <wenzhuo.lu@intel.com>
Date: Tue, 13 Nov 2018 11:12:36 +0000
Subject: [PATCH] ethdev: fix invalid configuration after failure

[ upstream commit aa28ec5d27b0ead28877081b30ccf0b74a16bbcd ]

The new configuration is stored during the rte_eth_dev_configure() API
but the API may fail. After failure stored configuration will be
invalid since it is not fully applied to the device.

We better roll the configuration back after failure.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_ether/rte_ethdev.c | 37 ++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 9b28e95ae..59722e04e 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -795,7 +795,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 {
 	struct rte_eth_dev *dev;
 	struct rte_eth_dev_info dev_info;
+	struct rte_eth_conf orig_conf;
 	int diag;
+	int ret;
 
 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
@@ -824,6 +826,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 		return -EBUSY;
 	}
 
+	/* Store original config, as rollback required on failure */
+	memcpy(&orig_conf, &dev->data->dev_conf, sizeof(dev->data->dev_conf));
+
 	/* Copy the dev_conf parameter into the dev structure */
 	memcpy(&dev->data->dev_conf, dev_conf, sizeof(dev->data->dev_conf));
 
@@ -836,19 +841,22 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 
 	if (nb_rx_q == 0 && nb_tx_q == 0) {
 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d both rx and tx queue cannot be 0\n", port_id);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto rollback;
 	}
 
 	if (nb_rx_q > dev_info.max_rx_queues) {
 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d\n",
 				port_id, nb_rx_q, dev_info.max_rx_queues);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto rollback;
 	}
 
 	if (nb_tx_q > dev_info.max_tx_queues) {
 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d\n",
 				port_id, nb_tx_q, dev_info.max_tx_queues);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto rollback;
 	}
 
 	/*
@@ -859,7 +867,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 		(!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
 			RTE_PMD_DEBUG_TRACE("driver %s does not support lsc\n",
 					dev->data->drv_name);
-			return -EINVAL;
+			ret = -EINVAL;
+			goto rollback;
 	}
 
 	/*
@@ -874,14 +883,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 				port_id,
 				(unsigned)dev_conf->rxmode.max_rx_pkt_len,
 				(unsigned)dev_info.max_rx_pktlen);
-			return -EINVAL;
+			ret = -EINVAL;
+			goto rollback;
 		} else if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN) {
 			RTE_PMD_DEBUG_TRACE("ethdev port_id=%d max_rx_pkt_len %u"
 				" < min valid value %u\n",
 				port_id,
 				(unsigned)dev_conf->rxmode.max_rx_pkt_len,
 				(unsigned)ETHER_MIN_LEN);
-			return -EINVAL;
+			ret = -EINVAL;
+			goto rollback;
 		}
 	} else {
 		if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN ||
@@ -898,7 +909,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 	if (diag != 0) {
 		RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_rx_queue_config = %d\n",
 				port_id, diag);
-		return diag;
+		ret = diag;
+		goto rollback;
 	}
 
 	diag = rte_eth_dev_tx_queue_config(dev, nb_tx_q);
@@ -906,7 +918,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 		RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_tx_queue_config = %d\n",
 				port_id, diag);
 		rte_eth_dev_rx_queue_config(dev, 0);
-		return diag;
+		ret = diag;
+		goto rollback;
 	}
 
 	diag = (*dev->dev_ops->dev_configure)(dev);
@@ -915,10 +928,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 				port_id, diag);
 		rte_eth_dev_rx_queue_config(dev, 0);
 		rte_eth_dev_tx_queue_config(dev, 0);
-		return diag;
+		ret = diag;
+		goto rollback;
 	}
 
 	return 0;
+
+rollback:
+	memcpy(&dev->data->dev_conf, &orig_conf, sizeof(dev->data->dev_conf));
+
+	return ret;
 }
 
 static void
-- 
2.19.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-19 12:15:18.376202148 +0000
+++ 0013-ethdev-fix-invalid-configuration-after-failure.patch	2018-11-19 12:15:18.099611432 +0000
@@ -1,8 +1,10 @@
-From aa28ec5d27b0ead28877081b30ccf0b74a16bbcd Mon Sep 17 00:00:00 2001
+From 729e04dd9956bcccd08acf7f97e76b3ec452100f Mon Sep 17 00:00:00 2001
 From: Wenzhuo Lu <wenzhuo.lu@intel.com>
 Date: Tue, 13 Nov 2018 11:12:36 +0000
 Subject: [PATCH] ethdev: fix invalid configuration after failure
 
+[ upstream commit aa28ec5d27b0ead28877081b30ccf0b74a16bbcd ]
+
 The new configuration is stored during the rte_eth_dev_configure() API
 but the API may fail. After failure stored configuration will be
 invalid since it is not fully applied to the device.
@@ -10,87 +12,86 @@
 We better roll the configuration back after failure.
 
 Fixes: af75078fece3 ("first public release")
-Cc: stable@dpdk.org
 
 Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
 ---
- lib/librte_ethdev/rte_ethdev.c | 49 +++++++++++++++++++++++++---------
- 1 file changed, 36 insertions(+), 13 deletions(-)
+ lib/librte_ether/rte_ethdev.c | 37 ++++++++++++++++++++++++++---------
+ 1 file changed, 28 insertions(+), 9 deletions(-)
 
-diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
-index 8eaa5fcc7..04dff1f5e 100644
---- a/lib/librte_ethdev/rte_ethdev.c
-+++ b/lib/librte_ethdev/rte_ethdev.c
-@@ -1092,8 +1092,10 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
+index 9b28e95ae..59722e04e 100644
+--- a/lib/librte_ether/rte_ethdev.c
++++ b/lib/librte_ether/rte_ethdev.c
+@@ -795,7 +795,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
  {
  	struct rte_eth_dev *dev;
  	struct rte_eth_dev_info dev_info;
 +	struct rte_eth_conf orig_conf;
- 	struct rte_eth_conf local_conf = *dev_conf;
  	int diag;
 +	int ret;
  
  	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
  
-@@ -1140,6 +1142,9 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+@@ -824,6 +826,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
  		return -EBUSY;
  	}
  
-+	 /* Store original config, as rollback required on failure */
++	/* Store original config, as rollback required on failure */
 +	memcpy(&orig_conf, &dev->data->dev_conf, sizeof(dev->data->dev_conf));
 +
  	/* Copy the dev_conf parameter into the dev structure */
- 	memcpy(&dev->data->dev_conf, &local_conf, sizeof(dev->data->dev_conf));
+ 	memcpy(&dev->data->dev_conf, dev_conf, sizeof(dev->data->dev_conf));
  
-@@ -1151,13 +1156,15 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 	if (nb_rx_q > dev_info.max_rx_queues) {
- 		RTE_ETHDEV_LOG(ERR, "Ethdev port_id=%u nb_rx_queues=%u > %u\n",
- 			port_id, nb_rx_q, dev_info.max_rx_queues);
+@@ -836,19 +841,22 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 
+ 	if (nb_rx_q == 0 && nb_tx_q == 0) {
+ 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d both rx and tx queue cannot be 0\n", port_id);
 -		return -EINVAL;
 +		ret = -EINVAL;
 +		goto rollback;
  	}
  
- 	if (nb_tx_q > dev_info.max_tx_queues) {
- 		RTE_ETHDEV_LOG(ERR, "Ethdev port_id=%u nb_tx_queues=%u > %u\n",
- 			port_id, nb_tx_q, dev_info.max_tx_queues);
+ 	if (nb_rx_q > dev_info.max_rx_queues) {
+ 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d\n",
+ 				port_id, nb_rx_q, dev_info.max_rx_queues);
 -		return -EINVAL;
 +		ret = -EINVAL;
 +		goto rollback;
  	}
  
- 	/* Check that the device supports requested interrupts */
-@@ -1165,13 +1172,15 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			(!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
- 		RTE_ETHDEV_LOG(ERR, "Driver %s does not support lsc\n",
- 			dev->device->driver->name);
+ 	if (nb_tx_q > dev_info.max_tx_queues) {
+ 		RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d\n",
+ 				port_id, nb_tx_q, dev_info.max_tx_queues);
 -		return -EINVAL;
 +		ret = -EINVAL;
 +		goto rollback;
  	}
- 	if ((dev_conf->intr_conf.rmv == 1) &&
- 			(!(dev->data->dev_flags & RTE_ETH_DEV_INTR_RMV))) {
- 		RTE_ETHDEV_LOG(ERR, "Driver %s does not support rmv\n",
- 			dev->device->driver->name);
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto rollback;
+ 
+ 	/*
+@@ -859,7 +867,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 		(!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
+ 			RTE_PMD_DEBUG_TRACE("driver %s does not support lsc\n",
+ 					dev->data->drv_name);
+-			return -EINVAL;
++			ret = -EINVAL;
++			goto rollback;
  	}
  
  	/*
-@@ -1184,13 +1193,15 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 				"Ethdev port_id=%u max_rx_pkt_len %u > max valid value %u\n",
- 				port_id, dev_conf->rxmode.max_rx_pkt_len,
- 				dev_info.max_rx_pktlen);
+@@ -874,14 +883,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 				port_id,
+ 				(unsigned)dev_conf->rxmode.max_rx_pkt_len,
+ 				(unsigned)dev_info.max_rx_pktlen);
 -			return -EINVAL;
 +			ret = -EINVAL;
 +			goto rollback;
  		} else if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN) {
- 			RTE_ETHDEV_LOG(ERR,
- 				"Ethdev port_id=%u max_rx_pkt_len %u < min valid value %u\n",
- 				port_id, dev_conf->rxmode.max_rx_pkt_len,
+ 			RTE_PMD_DEBUG_TRACE("ethdev port_id=%d max_rx_pkt_len %u"
+ 				" < min valid value %u\n",
+ 				port_id,
+ 				(unsigned)dev_conf->rxmode.max_rx_pkt_len,
  				(unsigned)ETHER_MIN_LEN);
 -			return -EINVAL;
 +			ret = -EINVAL;
@@ -98,49 +99,19 @@
  		}
  	} else {
  		if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN ||
-@@ -1209,7 +1220,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			port_id, local_conf.rxmode.offloads,
- 			dev_info.rx_offload_capa,
- 			__func__);
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto rollback;
- 	}
- 	if ((local_conf.txmode.offloads & dev_info.tx_offload_capa) !=
- 	     local_conf.txmode.offloads) {
-@@ -1219,7 +1231,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			port_id, local_conf.txmode.offloads,
- 			dev_info.tx_offload_capa,
- 			__func__);
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto rollback;
- 	}
- 
- 	/* Check that device supports requested rss hash functions. */
-@@ -1230,7 +1243,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			"Ethdev port_id=%u invalid rss_hf: 0x%"PRIx64", valid value: 0x%"PRIx64"\n",
- 			port_id, dev_conf->rx_adv_conf.rss_conf.rss_hf,
- 			dev_info.flow_type_rss_offloads);
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto rollback;
- 	}
- 
- 	/*
-@@ -1241,7 +1255,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 		RTE_ETHDEV_LOG(ERR,
- 			"Port%u rte_eth_dev_rx_queue_config = %d\n",
- 			port_id, diag);
+@@ -898,7 +909,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 	if (diag != 0) {
+ 		RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_rx_queue_config = %d\n",
+ 				port_id, diag);
 -		return diag;
 +		ret = diag;
 +		goto rollback;
  	}
  
  	diag = rte_eth_dev_tx_queue_config(dev, nb_tx_q);
-@@ -1250,7 +1265,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			"Port%u rte_eth_dev_tx_queue_config = %d\n",
- 			port_id, diag);
+@@ -906,7 +918,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 		RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_tx_queue_config = %d\n",
+ 				port_id, diag);
  		rte_eth_dev_rx_queue_config(dev, 0);
 -		return diag;
 +		ret = diag;
@@ -148,22 +119,12 @@
  	}
  
  	diag = (*dev->dev_ops->dev_configure)(dev);
-@@ -1259,7 +1275,8 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			port_id, diag);
+@@ -915,10 +928,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
+ 				port_id, diag);
  		rte_eth_dev_rx_queue_config(dev, 0);
  		rte_eth_dev_tx_queue_config(dev, 0);
--		return eth_err(port_id, diag);
-+		ret = eth_err(port_id, diag);
-+		goto rollback;
- 	}
- 
- 	/* Initialize Rx profiling if enabled at compilation time. */
-@@ -1269,10 +1286,16 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
- 			port_id, diag);
- 		rte_eth_dev_rx_queue_config(dev, 0);
- 		rte_eth_dev_tx_queue_config(dev, 0);
--		return eth_err(port_id, diag);
-+		ret = eth_err(port_id, diag);
+-		return diag;
++		ret = diag;
 +		goto rollback;
  	}
  
@@ -175,7 +136,7 @@
 +	return ret;
  }
  
- void
+ static void
 -- 
 2.19.1
 

  parent reply	other threads:[~2018-11-19 12:26 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-27  8:43 [dpdk-stable] patch 'net/bonding: support matching QinQ ethertype' " Luca Boccassi
2018-09-27  8:43 ` [dpdk-stable] patch 'net/nfp: fix live MAC changes not supported' " Luca Boccassi
2018-09-27  8:43 ` [dpdk-stable] patch 'doc: fix wrong usage of bind command' " Luca Boccassi
2018-09-27  8:43 ` [dpdk-stable] patch 'examples/vhost: remove unnecessary constant' " Luca Boccassi
2018-09-27  8:44 ` [dpdk-stable] patch 'vhost-user: drop connection on message handling failures' " Luca Boccassi
2018-09-27  8:44 ` [dpdk-stable] patch 'net/bonding: use evenly distributed default RSS RETA' " Luca Boccassi
2018-09-27  8:44 ` [dpdk-stable] patch 'net/bonding: do not ignore RSS key on device config' " Luca Boccassi
2018-09-27  8:44 ` [dpdk-stable] patch 'app/testpmd: optimize mbuf pool allocation' " Luca Boccassi
2018-10-03 16:21 ` [dpdk-stable] patch 'acl: forbid rule with priority zero' " Luca Boccassi
2018-10-03 16:52   ` [dpdk-stable] patch 'net/nfp: fix mbuf flags with checksum good' " Luca Boccassi
2018-10-03 16:52     ` [dpdk-stable] patch 'ethdev: fix doxygen comment to be with structure' " Luca Boccassi
2018-10-03 16:52     ` [dpdk-stable] patch 'net/virtio: add missing supported features' " Luca Boccassi
2018-10-03 16:52     ` [dpdk-stable] patch 'vhost: fix corner case for enqueue operation' " Luca Boccassi
2018-10-03 16:52     ` [dpdk-stable] patch 'net/bonding: stop and deactivate slaves on stop' " Luca Boccassi
2018-10-03 16:52     ` [dpdk-stable] patch 'test/crypto: fix number of queue pairs' " Luca Boccassi
2018-10-15 11:51   ` [dpdk-stable] patch 'net/i40e: fix send admin queue command before init' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/i40e/base: fix partition id calculation for X722' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/i40e/base: properly clean resources' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/i40e/base: gracefully clean the " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/i40e/base: correct global reset timeout calculation' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/ixgbe: wait longer for link after fiber MAC setup' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/enic: do not use non-standard integer types' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/enic: set Rx VLAN offload flag for non-stripped packets' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/nfp: fix RSS' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnx2x: fix logging to include device name' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnx2x: fix to disable further interrupts' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnx2x: fix call to link handling periodic function' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnx2x: fix to add PHY lock' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnxt: fix uninitialized pointer access in Tx' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnxt: set MAC filtering as outer for non tunnel frames' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnxt: set a VNIC as default only once' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnxt: remove excess log messages' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/bnxt: reduce polling interval for valid bit' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'app/testpmd: fix csum parse-tunnel command invocation' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'app/testpmd: fix displaying RSS hash functions' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'doc: add VFIO in ENA guide' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'app/testpmd: fix duplicate exit' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' " Luca Boccassi
2018-10-15 11:51     ` [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' " Luca Boccassi
2018-10-29 12:53     ` [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'vhost: fix payload size of reply' " Luca Boccassi
2018-10-29 13:12         ` Ilya Maximets
2018-10-29 16:32           ` Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'kvargs: fix processing a null list' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'test/hash: fix bucket size in perf test' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'hash: fix key store element alignment' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'kni: fix build on Linux 4.19' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'kni: fix kernel FIFO synchronization' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'test/kni: check module dependency' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'hash: remove unnecessary pause' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'kni: fix build on Linux < 3.14' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'net/i40e: keep promiscuous on if allmulticast is enabled' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'net/i40e: enable loopback function for X722 MAC' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'net/i40e: update Tx offload mask' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'net/ixgbe: " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'net/ena: fix passing RSS hash to mbuf' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'doc: fix typo in testpmd guide' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'ip_frag: fix overflow in key comparison' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'eal/linux: fix memory leak of logid' " Luca Boccassi
2018-10-29 12:53       ` [dpdk-stable] patch 'fix global variable issues' " Luca Boccassi
2018-11-08 18:00         ` [dpdk-stable] patch 'net/virtio: register/unregister intr handler on start/stop' " Luca Boccassi
2018-11-08 18:00           ` [dpdk-stable] patch 'eal/linux: handle UIO read failure in interrupt handler' " Luca Boccassi
2018-11-08 18:00           ` [dpdk-stable] patch 'mk: disable gcc AVX512F support' " Luca Boccassi
2018-11-09  6:52             ` Christian Ehrhardt
2018-11-09 10:48               ` Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'eal: fix build with gcc 9.0' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'net/vhost: fix parameters string' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'net/virtio-user: do not reset owner when driver resets' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'net: fix build with pedantic' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'net/igb: update Tx offload mask' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'ip_frag: check fragment length of incoming packet' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'ip_frag: use key length for key comparison' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'bus/pci: compare kernel driver instead of interrupt handler' " Luca Boccassi
2018-11-12 18:35             ` Luca Boccassi
2018-11-14 10:02               ` Alejandro Lucero
2018-11-14 11:07                 ` Luca Boccassi
2018-11-14 11:36                   ` Alejandro Lucero
2018-11-15 17:34                     ` Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'bus/pci: fix config r/w access' " Luca Boccassi
2018-11-08 18:18             ` Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'test/hash: fix build' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'igb_uio: issue FLR during open and release of device file' " Luca Boccassi
2018-11-08 18:16             ` Luca Boccassi
2018-11-09  9:32               ` Shijith Thotton
2018-11-09 10:43                 ` Luca Boccassi
2018-11-09 14:26               ` [dpdk-stable] patch 'igb_uio: remove device reset in open' " Luca Boccassi
2018-11-09 14:26                 ` [dpdk-stable] patch 'igb_uio: remove device reset in release' " Luca Boccassi
2018-11-08 18:01           ` [dpdk-stable] patch 'igb_uio: fix unexpected removal for hot-unplug' " Luca Boccassi
2018-11-19 12:25           ` [dpdk-stable] patch 'eal: introduce rte version of fls' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'eal: fix build' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'pci: fix parsing of address without function number' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/e1000/base: fix uninitialized variable' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/mlx5: fix build on PPC64' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/thunderx: fix Tx desc corruption in scatter-gather mode' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/virtio-user: fix typo in error message' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/virtio: fix unchecked return value' " Luca Boccassi
2018-11-19 12:48               ` Tiwei Bie
2018-11-19 12:52                 ` Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'vhost: remove unneeded null pointer check' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/bnx2x: fix VF link state update' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/bonding: fix crash when stopping mode 4 port' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'app/testpmd: fix L4 length for UDP checksum' " Luca Boccassi
2018-11-19 12:25             ` Luca Boccassi [this message]
2018-11-19 12:25             ` [dpdk-stable] patch 'net/ixgbevf: fix link state' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'test/reorder: fix out of bound access' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/i40e: fix X710 Rx after reading some registers' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'net/ixgbe: fix maximum wait time in comment' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'examples/ipv4_multicast: fix leak of cloned packets' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'usertools: check for lspci dependency' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'doc: fix NUMA library name in Linux guide' " Luca Boccassi
2018-11-19 12:25             ` [dpdk-stable] patch 'doc: fix formatting in IP reassembly app " Luca Boccassi
2018-11-26 12:49             ` [dpdk-stable] patch 'eal: fix build with -O1' " Luca Boccassi
2018-11-26 12:49               ` [dpdk-stable] patch 'kni: fix possible uninitialized variable' " Luca Boccassi
2018-11-26 12:49               ` [dpdk-stable] patch 'config: enable more than 128 cores for arm64' " Luca Boccassi
2018-11-26 12:49               ` [dpdk-stable] patch 'net/ixgbe: fix TDH register write' " Luca Boccassi
2018-11-26 12:49               ` [dpdk-stable] patch 'bus/pci: fix allocation of device path' " Luca Boccassi
2018-11-28 10:11               ` [dpdk-stable] patch 'fix dpdk.org URLs' " Luca Boccassi

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20181119122538.14207-13-bluca@debian.org \
    --to=bluca@debian.org \
    --cc=arybchenko@solarflare.com \
    --cc=ferruh.yigit@intel.com \
    --cc=stable@dpdk.org \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).