patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7
@ 2018-05-01 10:44 luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'kni: fix build on RHEL 7.5' " luca.boccassi
                   ` (44 more replies)
  0 siblings, 45 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Gowrishankar Muthukrishnan; +Cc: Luca Boccassi, Chao Zhu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From cb8d9929ce5b6cc35d2da7fd548d628187e6e64a Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Date: Tue, 27 Feb 2018 20:43:58 +0530
Subject: [PATCH] eal/ppc: remove braces in SMP memory barrier macro

[ upstream commit da07658d58461bef714afc196569cf18377073e2 ]

This patch fixes the compilation problem with rte_smp_mb,
when there is else clause following it, as in test_barrier.c.

Fixes: 05c3fd7110 ("eal/ppc: atomic operations for IBM Power")

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
---
 lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h b/lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h
index 37f5eff20..790e6fd7d 100644
--- a/lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h
+++ b/lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h
@@ -55,7 +55,7 @@ extern "C" {
  * Guarantees that the LOAD and STORE operations generated before the
  * barrier occur before the LOAD and STORE operations generated after.
  */
-#define	rte_mb()  {asm volatile("sync" : : : "memory"); }
+#define	rte_mb()  asm volatile("sync" : : : "memory")
 
 /**
  * Write memory barrier.
-- 
2.14.2

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

* [dpdk-stable] patch 'kni: fix build on RHEL 7.5' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'examples/exception_path: limit core count to 64' " luca.boccassi
                   ` (43 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Lee Roberts; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a308e1d730c0c68e7dfb294469167a91e19017e6 Mon Sep 17 00:00:00 2001
From: Lee Roberts <lee.roberts@hpe.com>
Date: Thu, 1 Mar 2018 16:20:35 -0700
Subject: [PATCH] kni: fix build on RHEL 7.5

[ upstream commit 37d477b6863e5c06e20be434b559d3a03d89f46a ]

Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
index 3f8c0bc87..6a6968d93 100644
--- a/lib/librte_eal/linuxapp/kni/compat.h
+++ b/lib/librte_eal/linuxapp/kni/compat.h
@@ -101,6 +101,11 @@
 #undef NET_NAME_UNKNOWN
 #endif
 
+#if (defined(RHEL_RELEASE_CODE) && \
+	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
+#define ndo_change_mtu ndo_change_mtu_rh74
+#endif
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
 #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
 #endif
-- 
2.14.2

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

* [dpdk-stable] patch 'examples/exception_path: limit core count to 64' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'kni: fix build on RHEL 7.5' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'kvargs: fix syntax in comments' " luca.boccassi
                   ` (42 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Radu Nicolau; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2667828c1bdb43cb66675ac13230ad9391564f30 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Tue, 20 Feb 2018 12:05:57 +0000
Subject: [PATCH] examples/exception_path: limit core count to 64

[ upstream commit f93c7cd0823c2b268dda209e1ca8827e01900b3f ]

Application doesn't support more that 64 lcores due to command
line limitation of using a coremask that is parsed as a 64bit
value, so changed it to reflect this limitation.

Coverity issue: 30688
Fixes: af75078fece3 ("first public release")

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
---
 examples/exception_path/main.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/examples/exception_path/main.c b/examples/exception_path/main.c
index 331d2f484..e70549bee 100644
--- a/examples/exception_path/main.c
+++ b/examples/exception_path/main.c
@@ -71,13 +71,21 @@
 #include <rte_string_fns.h>
 #include <rte_cycles.h>
 
+#ifndef APP_MAX_LCORE
+#if (RTE_MAX_LCORE > 64)
+#define APP_MAX_LCORE 64
+#else
+#define APP_MAX_LCORE RTE_MAX_LCORE
+#endif
+#endif
+
 /* Macros for printing using RTE_LOG */
 #define RTE_LOGTYPE_APP RTE_LOGTYPE_USER1
 #define FATAL_ERROR(fmt, args...)       rte_exit(EXIT_FAILURE, fmt "\n", ##args)
 #define PRINT_INFO(fmt, args...)        RTE_LOG(INFO, APP, fmt "\n", ##args)
 
 /* Max ports than can be used (each port is associated with two lcores) */
-#define MAX_PORTS               (RTE_MAX_LCORE / 2)
+#define MAX_PORTS               (APP_MAX_LCORE / 2)
 
 /* Max size of a single packet */
 #define MAX_PACKET_SZ (2048)
@@ -134,7 +142,7 @@ static uint64_t input_cores_mask = 0;
 static uint64_t output_cores_mask = 0;
 
 /* Array storing port_id that is associated with each lcore */
-static uint8_t port_ids[RTE_MAX_LCORE];
+static uint8_t port_ids[APP_MAX_LCORE];
 
 /* Structure type for recording lcore-specific stats */
 struct stats {
@@ -144,7 +152,7 @@ struct stats {
 } __rte_cache_aligned;
 
 /* Array of lcore-specific stats */
-static struct stats lcore_stats[RTE_MAX_LCORE];
+static struct stats lcore_stats[APP_MAX_LCORE];
 
 /* Print out statistics on packets handled */
 static void
@@ -339,7 +347,9 @@ setup_port_lcore_affinities(void)
 	uint8_t rx_port = 0;
 
 	/* Setup port_ids[] array, and check masks were ok */
-	RTE_LCORE_FOREACH(i) {
+	for (i = 0; i < APP_MAX_LCORE; i++) {
+		if (!rte_lcore_is_enabled(i))
+			continue;
 		if (input_cores_mask & (1ULL << i)) {
 			/* Skip ports that are not enabled */
 			while ((ports_mask & (1 << rx_port)) == 0) {
-- 
2.14.2

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

* [dpdk-stable] patch 'kvargs: fix syntax in comments' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'kni: fix build on RHEL 7.5' " luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'examples/exception_path: limit core count to 64' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix offset while mmaping log base address' " luca.boccassi
                   ` (41 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Keith Wiles; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From de3382efda33178a5759d3065e370793d711a68a Mon Sep 17 00:00:00 2001
From: Keith Wiles <keith.wiles@intel.com>
Date: Sat, 10 Mar 2018 10:24:28 -0600
Subject: [PATCH] kvargs: fix syntax in comments

[ upstream commit 2a5002362d2af81590c958773021cd297830f270 ]

Use commas as separator, not semicolons.

Fixes: a8b97e3a1db0 ("devargs: use a comma instead of semicolon to separate key/values")

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_kvargs/rte_kvargs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_kvargs/rte_kvargs.c b/lib/librte_kvargs/rte_kvargs.c
index 8d56abd4c..5504c6df3 100644
--- a/lib/librte_kvargs/rte_kvargs.c
+++ b/lib/librte_kvargs/rte_kvargs.c
@@ -41,7 +41,7 @@
 
 /*
  * Receive a string with a list of arguments following the pattern
- * key=value;key=value;... and insert them into the list.
+ * key=value,key=value,... and insert them into the list.
  * strtok() is used so the params string will be copied to be modified.
  */
 static int
@@ -182,7 +182,7 @@ rte_kvargs_free(struct rte_kvargs *kvlist)
 }
 
 /*
- * Parse the arguments "key=value;key=value;..." string and return
+ * Parse the arguments "key=value,key=value,..." string and return
  * an allocated structure that contains a key/value list. Also
  * check if only valid keys were used.
  */
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix offset while mmaping log base address' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (2 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'kvargs: fix syntax in comments' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: check cmsg not null' " luca.boccassi
                   ` (40 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Tomasz Kulasek
  Cc: Pawel Wodkowski, Jianfeng Tan, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 76c70cda7afe769a25fd9eb20673113382b426e7 Mon Sep 17 00:00:00 2001
From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Date: Thu, 8 Feb 2018 17:59:00 +0100
Subject: [PATCH] vhost: fix offset while mmaping log base address

[ upstream commit fbc4d248b198db7f720fe31a47050a406632cc7a ]

QEMU always set offset to 0 but for sanity we should take the offset
into account.

Fixes: 54f9e32305d4 ("vhost: handle dirty pages logging request")

Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 550a1329d..abcb6ac14 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -869,7 +869,7 @@ vhost_user_set_log_base(struct virtio_net *dev, struct VhostUserMsg *msg)
 	 * mmap from 0 to workaround a hugepage mmap bug: mmap will
 	 * fail when offset is not page size aligned.
 	 */
-	addr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+	addr = mmap(0, size + off, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
 	close(fd);
 	if (addr == MAP_FAILED) {
 		RTE_LOG(ERR, VHOST_CONFIG, "mmap log base failed!\n");
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: check cmsg not null' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (3 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix offset while mmaping log base address' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix device cleanup at stop' " luca.boccassi
                   ` (39 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Tomasz Kulasek
  Cc: Pawel Wodkowski, Jianfeng Tan, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 3743dbcfc521395378338990a0e806c6d24ab12d Mon Sep 17 00:00:00 2001
From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Date: Fri, 9 Feb 2018 18:05:00 +0100
Subject: [PATCH] vhost: check cmsg not null

[ upstream commit aa001111b002a05bf126c688d06146c092c0795a ]

Fixes: 8f972312b8f4 ("vhost: support vhost-user")

Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/socket.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index a95fbfbb9..b9fe25be7 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -166,6 +166,11 @@ send_fd_message(int sockfd, char *buf, int buflen, int *fds, int fd_num)
 		msgh.msg_control = control;
 		msgh.msg_controllen = sizeof(control);
 		cmsg = CMSG_FIRSTHDR(&msgh);
+		if (cmsg == NULL) {
+			RTE_LOG(ERR, VHOST_CONFIG, "cmsg == NULL\n");
+			errno = EINVAL;
+			return -1;
+		}
 		cmsg->cmsg_len = CMSG_LEN(fdsize);
 		cmsg->cmsg_level = SOL_SOCKET;
 		cmsg->cmsg_type = SCM_RIGHTS;
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix device cleanup at stop' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (4 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: check cmsg not null' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-23  7:35   ` Maxime Coquelin
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix realloc failure' " luca.boccassi
                   ` (38 subsequent siblings)
  44 siblings, 1 reply; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Tomasz Kulasek
  Cc: Dariusz Stojaczyk, Jianfeng Tan, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 357f27736c79d0258409666277b6e113d11c757b Mon Sep 17 00:00:00 2001
From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Date: Fri, 9 Feb 2018 18:10:00 +0100
Subject: [PATCH] vhost: fix device cleanup at stop

[ upstream commit ace7b6b7859e1dc410589610a8e436c1a3b430f3 ]

This prevents from destroying & recreating user device in "incomplete"
vring state. virtio_is_ready() was returning true for devices with
vrings which did not have valid callfd (their VHOST_USER_SET_VRING_CALL
hasn't arrived yet)

Fixes: 8f972312b8f4 ("vhost: support vhost-user")

Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index abcb6ac14..0d30f11ef 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -800,6 +800,11 @@ vhost_user_get_vring_base(struct virtio_net *dev,
 
 	vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
 
+	if (vq->callfd >= 0)
+		close(vq->callfd);
+
+	vq->callfd = VIRTIO_UNINITIALIZED_EVENTFD;
+
 	if (dev->dequeue_zero_copy)
 		free_zmbufs(vq);
 	rte_free(vq->shadow_used_ring);
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix realloc failure' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (5 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix device cleanup at stop' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix log macro name conflict' " luca.boccassi
                   ` (37 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Tomasz Kulasek; +Cc: Ziye Yang, Jianfeng Tan, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 3654b73cef9cf96ab0ea6716ae324e684f61ce10 Mon Sep 17 00:00:00 2001
From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Date: Fri, 9 Feb 2018 18:19:00 +0100
Subject: [PATCH] vhost: fix realloc failure

[ upstream commit 7afa2e4538c1740391e40e018fb3ecafd53603cc ]

When reallocation of guest pages fails, vhost_user_set_mem_table() also
should fail.

Fixes: e246896178e6 ("vhost: get guest/host physical address mappings")

Signed-off-by: Ziye Yang <ziye.yang@intel.com>
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 0d30f11ef..aa5ed096d 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -421,7 +421,7 @@ vhost_user_set_vring_base(struct virtio_net *dev,
 	return 0;
 }
 
-static void
+static int
 add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,
 		   uint64_t host_phys_addr, uint64_t size)
 {
@@ -431,6 +431,10 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,
 		dev->max_guest_pages *= 2;
 		dev->guest_pages = realloc(dev->guest_pages,
 					dev->max_guest_pages * sizeof(*page));
+		if (!dev->guest_pages) {
+			RTE_LOG(ERR, VHOST_CONFIG, "cannot realloc guest_pages\n");
+			return -1;
+		}
 	}
 
 	if (dev->nr_guest_pages > 0) {
@@ -439,7 +443,7 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,
 		if (host_phys_addr == last_page->host_phys_addr +
 				      last_page->size) {
 			last_page->size += size;
-			return;
+			return 0;
 		}
 	}
 
@@ -447,9 +451,11 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,
 	page->guest_phys_addr = guest_phys_addr;
 	page->host_phys_addr  = host_phys_addr;
 	page->size = size;
+
+	return 0;
 }
 
-static void
+static int
 add_guest_pages(struct virtio_net *dev, struct virtio_memory_region *reg,
 		uint64_t page_size)
 {
@@ -463,7 +469,9 @@ add_guest_pages(struct virtio_net *dev, struct virtio_memory_region *reg,
 	size = page_size - (guest_phys_addr & (page_size - 1));
 	size = RTE_MIN(size, reg_size);
 
-	add_one_guest_page(dev, guest_phys_addr, host_phys_addr, size);
+	if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr, size) < 0)
+		return -1;
+
 	host_user_addr  += size;
 	guest_phys_addr += size;
 	reg_size -= size;
@@ -472,12 +480,16 @@ add_guest_pages(struct virtio_net *dev, struct virtio_memory_region *reg,
 		size = RTE_MIN(reg_size, page_size);
 		host_phys_addr = rte_mem_virt2phy((void *)(uintptr_t)
 						  host_user_addr);
-		add_one_guest_page(dev, guest_phys_addr, host_phys_addr, size);
+		if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr,
+				size) < 0)
+			return -1;
 
 		host_user_addr  += size;
 		guest_phys_addr += size;
 		reg_size -= size;
 	}
+
+	return 0;
 }
 
 #ifdef RTE_LIBRTE_VHOST_DEBUG
@@ -624,7 +636,12 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg)
 				      mmap_offset;
 
 		if (dev->dequeue_zero_copy)
-			add_guest_pages(dev, reg, alignment);
+			if (add_guest_pages(dev, reg, alignment) < 0) {
+				RTE_LOG(ERR, VHOST_CONFIG,
+					"adding guest pages to region %u failed.\n",
+					i);
+				goto err_mmap;
+			}
 
 		RTE_LOG(INFO, VHOST_CONFIG,
 			"guest memory region %u, size: 0x%" PRIx64 "\n"
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix log macro name conflict' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (6 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix realloc failure' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix assigning port id in mbuf' " luca.boccassi
                   ` (36 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Tomasz Kulasek; +Cc: Ben Walker, Jianfeng Tan, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 52e1844eff8323a6fad542ca62df955bc4309dc4 Mon Sep 17 00:00:00 2001
From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Date: Fri, 9 Feb 2018 18:24:00 +0100
Subject: [PATCH] vhost: fix log macro name conflict

[ upstream commit 06fc1159772de295ae2cb8d11f98ea6313288cc9 ]

LOG_DEBUG is a symbol defined by POSIX, so if sys/log.h is
included the symbols conflict.

This patch changes LOG_DEBUG to VHOST_LOG_DEBUG.

Fixes: 1c01d52392d5 ("vhost: add debug print")

Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/vhost.h      |  7 ++++---
 lib/librte_vhost/vhost_user.c | 10 +++++-----
 lib/librte_vhost/virtio_net.c | 16 ++++++++--------
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index c49db0c03..0dd665292 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -195,7 +195,8 @@ struct virtio_memory {
 #ifdef RTE_LIBRTE_VHOST_DEBUG
 #define VHOST_MAX_PRINT_BUFF 6072
 #define LOG_LEVEL RTE_LOG_DEBUG
-#define LOG_DEBUG(log_type, fmt, args...) RTE_LOG(DEBUG, log_type, fmt, ##args)
+#define VHOST_LOG_DEBUG(log_type, fmt, args...) \
+	RTE_LOG(DEBUG, log_type, fmt, ##args)
 #define PRINT_PACKET(device, addr, size, header) do { \
 	char *pkt_addr = (char *)(addr); \
 	unsigned int index; \
@@ -211,11 +212,11 @@ struct virtio_memory {
 	} \
 	snprintf(packet + strnlen(packet, VHOST_MAX_PRINT_BUFF), VHOST_MAX_PRINT_BUFF - strnlen(packet, VHOST_MAX_PRINT_BUFF), "\n"); \
 	\
-	LOG_DEBUG(VHOST_DATA, "%s", packet); \
+	VHOST_LOG_DEBUG(VHOST_DATA, "%s", packet); \
 } while (0)
 #else
 #define LOG_LEVEL RTE_LOG_INFO
-#define LOG_DEBUG(log_type, fmt, args...) do {} while (0)
+#define VHOST_LOG_DEBUG(log_type, fmt, args...) do {} while (0)
 #define PRINT_PACKET(device, addr, size, header) do {} while (0)
 #endif
 
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index aa5ed096d..2af3b86a5 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -169,7 +169,7 @@ vhost_user_set_features(struct virtio_net *dev, uint64_t features)
 	} else {
 		dev->vhost_hlen = sizeof(struct virtio_net_hdr);
 	}
-	LOG_DEBUG(VHOST_CONFIG,
+	VHOST_LOG_DEBUG(VHOST_CONFIG,
 		"(%d) mergeable RX buffers %s, virtio 1 %s\n",
 		dev->vid,
 		(dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) ? "on" : "off",
@@ -396,13 +396,13 @@ vhost_user_set_vring_addr(struct virtio_net **pdev,
 
 	vq->log_guest_addr = addr->log_guest_addr;
 
-	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
+	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address desc: %p\n",
 			dev->vid, vq->desc);
-	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address avail: %p\n",
+	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address avail: %p\n",
 			dev->vid, vq->avail);
-	LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address used: %p\n",
+	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) mapped address used: %p\n",
 			dev->vid, vq->used);
-	LOG_DEBUG(VHOST_CONFIG, "(%d) log_guest_addr: %" PRIx64 "\n",
+	VHOST_LOG_DEBUG(VHOST_CONFIG, "(%d) log_guest_addr: %" PRIx64 "\n",
 			dev->vid, vq->log_guest_addr);
 
 	return 0;
diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index 871a58f72..5f0150827 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -401,7 +401,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
 	uint32_t i, sz;
 	uint64_t dlen;
 
-	LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
 	if (unlikely(!is_valid_virt_queue_idx(queue_id, 0, dev->virt_qp_nb))) {
 		RTE_LOG(ERR, VHOST_DATA, "(%d) %s: invalid virtqueue idx %d.\n",
 			dev->vid, __func__, queue_id);
@@ -423,7 +423,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
 	if (count == 0)
 		goto out_access_unlock;
 
-	LOG_DEBUG(VHOST_DATA, "(%d) start_idx %d | end_idx %d\n",
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) start_idx %d | end_idx %d\n",
 		dev->vid, start_idx, start_idx + count);
 
 	/* Retrieve all of the desc indexes first to avoid caching issues. */
@@ -657,7 +657,7 @@ copy_mbuf_to_desc_mergeable(struct virtio_net *dev, struct rte_mbuf *m,
 	rte_prefetch0((void *)(uintptr_t)hdr_addr);
 
 	virtio_hdr.num_buffers = num_buffers;
-	LOG_DEBUG(VHOST_DATA, "(%d) RX: num merge buffers %d\n",
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) RX: num merge buffers %d\n",
 		dev->vid, num_buffers);
 
 	desc_avail  = buf_vec[vec_idx].buf_len - dev->vhost_hlen;
@@ -778,7 +778,7 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id,
 	struct buf_vector buf_vec[BUF_VECTOR_MAX];
 	uint16_t avail_head;
 
-	LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
 	if (unlikely(!is_valid_virt_queue_idx(queue_id, 0, dev->virt_qp_nb))) {
 		RTE_LOG(ERR, VHOST_DATA, "(%d) %s: invalid virtqueue idx %d.\n",
 			dev->vid, __func__, queue_id);
@@ -806,14 +806,14 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id,
 		if (unlikely(reserve_avail_buf_mergeable(dev, vq,
 						pkt_len, buf_vec, &num_buffers,
 						avail_head) < 0)) {
-			LOG_DEBUG(VHOST_DATA,
+			VHOST_LOG_DEBUG(VHOST_DATA,
 				"(%d) failed to get enough desc from vring\n",
 				dev->vid);
 			vq->shadow_used_idx -= num_buffers;
 			break;
 		}
 
-		LOG_DEBUG(VHOST_DATA, "(%d) current index %d | end index %d\n",
+		VHOST_LOG_DEBUG(VHOST_DATA, "(%d) current index %d | end index %d\n",
 			dev->vid, vq->last_avail_idx,
 			vq->last_avail_idx + num_buffers);
 
@@ -1417,7 +1417,7 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
 	if (free_entries == 0)
 		goto out_access_unlock;
 
-	LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
 
 	/* Prefetch available and used ring */
 	avail_idx = vq->last_avail_idx & (vq->size - 1);
@@ -1427,7 +1427,7 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
 
 	count = RTE_MIN(count, MAX_PKT_BURST);
 	count = RTE_MIN(count, free_entries);
-	LOG_DEBUG(VHOST_DATA, "(%d) about to dequeue %u buffers\n",
+	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) about to dequeue %u buffers\n",
 			dev->vid, count);
 
 	/* Retrieve all of the head indexes first to avoid caching issues. */
-- 
2.14.2

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

* [dpdk-stable] patch 'net/nfp: fix assigning port id in mbuf' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (7 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix log macro name conflict' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix barrier location' " luca.boccassi
                   ` (35 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Alejandro Lucero; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From cb4b2a5dbcd8d729993723cf23ec8561fc097775 Mon Sep 17 00:00:00 2001
From: Alejandro Lucero <alejandro.lucero@netronome.com>
Date: Thu, 22 Feb 2018 11:13:48 +0000
Subject: [PATCH] net/nfp: fix assigning port id in mbuf

[ upstream commit ca7d716b3ad74529fa331f2cfb45716241124b27 ]

Although this can be done by the app, because other PMDs are doing it,
apps expect this behaviour from the PMD.

Fixes: b812daadad0d ("nfp: add Rx and Tx")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 1f42dac83..06c225fff 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1801,6 +1801,8 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 		mb->nb_segs = 1;
 		mb->next = NULL;
 
+		mb->port = rxq->port_id;
+
 		/* Checking the RSS flag */
 		nfp_net_set_hash(rxq, rxds, mb);
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/nfp: fix barrier location' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (8 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix assigning port id in mbuf' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/qede: fix alloc from socket 0' " luca.boccassi
                   ` (34 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Alejandro Lucero; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f0769b9d31a53713a5a1081a5a405a1618f8a567 Mon Sep 17 00:00:00 2001
From: Alejandro Lucero <alejandro.lucero@netronome.com>
Date: Thu, 22 Feb 2018 11:30:39 +0000
Subject: [PATCH] net/nfp: fix barrier location

[ upstream commit f598e1a2d0e29293b924119c1b3cdd4e16756e95 ]

The barrier needs to be after reading the DD bit. It has not been
a problem because the potential reads which can not happen before
reading the DD bit seem to be far enough, so the compiler is not
rescheduling them. However, a refactoring could make this problem
to arise.

Fixes: b812daadad0d ("nfp: add Rx and Tx")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 06c225fff..f70c94f08 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1731,16 +1731,16 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 			break;
 		}
 
+		rxds = &rxq->rxds[idx];
+		if ((rxds->rxd.meta_len_dd & PCIE_DESC_RX_DD) == 0)
+			break;
+
 		/*
 		 * Memory barrier to ensure that we won't do other
 		 * reads before the DD bit.
 		 */
 		rte_rmb();
 
-		rxds = &rxq->rxds[idx];
-		if ((rxds->rxd.meta_len_dd & PCIE_DESC_RX_DD) == 0)
-			break;
-
 		/*
 		 * We got a packet. Let's alloc a new mbuff for refilling the
 		 * free descriptor ring as soon as possible
-- 
2.14.2

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

* [dpdk-stable] patch 'net/qede: fix alloc from socket 0' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (9 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix barrier location' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix string length in name comparison' " luca.boccassi
                   ` (33 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Pascal Mazon; +Cc: Harish Patil, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From d05b692ce8f2e20df16ba6b9e0771c4cbed14c5a Mon Sep 17 00:00:00 2001
From: Pascal Mazon <pascal.mazon@6wind.com>
Date: Mon, 26 Feb 2018 09:01:10 +0100
Subject: [PATCH] net/qede: fix alloc from socket 0

[ upstream commit 368b11185c8c35f95c6b4db1b24fa7757e5678f9 ]

In case osal_dma_alloc_coherent() or osal_dma_alloc_coherent_aligned() are
called from a management thread, core_id turn out to be LCORE_ID_ANY, and
the resulting socket for alloc will be socket 0.

This is not desirable when using a NIC from socket 1 which might very
likely be configured to use memory from that socket only.
In that case, allocation will fail.

To address this, use master lcore instead when called from mgmt thread.
The associated socket should have memory available.

Fixes: ec94dbc57362 ("qede: add base driver")

Signed-off-by: Pascal Mazon <pascal.mazon@6wind.com>
Acked-by: Harish Patil <harish.patil@cavium.com>
Acked-by: Harish Patil <harish.patil@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 3f895cd46..b9dc1d6d4 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -122,7 +122,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
 	if (core_id == (unsigned int)LCORE_ID_ANY)
-		core_id = 0;
+		core_id = rte_get_master_lcore();
 	socket_id = rte_lcore_to_socket_id(core_id);
 	mz = rte_memzone_reserve_aligned(mz_name, size,
 					 socket_id, 0, RTE_CACHE_LINE_SIZE);
@@ -152,7 +152,7 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
 	if (core_id == (unsigned int)LCORE_ID_ANY)
-		core_id = 0;
+		core_id = rte_get_master_lcore();
 	socket_id = rte_lcore_to_socket_id(core_id);
 	mz = rte_memzone_reserve_aligned(mz_name, size, socket_id, 0, align);
 	if (!mz) {
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: fix string length in name comparison' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (10 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/qede: fix alloc from socket 0' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: allocate stats DMA buffer upfront during probe' " luca.boccassi
                   ` (32 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Mohammad Abdul Awal; +Cc: Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 8c943c2de3a2ed1e6848ed6e194bb20efd149a0c Mon Sep 17 00:00:00 2001
From: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Date: Tue, 27 Feb 2018 08:58:27 +0000
Subject: [PATCH] ethdev: fix string length in name comparison

[ upstream commit b4572daa2c1056ba5a346841135747e8a2ea356e ]

The current code compares two strings upto the length of 1st string
(searched name). If the 1st string is prefix of 2nd string (existing name),
the string comparison returns the port_id of earliest prefix matches.
This patch fixes the bug by using strcmp instead of strncmp.

Fixes: 9c5b8d8b9fe ("ethdev: clean port id retrieval when attaching")

Signed-off-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_ether/rte_ethdev.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 4679dc698..fed09c90e 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -438,8 +438,7 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id)
 
 	for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
 
-		if (!strncmp(name,
-			rte_eth_dev_data[i].name, strlen(name))) {
+		if (!strcmp(name, rte_eth_dev_data[i].name)) {
 
 			*port_id = i;
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/enic: allocate stats DMA buffer upfront during probe' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (11 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix string length in name comparison' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix link update no wait' " luca.boccassi
                   ` (31 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From acf47335cb9ed18b4b31ee7661d624f57920dce6 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Wed, 7 Mar 2018 18:46:58 -0800
Subject: [PATCH] net/enic: allocate stats DMA buffer upfront during probe

[ upstream commit 8d782f3f89e1dcd0c8af1c3c93501d7a06159d66 ]

The driver provides a DMA buffer to the firmware when it requests port
stats. The NIC then fills that buffer with latest stats. Currently,
the driver allocates the DMA buffer the first time it requests stats
and saves it for later use. This can lead to crashes when
primary/secondary processes are involved. For example, the following
sequence crashes the secondary process.

1. Start a primary app that does not call rte_eth_stats_get()
2. dpdk-procinfo -- --stats

dpdk-procinfo crashes while trying to allocate the stats DMA buffer
because the alloc function pointer (vdev.alloc_consistent) is valid
only in the primary process, not in the secondary process.

Overwriting the alloc function pointer in the secondary process is not
an option, as it will simply make the pointer invalid in the primary
process. Instead, allocate the DMA buffer during probe so that only
the primary process does both allocate and free. This allows the
secondary process to dump stats as well.

Fixes: 9913fbb91df0 ("enic/base: common code")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/base/vnic_dev.c | 24 ++++++++++++++----------
 drivers/net/enic/base/vnic_dev.h |  1 +
 drivers/net/enic/enic_main.c     |  9 +++++++++
 3 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/drivers/net/enic/base/vnic_dev.c b/drivers/net/enic/base/vnic_dev.c
index 1cd031acd..6e33c841c 100644
--- a/drivers/net/enic/base/vnic_dev.c
+++ b/drivers/net/enic/base/vnic_dev.c
@@ -538,17 +538,9 @@ int vnic_dev_stats_dump(struct vnic_dev *vdev, struct vnic_stats **stats)
 {
 	u64 a0, a1;
 	int wait = 1000;
-	static u32 instance;
-	char name[NAME_MAX];
 
-	if (!vdev->stats) {
-		snprintf((char *)name, sizeof(name),
-			"vnic_stats-%d", instance++);
-		vdev->stats = vdev->alloc_consistent(vdev->priv,
-			sizeof(struct vnic_stats), &vdev->stats_pa, (u8 *)name);
-		if (!vdev->stats)
-			return -ENOMEM;
-	}
+	if (!vdev->stats)
+		return -ENOMEM;
 
 	*stats = vdev->stats;
 	a0 = vdev->stats_pa;
@@ -940,6 +932,18 @@ u32 vnic_dev_get_intr_coal_timer_max(struct vnic_dev *vdev)
 	return vdev->intr_coal_timer_info.max_usec;
 }
 
+int vnic_dev_alloc_stats_mem(struct vnic_dev *vdev)
+{
+	char name[NAME_MAX];
+	static u32 instance;
+
+	snprintf((char *)name, sizeof(name), "vnic_stats-%u", instance++);
+	vdev->stats = vdev->alloc_consistent(vdev->priv,
+					     sizeof(struct vnic_stats),
+					     &vdev->stats_pa, (u8 *)name);
+	return vdev->stats == NULL ? -ENOMEM : 0;
+}
+
 void vnic_dev_unregister(struct vnic_dev *vdev)
 {
 	if (vdev) {
diff --git a/drivers/net/enic/base/vnic_dev.h b/drivers/net/enic/base/vnic_dev.h
index 06ebd4cea..7af91cfc4 100644
--- a/drivers/net/enic/base/vnic_dev.h
+++ b/drivers/net/enic/base/vnic_dev.h
@@ -191,6 +191,7 @@ struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
 	void *priv, struct rte_pci_device *pdev, struct vnic_dev_bar *bar,
 	unsigned int num_bars);
 struct rte_pci_device *vnic_dev_get_pdev(struct vnic_dev *vdev);
+int vnic_dev_alloc_stats_mem(struct vnic_dev *vdev);
 int vnic_dev_cmd_init(struct vnic_dev *vdev, int fallback);
 int vnic_dev_get_size(void);
 int vnic_dev_int13(struct vnic_dev *vdev, u64 arg, u32 op);
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index 63d0c50d6..bcac51b55 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1377,6 +1377,15 @@ int enic_probe(struct enic *enic)
 		enic_alloc_consistent,
 		enic_free_consistent);
 
+	/*
+	 * Allocate the consistent memory for stats upfront so both primary and
+	 * secondary processes can dump stats.
+	 */
+	err = vnic_dev_alloc_stats_mem(enic->vdev);
+	if (err) {
+		dev_err(enic, "Failed to allocate cmd memory, aborting\n");
+		goto err_out_unregister;
+	}
 	/* Issue device open to get device in known state */
 	err = enic_dev_open(enic);
 	if (err) {
-- 
2.14.2

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

* [dpdk-stable] patch 'net/i40e: fix link update no wait' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (12 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: allocate stats DMA buffer upfront during probe' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/vmxnet3: set the queue shared buffer at start' " luca.boccassi
                   ` (30 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Fan Zhang; +Cc: Andrey Chilikin, Eelco Chaudron, Wenzhuo Lu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 1ee4643d14144dae2bf12de30dbade1250b527a4 Mon Sep 17 00:00:00 2001
From: Fan Zhang <roy.fan.zhang@intel.com>
Date: Thu, 8 Mar 2018 12:17:52 +0000
Subject: [PATCH] net/i40e: fix link update no wait

[ upstream commit eef2daf2e199d2a22eba0bdf9ee990c2a9efc101 ]

In i40e_dev_link_update() the driver obtains the link status
info via admin queue command despite of "no_wait" flag. This
requires relatively long time and may be a problem to some
application such as ovs-dpdk.
(https://bugzilla.redhat.com/show_bug.cgi?id=1551761).

This patch aims to fix the problem by using a different
approach of obtaining link status for i40e NIC without waiting.
Instead of getting the link status via admin queue command,
this patch reads the link status registers to accelerate the
procedure.

Fixes: 263333bbb7a9 ("i40e: fix link status timeout")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Reviewed-by: Eelco Chaudron <echaudro@redhat.com>
Tested-by: Eelco Chaudron <echaudro@redhat.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 128 ++++++++++++++++++++++++++++++-----------
 1 file changed, 95 insertions(+), 33 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 0b270b690..696bb6595 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2117,77 +2117,139 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
 	return i40e_phy_conf_link(hw, abilities, speed, false);
 }
 
-int
-i40e_dev_link_update(struct rte_eth_dev *dev,
-		     int wait_to_complete)
+static inline void __attribute__((always_inline))
+update_link_no_wait(struct i40e_hw *hw, struct rte_eth_link *link)
 {
-#define CHECK_INTERVAL 100  /* 100ms */
-#define MAX_REPEAT_TIME 10  /* 1s (10 * 100ms) in total */
-	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+/* Link status registers and values*/
+#define I40E_PRTMAC_LINKSTA		0x001E2420
+#define I40E_REG_LINK_UP		0x40000080
+#define I40E_PRTMAC_MACC		0x001E24E0
+#define I40E_REG_MACC_25GB		0x00020000
+#define I40E_REG_SPEED_MASK		0x38000000
+#define I40E_REG_SPEED_100MB		0x00000000
+#define I40E_REG_SPEED_1GB		0x08000000
+#define I40E_REG_SPEED_10GB		0x10000000
+#define I40E_REG_SPEED_20GB		0x20000000
+#define I40E_REG_SPEED_25_40GB		0x18000000
+	uint32_t link_speed;
+	uint32_t reg_val;
+
+	reg_val = I40E_READ_REG(hw, I40E_PRTMAC_LINKSTA);
+	link_speed = reg_val & I40E_REG_SPEED_MASK;
+	reg_val &= I40E_REG_LINK_UP;
+	link->link_status = (reg_val == I40E_REG_LINK_UP) ? 1 : 0;
+
+	if (unlikely(link->link_status != 0))
+		return;
+
+	/* Parse the link status */
+	switch (link_speed) {
+	case I40E_REG_SPEED_100MB:
+		link->link_speed = ETH_SPEED_NUM_100M;
+		break;
+	case I40E_REG_SPEED_1GB:
+		link->link_speed = ETH_SPEED_NUM_1G;
+		break;
+	case I40E_REG_SPEED_10GB:
+		link->link_speed = ETH_SPEED_NUM_10G;
+		break;
+	case I40E_REG_SPEED_20GB:
+		link->link_speed = ETH_SPEED_NUM_20G;
+		break;
+	case I40E_REG_SPEED_25_40GB:
+		reg_val = I40E_READ_REG(hw, I40E_PRTMAC_MACC);
+
+		if (reg_val & I40E_REG_MACC_25GB)
+			link->link_speed = ETH_SPEED_NUM_25G;
+		else
+			link->link_speed = ETH_SPEED_NUM_40G;
+
+		break;
+	default:
+		PMD_DRV_LOG(ERR, "Unknown link speed info %u", link_speed);
+		break;
+	}
+}
+
+static inline void __attribute__((always_inline))
+update_link_wait(struct i40e_hw *hw, struct rte_eth_link *link,
+	bool enable_lse)
+{
+#define CHECK_INTERVAL             100  /* 100ms */
+#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
+	uint32_t rep_cnt = MAX_REPEAT_TIME;
 	struct i40e_link_status link_status;
-	struct rte_eth_link link, old;
 	int status;
-	unsigned rep_cnt = MAX_REPEAT_TIME;
-	bool enable_lse = dev->data->dev_conf.intr_conf.lsc ? true : false;
 
-	memset(&link, 0, sizeof(link));
-	memset(&old, 0, sizeof(old));
 	memset(&link_status, 0, sizeof(link_status));
-	rte_i40e_dev_atomic_read_link_status(dev, &old);
 
 	do {
 		/* Get link status information from hardware */
 		status = i40e_aq_get_link_info(hw, enable_lse,
 						&link_status, NULL);
-		if (status != I40E_SUCCESS) {
-			link.link_speed = ETH_SPEED_NUM_100M;
-			link.link_duplex = ETH_LINK_FULL_DUPLEX;
+		if (unlikely(status != I40E_SUCCESS)) {
+			link->link_speed = ETH_SPEED_NUM_100M;
+			link->link_duplex = ETH_LINK_FULL_DUPLEX;
 			PMD_DRV_LOG(ERR, "Failed to get link info");
-			goto out;
+			return;
 		}
 
-		link.link_status = link_status.link_info & I40E_AQ_LINK_UP;
-		if (!wait_to_complete || link.link_status)
-			break;
+		link->link_status = link_status.link_info & I40E_AQ_LINK_UP;
+		if (unlikely(link->link_status != 0))
+			return;
 
 		rte_delay_ms(CHECK_INTERVAL);
 	} while (--rep_cnt);
 
-	if (!link.link_status)
-		goto out;
-
-	/* i40e uses full duplex only */
-	link.link_duplex = ETH_LINK_FULL_DUPLEX;
-
 	/* Parse the link status */
 	switch (link_status.link_speed) {
 	case I40E_LINK_SPEED_100MB:
-		link.link_speed = ETH_SPEED_NUM_100M;
+		link->link_speed = ETH_SPEED_NUM_100M;
 		break;
 	case I40E_LINK_SPEED_1GB:
-		link.link_speed = ETH_SPEED_NUM_1G;
+		link->link_speed = ETH_SPEED_NUM_1G;
 		break;
 	case I40E_LINK_SPEED_10GB:
-		link.link_speed = ETH_SPEED_NUM_10G;
+		link->link_speed = ETH_SPEED_NUM_10G;
 		break;
 	case I40E_LINK_SPEED_20GB:
-		link.link_speed = ETH_SPEED_NUM_20G;
+		link->link_speed = ETH_SPEED_NUM_20G;
 		break;
 	case I40E_LINK_SPEED_25GB:
-		link.link_speed = ETH_SPEED_NUM_25G;
+		link->link_speed = ETH_SPEED_NUM_25G;
 		break;
 	case I40E_LINK_SPEED_40GB:
-		link.link_speed = ETH_SPEED_NUM_40G;
+		link->link_speed = ETH_SPEED_NUM_40G;
 		break;
 	default:
-		link.link_speed = ETH_SPEED_NUM_100M;
+		link->link_speed = ETH_SPEED_NUM_100M;
 		break;
 	}
+}
 
+int
+i40e_dev_link_update(struct rte_eth_dev *dev,
+		     int wait_to_complete)
+{
+	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct rte_eth_link link, old;
+	bool enable_lse = dev->data->dev_conf.intr_conf.lsc ? true : false;
+
+	memset(&link, 0, sizeof(link));
+	memset(&old, 0, sizeof(old));
+
+	rte_i40e_dev_atomic_read_link_status(dev, &old);
+
+	/* i40e uses full duplex only */
+	link.link_duplex = ETH_LINK_FULL_DUPLEX;
 	link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 			ETH_LINK_SPEED_FIXED);
 
-out:
+	if (!wait_to_complete)
+		update_link_no_wait(hw, &link);
+	else
+		update_link_wait(hw, &link, enable_lse);
+
 	rte_i40e_dev_atomic_write_link_status(dev, &link);
 	if (link.link_status == old.link_status)
 		return -1;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/vmxnet3: set the queue shared buffer at start' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (13 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix link update no wait' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/mlx5: fix ARM build' " luca.boccassi
                   ` (29 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Chas Williams; +Cc: Shrikrishna Khare, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 515e9bcd87792530f384a6f40649a7cf8c008734 Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Wed, 17 Jan 2018 10:04:56 -0500
Subject: [PATCH] net/vmxnet3: set the queue shared buffer at start

[ upstream commit 3e5810f31d9cafe1a49a098372467c1eda3bf4aa ]

If a reconfiguration happens, queuedesc is reallocated.  Any queues that
are preserved point to the previous queuedesc since the queues are only
configured during queue setup.  Delay configuration of the shared queue
pointers until device start when queuedesc is no longer changing.

Fixes: 8618d19b52b1 ("net/vmxnet3: reallocate shared memzone on re-config")

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 4 ++++
 drivers/net/vmxnet3/vmxnet3_rxtx.c   | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index 9a889c6fb..effb360b4 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -488,6 +488,8 @@ vmxnet3_setup_driver_shared(struct rte_eth_dev *dev)
 		Vmxnet3_TxQueueDesc *tqd = &hw->tqd_start[i];
 		vmxnet3_tx_queue_t *txq  = dev->data->tx_queues[i];
 
+		txq->shared = &hw->tqd_start[i];
+
 		tqd->ctrl.txNumDeferred  = 0;
 		tqd->ctrl.txThreshold    = 1;
 		tqd->conf.txRingBasePA   = txq->cmd_ring.basePA;
@@ -507,6 +509,8 @@ vmxnet3_setup_driver_shared(struct rte_eth_dev *dev)
 		Vmxnet3_RxQueueDesc *rqd  = &hw->rqd_start[i];
 		vmxnet3_rx_queue_t *rxq   = dev->data->rx_queues[i];
 
+		rxq->shared = &hw->rqd_start[i];
+
 		rqd->conf.rxRingBasePA[0] = rxq->cmd_ring[0].basePA;
 		rqd->conf.rxRingBasePA[1] = rxq->cmd_ring[1].basePA;
 		rqd->conf.compRingBasePA  = rxq->comp_ring.basePA;
diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c
index 5ef7773b1..0a695883e 100644
--- a/drivers/net/vmxnet3/vmxnet3_rxtx.c
+++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c
@@ -862,7 +862,7 @@ vmxnet3_dev_tx_queue_setup(struct rte_eth_dev *dev,
 
 	txq->queue_id = queue_idx;
 	txq->port_id = dev->data->port_id;
-	txq->shared = &hw->tqd_start[queue_idx];
+	txq->shared = NULL; /* set in vmxnet3_setup_driver_shared() */
 	txq->hw = hw;
 	txq->qid = queue_idx;
 	txq->stopped = TRUE;
@@ -963,7 +963,7 @@ vmxnet3_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->mp = mp;
 	rxq->queue_id = queue_idx;
 	rxq->port_id = dev->data->port_id;
-	rxq->shared = &hw->rqd_start[queue_idx];
+	rxq->shared = NULL; /* set in vmxnet3_setup_driver_shared() */
 	rxq->hw = hw;
 	rxq->qid1 = queue_idx;
 	rxq->qid2 = queue_idx + hw->num_rx_queues;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/mlx5: fix ARM build' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (14 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/vmxnet3: set the queue shared buffer at start' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix queue start' " luca.boccassi
                   ` (28 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: Adrien Mazarguil, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0d93323b58a012694fc3905760fcc5a8ce53f6c1 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Wed, 14 Mar 2018 10:51:48 -0700
Subject: [PATCH] net/mlx5: fix ARM build

[ upstream commit 264713ba1025e18436433a00fb14da8fc3f27101 ]

rdma-core v16 has a bug. The following compilation error occurs on ARM
hosts.

In file included
from drivers/net/mlx5/mlx5_glue.h:16:0,
from drivers/net/mlx5/mlx5_glue.c:11:
/usr/include/infiniband/mlx5dv.h:144:2: error: unknown type name 'off_t'
off_t   uar_mmap_offset;
^

As a temporary fix, sys/types.h is included in PMD. This has been fixed in
rdma-core v17. This can be removed when all the Linux distros are shipped
with rdma-core v17 or back-ported fix. As of now, RedHat 7.5 is known to
have rdma-core v16.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
---
 drivers/net/mlx5/mlx5_vlan.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c
index 1b0fa40ac..4e11eadb9 100644
--- a/drivers/net/mlx5/mlx5_vlan.c
+++ b/drivers/net/mlx5/mlx5_vlan.c
@@ -36,6 +36,12 @@
 #include <assert.h>
 #include <stdint.h>
 
+/*
+ * Not needed by this file; included to work around the lack of off_t
+ * definition for mlx5dv.h with unpatched rdma-core versions.
+ */
+#include <sys/types.h>
+
 /* DPDK headers don't like -pedantic. */
 #ifdef PEDANTIC
 #pragma GCC diagnostic ignored "-Wpedantic"
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: fix queue start' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (15 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/mlx5: fix ARM build' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix intr callback unregister by adding retry' " luca.boccassi
                   ` (27 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 84a9ab0424d20ab500a15492da8bdd7ced027ba1 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Thu, 22 Mar 2018 20:59:01 +0800
Subject: [PATCH] ethdev: fix queue start

[ upstream commit 239c9b435ad4abcac89b5d2480a0c21ce8b8288f ]

Device must be started before start any queue.

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

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_ether/rte_ethdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index fed09c90e..a698fc00a 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -627,6 +627,12 @@ rte_eth_dev_rx_queue_stop(uint8_t port_id, uint16_t rx_queue_id)
 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
 	dev = &rte_eth_devices[port_id];
+	if (!dev->data->dev_started) {
+		RTE_PMD_DEBUG_TRACE(
+		    "port %d must be started before start any queue\n", port_id);
+		return -EINVAL;
+	}
+
 	if (rx_queue_id >= dev->data->nb_rx_queues) {
 		RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", rx_queue_id);
 		return -EINVAL;
@@ -679,6 +685,12 @@ rte_eth_dev_tx_queue_stop(uint8_t port_id, uint16_t tx_queue_id)
 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
 	dev = &rte_eth_devices[port_id];
+	if (!dev->data->dev_started) {
+		RTE_PMD_DEBUG_TRACE(
+		    "port %d must be started before start any queue\n", port_id);
+		return -EINVAL;
+	}
+
 	if (tx_queue_id >= dev->data->nb_tx_queues) {
 		RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", tx_queue_id);
 		return -EINVAL;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/i40e: fix intr callback unregister by adding retry' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (16 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix queue start' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
                   ` (26 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Yunjian Wang; +Cc: Kirill Rybalchenko, Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From d8328aecf22d573aeb5c6636eb43bb99a259edb0 Mon Sep 17 00:00:00 2001
From: Yunjian Wang <wangyunjian@huawei.com>
Date: Tue, 20 Mar 2018 15:01:24 +0800
Subject: [PATCH] net/i40e: fix intr callback unregister by adding retry

[ upstream commit 0264539dce2d40d8abaed474d4b1b526ca3ed2e4 ]

The nic's interrupt source has some active callbacks, when
the port hotplug. Add a retry to give more port's a chance
to uninit before returning an error.

Fixes: d42aaf30008b ("i40e: support port hotplug")

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 696bb6595..8824293f1 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -1316,6 +1316,7 @@ eth_i40e_dev_uninit(struct rte_eth_dev *dev)
 	struct i40e_filter_control_settings settings;
 	int ret;
 	uint8_t aq_fail = 0;
+	int retries = 0;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -1355,9 +1356,20 @@ eth_i40e_dev_uninit(struct rte_eth_dev *dev)
 	/* disable uio intr before callback unregister */
 	rte_intr_disable(&(pci_dev->intr_handle));
 
-	/* register callback func to eal lib */
-	rte_intr_callback_unregister(&(pci_dev->intr_handle),
-		i40e_dev_interrupt_handler, (void *)dev);
+	/* unregister callback func to eal lib */
+	do {
+		ret = rte_intr_callback_unregister(&(pci_dev->intr_handle),
+				i40e_dev_interrupt_handler, (void *)dev);
+		if (ret >= 0) {
+			break;
+		} else if (ret != -EAGAIN) {
+			PMD_INIT_LOG(ERR,
+				 "intr callback unregister failed: %d",
+				 ret);
+			return ret;
+		}
+		i40e_msec_delay(500);
+	} while (retries++ < 5);
 
 	return 0;
 }
-- 
2.14.2

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

* [dpdk-stable] patch 'net/ixgbe: fix intr callback unregister by adding retry' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (17 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix intr callback unregister by adding retry' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'ip_frag: fix double free of chained mbufs' " luca.boccassi
                   ` (25 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Yunjian Wang; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f4ba08f62bb709f08a9709b13e02ce7e347f301d Mon Sep 17 00:00:00 2001
From: Yunjian Wang <wangyunjian@huawei.com>
Date: Wed, 21 Mar 2018 20:28:10 +0800
Subject: [PATCH] net/ixgbe: fix intr callback unregister by adding retry

[ upstream commit 91fbf1791cd7d69012010ab159d0b5c7dee81f79 ]

The nic's interrupt source has some active callbacks, when
the port hotplug. Add a retry to give more port's a chance
to uninit before returning an error.

Fixes: 2866c5f1b87e ("ixgbe: support port hotplug")

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 2dc69ff9f..6444a6ce2 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -1300,6 +1300,8 @@ eth_ixgbe_dev_uninit(struct rte_eth_dev *eth_dev)
 {
 	struct rte_pci_device *pci_dev;
 	struct ixgbe_hw *hw;
+	int retries = 0;
+	int ret;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -1321,8 +1323,20 @@ eth_ixgbe_dev_uninit(struct rte_eth_dev *eth_dev)
 
 	/* disable uio intr before callback unregister */
 	rte_intr_disable(&(pci_dev->intr_handle));
-	rte_intr_callback_unregister(&(pci_dev->intr_handle),
-		ixgbe_dev_interrupt_handler, (void *)eth_dev);
+
+	do {
+		ret = rte_intr_callback_unregister(&(pci_dev->intr_handle),
+				ixgbe_dev_interrupt_handler, (void *)eth_dev);
+		if (ret >= 0) {
+			break;
+		} else if (ret != -EAGAIN) {
+			PMD_INIT_LOG(ERR,
+				"intr callback unregister failed: %d",
+				ret);
+			return ret;
+		}
+		rte_delay_ms(100);
+	} while (retries++ < (10 + IXGBE_LINK_UP_TIME));
 
 	/* uninitialize PF if max_vfs not zero */
 	ixgbe_pf_host_uninit(eth_dev);
-- 
2.14.2

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

* [dpdk-stable] patch 'ip_frag: fix double free of chained mbufs' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (18 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'hash: fix comment for lookup' " luca.boccassi
                   ` (24 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Allain Legacy; +Cc: Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 874bea998d7a60cf1a4e8838c8dac07ce5999685 Mon Sep 17 00:00:00 2001
From: Allain Legacy <allain.legacy@windriver.com>
Date: Mon, 19 Mar 2018 09:25:23 -0500
Subject: [PATCH] ip_frag: fix double free of chained mbufs

[ upstream commit 4f512a1919998933a39886ab2ec7f2fdde48756c ]

The first mbuf and the last mbuf to be visited in the preceding loop
are not set to NULL in the fragmentation table.  This creates the
possibility of a double free when the fragmentation table is later freed
with rte_ip_frag_table_destroy().

Fixes: 95908f52393d ("ip_frag: free mbufs on reassembly table destroy")

Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_ip_frag/rte_ipv4_reassembly.c | 2 ++
 lib/librte_ip_frag/rte_ipv6_reassembly.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/lib/librte_ip_frag/rte_ipv4_reassembly.c b/lib/librte_ip_frag/rte_ipv4_reassembly.c
index e084ca59a..847ea0d63 100644
--- a/lib/librte_ip_frag/rte_ipv4_reassembly.c
+++ b/lib/librte_ip_frag/rte_ipv4_reassembly.c
@@ -88,7 +88,9 @@ ipv4_frag_reassemble(struct ip_frag_pkt *fp)
 	/* chain with the first fragment. */
 	rte_pktmbuf_adj(m, (uint16_t)(m->l2_len + m->l3_len));
 	rte_pktmbuf_chain(fp->frags[IP_FIRST_FRAG_IDX].mb, m);
+	fp->frags[curr_idx].mb = NULL;
 	m = fp->frags[IP_FIRST_FRAG_IDX].mb;
+	fp->frags[IP_FIRST_FRAG_IDX].mb = NULL;
 
 	/* update mbuf fields for reassembled packet. */
 	m->ol_flags |= PKT_TX_IP_CKSUM;
diff --git a/lib/librte_ip_frag/rte_ipv6_reassembly.c b/lib/librte_ip_frag/rte_ipv6_reassembly.c
index 21a5ef5d3..d9b5d6903 100644
--- a/lib/librte_ip_frag/rte_ipv6_reassembly.c
+++ b/lib/librte_ip_frag/rte_ipv6_reassembly.c
@@ -111,7 +111,9 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp)
 	/* chain with the first fragment. */
 	rte_pktmbuf_adj(m, (uint16_t)(m->l2_len + m->l3_len));
 	rte_pktmbuf_chain(fp->frags[IP_FIRST_FRAG_IDX].mb, m);
+	fp->frags[curr_idx].mb = NULL;
 	m = fp->frags[IP_FIRST_FRAG_IDX].mb;
+	fp->frags[IP_FIRST_FRAG_IDX].mb = NULL;
 
 	/* update mbuf fields for reassembled packet. */
 	m->ol_flags |= PKT_TX_IP_CKSUM;
-- 
2.14.2

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

* [dpdk-stable] patch 'hash: fix comment for lookup' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (19 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'ip_frag: fix double free of chained mbufs' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: fix setting VLAN ID on slave ports' " luca.boccassi
                   ` (23 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Shreyansh Jain; +Cc: Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 1cd34f76816a335f7759c4c1ef4ad4745c1a466e Mon Sep 17 00:00:00 2001
From: Shreyansh Jain <shreyansh.jain@nxp.com>
Date: Thu, 12 Apr 2018 18:03:58 +0530
Subject: [PATCH] hash: fix comment for lookup

[ upstream commit 0da959d484c852ed80a9e83ece3ff916aa7d3b75 ]

rte_hash_lookup_with_hash() has wrong comment for its 'sig' param.

Fixes: 1a9f648be291 ("hash: fix for multi-process apps")

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 lib/librte_hash/rte_hash.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_hash/rte_hash.h b/lib/librte_hash/rte_hash.h
index 622c18009..f29de81ae 100644
--- a/lib/librte_hash/rte_hash.h
+++ b/lib/librte_hash/rte_hash.h
@@ -357,7 +357,7 @@ rte_hash_lookup(const struct rte_hash *h, const void *key);
  * @param key
  *   Key to find.
  * @param sig
- *   Hash value to remove from the hash table.
+ *   Precomputed hash value for 'key'.
  * @return
  *   - -EINVAL if the parameters are invalid.
  *   - -ENOENT if the key is not found.
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bonding: fix setting VLAN ID on slave ports' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (20 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'hash: fix comment for lookup' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: clear started state if start fails' " luca.boccassi
                   ` (22 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Chas Williams; +Cc: Radu Nicolau, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 064d2c44a801a9d0a34a1b3ca498d698dd90596c Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Tue, 3 Apr 2018 12:01:22 -0400
Subject: [PATCH] net/bonding: fix setting VLAN ID on slave ports

[ upstream commit 3639903f488976e61752103bed546d5b87147ad0 ]

The pos returned is just the offset of the slab.  You need to use this
to offset the bits in the slab.

Fixes: c771e4ef38 ("net/bonding: enable slave VLAN filter")

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
---
 drivers/net/bonding/rte_eth_bond_api.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index 4b6f1471c..7bb2fe1ec 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -361,9 +361,12 @@ slave_vlan_filter_set(uint8_t bonded_port_id, uint8_t slave_port_id)
 		for (i = 0, mask = 1;
 		     i < RTE_BITMAP_SLAB_BIT_SIZE;
 		     i ++, mask <<= 1) {
-			if (unlikely(slab & mask))
+			if (unlikely(slab & mask)) {
+				uint16_t vlan_id = pos + i;
+
 				res = rte_eth_dev_vlan_filter(slave_port_id,
-							      (uint16_t)pos, 1);
+							      vlan_id, 1);
+			}
 		}
 		found = rte_bitmap_scan(internals->vlan_filter_bmp,
 					&pos, &slab);
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bonding: clear started state if start fails' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (21 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: fix setting VLAN ID on slave ports' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix total stats' " luca.boccassi
                   ` (21 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Chas Williams; +Cc: Radu Nicolau, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a4bdf8949710c843e368a81b66b818fe0c690f5b Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Fri, 23 Mar 2018 13:05:32 -0400
Subject: [PATCH] net/bonding: clear started state if start fails

[ upstream commit 85d3c09a0f40740ca64556522fed1b3bb5aa6167 ]

There are several error paths where the bonding device may not start.
Clear dev_started before we return if we take one of these paths.

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

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index c1ec3aa43..6f8931ef9 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1525,7 +1525,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 
 	if (internals->slave_count == 0) {
 		RTE_BOND_LOG(ERR, "Cannot start port since there are no slave devices");
-		return -1;
+		goto out_err;
 	}
 
 	if (internals->user_defined_mac == 0) {
@@ -1536,18 +1536,18 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 				new_mac_addr = &internals->slaves[i].persisted_mac_addr;
 
 		if (new_mac_addr == NULL)
-			return -1;
+			goto out_err;
 
 		if (mac_address_set(eth_dev, new_mac_addr) != 0) {
 			RTE_BOND_LOG(ERR, "bonded port (%d) failed to update MAC address",
 					eth_dev->data->port_id);
-			return -1;
+			goto out_err;
 		}
 	}
 
 	/* Update all slave devices MACs*/
 	if (mac_address_slaves_update(eth_dev) != 0)
-		return -1;
+		goto out_err;
 
 	/* If bonded device is configure in promiscuous mode then re-apply config */
 	if (internals->promiscuous_en)
@@ -1560,7 +1560,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 			RTE_BOND_LOG(ERR,
 					"bonded port (%d) failed to reconfigure slave device (%d)",
 					eth_dev->data->port_id, internals->slaves[i].port_id);
-			return -1;
+			goto out_err;
 		}
 		/* We will need to poll for link status if any slave doesn't
 		 * support interrupts
@@ -1568,6 +1568,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 		if (internals->slaves[i].link_status_poll_enabled)
 			internals->link_status_polling_enabled = 1;
 	}
+
 	/* start polling if needed */
 	if (internals->link_status_polling_enabled) {
 		rte_eal_alarm_set(
@@ -1587,6 +1588,10 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 		bond_tlb_enable(internals);
 
 	return 0;
+
+out_err:
+	eth_dev->data->dev_started = 0;
+	return -1;
 }
 
 static void
-- 
2.14.2

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

* [dpdk-stable] patch 'net/szedata2: fix total stats' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (22 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: clear started state if start fails' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix format string for PCI address' " luca.boccassi
                   ` (20 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Matej Vido; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 8855984b69dc92ca169e72484ec8ae4d6aea141d Mon Sep 17 00:00:00 2001
From: Matej Vido <vido@cesnet.cz>
Date: Wed, 4 Apr 2018 15:42:18 +0200
Subject: [PATCH] net/szedata2: fix total stats

[ upstream commit 745f6a1e7e37d80920d38be4fffbb442a09ab7cf ]

Counters from all queues have to be summed up for total stats
even though the number of queue stats counters is not sufficient.

Fixes: 83556fd2c0fc ("szedata2: change to physical device type")

Signed-off-by: Matej Vido <vido@cesnet.cz>
---
 drivers/net/szedata2/rte_eth_szedata2.c | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c
index 9cf408ed2..3070f1590 100644
--- a/drivers/net/szedata2/rte_eth_szedata2.c
+++ b/drivers/net/szedata2/rte_eth_szedata2.c
@@ -1051,22 +1051,29 @@ eth_stats_get(struct rte_eth_dev *dev,
 	uint64_t tx_err_total = 0;
 	uint64_t rx_total_bytes = 0;
 	uint64_t tx_total_bytes = 0;
-	const struct pmd_internals *internals = dev->data->dev_private;
 
-	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS && i < nb_rx; i++) {
-		stats->q_ipackets[i] = internals->rx_queue[i].rx_pkts;
-		stats->q_ibytes[i] = internals->rx_queue[i].rx_bytes;
-		rx_total += stats->q_ipackets[i];
-		rx_total_bytes += stats->q_ibytes[i];
+	for (i = 0; i < nb_rx; i++) {
+		struct szedata2_rx_queue *rxq = dev->data->rx_queues[i];
+
+		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
+			stats->q_ipackets[i] = rxq->rx_pkts;
+			stats->q_ibytes[i] = rxq->rx_bytes;
+		}
+		rx_total += rxq->rx_pkts;
+		rx_total_bytes += rxq->rx_bytes;
 	}
 
-	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS && i < nb_tx; i++) {
-		stats->q_opackets[i] = internals->tx_queue[i].tx_pkts;
-		stats->q_obytes[i] = internals->tx_queue[i].tx_bytes;
-		stats->q_errors[i] = internals->tx_queue[i].err_pkts;
-		tx_total += stats->q_opackets[i];
-		tx_total_bytes += stats->q_obytes[i];
-		tx_err_total += stats->q_errors[i];
+	for (i = 0; i < nb_tx; i++) {
+		struct szedata2_tx_queue *txq = dev->data->tx_queues[i];
+
+		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
+			stats->q_opackets[i] = txq->tx_pkts;
+			stats->q_obytes[i] = txq->tx_bytes;
+			stats->q_errors[i] = txq->err_pkts;
+		}
+		tx_total += txq->tx_pkts;
+		tx_total_bytes += txq->tx_bytes;
+		tx_err_total += txq->err_pkts;
 	}
 
 	stats->ipackets = rx_total;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/szedata2: fix format string for PCI address' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (23 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix total stats' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: fix crash on MTU update with non-setup queues' " luca.boccassi
                   ` (19 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Matej Vido; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From cb3ca6a66c3f94384df6507f68afe9265639233e Mon Sep 17 00:00:00 2001
From: Matej Vido <vido@cesnet.cz>
Date: Wed, 4 Apr 2018 15:42:21 +0200
Subject: [PATCH] net/szedata2: fix format string for PCI address

[ upstream commit ddbbe324db8fa340e01a389844dc703e8cb30072 ]

For fscanf() function SCN macros should be used but PRI macros were
wrongly used.
Also use correct sizes of variables for read values.

Fixes: 83556fd2c0fc ("szedata2: change to physical device type")

Signed-off-by: Matej Vido <vido@cesnet.cz>
---
 drivers/net/szedata2/rte_eth_szedata2.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c
index 3070f1590..8b091cfed 100644
--- a/drivers/net/szedata2/rte_eth_szedata2.c
+++ b/drivers/net/szedata2/rte_eth_szedata2.c
@@ -1366,9 +1366,9 @@ get_szedata2_index(struct rte_eth_dev *dev, uint32_t *index)
 	char pcislot_path[PATH_MAX];
 	struct rte_pci_addr pcislot_addr = dev->pci_dev->addr;
 	uint32_t domain;
-	uint32_t bus;
-	uint32_t devid;
-	uint32_t function;
+	uint8_t bus;
+	uint8_t devid;
+	uint8_t function;
 
 	dir = opendir("/sys/class/combo");
 	if (dir == NULL)
@@ -1393,7 +1393,7 @@ get_szedata2_index(struct rte_eth_dev *dev, uint32_t *index)
 		if (fd == NULL)
 			continue;
 
-		ret = fscanf(fd, "%4" PRIx16 ":%2" PRIx8 ":%2" PRIx8 ".%" PRIx8,
+		ret = fscanf(fd, "%8" SCNx32 ":%2" SCNx8 ":%2" SCNx8 ".%" SCNx8,
 				&domain, &bus, &devid, &function);
 		fclose(fd);
 		if (ret != 4)
-- 
2.14.2

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

* [dpdk-stable] patch 'net/enic: fix crash on MTU update with non-setup queues' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (24 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix format string for PCI address' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bnxt: fix Rx drop setting' " luca.boccassi
                   ` (18 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: John Daley; +Cc: Hyong Youb Kim, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a79ae67733089400f81ab9ecec81e464e60512df Mon Sep 17 00:00:00 2001
From: John Daley <johndale@cisco.com>
Date: Wed, 4 Apr 2018 16:54:53 -0700
Subject: [PATCH] net/enic: fix crash on MTU update with non-setup queues

[ upstream commit 33a2d6594945eb3278bfa441f79ae9a38ea538a0 ]

The enic code called from rte_eth_dev_set_mtu() was assuming that the
Rx queues are already set up via a call to rte_eth_tx_queue_setup().
OVS calls rte_eth_dev_set_mtu() before rte_eth_rx_queue_setup() and
a null pointer was dereferenced.

Fixes: c3e09182bcd6 ("net/enic: support scatter Rx in MTU update")

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

diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index bcac51b55..ef5ecd44e 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1254,6 +1254,8 @@ int enic_set_mtu(struct enic *enic, uint16_t new_mtu)
 	/* free and reallocate RQs with the new MTU */
 	for (rq_idx = 0; rq_idx < enic->rq_count; rq_idx++) {
 		rq = &enic->rq[enic_rte_rq_idx_to_sop_idx(rq_idx)];
+		if (!rq->in_use)
+			continue;
 
 		enic_free_rq(rq);
 		rc = enic_alloc_rq(enic, rq_idx, rq->socket_id, rq->mp,
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix Rx drop setting' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (25 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: fix crash on MTU update with non-setup queues' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'drivers/net: fix icc deprecated parameter warning' " luca.boccassi
                   ` (17 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 384b807fe7601700c799c102731df216a18034b0 Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Sat, 7 Apr 2018 10:40:54 -0700
Subject: [PATCH] net/bnxt: fix Rx drop setting

[ upstream commit d4cd95c645b5af9f7f480ba7fb6f4e4eee0e0e23 ]

If Rx descriptors are not available, pkts are dropped by default.
Fix rx_drop_en setting in bnxt_dev_info_get_op to reflect it.

Fixes: 0a6d2a720078 ("net/bnxt: get device infos")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 359a95d4e..962e3468e 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -379,7 +379,8 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
 			.wthresh = 0,
 		},
 		.rx_free_thresh = 32,
-		.rx_drop_en = 0,
+		/* If no descriptors available, pkts are dropped by default */
+		.rx_drop_en = 1,
 	};
 
 	dev_info->default_txconf = (struct rte_eth_txconf) {
-- 
2.14.2

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

* [dpdk-stable] patch 'drivers/net: fix icc deprecated parameter warning' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (26 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'net/bnxt: fix Rx drop setting' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'doc: fix a typo in the EAL guide' " luca.boccassi
                   ` (16 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From bd5f6c12ce22136b6c87aba0fccfb79b35b1f283 Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Fri, 13 Apr 2018 23:21:08 +0100
Subject: [PATCH] drivers/net: fix icc deprecated parameter warning

[ upstream commit f16d0b36f8168a4c8ec71af178be558008008b98 ]

With icc (ICC) 18.0.1 20171018, -wd usage generates following warning:

icc: command line remark #10010: option '-wd3656' is deprecated and will
be removed in a future release. See '-help deprecated'

"icc -help deprecated" output is:
-wd                      use -diag-disable

Based on above information "-wd" converted to "-diag-disable"

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 drivers/net/bnx2x/Makefile   | 2 +-
 drivers/net/cxgbe/Makefile   | 2 +-
 drivers/net/e1000/Makefile   | 3 ++-
 drivers/net/fm10k/Makefile   | 3 ++-
 drivers/net/i40e/Makefile    | 2 +-
 drivers/net/ixgbe/Makefile   | 5 +++--
 drivers/net/qede/Makefile    | 4 ++--
 drivers/net/vmxnet3/Makefile | 3 ++-
 8 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/net/bnx2x/Makefile b/drivers/net/bnx2x/Makefile
index e971fb667..dc1c7bd2f 100644
--- a/drivers/net/bnx2x/Makefile
+++ b/drivers/net/bnx2x/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_pmd_bnx2x_version.map
 LIBABIVER := 1
 
 ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
-CFLAGS += -wd188 #188: enumerated type mixed with another type
+CFLAGS += -diag-disable 188 #188: enumerated type mixed with another type
 endif
 
 #
diff --git a/drivers/net/cxgbe/Makefile b/drivers/net/cxgbe/Makefile
index bfcc3159f..03c74d249 100644
--- a/drivers/net/cxgbe/Makefile
+++ b/drivers/net/cxgbe/Makefile
@@ -49,7 +49,7 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
 #
-CFLAGS_BASE_DRIVER = -wd188
+CFLAGS_BASE_DRIVER = -diag-disable 188
 else
 #
 # CFLAGS for gcc/clang
diff --git a/drivers/net/e1000/Makefile b/drivers/net/e1000/Makefile
index 57a60f0fc..3858148fd 100644
--- a/drivers/net/e1000/Makefile
+++ b/drivers/net/e1000/Makefile
@@ -47,7 +47,8 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
 #
-CFLAGS_BASE_DRIVER = -wd177 -wd181 -wd188 -wd869 -wd2259
+CFLAGS_BASE_DRIVER  = -diag-disable 177 -diag-disable 181 -diag-disable 188
+CFLAGS_BASE_DRIVER += -diag-disable 869 -diag-disable 2259
 else
 #
 # CFLAGS for gcc/clang
diff --git a/drivers/net/fm10k/Makefile b/drivers/net/fm10k/Makefile
index afcbd1d83..4b1c194aa 100644
--- a/drivers/net/fm10k/Makefile
+++ b/drivers/net/fm10k/Makefile
@@ -47,7 +47,8 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
 #
-CFLAGS_BASE_DRIVER = -wd174 -wd593 -wd869 -wd981 -wd2259
+CFLAGS_BASE_DRIVER  = -diag-disable 174 -diag-disable 593 -diag-disable 869
+CFLAGS_BASE_DRIVER += -diag-disable 981 -diag-disable 2259
 
 else ifeq ($(CONFIG_RTE_TOOLCHAIN_CLANG),y)
 
diff --git a/drivers/net/i40e/Makefile b/drivers/net/i40e/Makefile
index 9c9a8671d..8fb4da49e 100644
--- a/drivers/net/i40e/Makefile
+++ b/drivers/net/i40e/Makefile
@@ -49,7 +49,7 @@ LIBABIVER := 1
 # to disable warnings
 #
 ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
-CFLAGS_BASE_DRIVER = -wd593 -wd188
+CFLAGS_BASE_DRIVER = -diag-disable 593 -diag-disable 188
 else ifeq ($(CONFIG_RTE_TOOLCHAIN_CLANG),y)
 CFLAGS_BASE_DRIVER += -Wno-sign-compare
 CFLAGS_BASE_DRIVER += -Wno-unused-value
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile
index 94ddc7b87..516ff3058 100644
--- a/drivers/net/ixgbe/Makefile
+++ b/drivers/net/ixgbe/Makefile
@@ -47,9 +47,10 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
 #
-CFLAGS_BASE_DRIVER = -wd174 -wd593 -wd869 -wd981 -wd2259
+CFLAGS_BASE_DRIVER  = -diag-disable 174 -diag-disable 593 -diag-disable 869
+CFLAGS_BASE_DRIVER += -diag-disable 981 -diag-disable 2259
 
-CFLAGS_ixgbe_rxtx.o += -wd3656
+CFLAGS_ixgbe_rxtx.o += -diag-disable 3656
 
 else ifeq ($(CONFIG_RTE_TOOLCHAIN_CLANG),y)
 #
diff --git a/drivers/net/qede/Makefile b/drivers/net/qede/Makefile
index 18150b586..323423ecd 100644
--- a/drivers/net/qede/Makefile
+++ b/drivers/net/qede/Makefile
@@ -67,8 +67,8 @@ ifeq ($(shell clang -Wno-pointer-bool-conversion -Werror -E - < /dev/null > /dev
 CFLAGS_BASE_DRIVER += -Wno-pointer-bool-conversion
 endif
 else #ICC
-CFLAGS_BASE_DRIVER += -wd188   #188: enumerated type mixed with another type
-CFLAGS_qede_ethdev.o += -wd279 #279: controlling expression is constant
+CFLAGS_BASE_DRIVER += -diag-disable 188   #188: enumerated type mixed with another type
+CFLAGS_qede_ethdev.o += -diag-disable 279 #279: controlling expression is constant
 endif
 
 #
diff --git a/drivers/net/vmxnet3/Makefile b/drivers/net/vmxnet3/Makefile
index 23ff1da29..f03e11543 100644
--- a/drivers/net/vmxnet3/Makefile
+++ b/drivers/net/vmxnet3/Makefile
@@ -43,7 +43,8 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
 #
-CFLAGS_BASE_DRIVER = -wd174 -wd593 -wd869 -wd981 -wd2259
+CFLAGS_BASE_DRIVER  = -diag-disable 174 -diag-disable 593 -diag-disable 869
+CFLAGS_BASE_DRIVER += -diag-disable 981 -diag-disable 2259
 
 else ifeq ($(CONFIG_RTE_TOOLCHAIN_CLANG),y)
 #
-- 
2.14.2

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

* [dpdk-stable] patch 'doc: fix a typo in the EAL guide' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (27 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'drivers/net: fix icc deprecated parameter warning' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'mbuf: fix Tx checksum offload API doc' " luca.boccassi
                   ` (15 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Rami Rosen; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2db36aaaf4f92d257facca0af8a24bd71f72a6b6 Mon Sep 17 00:00:00 2001
From: Rami Rosen <rami.rosen@intel.com>
Date: Sat, 21 Apr 2018 23:03:37 -0400
Subject: [PATCH] doc: fix a typo in the EAL guide

[ upstream commit cdba9376c03640605cfe976d96ca91010878a00b ]

This patch fixes a trivial typo in the programmer's guide.

Fixes: 1733be6d3147 ("doc: new eal multi-pthread feature")

Signed-off-by: Rami Rosen <rami.rosen@intel.com>
---
 doc/guides/prog_guide/env_abstraction_layer.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 10a10a883..110e3a28d 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -359,7 +359,7 @@ Known Issues
 
 + rte_timer
 
-  Running  ``rte_timer_manager()`` on a non-EAL pthread is not allowed. However, resetting/stopping the timer from a non-EAL pthread is allowed.
+  Running  ``rte_timer_manage()`` on a non-EAL pthread is not allowed. However, resetting/stopping the timer from a non-EAL pthread is allowed.
 
 + rte_log
 
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: fix Tx checksum offload API doc' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (28 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'doc: fix a typo in the EAL guide' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: do not set default op status' " luca.boccassi
                   ` (14 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 24e25138d6ca6b5bd9b20a8ba05fac67c74deda4 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 20 Apr 2018 01:39:52 +0200
Subject: [PATCH] mbuf: fix Tx checksum offload API doc

[ upstream commit f00dcb7b0a74928b8b846f73b37386d7b1bb4869 ]

When introducing rte_eth_tx_prepare(), the constraints on checksum
pre-filling for Tx offloads were relaxed because implemented in
the PMDs with rte_net_intel_cksum_flags_prepare() helper.
As a consequence, these old requirements are removed for:
	- PKT_TX_OUTER_IP_CKSUM
	- PKT_TX_IP_CKSUM
	- PKT_TX_[L4]_CKSUM
	- PKT_TX_TCP_SEG

Not sure SCTP offload is properly implemented though.

A reference to rte_eth_tx_prepare() is added in rte_eth_tx_burst() doc.

Fixes: 609dd68ef14f ("mbuf: enhance the API documentation of offload flags")
Fixes: 4fb7e803eb1a ("ethdev: add Tx preparation")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_mbuf/rte_mbuf.h | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index bc015d033..b6a01c992 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -204,12 +204,8 @@ extern "C" {
  *  - set the PKT_TX_TCP_SEG flag in mbuf->ol_flags (this flag implies
  *    PKT_TX_TCP_CKSUM)
  *  - set the flag PKT_TX_IPV4 or PKT_TX_IPV6
- *  - if it's IPv4, set the PKT_TX_IP_CKSUM flag and write the IP checksum
- *    to 0 in the packet
+ *  - if it's IPv4, set the PKT_TX_IP_CKSUM flag
  *  - fill the mbuf offload information: l2_len, l3_len, l4_len, tso_segsz
- *  - calculate the pseudo header checksum without taking ip_len in account,
- *    and set it in the TCP header. Refer to rte_ipv4_phdr_cksum() and
- *    rte_ipv6_phdr_cksum() that can be used as helpers.
  */
 #define PKT_TX_TCP_SEG       (1ULL << 50)
 
@@ -222,9 +218,6 @@ extern "C" {
  *  - fill l2_len and l3_len in mbuf
  *  - set the flags PKT_TX_TCP_CKSUM, PKT_TX_SCTP_CKSUM or PKT_TX_UDP_CKSUM
  *  - set the flag PKT_TX_IPV4 or PKT_TX_IPV6
- *  - calculate the pseudo header checksum and set it in the L4 header (only
- *    for TCP or UDP). See rte_ipv4_phdr_cksum() and rte_ipv6_phdr_cksum().
- *    For SCTP, set the crc field to 0.
  */
 #define PKT_TX_L4_NO_CKSUM   (0ULL << 52) /**< Disable L4 cksum of TX pkt. */
 #define PKT_TX_TCP_CKSUM     (1ULL << 52) /**< TCP cksum of TX pkt. computed by NIC. */
@@ -236,7 +229,6 @@ extern "C" {
  * Offload the IP checksum in the hardware. The flag PKT_TX_IPV4 should
  * also be set by the application, although a PMD will only check
  * PKT_TX_IP_CKSUM.
- *  - set the IP checksum field in the packet to 0
  *  - fill the mbuf offload information: l2_len, l3_len
  */
 #define PKT_TX_IP_CKSUM      (1ULL << 54)
@@ -261,10 +253,8 @@ extern "C" {
 
 /**
  * Offload the IP checksum of an external header in the hardware. The
- * flag PKT_TX_OUTER_IPV4 should also be set by the application, alto ugh
- * a PMD will only check PKT_TX_IP_CKSUM.  The IP checksum field in the
- * packet must be set to 0.
- *  - set the outer IP checksum field in the packet to 0
+ * flag PKT_TX_OUTER_IPV4 should also be set by the application, although
+ * a PMD will only check PKT_TX_OUTER_IP_CKSUM.
  *  - fill the mbuf offload information: outer_l2_len, outer_l3_len
  */
 #define PKT_TX_OUTER_IP_CKSUM   (1ULL << 58)
-- 
2.14.2

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

* [dpdk-stable] patch 'crypto/zuc: do not set default op status' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (29 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'mbuf: fix Tx checksum offload API doc' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: remove unnecessary check' " luca.boccassi
                   ` (13 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Pablo de Lara; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 4a2bf4ad208697074fa7808601763eb73f9b92fc Mon Sep 17 00:00:00 2001
From: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Date: Thu, 19 Apr 2018 15:55:39 +0100
Subject: [PATCH] crypto/zuc: do not set default op status

[ upstream commit 466dcf34d728db0ae86d83f37dd7db5c20dd2979 ]

When crypto operations are allocated from the operation
pool, their status get reset to NOT_PROCESSED.
Therefore, there is no need to set this status again.

Fixes: cf7685d68f00 ("crypto/zuc: add driver for ZUC library")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 drivers/crypto/zuc/rte_zuc_pmd.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c
index 7057fcaca..6eebef6a6 100644
--- a/drivers/crypto/zuc/rte_zuc_pmd.c
+++ b/drivers/crypto/zuc/rte_zuc_pmd.c
@@ -371,9 +371,6 @@ zuc_pmd_enqueue_burst(void *queue_pair, struct rte_crypto_op **ops,
 	for (i = 0; i < nb_ops; i++) {
 		curr_c_op = ops[i];
 
-		/* Set status as enqueued (not processed yet) by default. */
-		curr_c_op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
-
 		curr_sess = zuc_get_session(qp, curr_c_op);
 		if (unlikely(curr_sess == NULL ||
 				curr_sess->op == ZUC_OP_NOT_SUPPORTED)) {
-- 
2.14.2

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

* [dpdk-stable] patch 'crypto/zuc: remove unnecessary check' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (30 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: do not set default op status' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'mempool: fix leak when no objects are populated' " luca.boccassi
                   ` (12 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Pablo de Lara; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a132e48556a6bc4c2ff5e2d57d0e5fd52b04b9b5 Mon Sep 17 00:00:00 2001
From: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Date: Thu, 19 Apr 2018 15:55:40 +0100
Subject: [PATCH] crypto/zuc: remove unnecessary check

[ upstream commit 5943233a687af76672d45a15755f5432fb4c73e9 ]

When processing operations, the operation type was being
checked to avoid if it was set to NOT SUPPORTED.
In data path, doing so is not required since that is already
checked when creating the crypto session,
so that case will not ever happen.

Fixes: cf7685d68f00 ("crypto/zuc: add driver for ZUC library")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 drivers/crypto/zuc/rte_zuc_pmd.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c
index 6eebef6a6..47eb13a1c 100644
--- a/drivers/crypto/zuc/rte_zuc_pmd.c
+++ b/drivers/crypto/zuc/rte_zuc_pmd.c
@@ -372,8 +372,7 @@ zuc_pmd_enqueue_burst(void *queue_pair, struct rte_crypto_op **ops,
 		curr_c_op = ops[i];
 
 		curr_sess = zuc_get_session(qp, curr_c_op);
-		if (unlikely(curr_sess == NULL ||
-				curr_sess->op == ZUC_OP_NOT_SUPPORTED)) {
+		if (unlikely(curr_sess == NULL)) {
 			curr_c_op->status =
 					RTE_CRYPTO_OP_STATUS_INVALID_SESSION;
 			break;
-- 
2.14.2

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

* [dpdk-stable] patch 'mempool: fix leak when no objects are populated' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (31 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: remove unnecessary check' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'test: fix memory flags test for low NUMA nodes number' " luca.boccassi
                   ` (11 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 576ef3d15bf7c6916edae9196aad65d24f459f25 Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Mon, 16 Apr 2018 14:24:30 +0100
Subject: [PATCH] mempool: fix leak when no objects are populated

[ upstream commit 25e6755056eaba45921b898b9986af68277ac6ac ]

Fixes: 84121f197187 ("mempool: store memory chunks in a list")

Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_mempool/rte_mempool.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index aa513b973..011fa9bbd 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -396,12 +396,18 @@ rte_mempool_populate_phys(struct rte_mempool *mp, char *vaddr,
 	}
 
 	/* not enough room to store one object */
-	if (i == 0)
-		return -EINVAL;
+	if (i == 0) {
+		ret = -EINVAL;
+		goto fail;
+	}
 
 	STAILQ_INSERT_TAIL(&mp->mem_list, memhdr, next);
 	mp->nb_mem_chunks++;
 	return i;
+
+fail:
+	rte_free(memhdr);
+	return ret;
 }
 
 /* Add objects in the pool, using a table of physical pages. Return the
-- 
2.14.2

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

* [dpdk-stable] patch 'test: fix memory flags test for low NUMA nodes number' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (32 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'mempool: fix leak when no objects are populated' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:44 ` [dpdk-stable] patch 'test/mempool: fix autotest retry' " luca.boccassi
                   ` (10 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Phil Yang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 6419bb92cdea937deeaa3eab553131252d90d0cd Mon Sep 17 00:00:00 2001
From: Phil Yang <phil.yang@arm.com>
Date: Tue, 6 Feb 2018 10:21:38 +0800
Subject: [PATCH] test: fix memory flags test for low NUMA nodes number

[ upstream commit 896af46bd1ade6d8d1f452f03c6e08e0965d7ef9 ]

Since RTE_MAX_NUMA_NODES is configurable, the existing socket number
could greater than RTE_MAX_NUMA_NODES. Optimize test case to cover this
situation.(i.e RTE_MAX_NUMA_NODES=1)

Fixes: 45f1b6e8680a ("app: add new tests on eal flags")

Signed-off-by: Phil Yang <phil.yang@arm.com>
---
 app/test/test_eal_flags.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 91b40664b..15248ea28 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -66,7 +66,7 @@
 #define memtest "memtest"
 #define memtest1 "memtest1"
 #define memtest2 "memtest2"
-#define SOCKET_MEM_STRLEN (RTE_MAX_NUMA_NODES * 10)
+#define SOCKET_MEM_STRLEN (RTE_MAX_NUMA_NODES * 20)
 #define launch_proc(ARGV) process_dup(ARGV, \
 		sizeof(ARGV)/(sizeof(ARGV[0])), __func__)
 
@@ -1241,10 +1241,11 @@ test_memory_flags(void)
 #ifdef RTE_EXEC_ENV_BSDAPP
 	int i, num_sockets = 1;
 #else
-	int i, num_sockets = get_number_of_sockets();
+	int i, num_sockets = RTE_MIN(get_number_of_sockets(),
+			RTE_MAX_NUMA_NODES);
 #endif
 
-	if (num_sockets <= 0 || num_sockets > RTE_MAX_NUMA_NODES) {
+	if (num_sockets <= 0) {
 		printf("Error - cannot get number of sockets!\n");
 		return -1;
 	}
-- 
2.14.2

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

* [dpdk-stable] patch 'test/mempool: fix autotest retry' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (33 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'test: fix memory flags test for low NUMA nodes number' " luca.boccassi
@ 2018-05-01 10:44 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix endianness of flag' " luca.boccassi
                   ` (9 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:44 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From b06cd33ae4bc15e729bdf193c1b63ba90b314560 Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Wed, 25 Apr 2018 18:00:37 +0100
Subject: [PATCH] test/mempool: fix autotest retry

[ upstream commit 2d645858a93e21a41e84928d4fb869318c3639a6 ]

Single producer / single consumer mempool handle is stored in static
variable and the mempool allocated if stored value is NULL.
If the mempool is freed, NULL should be restored to make sure that
the mempool is allocated once again next time when the test is run.

Fixes: 8ef772aee072 ("app/test: rework mempool test")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 app/test/test_mempool.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c
index 715b250c3..8fb13ce67 100644
--- a/app/test/test_mempool.c
+++ b/app/test/test_mempool.c
@@ -356,17 +356,17 @@ test_mempool_sp_sc(void)
 	}
 	if (rte_mempool_lookup("test_mempool_sp_sc") != mp_spsc) {
 		printf("Cannot lookup mempool from its name\n");
-		rte_mempool_free(mp_spsc);
-		RET_ERR();
+		ret = -1;
+		goto err;
 	}
 	lcore_next = rte_get_next_lcore(lcore_id, 0, 1);
 	if (lcore_next >= RTE_MAX_LCORE) {
-		rte_mempool_free(mp_spsc);
-		RET_ERR();
+		ret = -1;
+		goto err;
 	}
 	if (rte_eal_lcore_role(lcore_next) != ROLE_RTE) {
-		rte_mempool_free(mp_spsc);
-		RET_ERR();
+		ret = -1;
+		goto err;
 	}
 	rte_spinlock_init(&scsp_spinlock);
 	memset(scsp_obj_table, 0, sizeof(scsp_obj_table));
@@ -377,7 +377,10 @@ test_mempool_sp_sc(void)
 
 	if (rte_eal_wait_lcore(lcore_next) < 0)
 		ret = -1;
+
+err:
 	rte_mempool_free(mp_spsc);
+	mp_spsc = NULL;
 
 	return ret;
 }
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix endianness of flag' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (34 preceding siblings ...)
  2018-05-01 10:44 ` [dpdk-stable] patch 'test/mempool: fix autotest retry' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags for tunnel frames' " luca.boccassi
                   ` (8 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 4180b8d9d6b5207549c968f6bab5f60f73f36745 Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Mon, 16 Apr 2018 18:11:15 -0700
Subject: [PATCH] net/bnxt: fix endianness of flag

[ upstream commit 8e92b4f1553dc45b6093ba1cb9162b98b4cf95ce ]

In bnxt_hwrm_vnic_alloc, use rte_cpu_to_le_32 while setting the flags.

Fixes: 2691827e82c0 ("net/bnxt: add HWRM VNIC alloc")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 8ff4c15d4..d790b991c 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -853,7 +853,8 @@ int bnxt_hwrm_vnic_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 	HWRM_PREP(req, VNIC_ALLOC, -1, resp);
 
 	if (vnic->func_default)
-		req.flags = HWRM_VNIC_ALLOC_INPUT_FLAGS_DEFAULT;
+		req.flags =
+			rte_cpu_to_le_32(HWRM_VNIC_ALLOC_INPUT_FLAGS_DEFAULT);
 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
 
 	HWRM_CHECK_RESULT;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags for tunnel frames' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (35 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix endianness of flag' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: avoid freeing memzone multiple times' " luca.boccassi
                   ` (7 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f72956cd7d663cdadfa6fa18ddde4329fc595b6d Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Mon, 16 Apr 2018 18:11:17 -0700
Subject: [PATCH] net/bnxt: fix Rx checksum flags for tunnel frames

[ upstream commit f3a050b65852ba3cfaebdae24cdd4edd54f82380 ]

Fix Rx checksum status for tunnel frames as seen by hardware.
Current code does not handle cases for tunnel frames correctly.

Fixes: 7ec39d8c524b ("net/bnxt: update status of Rx IP/L4 CKSUM")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.h | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h
index 111a21362..40c9df440 100644
--- a/drivers/net/bnxt/bnxt_rxr.h
+++ b/drivers/net/bnxt/bnxt_rxr.h
@@ -37,17 +37,25 @@
 #define B_RX_DB(db, prod)						\
 		(*(uint32_t *)db = (DB_KEY_RX | prod))
 
-#define RX_CMP_L4_CS_BITS	rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_L4_CS_CALC)
+#define RX_CMP_L4_CS_BITS	\
+	rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_L4_CS_CALC | \
+			 RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC)
 
-#define RX_CMP_L4_CS_ERR_BITS	rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_L4_CS_ERROR)
+#define RX_CMP_L4_CS_ERR_BITS	\
+	rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_L4_CS_ERROR | \
+			 RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR)
 
 #define RX_CMP_L4_CS_OK(rxcmp1)						\
 	    (((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS) &&		\
 	     !((rxcmp1)->errors_v2 & RX_CMP_L4_CS_ERR_BITS))
 
-#define RX_CMP_IP_CS_ERR_BITS	rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_IP_CS_ERROR)
+#define RX_CMP_IP_CS_ERR_BITS	\
+	rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_IP_CS_ERROR | \
+			 RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR)
 
-#define RX_CMP_IP_CS_BITS	rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC)
+#define RX_CMP_IP_CS_BITS	\
+	rte_cpu_to_le_32(RX_PKT_CMPL_FLAGS2_IP_CS_CALC | \
+			 RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC)
 
 #define RX_CMP_IP_CS_OK(rxcmp1)						\
 		(((rxcmp1)->flags2 & RX_CMP_IP_CS_BITS) &&	\
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: avoid freeing memzone multiple times' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (36 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags for tunnel frames' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/thunderx: fix MTU configuration for jumbo packets' " luca.boccassi
                   ` (6 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 05777b5e744a9ac45f24760aefb4de701fe0010e Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Mon, 16 Apr 2018 18:11:25 -0700
Subject: [PATCH] net/bnxt: avoid freeing memzone multiple times

[ upstream commit 23460b4c6a7ab68e2b6d217460684a554f7e78eb ]

Since we are storing the mem_zone address for each ring created,
we are freeing the same address multiple times.
For example the memory zone created for Rx is being freed during
Rx ring cleanup, AGG ring cleanup and CQ cleanup.
Avoid this by storing the memory zone address in RXQ instead and
free it as a part of queue_release dev_op.
In the same way do the same for TX queues as well.

Fixes: 51c87ebafc7d ("net/bnxt: add Tx queue create/destroy")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ring.c | 10 +++++++---
 drivers/net/bnxt/bnxt_ring.h |  4 ++--
 drivers/net/bnxt/bnxt_rxq.c  |  4 +++-
 drivers/net/bnxt/bnxt_rxq.h  |  1 +
 drivers/net/bnxt/bnxt_txq.c  |  4 +++-
 drivers/net/bnxt/bnxt_txq.h  |  1 +
 6 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
index 2bceb4dba..6091a8840 100644
--- a/drivers/net/bnxt/bnxt_ring.c
+++ b/drivers/net/bnxt/bnxt_ring.c
@@ -54,7 +54,7 @@ void bnxt_free_ring(struct bnxt_ring *ring)
 		memset((char *)*ring->vmem, 0, ring->vmem_size);
 		*ring->vmem = NULL;
 	}
-	rte_memzone_free((const struct rte_memzone *)ring->mem_zone);
+	ring->mem_zone = NULL;
 }
 
 /*
@@ -91,12 +91,14 @@ int bnxt_init_ring_grps(struct bnxt *bp)
  * rx bd ring - Only non-zero length if rx_ring_info is not NULL
  */
 int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,
-			    struct bnxt_tx_ring_info *tx_ring_info,
-			    struct bnxt_rx_ring_info *rx_ring_info,
+			    struct bnxt_tx_queue *txq,
+			    struct bnxt_rx_queue *rxq,
 			    struct bnxt_cp_ring_info *cp_ring_info,
 			    const char *suffix)
 {
 	struct bnxt_ring *cp_ring = cp_ring_info->cp_ring_struct;
+	struct bnxt_rx_ring_info *rx_ring_info = rxq ? rxq->rx_ring : NULL;
+	struct bnxt_tx_ring_info *tx_ring_info = txq ? txq->tx_ring : NULL;
 	struct bnxt_ring *tx_ring;
 	struct bnxt_ring *rx_ring;
 	struct rte_pci_device *pdev = bp->pdev;
@@ -152,6 +154,7 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,
 	memset(mz->addr, 0, mz->len);
 
 	if (tx_ring_info) {
+		txq->mz = mz;
 		tx_ring = tx_ring_info->tx_ring_struct;
 
 		tx_ring->bd = ((char *)mz->addr + tx_ring_start);
@@ -171,6 +174,7 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,
 	}
 
 	if (rx_ring_info) {
+		rxq->mz = mz;
 		rx_ring = rx_ring_info->rx_ring_struct;
 
 		rx_ring->bd = ((char *)mz->addr + rx_ring_start);
diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h
index 22a56eb13..51fbb5cbb 100644
--- a/drivers/net/bnxt/bnxt_ring.h
+++ b/drivers/net/bnxt/bnxt_ring.h
@@ -95,8 +95,8 @@ struct bnxt_cp_ring_info;
 void bnxt_free_ring(struct bnxt_ring *ring);
 int bnxt_init_ring_grps(struct bnxt *bp);
 int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,
-			    struct bnxt_tx_ring_info *tx_ring_info,
-			    struct bnxt_rx_ring_info *rx_ring_info,
+			    struct bnxt_tx_queue *txq,
+			    struct bnxt_rx_queue *rxq,
 			    struct bnxt_cp_ring_info *cp_ring_info,
 			    const char *suffix);
 int bnxt_alloc_hwrm_rings(struct bnxt *bp);
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index cddf17d58..5bdb55bfc 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -256,6 +256,8 @@ void bnxt_rx_queue_release_op(void *rx_queue)
 		bnxt_free_ring(rxq->cp_ring->cp_ring_struct);
 
 		bnxt_free_rxq_stats(rxq);
+		rte_memzone_free(rxq->mz);
+		rxq->mz = NULL;
 
 		rte_free(rxq);
 	}
@@ -306,7 +308,7 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,
 
 	eth_dev->data->rx_queues[queue_idx] = rxq;
 	/* Allocate RX ring hardware descriptors */
-	if (bnxt_alloc_rings(bp, queue_idx, NULL, rxq->rx_ring, rxq->cp_ring,
+	if (bnxt_alloc_rings(bp, queue_idx, NULL, rxq, rxq->cp_ring,
 			"rxr")) {
 		RTE_LOG(ERR, PMD, "ring_dma_zone_reserve for rx_ring failed!");
 		bnxt_rx_queue_release_op(rxq);
diff --git a/drivers/net/bnxt/bnxt_rxq.h b/drivers/net/bnxt/bnxt_rxq.h
index 955432983..2f8eb8963 100644
--- a/drivers/net/bnxt/bnxt_rxq.h
+++ b/drivers/net/bnxt/bnxt_rxq.h
@@ -58,6 +58,7 @@ struct bnxt_rx_queue {
 	uint32_t			rx_buf_use_size;  /* useable size */
 	struct bnxt_rx_ring_info	*rx_ring;
 	struct bnxt_cp_ring_info	*cp_ring;
+	const struct rte_memzone *mz;
 };
 
 void bnxt_free_rxq_stats(struct bnxt_rx_queue *rxq);
diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
index 99dddddfc..0d2cb499f 100644
--- a/drivers/net/bnxt/bnxt_txq.c
+++ b/drivers/net/bnxt/bnxt_txq.c
@@ -93,6 +93,8 @@ void bnxt_tx_queue_release_op(void *tx_queue)
 		bnxt_free_ring(txq->cp_ring->cp_ring_struct);
 
 		bnxt_free_txq_stats(txq);
+		rte_memzone_free(txq->mz);
+		txq->mz = NULL;
 
 		rte_free(txq);
 	}
@@ -140,7 +142,7 @@ int bnxt_tx_queue_setup_op(struct rte_eth_dev *eth_dev,
 	txq->port_id = eth_dev->data->port_id;
 
 	/* Allocate TX ring hardware descriptors */
-	if (bnxt_alloc_rings(bp, queue_idx, txq->tx_ring, NULL, txq->cp_ring,
+	if (bnxt_alloc_rings(bp, queue_idx, txq, NULL, txq->cp_ring,
 			"txr")) {
 		RTE_LOG(ERR, PMD, "ring_dma_zone_reserve for tx_ring failed!");
 		bnxt_tx_queue_release_op(txq);
diff --git a/drivers/net/bnxt/bnxt_txq.h b/drivers/net/bnxt/bnxt_txq.h
index 16f3a0bdd..8a23f0034 100644
--- a/drivers/net/bnxt/bnxt_txq.h
+++ b/drivers/net/bnxt/bnxt_txq.h
@@ -61,6 +61,7 @@ struct bnxt_tx_queue {
 
 	unsigned int		cp_nr_rings;
 	struct bnxt_cp_ring_info	*cp_ring;
+	const struct rte_memzone *mz;
 };
 
 void bnxt_free_txq_stats(struct bnxt_tx_queue *txq);
-- 
2.14.2

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

* [dpdk-stable] patch 'net/thunderx: fix MTU configuration for jumbo packets' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (37 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: avoid freeing memzone multiple times' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnx2x: fix for PCI FLR after ungraceful exit' " luca.boccassi
                   ` (5 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Nitin Saxena; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 09478aeaa6030e1988bac0593552b51d72d96ef4 Mon Sep 17 00:00:00 2001
From: Nitin Saxena <nitin.saxena@caviumnetworks.com>
Date: Mon, 16 Apr 2018 10:44:47 +0000
Subject: [PATCH] net/thunderx: fix MTU configuration for jumbo packets

[ upstream commit c77875fbb8004c22e9910338f93b7be3e29ab9f9 ]

thunderx pmd driver passes dev_info.max_rx_pktlen as
9200 (via rte_eth_dev_info_get()) to application.
But, when application tries to set MTU as
(9200 - sizeof(ethernet_header_t)) the operation fails
because of missing CRC and VLAN additions.

This patch fixes the following for thunderx pmd driver:
 - Sets NIC_HW_MAX_FRS to 9216 (instead of 9200)
 - Sets NIC_HW_MAX_MTU to 9190 (NIC_HW_MAX_FRS - ETH_HLEN
   - ETHER_CRC_LEN - 2*VLAN_HLEN)
 - Sets dev_info->max_rx_pkt_len to NIC_HW_MAX_MTU +
   ETH_HLEN (instead of 9200)
 - Allows rte_eth_dev_set_mtu() to pass if application
   (like VPP) calls rte_eth_dev_set_mtu() before
   rte_eth_dev_start() by putting appropriate check for
   dev->data->dev_started

Fixes: 65d9804edc05 ("net/thunderx: support MTU configuration")

Signed-off-by: Nitin Saxena <nitin.saxena@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 drivers/net/thunderx/base/nicvf_hw_defs.h |  5 ++++-
 drivers/net/thunderx/nicvf_ethdev.c       | 15 +++++++--------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/net/thunderx/base/nicvf_hw_defs.h b/drivers/net/thunderx/base/nicvf_hw_defs.h
index 00dd2feb9..256e8daf8 100644
--- a/drivers/net/thunderx/base/nicvf_hw_defs.h
+++ b/drivers/net/thunderx/base/nicvf_hw_defs.h
@@ -197,7 +197,10 @@
 
 /* Min/Max packet size */
 #define NIC_HW_MIN_FRS                  (64)
-#define NIC_HW_MAX_FRS                  (9200) /* 9216 max pkt including FCS */
+/* ETH_HLEN+ETH_FCS_LEN+2*VLAN_HLEN */
+#define NIC_HW_L2_OVERHEAD              (26)
+#define NIC_HW_MAX_MTU                  (9190)
+#define NIC_HW_MAX_FRS                  (NIC_HW_MAX_MTU + NIC_HW_L2_OVERHEAD)
 #define NIC_HW_MAX_SEGS                 (12)
 
 /* Descriptor alignments */
diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index d229bdff3..d0f0d52dd 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -161,7 +161,7 @@ static int
 nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 {
 	struct nicvf *nic = nicvf_pmd_priv(dev);
-	uint32_t buffsz, frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
+	uint32_t buffsz, frame_size = mtu + NIC_HW_L2_OVERHEAD;
 	size_t i;
 
 	PMD_INIT_FUNC_TRACE();
@@ -178,7 +178,7 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
 	 */
-	if (!dev->data->scattered_rx &&
+	if (dev->data->dev_started && !dev->data->scattered_rx &&
 		(frame_size + 2 * VLAN_TAG_SIZE > buffsz))
 		return -EINVAL;
 
@@ -192,11 +192,11 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	else
 		dev->data->dev_conf.rxmode.jumbo_frame = 0;
 
-	if (nicvf_mbox_update_hw_max_frs(nic, frame_size))
+	if (nicvf_mbox_update_hw_max_frs(nic, mtu))
 		return -EINVAL;
 
-	/* Update max frame size */
-	dev->data->dev_conf.rxmode.max_rx_pkt_len = (uint32_t)frame_size;
+	/* Update max_rx_pkt_len */
+	dev->data->dev_conf.rxmode.max_rx_pkt_len = mtu + ETHER_HDR_LEN;
 	nic->mtu = mtu;
 
 	for (i = 0; i < nic->sqs_count; i++)
@@ -1338,7 +1338,7 @@ nicvf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	PMD_INIT_FUNC_TRACE();
 
 	dev_info->min_rx_bufsize = ETHER_MIN_MTU;
-	dev_info->max_rx_pktlen = NIC_HW_MAX_FRS;
+	dev_info->max_rx_pktlen = NIC_HW_MAX_MTU + ETHER_HDR_LEN;
 	dev_info->max_rx_queues =
 			(uint16_t)MAX_RCV_QUEUES_PER_QS * (MAX_SQS_PER_VF + 1);
 	dev_info->max_tx_queues =
@@ -1658,8 +1658,7 @@ nicvf_dev_start(struct rte_eth_dev *dev)
 	/* Setup MTU based on max_rx_pkt_len or default */
 	mtu = dev->data->dev_conf.rxmode.jumbo_frame ?
 		dev->data->dev_conf.rxmode.max_rx_pkt_len
-			-  ETHER_HDR_LEN - ETHER_CRC_LEN
-		: ETHER_MTU;
+			-  ETHER_HDR_LEN : ETHER_MTU;
 
 	if (nicvf_dev_set_mtu(dev, mtu)) {
 		PMD_INIT_LOG(ERR, "Failed to set default mtu size");
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnx2x: fix for PCI FLR after ungraceful exit' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (38 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/thunderx: fix MTU configuration for jumbo packets' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/vmxnet3: keep link state consistent' " luca.boccassi
                   ` (4 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From fb6e2634df1208f178ed812f732b2bc8cda81112 Mon Sep 17 00:00:00 2001
From: Rasesh Mody <rasesh.mody@qlogic.com>
Date: Wed, 18 Apr 2018 13:15:08 -0700
Subject: [PATCH] net/bnx2x: fix for PCI FLR after ungraceful exit

[ upstream commit 66ba596aa6b5750b16549a322ef9a09fa7f0e3f6 ]

This patch provides a fix for PCI function level reset after an
ungraceful exit from an application. The fix is to enable internal
target read as part of device attach before getting device information
from device config space, device itself and shared memory. In addition
to that, add a 200ms delay for the recovery flow to complete.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Rasesh Mody <rasesh.mody@qlogic.com>
---
 drivers/net/bnx2x/bnx2x.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 0d16a737c..9ad9d2baa 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -8289,16 +8289,6 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 			REG_WR(sc, PXP2_REG_PGL_ADDR_90_F1, 0);
 			REG_WR(sc, PXP2_REG_PGL_ADDR_94_F1, 0);
 		}
-
-/*
- * Enable internal target-read (in case we are probed after PF
- * FLR). Must be done prior to any BAR read access. Only for
- * 57712 and up
- */
-		if (!CHIP_IS_E1x(sc)) {
-			REG_WR(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_TARGET_READ,
-			       1);
-		}
 	}
 
 	/* get the nvram size */
@@ -9675,7 +9665,17 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 	bnx2x_init_rte(sc);
 
 	if (IS_PF(sc)) {
-/* get device info and set params */
+		/* Enable internal target-read (in case we are probed after PF
+		 * FLR). Must be done prior to any BAR read access. Only for
+		 * 57712 and up
+		 */
+		if (!CHIP_IS_E1x(sc)) {
+			REG_WR(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_TARGET_READ,
+			       1);
+			DELAY(200000);
+		}
+
+		/* get device info and set params */
 		if (bnx2x_get_device_info(sc) != 0) {
 			PMD_DRV_LOG(NOTICE, "getting device info");
 			return -ENXIO;
@@ -9684,7 +9684,7 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 /* get phy settings from shmem and 'and' against admin settings */
 		bnx2x_get_phy_info(sc);
 	} else {
-/* Left mac of VF unfilled, PF should set it for VF */
+		/* Left mac of VF unfilled, PF should set it for VF */
 		memset(sc->link_params.mac_addr, 0, ETHER_ADDR_LEN);
 	}
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/vmxnet3: keep link state consistent' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (39 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnx2x: fix for PCI FLR after ungraceful exit' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix mbuf data offset initialization' " luca.boccassi
                   ` (3 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Chas Williams; +Cc: Yong Wang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 982600ace70b6ac6e308e9f50e42e967487183a8 Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Sat, 17 Mar 2018 21:45:52 -0400
Subject: [PATCH] net/vmxnet3: keep link state consistent

[ upstream commit 3a14b29bff9cc427920c83391b37cededa48fd2f ]

The vmxnet3 never attempts link speed negotiation.  As a virtual device
the link speed is vague at best.  However, it is important for certain
applications, like bonding, to see a consistent link_status.  802.3ad
requires that only links of the same cost (link speed) be enslaved.
Keeping the link status consistent in vmxnet3 avoids races with bonding
enslavement.

Fixes: 1e3a958f40b3 ("ethdev: fix link autonegotiation value")

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Yong Wang <yongwang@vmware.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index effb360b4..4c898d8e2 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -794,7 +794,7 @@ vmxnet3_dev_link_update(struct rte_eth_dev *dev,
 		link.link_status = ETH_LINK_UP;
 		link.link_duplex = ETH_LINK_FULL_DUPLEX;
 		link.link_speed = ETH_SPEED_NUM_10G;
-		link.link_autoneg = ETH_LINK_AUTONEG;
+		link.link_autoneg = ETH_LINK_FIXED;
 	}
 
 	vmxnet3_dev_atomic_write_link_status(dev, &link);
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix mbuf data offset initialization' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (40 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/vmxnet3: keep link state consistent' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'app/testpmd: fix command token' " luca.boccassi
                   ` (2 subsequent siblings)
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From ec3d9f775ce3e92c798d42ce4eeaa040ea8e1719 Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Fri, 20 Apr 2018 07:22:02 -0700
Subject: [PATCH] net/bnxt: fix mbuf data offset initialization

[ upstream commit c4fed4ff4fb20dc43036c6874c00846750990704 ]

Initialize mbuf->data_off to RTE_PKTMBUF_HEADROOM after allocation.
Without this, it might be possible that the DMA address provided
to the HW may not be in sync to what is indicated to the application
in bnxt_rx_pkt.

Fixes: 2eb53b134aae ("net/bnxt: add initial Rx code")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 5698f02f3..71f314245 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -71,6 +71,7 @@ static inline int bnxt_alloc_rx_data(struct bnxt_rx_queue *rxq,
 		return -ENOMEM;
 
 	rx_buf->mbuf = data;
+	data->data_off = RTE_PKTMBUF_HEADROOM;
 
 	rxbd->addr = rte_cpu_to_le_64(rte_mbuf_data_dma_addr_default(data));
 
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix command token' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (41 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix mbuf data offset initialization' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/nfp: fix mbufs releasing when stop or close' " luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'drivers/net: fix link autoneg value for virtual PMDs' " luca.boccassi
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From b2af4652c86acc5af6311ea621c0b4153488b8f1 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 24 Apr 2018 13:59:57 +0800
Subject: [PATCH] app/testpmd: fix command token

[ upstream commit 4c53d4eaf11551c69201b192a7da153d1d88a9a5 ]

Correct token for queue start stop command.

Fixes: 5f4ec54f1d16 ("testpmd: queue start and stop")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/test-pmd/cmdline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 7171bd631..7dbe2456a 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -1840,7 +1840,7 @@ cmdline_parse_inst_t cmd_config_rxtx_queue = {
 	.data = NULL,
 	.help_str = "port X rxq|txq ID start|stop",
 	.tokens = {
-		(void *)&cmd_config_speed_all_port,
+		(void *)&cmd_config_rxtx_queue_port,
 		(void *)&cmd_config_rxtx_queue_portid,
 		(void *)&cmd_config_rxtx_queue_rxtxq,
 		(void *)&cmd_config_rxtx_queue_qid,
-- 
2.14.2

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

* [dpdk-stable] patch 'net/nfp: fix mbufs releasing when stop or close' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (42 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'app/testpmd: fix command token' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-01 10:45 ` [dpdk-stable] patch 'drivers/net: fix link autoneg value for virtual PMDs' " luca.boccassi
  44 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Alejandro Lucero; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From d91fa14eeae5ef60bb899dfd7e498e2bf1cfe932 Mon Sep 17 00:00:00 2001
From: Alejandro Lucero <alejandro.lucero@netronome.com>
Date: Mon, 23 Apr 2018 12:23:58 +0100
Subject: [PATCH] net/nfp: fix mbufs releasing when stop or close

[ upstream commit 0c0e46c36bcc5dfe9d2aa605e1a5f714d45e0b7f ]

PMDs have the responsibility of releasing mbufs sent through xmit burst
function. NFP PMD attaches those sent mbufs to the TX ring structure,
and it is at the next time a specific ring descriptor is going to be
used when the previous linked mbuf, already transmitted at that point,
is released. Those mbufs belonging to a chained mbuf got its own link
to a ring descriptor, and they are released independently of the mbuf
head of that chain.

The problem is how those mbufs are released when the PMD is stopped or
closed. Instead of releasing those mbufs as the xmit functions does,
this is independently of being in a mbuf chain, the code calls
rte_pktmbuf_free which will release not just the mbuf head in that
chain but all the chained mbufs. The loop will try to release those
mbufs which have already been released again when chained mbufs exist.

This patch fixes the problem using rte_pktmbuf_free_seg instead.

Fixes: b812daadad0d ("nfp: add Rx and Tx")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index f70c94f08..911a3d0c6 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -323,7 +323,7 @@ nfp_net_tx_queue_release_mbufs(struct nfp_net_txq *txq)
 
 	for (i = 0; i < txq->tx_count; i++) {
 		if (txq->txbufs[i].mbuf) {
-			rte_pktmbuf_free(txq->txbufs[i].mbuf);
+			rte_pktmbuf_free_seg(txq->txbufs[i].mbuf);
 			txq->txbufs[i].mbuf = NULL;
 		}
 	}
-- 
2.14.2

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

* [dpdk-stable] patch 'drivers/net: fix link autoneg value for virtual PMDs' has been queued to LTS release 16.11.7
  2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
                   ` (43 preceding siblings ...)
  2018-05-01 10:45 ` [dpdk-stable] patch 'net/nfp: fix mbufs releasing when stop or close' " luca.boccassi
@ 2018-05-01 10:45 ` luca.boccassi
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
  44 siblings, 1 reply; 108+ messages in thread
From: luca.boccassi @ 2018-05-01 10:45 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 92df1f3782b372a851d2f7526e5b3afd8fe0dd19 Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Fri, 20 Apr 2018 01:01:24 +0100
Subject: [PATCH] drivers/net: fix link autoneg value for virtual PMDs

[ upstream commit 18869f97f163a58d29d45a2e85c6ed444b1c72e1 ]

These drivers never attempt link speed negotiation. Change link_autoneg
value to ETH_LINK_FIXED to be more accurate and consistent between PMDs.

Fixes: 1e3a958f40b3 ("ethdev: fix link autonegotiation value")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
---
 drivers/net/af_packet/rte_eth_af_packet.c | 2 +-
 drivers/net/null/rte_eth_null.c           | 2 +-
 drivers/net/pcap/rte_eth_pcap.c           | 2 +-
 drivers/net/ring/rte_eth_ring.c           | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 6d73f1279..3628e6e98 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -121,7 +121,7 @@ static struct rte_eth_link pmd_link = {
 	.link_speed = ETH_SPEED_NUM_10G,
 	.link_duplex = ETH_LINK_FULL_DUPLEX,
 	.link_status = ETH_LINK_DOWN,
-	.link_autoneg = ETH_LINK_AUTONEG
+	.link_autoneg = ETH_LINK_FIXED,
 };
 
 static uint16_t
diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
index 9704895f7..067ee2939 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -93,7 +93,7 @@ static struct rte_eth_link pmd_link = {
 	.link_speed = ETH_SPEED_NUM_10G,
 	.link_duplex = ETH_LINK_FULL_DUPLEX,
 	.link_status = ETH_LINK_DOWN,
-	.link_autoneg = ETH_LINK_AUTONEG,
+	.link_autoneg = ETH_LINK_FIXED,
 };
 
 static uint16_t
diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 76c131b36..27590d39d 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -124,7 +124,7 @@ static struct rte_eth_link pmd_link = {
 		.link_speed = ETH_SPEED_NUM_10G,
 		.link_duplex = ETH_LINK_FULL_DUPLEX,
 		.link_status = ETH_LINK_DOWN,
-		.link_autoneg = ETH_LINK_AUTONEG,
+		.link_autoneg = ETH_LINK_FIXED,
 };
 
 static int
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 729d38c51..cbdf15f21 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -80,7 +80,7 @@ static struct rte_eth_link pmd_link = {
 		.link_speed = ETH_SPEED_NUM_10G,
 		.link_duplex = ETH_LINK_FULL_DUPLEX,
 		.link_status = ETH_LINK_DOWN,
-		.link_autoneg = ETH_LINK_AUTONEG
+		.link_autoneg = ETH_LINK_FIXED,
 };
 
 static uint16_t
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' has been queued to LTS release 16.11.7
  2018-05-01 10:45 ` [dpdk-stable] patch 'drivers/net: fix link autoneg value for virtual PMDs' " luca.boccassi
@ 2018-05-15 17:19   ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: explicit cast of core id when getting index' " luca.boccassi
                       ` (30 more replies)
  0 siblings, 31 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 9153951dac72bafbc84e2b8f966748aa761b9a32 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 09:58:57 +0800
Subject: [PATCH] eal: explicit cast of builtin for bsf32

[ upstream commit 54a93341ccaaf3665352ddad0807cf3ed40c36f9 ]

rte_common.h:416:9:
warning: conversion to 'uint32_t' {aka 'unsigned int'} from
'int' may change the sign of the result [-Wsign-conversion]
  return __builtin_ctz(v);
         ^~~~~~~~~~~~~~~~

The builtin is defined to return int, but we want to
return it as uint32_t.  Its only defined valid return
values are positive integers or zero, which is OK for
uint32_t.  So just add an explicit cast.

Fixes: 03f6bced5bba ("eal: use intrinsic function")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/common/include/rte_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
index db5ac91c6..64bc7b8d4 100644
--- a/lib/librte_eal/common/include/rte_common.h
+++ b/lib/librte_eal/common/include/rte_common.h
@@ -323,7 +323,7 @@ rte_pause(void) {}
 static inline uint32_t
 rte_bsf32(uint32_t v)
 {
-	return __builtin_ctz(v);
+	return (uint32_t)__builtin_ctz(v);
 }
 
 #ifndef offsetof
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: explicit cast of core id when getting index' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-16 10:09       ` [dpdk-stable] patch 'mempool: fix virtual address population' " luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: declare trace buffer at top of own block' " luca.boccassi
                       ` (29 subsequent siblings)
  30 siblings, 1 reply; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 80b52aa3887a8ed542aca1293cb5fb5057a71026 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 09:59:07 +0800
Subject: [PATCH] eal: explicit cast of core id when getting index

[ upstream commit ef3c7b50ff39a37a93ecea47481d392d8fcb2936 ]

rte_lcore.h: In function 'rte_lcore_index':
rte_lcore.h:122:14:
warning: conversion to 'int' from 'unsigned int' may change
the sign of the result [-Wsign-conversion]
   lcore_id = rte_lcore_id();

Fixes: 5583037a7950 ("eal: get relative core index")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/common/include/rte_lcore.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h
index fe7b5865f..da48a94a6 100644
--- a/lib/librte_eal/common/include/rte_lcore.h
+++ b/lib/librte_eal/common/include/rte_lcore.h
@@ -134,7 +134,7 @@ rte_lcore_index(int lcore_id)
 	if (lcore_id >= RTE_MAX_LCORE)
 		return -1;
 	if (lcore_id < 0)
-		lcore_id = rte_lcore_id();
+		lcore_id = (int)rte_lcore_id();
 	return lcore_config[lcore_id].core_index;
 }
 
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: declare trace buffer at top of own block' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: explicit cast of core id when getting index' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'spinlock/x86: move stack declaration before code' " luca.boccassi
                       ` (28 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0b6e33f4ddb3d1253a48231d02e7a4d5382fdbef Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 09:59:32 +0800
Subject: [PATCH] eal: declare trace buffer at top of own block

[ upstream commit e3908132b7903dbbf45c6d073792cccc890812e0 ]

rte_dev.h:54:2:
warning: ISO C90 forbids mixed declarations and
code [-Wdeclaration-after-statement]
  char buffer[vsnprintf(NULL, 0, fmt, ap) + 1];

Fixes: b974e4a40cb5 ("ethdev: make error checking macros public")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/common/include/rte_dev.h | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h
index dcf33d0e0..2ad6da86e 100644
--- a/lib/librte_eal/common/include/rte_dev.h
+++ b/lib/librte_eal/common/include/rte_dev.h
@@ -60,15 +60,18 @@ rte_pmd_debug_trace(const char *func_name, const char *fmt, ...)
 
 	va_start(ap, fmt);
 
-	char buffer[vsnprintf(NULL, 0, fmt, ap) + 1];
+	{
+		char buffer[vsnprintf(NULL, 0, fmt, ap) + 1];
 
-	va_end(ap);
+		va_end(ap);
 
-	va_start(ap, fmt);
-	vsnprintf(buffer, sizeof(buffer), fmt, ap);
-	va_end(ap);
+		va_start(ap, fmt);
+		vsnprintf(buffer, sizeof(buffer), fmt, ap);
+		va_end(ap);
 
-	rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", func_name, buffer);
+		rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s",
+			func_name, buffer);
+	}
 }
 
 /*
-- 
2.14.2

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

* [dpdk-stable] patch 'spinlock/x86: move stack declaration before code' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: explicit cast of core id when getting index' " luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: declare trace buffer at top of own block' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net: move stack variable at top of VLAN strip function' " luca.boccassi
                       ` (27 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 90e0fc9fb6639f78c7daa8b849574775c80fbbdb Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 09:59:17 +0800
Subject: [PATCH] spinlock/x86: move stack declaration before code

[ upstream commit f7f18e92a51276f1e23a0595f59615f79323b358 ]

In function 'rte_try_tm':
rte_spinlock.h:82:2:
warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
  int retries = RTE_RTM_MAX_RETRIES;

Fixes: ba7468997ea6 ("spinlock: add HTM lock elision for x86")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/common/include/arch/x86/rte_spinlock.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
index 8e630c219..577236a3e 100644
--- a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
+++ b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
@@ -104,10 +104,12 @@ static inline int rte_tm_supported(void)
 static inline int
 rte_try_tm(volatile int *lock)
 {
+	int retries;
+
 	if (!rte_rtm_supported)
 		return 0;
 
-	int retries = RTE_RTM_MAX_RETRIES;
+	retries = RTE_RTM_MAX_RETRIES;
 
 	while (likely(retries--)) {
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net: move stack variable at top of VLAN strip function' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (2 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'spinlock/x86: move stack declaration before code' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: explicit cast of buffered Tx number' " luca.boccassi
                       ` (26 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 46b28762e8d5824b1e31757bd88fc7cf7a403895 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 10:00:17 +0800
Subject: [PATCH] net: move stack variable at top of VLAN strip function

[ upstream commit 5a7e5accc695e5cf0ed840f59042dba4cbe0aae3 ]

In function 'rte_vlan_strip':
rte_ether.h:357:2:
warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
  struct vlan_hdr *vh = (struct vlan_hdr *)(eh + 1);

Fixes: c974021a5949 ("ether: add soft vlan encap/decap")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_net/rte_ether.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
index 5edf66c3f..43814f626 100644
--- a/lib/librte_net/rte_ether.h
+++ b/lib/librte_net/rte_ether.h
@@ -352,11 +352,12 @@ static inline int rte_vlan_strip(struct rte_mbuf *m)
 {
 	struct ether_hdr *eh
 		 = rte_pktmbuf_mtod(m, struct ether_hdr *);
+	struct vlan_hdr *vh;
 
 	if (eh->ether_type != rte_cpu_to_be_16(ETHER_TYPE_VLAN))
 		return -1;
 
-	struct vlan_hdr *vh = (struct vlan_hdr *)(eh + 1);
+	vh = (struct vlan_hdr *)(eh + 1);
 	m->ol_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
 	m->vlan_tci = rte_be_to_cpu_16(vh->vlan_tci);
 
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: explicit cast of buffered Tx number' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (3 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net: move stack variable at top of VLAN strip function' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'hash: move stack declaration at top of CRC32c function' " luca.boccassi
                       ` (25 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 209ee9d9ac2e344325daf6029924f2aea50e2cfa Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 10:00:27 +0800
Subject: [PATCH] ethdev: explicit cast of buffered Tx number

[ upstream commit b90406b9f7340466cbda287cd7454fae68868348 ]

In function 'rte_eth_tx_buffer_flush':
rte_ethdev.h:4248:55:
warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
   buffer->error_callback(&buffer->pkts[sent], to_send - sent,

Fixes: d6c99e62c852 ("ethdev: add buffered Tx")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_ether/rte_ethdev.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index dc6d0cc91..87a230634 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -2886,8 +2886,9 @@ rte_eth_tx_buffer_flush(uint8_t port_id, uint16_t queue_id,
 
 	/* All packets sent, or to be dealt with by callback below */
 	if (unlikely(sent != to_send))
-		buffer->error_callback(&buffer->pkts[sent], to_send - sent,
-				buffer->error_userdata);
+		buffer->error_callback(&buffer->pkts[sent],
+				       (uint16_t)(to_send - sent),
+				       buffer->error_userdata);
 
 	return sent;
 }
-- 
2.14.2

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

* [dpdk-stable] patch 'hash: move stack declaration at top of CRC32c function' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (4 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: explicit cast of buffered Tx number' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'hash: explicit casts for truncation in CRC32c' " luca.boccassi
                       ` (24 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 10f417e8faa50c157a0f12ee038975bea18ffbe2 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 10:00:32 +0800
Subject: [PATCH] hash: move stack declaration at top of CRC32c function

[ upstream commit f1eb05a1dc64e17bb9d9b6ad29b78f181aae36b8 ]

In function 'crc32c_2words':
rte_hash_crc.h:347:2:
warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
  uint32_t crc, term1, term2;

Fixes: d983cf41698f ("hash: add software CRC32 implementation")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_hash/rte_hash_crc.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/librte_hash/rte_hash_crc.h b/lib/librte_hash/rte_hash_crc.h
index 63e74aa47..7d71439f2 100644
--- a/lib/librte_hash/rte_hash_crc.h
+++ b/lib/librte_hash/rte_hash_crc.h
@@ -366,14 +366,13 @@ crc32c_1word(uint32_t data, uint32_t init_val)
 static inline uint32_t
 crc32c_2words(uint64_t data, uint32_t init_val)
 {
+	uint32_t crc, term1, term2;
 	union {
 		uint64_t u64;
 		uint32_t u32[2];
 	} d;
 	d.u64 = data;
 
-	uint32_t crc, term1, term2;
-
 	crc = init_val;
 	crc ^= d.u32[0];
 
-- 
2.14.2

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

* [dpdk-stable] patch 'hash: explicit casts for truncation in CRC32c' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (5 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'hash: move stack declaration at top of CRC32c function' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/reorder: fix freeing mbuf twice' " luca.boccassi
                       ` (23 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From e3ac5458c7d6b129371a9f49a9cf7e845a32ee8c Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Sat, 12 May 2018 10:00:37 +0800
Subject: [PATCH] hash: explicit casts for truncation in CRC32c

[ upstream commit c981825388f81fb191f5a79c80adf0fdb074e584 ]

In function 'crc32c_sse42_u64_mimic':
rte_hash_crc.h:402:40:
warning: conversion from 'uint64_t' {aka 'long unsigned int'}
to 'uint32_t' {aka 'unsigned int'} may change value [-Wconversion]
  init_val = crc32c_sse42_u32(d.u32[0], init_val);

Fixes: 00bf774bab0b ("hash: add assembly implementation of CRC32 intrinsics")

Signed-off-by: Andy Green <andy@warmcat.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_hash/rte_hash_crc.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_hash/rte_hash_crc.h b/lib/librte_hash/rte_hash_crc.h
index 7d71439f2..2aec6c5f6 100644
--- a/lib/librte_hash/rte_hash_crc.h
+++ b/lib/librte_hash/rte_hash_crc.h
@@ -426,9 +426,9 @@ crc32c_sse42_u64_mimic(uint64_t data, uint64_t init_val)
 	} d;
 
 	d.u64 = data;
-	init_val = crc32c_sse42_u32(d.u32[0], init_val);
-	init_val = crc32c_sse42_u32(d.u32[1], init_val);
-	return init_val;
+	init_val = crc32c_sse42_u32(d.u32[0], (uint32_t)init_val);
+	init_val = crc32c_sse42_u32(d.u32[1], (uint32_t)init_val);
+	return (uint32_t)init_val;
 }
 #endif
 
@@ -440,7 +440,7 @@ crc32c_sse42_u64(uint64_t data, uint64_t init_val)
 			"crc32q %[data], %[init_val];"
 			: [init_val] "+r" (init_val)
 			: [data] "rm" (data));
-	return init_val;
+	return (uint32_t)init_val;
 }
 #endif
 
-- 
2.14.2

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

* [dpdk-stable] patch 'test/reorder: fix freeing mbuf twice' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (6 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'hash: explicit casts for truncation in CRC32c' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/distributor: fix return type of thread function' " luca.boccassi
                       ` (22 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Reshma Pattan; +Cc: David Hunt, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 43875bb9f80df9475f7a423af205156a338a1644 Mon Sep 17 00:00:00 2001
From: Reshma Pattan <reshma.pattan@intel.com>
Date: Fri, 4 May 2018 11:47:06 +0100
Subject: [PATCH] test/reorder: fix freeing mbuf twice

[ upstream commit ecd867faa860b41a154b3e24f6ea4536562234ab ]

mbufs are being freed twice in error, once in rte_mempool_put_bulk()
and then in rte_reorder_free(). Refactor the code so that we use
rte_reorder_free() to free mbufs in the reorder buffer, and use
rte_pktmbuf_free() to free any unused or drained mbufs.

Fixes: d0c9b58d71 ("app/test: new reorder unit test")

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Reviewed-by: David Hunt <david.hunt@intel.com>
---
 app/test/test_reorder.c | 47 +++++++++++++++++++++++++++++++++++++----------
 1 file changed, 37 insertions(+), 10 deletions(-)

diff --git a/app/test/test_reorder.c b/app/test/test_reorder.c
index 26dab0c2b..add455111 100644
--- a/app/test/test_reorder.c
+++ b/app/test/test_reorder.c
@@ -177,11 +177,11 @@ test_reorder_insert(void)
 	b = rte_reorder_create("test_insert", rte_socket_id(), size);
 	TEST_ASSERT_NOT_NULL(b, "Failed to create reorder buffer");
 
-	ret = rte_mempool_get_bulk(p, (void *)bufs, num_bufs);
-	TEST_ASSERT_SUCCESS(ret, "Error getting mbuf from pool");
-
-	for (i = 0; i < num_bufs; i++)
+	for (i = 0; i < num_bufs; i++) {
+		bufs[i] = rte_pktmbuf_alloc(p);
+		TEST_ASSERT_NOT_NULL(bufs[i], "Packet allocation failed\n");
 		bufs[i]->seqn = i;
+	}
 
 	/* This should fill up order buffer:
 	 * reorder_seq = 0
@@ -196,6 +196,7 @@ test_reorder_insert(void)
 			ret = -1;
 			goto exit;
 		}
+		bufs[i] = NULL;
 	}
 
 	/* early packet - should move mbufs to ready buf and move sequence window
@@ -210,6 +211,7 @@ test_reorder_insert(void)
 		ret = -1;
 		goto exit;
 	}
+	bufs[4] = NULL;
 
 	/* early packet from current sequence window - full ready buffer */
 	bufs[5]->seqn = 2 * size;
@@ -220,6 +222,7 @@ test_reorder_insert(void)
 		ret = -1;
 		goto exit;
 	}
+	bufs[5] = NULL;
 
 	/* late packet */
 	bufs[6]->seqn = 3 * size;
@@ -230,11 +233,15 @@ test_reorder_insert(void)
 		ret = -1;
 		goto exit;
 	}
+	bufs[6] = NULL;
 
 	ret = 0;
 exit:
-	rte_mempool_put_bulk(p, (void *)bufs, num_bufs);
 	rte_reorder_free(b);
+	for (i = 0; i < num_bufs; i++) {
+		if (bufs[i] != NULL)
+			rte_pktmbuf_free(bufs[i]);
+	}
 	return ret;
 }
 
@@ -250,6 +257,10 @@ test_reorder_drain(void)
 	int ret = 0;
 	unsigned i, cnt;
 
+	/* initialize all robufs to NULL */
+	for (i = 0; i < num_bufs; i++)
+		robufs[i] = NULL;
+
 	/* This would create a reorder buffer instance consisting of:
 	 * reorder_seq = 0
 	 * ready_buf: RB[size] = {NULL, NULL, NULL, NULL}
@@ -258,9 +269,6 @@ test_reorder_drain(void)
 	b = rte_reorder_create("test_drain", rte_socket_id(), size);
 	TEST_ASSERT_NOT_NULL(b, "Failed to create reorder buffer");
 
-	ret = rte_mempool_get_bulk(p, (void *)bufs, num_bufs);
-	TEST_ASSERT_SUCCESS(ret, "Error getting mbuf from pool");
-
 	/* Check no drained packets if reorder is empty */
 	cnt = rte_reorder_drain(b, robufs, 1);
 	if (cnt != 0) {
@@ -270,8 +278,11 @@ test_reorder_drain(void)
 		goto exit;
 	}
 
-	for (i = 0; i < num_bufs; i++)
+	for (i = 0; i < num_bufs; i++) {
+		bufs[i] = rte_pktmbuf_alloc(p);
+		TEST_ASSERT_NOT_NULL(bufs[i], "Packet allocation failed\n");
 		bufs[i]->seqn = i;
+	}
 
 	/* Insert packet with seqn 1:
 	 * reorder_seq = 0
@@ -279,6 +290,7 @@ test_reorder_drain(void)
 	 * OB[] = {1, NULL, NULL, NULL}
 	 */
 	rte_reorder_insert(b, bufs[1]);
+	bufs[1] = NULL;
 
 	cnt = rte_reorder_drain(b, robufs, 1);
 	if (cnt != 1) {
@@ -287,6 +299,8 @@ test_reorder_drain(void)
 		ret = -1;
 		goto exit;
 	}
+	if (robufs[0] != NULL)
+		rte_pktmbuf_free(robufs[i]);
 
 	/* Insert more packets
 	 * RB[] = {NULL, NULL, NULL, NULL}
@@ -294,18 +308,22 @@ test_reorder_drain(void)
 	 */
 	rte_reorder_insert(b, bufs[2]);
 	rte_reorder_insert(b, bufs[3]);
+	bufs[2] = NULL;
+	bufs[3] = NULL;
 
 	/* Insert more packets
 	 * RB[] = {NULL, NULL, NULL, NULL}
 	 * OB[] = {NULL, 2, 3, 4}
 	 */
 	rte_reorder_insert(b, bufs[4]);
+	bufs[4] = NULL;
 
 	/* Insert more packets
 	 * RB[] = {2, 3, 4, NULL}
 	 * OB[] = {NULL, NULL, 7, NULL}
 	 */
 	rte_reorder_insert(b, bufs[7]);
+	bufs[7] = NULL;
 
 	/* drained expected packets */
 	cnt = rte_reorder_drain(b, robufs, 4);
@@ -315,6 +333,10 @@ test_reorder_drain(void)
 		ret = -1;
 		goto exit;
 	}
+	for (i = 0; i < 3; i++) {
+		if (robufs[i] != NULL)
+			rte_pktmbuf_free(robufs[i]);
+	}
 
 	/*
 	 * RB[] = {NULL, NULL, NULL, NULL}
@@ -329,8 +351,13 @@ test_reorder_drain(void)
 	}
 	ret = 0;
 exit:
-	rte_mempool_put_bulk(p, (void *)bufs, num_bufs);
 	rte_reorder_free(b);
+	for (i = 0; i < num_bufs; i++) {
+		if (bufs[i] != NULL)
+			rte_pktmbuf_free(bufs[i]);
+		if (robufs[i] != NULL)
+			rte_pktmbuf_free(robufs[i]);
+	}
 	return ret;
 }
 
-- 
2.14.2

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

* [dpdk-stable] patch 'test/distributor: fix return type of thread function' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (7 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/reorder: fix freeing mbuf twice' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix return type of stub miss' " luca.boccassi
                       ` (21 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: David Hunt; +Cc: Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From ce7b39efe9efd46b2f5804d24a1fb3187092d86f Mon Sep 17 00:00:00 2001
From: David Hunt <david.hunt@intel.com>
Date: Thu, 10 May 2018 02:25:38 +0100
Subject: [PATCH] test/distributor: fix return type of thread function

[ upstream commit 1d2ff358ff2fe236a17e22eeb28ecf013814f022 ]

New warning with gcc 8.1:
When casting the function pointer passed to
rte_eal_remote_launch() as an lcore_function_t *,
it expects the cast function to return an int, but
instead it was returning void. Fixed to return
an int.

Fixes: c3eabff124e6 ("distributor: add unit tests")

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 app/test/test_distributor_perf.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c
index 7947fe9b1..cc6219639 100644
--- a/app/test/test_distributor_perf.c
+++ b/app/test/test_distributor_perf.c
@@ -57,7 +57,7 @@ struct worker_stats worker_stats[RTE_MAX_LCORE];
 /* worker thread used for testing the time to do a round-trip of a cache
  * line between two cores and back again
  */
-static void
+static int
 flip_bit(volatile uint64_t *arg)
 {
 	uint64_t old_val = 0;
@@ -67,6 +67,7 @@ flip_bit(volatile uint64_t *arg)
 		old_val = *arg;
 		*arg = 0;
 	}
+	return 0;
 }
 
 /* test case to time the number of cycles to round-trip a cache line between
-- 
2.14.2

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

* [dpdk-stable] patch 'test/pipeline: fix return type of stub miss' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (8 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/distributor: fix return type of thread function' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: fix typo in doc of pointer offset macro' " luca.boccassi
                       ` (20 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: David Hunt; +Cc: Reshma Pattan, Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 1e9148d40ff410167633cc011fdfe9e84c9cf3c0 Mon Sep 17 00:00:00 2001
From: David Hunt <david.hunt@intel.com>
Date: Thu, 10 May 2018 08:38:15 +0100
Subject: [PATCH] test/pipeline: fix return type of stub miss

[ upstream commit 97d84c7823a3c41c63163d5e70201c0b7fdae1fb ]

New warning with gcc 8.1:
The table_action_stub_miss() function was incorrectly
declared as returning a typedef of
rte_pipeline_table_action_handler_miss, instead of what it
should have been, an int.
Changed this to declare the function as returning an int, and
now when the action_handler_miss is set to table_action_stub_miss
(cast as rte_pipeline_table_action_handler_miss), gcc 8.1 no
longer complains about the cast.

Fixes: 5205954791cb ("app/test: packet framework unit tests")

Signed-off-by: David Hunt <david.hunt@intel.com>
Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 app/test/test_table_pipeline.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test/test_table_pipeline.c b/app/test/test_table_pipeline.c
index 36bfeda3d..38426790d 100644
--- a/app/test/test_table_pipeline.c
+++ b/app/test/test_table_pipeline.c
@@ -98,7 +98,7 @@ rte_pipeline_table_action_handler_hit
 table_action_stub_hit(struct rte_pipeline *p, struct rte_mbuf **pkts,
 	uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg);
 
-rte_pipeline_table_action_handler_miss
+static int
 table_action_stub_miss(struct rte_pipeline *p, struct rte_mbuf **pkts,
 	uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg);
 
@@ -130,7 +130,7 @@ table_action_stub_hit(__attribute__((unused)) struct rte_pipeline *p,
 	return 0;
 }
 
-rte_pipeline_table_action_handler_miss
+static int
 table_action_stub_miss(struct rte_pipeline *p,
 	__attribute__((unused)) struct rte_mbuf **pkts,
 	uint64_t pkts_mask,
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: fix typo in doc of pointer offset macro' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (9 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix return type of stub miss' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'memzone: fix size on reserving biggest memzone' " luca.boccassi
                       ` (19 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 818196b4c2baf106c9023d116d699c4aa89af369 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Tue, 1 May 2018 21:35:50 +0200
Subject: [PATCH] eal: fix typo in doc of pointer offset macro

[ upstream commit 2b1c4388dd5efb803fb825e9c07f5948e07d86a1 ]

Fixes: af75078fece3 ("first public release")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 lib/librte_eal/common/include/rte_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
index 64bc7b8d4..f5e2f8861 100644
--- a/lib/librte_eal/common/include/rte_common.h
+++ b/lib/librte_eal/common/include/rte_common.h
@@ -105,7 +105,7 @@ typedef uint16_t unaligned_uint16_t;
 /*********** Macros for pointer arithmetic ********/
 
 /**
- * add a byte-value offset from a pointer
+ * add a byte-value offset to a pointer
  */
 #define RTE_PTR_ADD(ptr, x) ((void*)((uintptr_t)(ptr) + (x)))
 
-- 
2.14.2

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

* [dpdk-stable] patch 'memzone: fix size on reserving biggest memzone' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (10 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: fix typo in doc of pointer offset macro' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix slave port detection' " luca.boccassi
                       ` (18 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 40aa5078cbc8bf3261723d2f92688d81b1313ba4 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 3 May 2018 17:00:47 +0100
Subject: [PATCH] memzone: fix size on reserving biggest memzone

[ upstream commit a82377cab87cea35bdd135fa8b8c4c485e2389f7 ]

Size of malloc heap elements include overhead, which should not
be counted as part of memzone.

Fixes: fafcc11985a2 ("mem: rework memzone to be allocated by malloc")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_eal/common/eal_common_memzone.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
index b58d85b71..c51386906 100644
--- a/lib/librte_eal/common/eal_common_memzone.c
+++ b/lib/librte_eal/common/eal_common_memzone.c
@@ -253,7 +253,8 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
 	snprintf(mz->name, sizeof(mz->name), "%s", name);
 	mz->phys_addr = rte_malloc_virt2phy(mz_addr);
 	mz->addr = mz_addr;
-	mz->len = (requested_len == 0 ? elem->size : requested_len);
+	mz->len = (requested_len == 0 ?
+			(elem->size - MALLOC_ELEM_OVERHEAD) : requested_len);
 	mz->hugepage_sz = elem->ms->hugepage_sz;
 	mz->socket_id = elem->ms->socket_id;
 	mz->flags = 0;
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix slave port detection' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (11 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'memzone: fix size on reserving biggest memzone' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix valid ports prints' " luca.boccassi
                       ` (17 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Matan Azrad; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 07a97d39c9b85868a66b27eb3fd6b3a0e815db8e Mon Sep 17 00:00:00 2001
From: Matan Azrad <matan@mellanox.com>
Date: Wed, 28 Mar 2018 11:17:53 +0000
Subject: [PATCH] app/testpmd: fix slave port detection

[ upstream commit b8b8b344cb44bea46ac1d2037e8e5f1e742319f6 ]

Testpmd allows to create and control bonding devices by run time
command lines using the bonding PMD API.

Some bonding device slaves operations (close, stop, etc) should not be
used by the application and must be managed by the bonding PMD.

Thus, Testpmd manages slave flags to prevent the special operations
calls and when a slave is added to bonding device by a run time command
line, the flag is set.

There is one more way to define the slaves for a bonding device using
EAL command line and Testpmd doesn't set the slave flag in this case
what causes to the special operations to be called by Testpmd.

Add one more check to detect bonding slave device.

Fixes: 41b05095c4d1 ("app/testpmd: fix bonding start")
Fixes: 0e545d3047fe ("app/testpmd: check stopping port is not in bonding")

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/testpmd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 9de01fed2..9313d0bbc 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1857,7 +1857,10 @@ uint8_t port_is_bonding_slave(portid_t slave_pid)
 	struct rte_port *port;
 
 	port = &ports[slave_pid];
-	return port->slave_flag;
+	if ((rte_eth_devices[slave_pid].data->dev_flags &
+	    RTE_ETH_DEV_BONDED_SLAVE) || (port->slave_flag == 1))
+		return 1;
+	return 0;
 }
 
 const uint16_t vlan_tags[] = {
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix valid ports prints' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (12 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix slave port detection' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports update' " luca.boccassi
                       ` (16 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Matan Azrad; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 7b0aba99264016554e6583ba3d5df5800a7dd2b1 Mon Sep 17 00:00:00 2001
From: Matan Azrad <matan@mellanox.com>
Date: Thu, 3 May 2018 10:31:43 +0000
Subject: [PATCH] app/testpmd: fix valid ports prints

[ upstream commit 8f3c4176fc11ed10dac9384a33ca470f3ef52c6a ]

There are several cases of an invalid port data access that causes the
printing of all the valid ports, for example, when the user asks to
receive a port information of an invalid port.

Wrongly, the port with id 0 is printed in all the above described
cases, regardless of its validity.

Print port 0 only if it is valid as done for the rest of the ports.

Fixes: af75078fece3 ("first public release")
Fixes: b6ea6408fbc7 ("ethdev: store numa_node per device")
Fixes: edab33b1c01d ("app/testpmd: support port hotplug")

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 app/test-pmd/config.c     | 36 +++++++++++++++---------------------
 app/test-pmd/parameters.c | 12 ++----------
 app/test-pmd/testpmd.h    |  1 +
 3 files changed, 18 insertions(+), 31 deletions(-)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 69fa04be4..130ff1480 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -163,15 +163,11 @@ nic_stats_display(portid_t port_id)
 	struct rte_eth_stats stats;
 	struct rte_port *port = &ports[port_id];
 	uint8_t i;
-	portid_t pid;
 
 	static const char *nic_stats_border = "########################";
 
 	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-		printf("Valid port range is [0");
-		FOREACH_PORT(pid, ports)
-			printf(", %d", pid);
-		printf("]\n");
+		print_valid_ports();
 		return;
 	}
 	rte_eth_stats_get(port_id, &stats);
@@ -245,13 +241,8 @@ nic_stats_display(portid_t port_id)
 void
 nic_stats_clear(portid_t port_id)
 {
-	portid_t pid;
-
 	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-		printf("Valid port range is [0");
-		FOREACH_PORT(pid, ports)
-			printf(", %d", pid);
-		printf("]\n");
+		print_valid_ports();
 		return;
 	}
 	rte_eth_stats_reset(port_id);
@@ -325,15 +316,11 @@ nic_stats_mapping_display(portid_t port_id)
 {
 	struct rte_port *port = &ports[port_id];
 	uint16_t i;
-	portid_t pid;
 
 	static const char *nic_stats_mapping_border = "########################";
 
 	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-		printf("Valid port range is [0");
-		FOREACH_PORT(pid, ports)
-			printf(", %d", pid);
-		printf("]\n");
+		print_valid_ports();
 		return;
 	}
 
@@ -445,13 +432,9 @@ port_infos_display(portid_t port_id)
 	int vlan_offload;
 	struct rte_mempool * mp;
 	static const char *info_border = "*********************";
-	portid_t pid;
 
 	if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-		printf("Valid port range is [0");
-		FOREACH_PORT(pid, ports)
-			printf(", %d", pid);
-		printf("]\n");
+		print_valid_ports();
 		return;
 	}
 	port = &ports[port_id];
@@ -554,6 +537,17 @@ port_id_is_invalid(portid_t port_id, enum print_warning warning)
 	return 1;
 }
 
+void print_valid_ports(void)
+{
+	portid_t pid;
+
+	printf("The valid ports array is [");
+	FOREACH_PORT(pid, ports) {
+		printf(" %d", pid);
+	}
+	printf(" ]\n");
+}
+
 static int
 vlan_id_is_invalid(uint16_t vlan_id)
 {
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 092339174..4a74ada22 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -370,7 +370,6 @@ parse_portnuma_config(const char *q_arg)
 	};
 	unsigned long int_fld[_NUM_FLD];
 	char *str_fld[_NUM_FLD];
-	portid_t pid;
 
 	/* reset from value set at definition */
 	while ((p = strchr(p0,'(')) != NULL) {
@@ -394,10 +393,7 @@ parse_portnuma_config(const char *q_arg)
 		port_id = (portid_t)int_fld[FLD_PORT];
 		if (port_id_is_invalid(port_id, ENABLED_WARN) ||
 			port_id == (portid_t)RTE_PORT_ALL) {
-			printf("Valid port range is [0");
-			FOREACH_PORT(pid, ports)
-				printf(", %d", pid);
-			printf("]\n");
+			print_valid_ports();
 			return -1;
 		}
 		socket_id = (uint8_t)int_fld[FLD_SOCKET];
@@ -429,7 +425,6 @@ parse_ringnuma_config(const char *q_arg)
 	};
 	unsigned long int_fld[_NUM_FLD];
 	char *str_fld[_NUM_FLD];
-	portid_t pid;
 	#define RX_RING_ONLY 0x1
 	#define TX_RING_ONLY 0x2
 	#define RXTX_RING    0x3
@@ -456,10 +451,7 @@ parse_ringnuma_config(const char *q_arg)
 		port_id = (portid_t)int_fld[FLD_PORT];
 		if (port_id_is_invalid(port_id, ENABLED_WARN) ||
 			port_id == (portid_t)RTE_PORT_ALL) {
-			printf("Valid port range is [0");
-			FOREACH_PORT(pid, ports)
-				printf(", %d", pid);
-			printf("]\n");
+			print_valid_ports();
 			return -1;
 		}
 		socket_id = (uint8_t)int_fld[FLD_SOCKET];
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 9c1e7039c..81034d0ea 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -599,6 +599,7 @@ enum print_warning {
 	DISABLED_WARN
 };
 int port_id_is_invalid(portid_t port_id, enum print_warning warning);
+void print_valid_ports(void);
 
 /*
  * Work-around of a compilation error with ICC on invocations of the
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix forward ports update' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (13 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix valid ports prints' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports Rx flush' " luca.boccassi
                       ` (15 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Matan Azrad; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f2728e66cb2f8e6bc106f4a1d34884cf4fc39e45 Mon Sep 17 00:00:00 2001
From: Matan Azrad <matan@mellanox.com>
Date: Thu, 3 May 2018 10:31:44 +0000
Subject: [PATCH] app/testpmd: fix forward ports update

[ upstream commit 1f84c4695a567edc8cd8dc2572aa320cdeb9c358 ]

When the forward ports are changed either by new portlist\portmask
configurations or by a port detachment, all the old forward streams
are freed and new streams are allocated to be aligned with the new
forward ports.

If the number of the forward ports drops to 0, there is an attempt
to wrongly allocate 0 memory for the streams.

Skip the streams memory allocation if no forward ports are configured.

Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 app/test-pmd/testpmd.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 9313d0bbc..978606252 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -675,18 +675,23 @@ init_fwd_streams(void)
 
 	/* init new */
 	nb_fwd_streams = nb_fwd_streams_new;
-	fwd_streams = rte_zmalloc("testpmd: fwd_streams",
-		sizeof(struct fwd_stream *) * nb_fwd_streams, RTE_CACHE_LINE_SIZE);
-	if (fwd_streams == NULL)
-		rte_exit(EXIT_FAILURE, "rte_zmalloc(%d (struct fwd_stream *)) "
-						"failed\n", nb_fwd_streams);
+	if (nb_fwd_streams) {
+		fwd_streams = rte_zmalloc("testpmd: fwd_streams",
+			sizeof(struct fwd_stream *) * nb_fwd_streams,
+			RTE_CACHE_LINE_SIZE);
+		if (fwd_streams == NULL)
+			rte_exit(EXIT_FAILURE, "rte_zmalloc(%d"
+				 " (struct fwd_stream *)) failed\n",
+				 nb_fwd_streams);
 
-	for (sm_id = 0; sm_id < nb_fwd_streams; sm_id++) {
-		fwd_streams[sm_id] = rte_zmalloc("testpmd: struct fwd_stream",
-				sizeof(struct fwd_stream), RTE_CACHE_LINE_SIZE);
-		if (fwd_streams[sm_id] == NULL)
-			rte_exit(EXIT_FAILURE, "rte_zmalloc(struct fwd_stream)"
-								" failed\n");
+		for (sm_id = 0; sm_id < nb_fwd_streams; sm_id++) {
+			fwd_streams[sm_id] = rte_zmalloc("testpmd:"
+				" struct fwd_stream", sizeof(struct fwd_stream),
+				RTE_CACHE_LINE_SIZE);
+			if (fwd_streams[sm_id] == NULL)
+				rte_exit(EXIT_FAILURE, "rte_zmalloc"
+					 "(struct fwd_stream) failed\n");
+		}
 	}
 
 	return 0;
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix forward ports Rx flush' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (14 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports update' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix synchronic port hotplug' " luca.boccassi
                       ` (14 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Matan Azrad; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 4926f4e88fdd708106959486826e9a8d94fa573d Mon Sep 17 00:00:00 2001
From: Matan Azrad <matan@mellanox.com>
Date: Thu, 3 May 2018 10:31:45 +0000
Subject: [PATCH] app/testpmd: fix forward ports Rx flush

[ upstream commit 47a767b2ee253ccdd084af88d3e390ed9e74f20b ]

A port Rx queue flush is done when the packet forwarding starts in
order to clean the port statistics for a new traffic session.

The flush operation is wrongly called before the update of the new
forward ports, and may fail due to flush operation for an invalid port
configured by the old session.

Move the new forward port setup to be done before the Rx queue flush.

Fixes: 7741e4cf16c0 ("app/testpmd: VMDq and DCB updates")

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 app/test-pmd/testpmd.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 978606252..94d1c72b4 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1015,10 +1015,6 @@ start_packet_forwarding(int with_tx_first)
 		return;
 	}
 
-	if (init_fwd_streams() < 0) {
-		printf("Fail from init_fwd_streams()\n");
-		return;
-	}
 
 	if(dcb_test) {
 		for (i = 0; i < nb_fwd_ports; i++) {
@@ -1038,10 +1034,11 @@ start_packet_forwarding(int with_tx_first)
 	}
 	test_done = 0;
 
+	fwd_config_setup();
+
 	if(!no_flush_rx)
 		flush_fwd_rx_queues();
 
-	fwd_config_setup();
 	pkt_fwd_config_display(&cur_fwd_config);
 	rxtx_config_display();
 
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix synchronic port hotplug' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (15 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports Rx flush' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'examples/performance-thread: fix return type of threads' " luca.boccassi
                       ` (13 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Matan Azrad; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 1d2ac280f7474827f1521ca9c1a2cffc7d4924f8 Mon Sep 17 00:00:00 2001
From: Matan Azrad <matan@mellanox.com>
Date: Thu, 3 May 2018 10:31:46 +0000
Subject: [PATCH] app/testpmd: fix synchronic port hotplug

[ upstream commit 03ce2c53a3905b11e54c424ca395ae5bea186cbd ]

When the user uses the synchronic hot-plug commands, attach\detach, in
order to insert\remove a port from the system, the forward ports list
update is missed in the current implementation.

Thus, an invalid port may be used for data-path in case of detach
because the detached port was not removed from the forward port list.

In addition, a new port is not used for data-path in case of attach, as the
default behavior of Testpmd, because the attached port was not inserted
to the forward port list.

Update the forward port list in the above cases to allow the correct
port usage for data-path in the next packet forwarding start.

Fixes: edab33b1c01d ("app/testpmd: support port hotplug")

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 app/test-pmd/testpmd.c | 29 +++++++++++++++++++++++++++++
 app/test-pmd/testpmd.h |  1 +
 2 files changed, 30 insertions(+)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 94d1c72b4..765afef9a 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -980,6 +980,31 @@ launch_packet_forwarding(lcore_function_t *pkt_fwd_on_lcore)
 	}
 }
 
+/*
+ * Update the forward ports list.
+ */
+void
+update_fwd_ports(portid_t new_pid)
+{
+	unsigned int i;
+	unsigned int new_nb_fwd_ports = 0;
+	int move = 0;
+
+	for (i = 0; i < nb_fwd_ports; ++i) {
+		if (port_id_is_invalid(fwd_ports_ids[i], DISABLED_WARN))
+			move = 1;
+		else if (move)
+			fwd_ports_ids[new_nb_fwd_ports++] = fwd_ports_ids[i];
+		else
+			new_nb_fwd_ports++;
+	}
+	if (new_pid < RTE_MAX_ETHPORTS)
+		fwd_ports_ids[new_nb_fwd_ports++] = new_pid;
+
+	nb_fwd_ports = new_nb_fwd_ports;
+	nb_cfg_ports = new_nb_fwd_ports;
+}
+
 /*
  * Launch packet forwarding configuration.
  */
@@ -1574,6 +1599,8 @@ attach_port(char *identifier)
 
 	ports[pi].port_status = RTE_PORT_STOPPED;
 
+	update_fwd_ports(pi);
+
 	printf("Port %d is attached. Now total ports is %d\n", pi, nb_ports);
 	printf("Done\n");
 }
@@ -1596,6 +1623,8 @@ detach_port(uint8_t port_id)
 	ports[port_id].enabled = 0;
 	nb_ports = rte_eth_dev_count();
 
+	update_fwd_ports(RTE_MAX_ETHPORTS);
+
 	printf("Port '%s' is detached. Now total ports is %d\n",
 			name, nb_ports);
 	printf("Done\n");
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 81034d0ea..aad598e56 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -493,6 +493,7 @@ void fwd_config_setup(void);
 void set_def_fwd_config(void);
 void reconfig(portid_t new_port_id, unsigned socket_id);
 int init_fwd_streams(void);
+void update_fwd_ports(portid_t new_pid);
 
 void port_mtu_set(portid_t port_id, uint16_t mtu);
 void port_reg_bit_display(portid_t port_id, uint32_t reg_off, uint8_t bit_pos);
-- 
2.14.2

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

* [dpdk-stable] patch 'examples/performance-thread: fix return type of threads' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (16 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix synchronic port hotplug' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix type of table entry parameter' " luca.boccassi
                       ` (12 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: David Hunt; +Cc: Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From c1368ebb17ae5aa0c5a6ed7e18708723558ddf50 Mon Sep 17 00:00:00 2001
From: David Hunt <david.hunt@intel.com>
Date: Mon, 14 May 2018 03:53:15 +0100
Subject: [PATCH] examples/performance-thread: fix return type of threads

[ upstream commit 803ee2ebd32d019d54011f185819f3b76b113c4f ]

The function pthread_create() expects void *(*func) (void *)
for function pointer, however, lthread_func_t was defined as
void (*func) (void *), so now gcc 8.1 warns that the cast is
incorrect, causing a compilation failure. This patch changes
the declaration of lthread_func_t from returning a void to
returning a void*, and then changes the sample app in the
relevant places that are affected by the typedef change.

Fixes: 116819b9ed0d ("examples/performance-thread: add lthread subsystem")

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 examples/performance-thread/common/lthread.c         |  3 ++-
 examples/performance-thread/common/lthread_api.h     |  2 +-
 examples/performance-thread/l3fwd-thread/main.c      | 20 +++++++++++++-------
 examples/performance-thread/pthread_shim/main.c      |  6 ++----
 .../performance-thread/pthread_shim/pthread_shim.c   |  4 ++--
 5 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/examples/performance-thread/common/lthread.c b/examples/performance-thread/common/lthread.c
index 062275a43..77c870fcc 100644
--- a/examples/performance-thread/common/lthread.c
+++ b/examples/performance-thread/common/lthread.c
@@ -327,13 +327,14 @@ struct lthread *lthread_current(void)
 /*
  * Tasklet to cancel a thread
  */
-static void
+static void *
 _cancel(void *arg)
 {
 	struct lthread *lt = (struct lthread *) arg;
 
 	lt->state |= BIT(ST_LT_CANCELLED);
 	lthread_detach();
+	return NULL;
 }
 
 
diff --git a/examples/performance-thread/common/lthread_api.h b/examples/performance-thread/common/lthread_api.h
index ec976103f..903ca7c0d 100644
--- a/examples/performance-thread/common/lthread_api.h
+++ b/examples/performance-thread/common/lthread_api.h
@@ -139,7 +139,7 @@ struct lthread_mutex;
 struct lthread_condattr;
 struct lthread_mutexattr;
 
-typedef void (*lthread_func_t) (void *);
+typedef void *(*lthread_func_t) (void *);
 
 /*
  * Define the size of stack for an lthread
diff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c
index dd403ca86..125d976cf 100644
--- a/examples/performance-thread/l3fwd-thread/main.c
+++ b/examples/performance-thread/l3fwd-thread/main.c
@@ -1981,17 +1981,18 @@ cpu_load_collector(__rte_unused void *arg) {
  *
  * This loop is used to start empty scheduler on lcore.
  */
-static void
+static void *
 lthread_null(__rte_unused void *args)
 {
 	int lcore_id = rte_lcore_id();
 
 	RTE_LOG(INFO, L3FWD, "Starting scheduler on lcore %d.\n", lcore_id);
 	lthread_exit(NULL);
+	return NULL;
 }
 
 /* main processing loop */
-static void
+static void *
 lthread_tx_per_ring(void *dummy)
 {
 	int nb_rx;
@@ -2036,6 +2037,7 @@ lthread_tx_per_ring(void *dummy)
 			lthread_cond_wait(ready, 0);
 
 	}
+	return NULL;
 }
 
 /*
@@ -2044,7 +2046,7 @@ lthread_tx_per_ring(void *dummy)
  * This lthread is used to spawn one new lthread per ring from producers.
  *
  */
-static void
+static void *
 lthread_tx(void *args)
 {
 	struct lthread *lt;
@@ -2089,9 +2091,10 @@ lthread_tx(void *args)
 		}
 
 	}
+	return NULL;
 }
 
-static void
+static void *
 lthread_rx(void *dummy)
 {
 	int ret;
@@ -2114,7 +2117,7 @@ lthread_rx(void *dummy)
 
 	if (rx_conf->n_rx_queue == 0) {
 		RTE_LOG(INFO, L3FWD, "lcore %u has nothing to do\n", rte_lcore_id());
-		return;
+		return NULL;
 	}
 
 	RTE_LOG(INFO, L3FWD, "Entering main Rx loop on lcore %u\n", rte_lcore_id());
@@ -2185,6 +2188,7 @@ lthread_rx(void *dummy)
 			lthread_yield();
 		}
 	}
+	return NULL;
 }
 
 /*
@@ -2193,8 +2197,9 @@ lthread_rx(void *dummy)
  * This lthread loop spawns all rx and tx lthreads on master lcore
  */
 
-static void
-lthread_spawner(__rte_unused void *arg) {
+static void *
+lthread_spawner(__rte_unused void *arg)
+{
 	struct lthread *lt[MAX_THREAD];
 	int i;
 	int n_thread = 0;
@@ -2235,6 +2240,7 @@ lthread_spawner(__rte_unused void *arg) {
 	for (i = 0; i < n_thread; i++)
 		lthread_join(lt[i], NULL);
 
+	return NULL;
 }
 
 /*
diff --git a/examples/performance-thread/pthread_shim/main.c b/examples/performance-thread/pthread_shim/main.c
index febae39be..5811cff8d 100644
--- a/examples/performance-thread/pthread_shim/main.c
+++ b/examples/performance-thread/pthread_shim/main.c
@@ -149,8 +149,7 @@ void *helloworld_pthread(void *arg)
  */
 __thread pthread_t tid[HELLOW_WORLD_MAX_LTHREADS];
 
-static void initial_lthread(void *args);
-static void initial_lthread(void *args __attribute__((unused)))
+static void *initial_lthread(void *args __attribute__((unused)))
 {
 	int lcore = (int) rte_lcore_id();
 	/*
@@ -225,6 +224,7 @@ static void initial_lthread(void *args __attribute__((unused)))
 	/* shutdown the lthread scheduler */
 	lthread_scheduler_shutdown(rte_lcore_id());
 	lthread_detach();
+	return NULL;
 }
 
 
@@ -235,8 +235,6 @@ static void initial_lthread(void *args __attribute__((unused)))
  * in the core mask
  */
 static int
-lthread_scheduler(void *args);
-static int
 lthread_scheduler(void *args __attribute__((unused)))
 {
 	/* create initial thread  */
diff --git a/examples/performance-thread/pthread_shim/pthread_shim.c b/examples/performance-thread/pthread_shim/pthread_shim.c
index 113bafa00..7e6d7230e 100644
--- a/examples/performance-thread/pthread_shim/pthread_shim.c
+++ b/examples/performance-thread/pthread_shim/pthread_shim.c
@@ -397,7 +397,7 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
 int
 pthread_create(pthread_t *__restrict tid,
 		const pthread_attr_t *__restrict attr,
-		void *(func) (void *),
+		lthread_func_t func,
 	       void *__restrict arg)
 {
 	if (override) {
@@ -422,7 +422,7 @@ pthread_create(pthread_t *__restrict tid,
 			}
 		}
 		return lthread_create((struct lthread **)tid, lcore,
-				      (void (*)(void *))func, arg);
+				      func, arg);
 	}
 	return _sys_pthread_funcs.f_pthread_create(tid, attr, func, arg);
 }
-- 
2.14.2

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

* [dpdk-stable] patch 'test/pipeline: fix type of table entry parameter' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (17 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'examples/performance-thread: fix return type of threads' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'ip_frag: fix some debug logs' " luca.boccassi
                       ` (11 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Jasvinder Singh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From db11582a31d61117a2723fd396915f653ea46f72 Mon Sep 17 00:00:00 2001
From: Jasvinder Singh <jasvinder.singh@intel.com>
Date: Mon, 14 May 2018 14:35:24 +0100
Subject: [PATCH] test/pipeline: fix type of table entry parameter

[ upstream commit 37181824ccedb10d2a8e3f37d12d5815937db586 ]

Fixes the wrong argument in table action miss function.

Fixes: 4c387fcdf777 ("pipeline: add new functions for action handlers")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
---
 app/test/test_table_pipeline.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/app/test/test_table_pipeline.c b/app/test/test_table_pipeline.c
index 38426790d..017d283ff 100644
--- a/app/test/test_table_pipeline.c
+++ b/app/test/test_table_pipeline.c
@@ -100,7 +100,7 @@ table_action_stub_hit(struct rte_pipeline *p, struct rte_mbuf **pkts,
 
 static int
 table_action_stub_miss(struct rte_pipeline *p, struct rte_mbuf **pkts,
-	uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg);
+	uint64_t pkts_mask, struct rte_pipeline_table_entry *entry, void *arg);
 
 rte_pipeline_table_action_handler_hit
 table_action_0x00(__attribute__((unused)) struct rte_pipeline *p,
@@ -134,7 +134,7 @@ static int
 table_action_stub_miss(struct rte_pipeline *p,
 	__attribute__((unused)) struct rte_mbuf **pkts,
 	uint64_t pkts_mask,
-	__attribute__((unused)) struct rte_pipeline_table_entry **entry,
+	__attribute__((unused)) struct rte_pipeline_table_entry *entry,
 	__attribute__((unused)) void *arg)
 {
 	printf("STUB Table Action Miss - setting mask to 0x%"PRIx64"\n",
@@ -546,8 +546,7 @@ test_table_pipeline(void)
 
 	/* TEST - one packet per port */
 	action_handler_hit = NULL;
-	action_handler_miss =
-		(rte_pipeline_table_action_handler_miss) table_action_stub_miss;
+	action_handler_miss = table_action_stub_miss;
 	table_entry_default_action = RTE_PIPELINE_ACTION_PORT;
 	override_miss_mask = 0x01; /* one packet per port */
 	setup_pipeline(e_TEST_STUB);
@@ -582,8 +581,7 @@ test_table_pipeline(void)
 
 	printf("TEST - two tables, hitmask override to 0x01\n");
 	connect_miss_action_to_table = 1;
-	action_handler_miss =
-		(rte_pipeline_table_action_handler_miss)table_action_stub_miss;
+	action_handler_miss = table_action_stub_miss;
 	override_miss_mask = 0x01;
 	setup_pipeline(e_TEST_STUB);
 	if (test_pipeline_single_filter(e_TEST_STUB, 2) < 0)
-- 
2.14.2

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

* [dpdk-stable] patch 'ip_frag: fix some debug logs' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (18 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix type of table entry parameter' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix dead lock on closing in server mode' " luca.boccassi
                       ` (10 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Li Han; +Cc: Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From ab00e349b54636296c676d97ef12fc5e7dcdba1c Mon Sep 17 00:00:00 2001
From: Li Han <han.li1@zte.com.cn>
Date: Wed, 18 Apr 2018 04:51:37 -0400
Subject: [PATCH] ip_frag: fix some debug logs

[ upstream commit 3375e7f28649881fc53d83ee91772d97c8b1eb9b ]

In ip_frag_process, some IP_FRAG_LOG content is wrong.

Fixes: 4f1a8f633862 ("ip_frag: add IPv6 reassembly")

Signed-off-by: Li Han <han.li1@zte.com.cn>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_ip_frag/ip_frag_internal.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_ip_frag/ip_frag_internal.c b/lib/librte_ip_frag/ip_frag_internal.c
index b679ff43a..2cee6f8ab 100644
--- a/lib/librte_ip_frag/ip_frag_internal.c
+++ b/lib/librte_ip_frag/ip_frag_internal.c
@@ -183,7 +183,7 @@ ip_frag_process(struct ip_frag_pkt *fp, struct rte_ip_frag_death_row *dr,
 				fp->frags[IP_LAST_FRAG_IDX].len);
 		else
 			IP_FRAG_LOG(DEBUG, "%s:%d invalid fragmented packet:\n"
-				"ipv4_frag_pkt: %p, key: <" IPv6_KEY_BYTES_FMT ", %#x>, "
+				"ipv6_frag_pkt: %p, key: <" IPv6_KEY_BYTES_FMT ", %#x>, "
 				"total_size: %u, frag_size: %u, last_idx: %u\n"
 				"first fragment: ofs: %u, len: %u\n"
 				"last fragment: ofs: %u, len: %u\n\n",
@@ -241,7 +241,7 @@ ip_frag_process(struct ip_frag_pkt *fp, struct rte_ip_frag_death_row *dr,
 				fp->frags[IP_LAST_FRAG_IDX].len);
 		else
 			IP_FRAG_LOG(DEBUG, "%s:%d invalid fragmented packet:\n"
-				"ipv4_frag_pkt: %p, key: <" IPv6_KEY_BYTES_FMT ", %#x>, "
+				"ipv6_frag_pkt: %p, key: <" IPv6_KEY_BYTES_FMT ", %#x>, "
 				"total_size: %u, frag_size: %u, last_idx: %u\n"
 				"first fragment: ofs: %u, len: %u\n"
 				"last fragment: ofs: %u, len: %u\n\n",
@@ -362,7 +362,7 @@ ip_frag_lookup(struct rte_ip_frag_tbl *tbl,
 		if (p1->key.key_len == IPV4_KEYLEN)
 			IP_FRAG_LOG(DEBUG, "%s:%d:\n"
 					"tbl: %p, max_entries: %u, use_entries: %u\n"
-					"ipv6_frag_pkt line0: %p, index: %u from %u\n"
+					"ipv4_frag_pkt line0: %p, index: %u from %u\n"
 			"key: <%" PRIx64 ", %#x>, start: %" PRIu64 "\n",
 					__func__, __LINE__,
 					tbl, tbl->max_entries, tbl->use_entries,
@@ -388,7 +388,7 @@ ip_frag_lookup(struct rte_ip_frag_tbl *tbl,
 		if (p2->key.key_len == IPV4_KEYLEN)
 			IP_FRAG_LOG(DEBUG, "%s:%d:\n"
 					"tbl: %p, max_entries: %u, use_entries: %u\n"
-					"ipv6_frag_pkt line1: %p, index: %u from %u\n"
+					"ipv4_frag_pkt line1: %p, index: %u from %u\n"
 			"key: <%" PRIx64 ", %#x>, start: %" PRIu64 "\n",
 					__func__, __LINE__,
 					tbl, tbl->max_entries, tbl->use_entries,
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix dead lock on closing in server mode' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (19 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'ip_frag: fix some debug logs' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix typo in comment' " luca.boccassi
                       ` (9 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Tonghao Zhang; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a09b3760054c86faeecded8c7de5ae343d4c272f Mon Sep 17 00:00:00 2001
From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date: Fri, 27 Apr 2018 08:19:43 -0700
Subject: [PATCH] vhost: fix dead lock on closing in server mode

[ upstream commit 8b4b949144b80cc7312bbc189d38a3feaf2c74e5 ]

When qemu close the unix socket fd of the vhostuser as a
server, and then immediately delete the vhostuser port on
openvswitch. There will be a deadlock.

A thread (fdset event thread):       B thread:
1. fdset_event_dispatch              rte_vhost_driver_unregister
2. set the fd busy to 1.             lock vsocket->conn_mutex
3. vhost_user_read_cb                fdset_del waits busy changed to 0.
4. vhost peer closed, remove the
   conn from vsocket->conn_list:
   lock vsocket->conn_mutex

5. set the fd busy to 0

Fixes: 65388b43f592 ("vhost: fix fd leaks for vhost-user server mode")

Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/fd_man.c | 32 ++++++++++++++++++++++++++++++++
 lib/librte_vhost/fd_man.h |  1 +
 lib/librte_vhost/socket.c | 14 +++++++++++++-
 3 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/lib/librte_vhost/fd_man.c b/lib/librte_vhost/fd_man.c
index 8a075da22..d4c5fba43 100644
--- a/lib/librte_vhost/fd_man.c
+++ b/lib/librte_vhost/fd_man.c
@@ -192,6 +192,38 @@ fdset_del(struct fdset *pfdset, int fd)
 	return dat;
 }
 
+/**
+ *  Unregister the fd from the fdset.
+ *
+ *  If parameters are invalid, return directly -2.
+ *  And check whether fd is busy, if yes, return -1.
+ *  Otherwise, try to delete the fd from fdset and
+ *  return true.
+ */
+int
+fdset_try_del(struct fdset *pfdset, int fd)
+{
+	int i;
+
+	if (pfdset == NULL || fd == -1)
+		return -2;
+
+	pthread_mutex_lock(&pfdset->fd_mutex);
+	i = fdset_find_fd(pfdset, fd);
+	if (i != -1 && pfdset->fd[i].busy) {
+		pthread_mutex_unlock(&pfdset->fd_mutex);
+		return -1;
+	}
+
+	if (i != -1) {
+		pfdset->fd[i].fd = -1;
+		pfdset->fd[i].rcb = pfdset->fd[i].wcb = NULL;
+		pfdset->fd[i].dat = NULL;
+	}
+
+	pthread_mutex_unlock(&pfdset->fd_mutex);
+	return 0;
+}
 
 /**
  * This functions runs in infinite blocking loop until there is no fd in
diff --git a/lib/librte_vhost/fd_man.h b/lib/librte_vhost/fd_man.h
index d319cac6e..20781c027 100644
--- a/lib/librte_vhost/fd_man.h
+++ b/lib/librte_vhost/fd_man.h
@@ -63,6 +63,7 @@ int fdset_add(struct fdset *pfdset, int fd,
 	fd_cb rcb, fd_cb wcb, void *dat);
 
 void *fdset_del(struct fdset *pfdset, int fd);
+int fdset_try_del(struct fdset *pfdset, int fd);
 
 void fdset_event_dispatch(struct fdset *pfdset);
 
diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index b9fe25be7..805b2e5b2 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -603,13 +603,25 @@ rte_vhost_driver_unregister(const char *path)
 				vhost_user_remove_reconnect(vsocket);
 			}
 
+again:
 			pthread_mutex_lock(&vsocket->conn_mutex);
 			for (conn = TAILQ_FIRST(&vsocket->conn_list);
 			     conn != NULL;
 			     conn = next) {
 				next = TAILQ_NEXT(conn, next);
 
-				fdset_del(&vhost_user.fdset, conn->connfd);
+				/*
+				 * If r/wcb is executing, release the
+				 * conn_mutex lock, and try again since
+				 * the r/wcb may use the conn_mutex lock.
+				 */
+				if (fdset_try_del(&vhost_user.fdset,
+						  conn->connfd) == -1) {
+					pthread_mutex_unlock(
+							&vsocket->conn_mutex);
+					goto again;
+				}
+
 				RTE_LOG(INFO, VHOST_CONFIG,
 					"free connfd = %d for device '%s'\n",
 					conn->connfd, path);
-- 
2.14.2

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

* [dpdk-stable] patch 'vhost: fix typo in comment' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (20 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix dead lock on closing in server mode' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/vhost: initialise device as inactive' " luca.boccassi
                       ` (8 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Tonghao Zhang; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From e4bf70665d503fa6f0df9a68b6a7faf39323c316 Mon Sep 17 00:00:00 2001
From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date: Fri, 27 Apr 2018 08:19:45 -0700
Subject: [PATCH] vhost: fix typo in comment

[ upstream commit bfbf0143d1002efae3d30986ad766de51f838b74 ]

Fixes: 3670686ab99f ("vhost: fix race for connection fd")

Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/fd_man.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_vhost/fd_man.c b/lib/librte_vhost/fd_man.c
index d4c5fba43..b76b8bce3 100644
--- a/lib/librte_vhost/fd_man.c
+++ b/lib/librte_vhost/fd_man.c
@@ -307,7 +307,7 @@ fdset_event_dispatch(struct fdset *pfdset)
 			 * because the fd is closed in the cb,
 			 * the old fd val could be reused by when creates new
 			 * listen fd in another thread, we couldn't call
-			 * fd_set_del.
+			 * fdset_del.
 			 */
 			if (remove1 || remove2) {
 				pfdentry->fd = -1;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/vhost: initialise device as inactive' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (21 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix typo in comment' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/virtio-user: fix hugepage files enumeration' " luca.boccassi
                       ` (7 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Ciara Loftus; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From eaaa8a20abf5898b97aabcafc43f0dea129cedfd Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Thu, 3 May 2018 14:17:03 +0100
Subject: [PATCH] net/vhost: initialise device as inactive

[ upstream commit aee6c97f006cea7b1c791b21b222442437ee5403 ]

rte_eth_vhost_get_vid_from_port_id returns a value of 0 if
called before the first call to the new_device callback.
A vid value >=0 suggests the device is active which is not
the case in this instance. Initialise vid to a negative
value to prevent this.

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

Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/vhost/rte_eth_vhost.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index 8fde6030e..12922df64 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -115,6 +115,7 @@ struct pmd_internal {
 	char *dev_name;
 	char *iface_name;
 	uint16_t max_queues;
+	int vid;
 };
 
 struct internal_list {
@@ -1066,6 +1067,7 @@ eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues,
 	data->nb_rx_queues = queues;
 	data->nb_tx_queues = queues;
 	internal->max_queues = queues;
+	internal->vid = -1;
 	data->dev_link = pmd_link;
 	data->mac_addrs = eth_addr;
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/virtio-user: fix hugepage files enumeration' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (22 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/vhost: initialise device as inactive' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/bnxt: fix Rx mbuf and agg ring leak in dev stop' " luca.boccassi
                       ` (6 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Jianfeng Tan; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From c219b721c2909d1e9c67a3de4c7ea7acf2b1b4a9 Mon Sep 17 00:00:00 2001
From: Jianfeng Tan <jianfeng.tan@intel.com>
Date: Thu, 26 Apr 2018 15:34:07 +0000
Subject: [PATCH] net/virtio-user: fix hugepage files enumeration

[ upstream commit 169a9da64a859e1782e49886e7214982304a580f ]

After the commit 2a04139f66b4 ("eal: add single file segments option"),
one hugepage file could contain multiple hugepages which are further
mapped to different memory regions.

Original enumeration implementation cannot handle this situation.

This patch filters out the duplicated files; and adjust the size after
the enumeration.

Fixes: 6a84c37e3975 ("net/virtio-user: add vhost-user adapter layer")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_user/vhost_user.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/vhost_user.c b/drivers/net/virtio/virtio_user/vhost_user.c
index 6f4845b70..a670da4dd 100644
--- a/drivers/net/virtio/virtio_user/vhost_user.c
+++ b/drivers/net/virtio/virtio_user/vhost_user.c
@@ -134,12 +134,13 @@ struct hugepage_file_info {
 static int
 get_hugepage_file_info(struct hugepage_file_info huges[], int max)
 {
-	int idx;
+	int idx, k, exist;
 	FILE *f;
 	char buf[BUFSIZ], *tmp, *tail;
 	char *str_underline, *str_start;
 	int huge_index;
 	uint64_t v_start, v_end;
+	struct stat stats;
 
 	f = fopen("/proc/self/maps", "r");
 	if (!f) {
@@ -179,16 +180,39 @@ get_hugepage_file_info(struct hugepage_file_info huges[], int max)
 		if (sscanf(str_start, "map_%d", &huge_index) != 1)
 			continue;
 
+		/* skip duplicated file which is mapped to different regions */
+		for (k = 0, exist = -1; k < idx; ++k) {
+			if (!strcmp(huges[k].path, tmp)) {
+				exist = k;
+				break;
+			}
+		}
+		if (exist >= 0)
+			continue;
+
 		if (idx >= max) {
 			PMD_DRV_LOG(ERR, "Exceed maximum of %d", max);
 			goto error;
 		}
+
 		huges[idx].addr = v_start;
-		huges[idx].size = v_end - v_start;
+		huges[idx].size = v_end - v_start; /* To be corrected later */
 		snprintf(huges[idx].path, PATH_MAX, "%s", tmp);
 		idx++;
 	}
 
+	/* correct the size for files who have many regions */
+	for (k = 0; k < idx; ++k) {
+		if (stat(huges[k].path, &stats) < 0) {
+			PMD_DRV_LOG(ERR, "Failed to stat %s, %s\n",
+				    huges[k].path, strerror(errno));
+			continue;
+		}
+		huges[k].size = stats.st_size;
+		PMD_DRV_LOG(INFO, "file %s, size %zx\n",
+			    huges[k].path, huges[k].size);
+	}
+
 	fclose(f);
 	return idx;
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix Rx mbuf and agg ring leak in dev stop' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (23 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/virtio-user: fix hugepage files enumeration' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix double free on error handling' " luca.boccassi
                       ` (5 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Xiaoxin Peng
  Cc: Jay Ding, Scott Branden, Ray Jui, Randy Schacher, Ajit Khaparde,
	dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 9f26a0e5471682d8f1dbe0ceae5d7cac1dd18ca6 Mon Sep 17 00:00:00 2001
From: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Date: Mon, 30 Apr 2018 18:06:14 -0700
Subject: [PATCH] net/bnxt: fix Rx mbuf and agg ring leak in dev stop

[ upstream commit 3f07f2da6ca91febb67816ce8818cbdec4976413 ]

In the start/stop_op operation, mbufs allocated for rings were not freed

1) add bnxt_free_tx_mbuf/bnxt_free_rx_mbuf in bnxt_dev_stop_op to free MBUF
   before freeing the rings.
2) MBUF allocation and free routines were not in sync. Allocation uses the
   ring->ring_size including any rounded up and multiple factors while the
   free routine uses the requested queue size.

Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations")

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 4 ++--
 drivers/net/bnxt/bnxt_rxq.c    | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 962e3468e..3a0b1ce44 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -553,6 +553,8 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
 	bnxt_set_hwrm_link_config(bp, false);
 	bnxt_disable_int(bp);
 	bnxt_free_int(bp);
+	bnxt_free_tx_mbufs(bp);
+	bnxt_free_rx_mbufs(bp);
 	bnxt_shutdown_nic(bp);
 	bp->dev_stopped = 1;
 }
@@ -564,8 +566,6 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
 	if (bp->dev_stopped == 0)
 		bnxt_dev_stop_op(eth_dev);
 
-	bnxt_free_tx_mbufs(bp);
-	bnxt_free_rx_mbufs(bp);
 	bnxt_free_mem(bp);
 	if (eth_dev->data->mac_addrs != NULL) {
 		rte_free(eth_dev->data->mac_addrs);
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index 5bdb55bfc..b7b170be5 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -221,7 +221,8 @@ static void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq __rte_unused)
 	if (rxq) {
 		sw_ring = rxq->rx_ring->rx_buf_ring;
 		if (sw_ring) {
-			for (i = 0; i < rxq->nb_rx_desc; i++) {
+			for (i = 0;
+			     i < rxq->rx_ring->rx_ring_struct->ring_size; i++) {
 				if (sw_ring[i].mbuf) {
 					rte_pktmbuf_free_seg(sw_ring[i].mbuf);
 					sw_ring[i].mbuf = NULL;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/mlx5: fix double free on error handling' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (24 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/bnxt: fix Rx mbuf and agg ring leak in dev stop' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix resource leak in case of error' " luca.boccassi
                       ` (4 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 66f7e36563ce484b6c52dd693e5543d01c48972b Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Tue, 8 May 2018 12:11:26 +0300
Subject: [PATCH] net/mlx5: fix double free on error handling

[ upstream commit e9f4166014cb7abf8c74b913ff046487d0e7bea2 ]

When attr_ctx is NULL it will attempt to free the list of devices twice.
Avoid double freeing the list by directly going to error handling.

Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 86d1e44c7..506786c4e 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -422,17 +422,16 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 		break;
 	}
 	if (attr_ctx == NULL) {
-		ibv_free_device_list(list);
 		switch (err) {
 		case 0:
 			ERROR("cannot access device, is mlx5_ib loaded?");
-			return -ENODEV;
+			err = ENODEV;
+			break;
 		case EINVAL:
 			ERROR("cannot use device, are drivers up to date?");
-			return -EINVAL;
+			break;
 		}
-		assert(err > 0);
-		return -err;
+		goto error;
 	}
 	ibv_dev = list[i];
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/mlx5: fix resource leak in case of error' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (25 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix double free on error handling' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/i40e: fix link status update' " luca.boccassi
                       ` (3 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a0ee5c102fd1589f4847f01fdd64aa66154ff1da Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Tue, 8 May 2018 12:11:27 +0300
Subject: [PATCH] net/mlx5: fix resource leak in case of error

[ upstream commit 690de2850b26466ad5325fde3e1aff040e3868f8 ]

If something went wrong in mlx5_pci_prob the allocated eth dev
will cause a memory leak.

This commit release the eth dev that was previously allocated.

Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 506786c4e..eb266b2c7 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -684,6 +684,8 @@ port_error:
 			claim_zero(ibv_dealloc_pd(pd));
 		if (ctx)
 			claim_zero(ibv_close_device(ctx));
+		if (eth_dev && rte_eal_process_type() == RTE_PROC_PRIMARY)
+			rte_eth_dev_release_port(eth_dev);
 		break;
 	}
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/i40e: fix link status update' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (26 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix resource leak in case of error' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: improve doc for name by port ID API' " luca.boccassi
                       ` (2 subsequent siblings)
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Beilei Xing; +Cc: Keith Wiles, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 34c79f735357b4285c0716061844f1aba02d23ea Mon Sep 17 00:00:00 2001
From: Beilei Xing <beilei.xing@intel.com>
Date: Thu, 10 May 2018 10:26:29 +0800
Subject: [PATCH] net/i40e: fix link status update

[ upstream commit b5f6272c242f12fa3403b0d7e9da18fb83da17d4 ]

Link status is not updated correctly, link speed is 0
when link is up and link speed is not 0 when link is
down. This patch fixes the issue.

Fixes: eef2daf2e199 ("net/i40e: fix link update no wait")

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 8824293f1..4669245f2 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2151,7 +2151,7 @@ update_link_no_wait(struct i40e_hw *hw, struct rte_eth_link *link)
 	reg_val &= I40E_REG_LINK_UP;
 	link->link_status = (reg_val == I40E_REG_LINK_UP) ? 1 : 0;
 
-	if (unlikely(link->link_status != 0))
+	if (unlikely(link->link_status == 0))
 		return;
 
 	/* Parse the link status */
@@ -2208,7 +2208,7 @@ update_link_wait(struct i40e_hw *hw, struct rte_eth_link *link,
 
 		link->link_status = link_status.link_info & I40E_AQ_LINK_UP;
 		if (unlikely(link->link_status != 0))
-			return;
+			break;
 
 		rte_delay_ms(CHECK_INTERVAL);
 	} while (--rep_cnt);
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: improve doc for name by port ID API' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (27 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/i40e: fix link status update' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/nfp: fix memcpy out of source range' " luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: remove unused path pattern' " luca.boccassi
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2f50f4d33f53166ee570864614f395fd457df795 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Fri, 11 May 2018 15:05:51 +0100
Subject: [PATCH] ethdev: improve doc for name by port ID API

[ upstream commit 2d65bf3cfb1bb6063476a078ab43b60cac6cbfa7 ]

Description of rte_eth_dev_get_name_by_port() calls
port ID argument a pointer, which is misleading.
Also, output buffer minimal size is not mentioned.
These points need to be improved.

Fixes: bde516d5a85a ("ethdev: get port by name")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_ether/rte_ethdev.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 87a230634..aa79040fe 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -4346,9 +4346,9 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id);
 * Get the device name from port id
 *
 * @param port_id
-*   pointer to port identifier of the device
+*   Port identifier of the device.
 * @param name
-*  pci address or name of the device
+*   Buffer of size RTE_ETH_NAME_MAX_LEN to store the name.
 * @return
 *   - (0) if successful.
 *   - (-EINVAL) on failure.
-- 
2.14.2

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

* [dpdk-stable] patch 'net/nfp: fix memcpy out of source range' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (28 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: improve doc for name by port ID API' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: remove unused path pattern' " luca.boccassi
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Andy Green; +Cc: Alejandro Lucero, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From e20e50b1466389ca8bc2f126828eadef9bbc416b Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Mon, 14 May 2018 13:00:32 +0800
Subject: [PATCH] net/nfp: fix memcpy out of source range
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit 1bcb5ecb179cbca81ff3fe15432326c1c3ca9e9b ]

drivers/net/nfp/nfp_net.c:669:2: error:
‘memcpy’ forming offset [5, 6] is out of the bounds [0, 4]
of object ‘tmp’ with type ‘uint32_t’ {aka ‘unsigned int’}
[-Werror=array-bounds]
memcpy(&hw->mac_addr[0], &tmp, sizeof(struct ether_addr));

Fixes: e6decee38209 ("net/nfp: use random MAC address if not configured")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Tested-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 911a3d0c6..458114982 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -620,7 +620,7 @@ static void nfp_net_read_mac(struct nfp_net_hw *hw)
 	uint32_t tmp;
 
 	tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR));
-	memcpy(&hw->mac_addr[0], &tmp, sizeof(struct ether_addr));
+	memcpy(&hw->mac_addr[0], &tmp, 4);
 
 	tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4));
 	memcpy(&hw->mac_addr[4], &tmp, 2);
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: remove unused path pattern' has been queued to LTS release 16.11.7
  2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
                       ` (29 preceding siblings ...)
  2018-05-15 17:19     ` [dpdk-stable] patch 'net/nfp: fix memcpy out of source range' " luca.boccassi
@ 2018-05-15 17:19     ` luca.boccassi
  30 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-15 17:19 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f18997b9363c3965cfbc7aeafeb87ebf5a8cdf32 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Mon, 14 May 2018 17:27:39 +0100
Subject: [PATCH] eal: remove unused path pattern

[ upstream commit dcbfbe3c80f2e0b7c65715f6d93498fcdda097d6 ]

The define was a leftover from IVSHMEM library.

Fixes: c711ccb30987 ("ivshmem: remove library and its EAL integration")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Marchand <david.marchand@6wind.com>
---
 lib/librte_eal/common/eal_filesystem.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/lib/librte_eal/common/eal_filesystem.h b/lib/librte_eal/common/eal_filesystem.h
index 8acbd9966..8f4f0200e 100644
--- a/lib/librte_eal/common/eal_filesystem.h
+++ b/lib/librte_eal/common/eal_filesystem.h
@@ -86,8 +86,6 @@ eal_hugepage_info_path(void)
 
 /** String format for hugepage map files. */
 #define HUGEFILE_FMT "%s/%smap_%d"
-#define TEMP_HUGEFILE_FMT "%s/%smap_temp_%d"
-
 static inline const char *
 eal_get_hugefile_path(char *buffer, size_t buflen, const char *hugedir, int f_id)
 {
-- 
2.14.2

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

* [dpdk-stable] patch 'mempool: fix virtual address population' has been queued to LTS release 16.11.7
  2018-05-15 17:19     ` [dpdk-stable] patch 'eal: explicit cast of core id when getting index' " luca.boccassi
@ 2018-05-16 10:09       ` luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' " luca.boccassi
                           ` (2 more replies)
  0 siblings, 3 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-16 10:09 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Olivier Matz, Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0aa7812512918fbe4886d57b0f8be3f39a80e1b3 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Mon, 14 May 2018 17:06:15 +0100
Subject: [PATCH] mempool: fix virtual address population

[ upstream commit 460354cd4ede8e8cf27710d645524caeecf49b47 ]

Currently, populate_virt will check if mempool is already populated.
This will cause inability to reserve multi-chunk mempools if
contiguous memory is not a hard requirement, because if allocating
all-contiguous memory fails, mempool will retry with virtual addresses
and will call populate_virt. It seems that the original code never
anticipated more than one non-physically contiguous area.

Fix it by removing the check in populate virt. populate_anon() function
calls populate_virt() also, and it can be reasonably inferred that it is
expecting that virtual area is not already populated. Even though a
similar check is already in place there, also add the check that was
part of populate_virt() just in case.

Fixes: aab4f62d6c1c ("mempool: support no hugepage mode")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_mempool/rte_mempool.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 011fa9bbd..3cb9e42c3 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -462,9 +462,6 @@ rte_mempool_populate_virt(struct rte_mempool *mp, char *addr,
 	size_t off, phys_len;
 	int ret, cnt = 0;
 
-	/* mempool must not be populated */
-	if (mp->nb_mem_chunks != 0)
-		return -EEXIST;
 	/* address and len must be page-aligned */
 	if (RTE_PTR_ALIGN_CEIL(addr, pg_sz) != addr)
 		return -EINVAL;
@@ -628,7 +625,7 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 	char *addr;
 
 	/* mempool is already populated, error */
-	if (!STAILQ_EMPTY(&mp->mem_list)) {
+	if ((!STAILQ_EMPTY(&mp->mem_list)) || mp->nb_mem_chunks != 0) {
 		rte_errno = EINVAL;
 		return 0;
 	}
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' has been queued to LTS release 16.11.7
  2018-05-16 10:09       ` [dpdk-stable] patch 'mempool: fix virtual address population' " luca.boccassi
@ 2018-05-16 10:09         ` luca.boccassi
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix KR2 device check' " luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix memzone name overrun' " luca.boccassi
  2 siblings, 1 reply; 108+ messages in thread
From: luca.boccassi @ 2018-05-16 10:09 UTC (permalink / raw)
  To: Andy Green; +Cc: Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 6c49fed733fffbb67b613f5fd95619f7565e5906 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Mon, 14 May 2018 13:04:28 +0800
Subject: [PATCH] net/bnx2x: do not cast function pointers as a policy

[ upstream commit d88b346d9a75c7ec6c4c973e16920e5e5161bab9 ]

This is stopping the compiler telling you when you have
done something stupid... that is something none of us
can afford...

Now gcc 8.x can tell you did something stupid despite
trying to hide the evidence.

Remove all the "black magic" casts.

Fix the actual problems.

Fixes: b5bf7719221d ("bnx2x: driver support routines")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/bnx2x/elink.c | 342 +++++++++++++++++++++++-----------------------
 1 file changed, 172 insertions(+), 170 deletions(-)

diff --git a/drivers/net/bnx2x/elink.c b/drivers/net/bnx2x/elink.c
index 532939620..beaeb6ccd 100644
--- a/drivers/net/bnx2x/elink.c
+++ b/drivers/net/bnx2x/elink.c
@@ -4143,9 +4143,9 @@ static void elink_sfp_e3_set_transmitter(struct elink_params *params,
 		elink_set_cfg_pin(sc, cfg_pin + 3, tx_en ^ 1);
 }
 
-static void elink_warpcore_config_init(struct elink_phy *phy,
-				       struct elink_params *params,
-				       struct elink_vars *vars)
+static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
+					  struct elink_params *params,
+					  struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint32_t serdes_net_if;
@@ -4222,7 +4222,7 @@ static void elink_warpcore_config_init(struct elink_phy *phy,
 		case PORT_HW_CFG_NET_SERDES_IF_DXGXS:
 			if (vars->line_speed != ELINK_SPEED_20000) {
 				PMD_DRV_LOG(DEBUG, "Speed not supported yet");
-				return;
+				return 0;
 			}
 			PMD_DRV_LOG(DEBUG, "Setting 20G DXGXS");
 			elink_warpcore_set_20G_DXGXS(sc, phy, lane);
@@ -4242,13 +4242,15 @@ static void elink_warpcore_config_init(struct elink_phy *phy,
 			PMD_DRV_LOG(DEBUG,
 				    "Unsupported Serdes Net Interface 0x%x",
 				    serdes_net_if);
-			return;
+			return 0;
 		}
 	}
 
 	/* Take lane out of reset after configuration is finished */
 	elink_warpcore_reset_lane(sc, phy, 0);
 	PMD_DRV_LOG(DEBUG, "Exit config init");
+
+	return 0;
 }
 
 static void elink_warpcore_link_reset(struct elink_phy *phy,
@@ -5226,9 +5228,9 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 	return ELINK_STATUS_OK;
 }
 
-static elink_status_t elink_link_settings_status(struct elink_phy *phy,
-						 struct elink_params *params,
-						 struct elink_vars *vars)
+static uint8_t elink_link_settings_status(struct elink_phy *phy,
+					  struct elink_params *params,
+					  struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 
@@ -5299,9 +5301,9 @@ static elink_status_t elink_link_settings_status(struct elink_phy *phy,
 	return rc;
 }
 
-static elink_status_t elink_warpcore_read_status(struct elink_phy *phy,
-						 struct elink_params *params,
-						 struct elink_vars *vars)
+static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
+					  struct elink_params *params,
+					  struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint8_t lane;
@@ -5520,9 +5522,9 @@ static void elink_set_preemphasis(struct elink_phy *phy,
 	}
 }
 
-static void elink_xgxs_config_init(struct elink_phy *phy,
-				   struct elink_params *params,
-				   struct elink_vars *vars)
+static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      struct elink_vars *vars)
 {
 	uint8_t enable_cl73 = (ELINK_SINGLE_MEDIA_DIRECT(params) ||
 			       (params->loopback_mode == ELINK_LOOPBACK_XGXS));
@@ -5567,6 +5569,8 @@ static void elink_xgxs_config_init(struct elink_phy *phy,
 
 		elink_initialize_sgmii_process(phy, params, vars);
 	}
+
+	return 0;
 }
 
 static elink_status_t elink_prepare_xgxs(struct elink_phy *phy,
@@ -5751,8 +5755,8 @@ static void elink_link_int_ack(struct elink_params *params,
 	}
 }
 
-static elink_status_t elink_format_ver(uint32_t num, uint8_t * str,
-				       uint16_t * len)
+static uint8_t elink_format_ver(uint32_t num, uint8_t * str,
+				uint16_t * len)
 {
 	uint8_t *str_ptr = str;
 	uint32_t mask = 0xf0000000;
@@ -5790,8 +5794,8 @@ static elink_status_t elink_format_ver(uint32_t num, uint8_t * str,
 	return ELINK_STATUS_OK;
 }
 
-static elink_status_t elink_null_format_ver(__rte_unused uint32_t spirom_ver,
-					    uint8_t * str, uint16_t * len)
+static uint8_t elink_null_format_ver(__rte_unused uint32_t spirom_ver,
+				     uint8_t * str, uint16_t * len)
 {
 	str[0] = '\0';
 	(*len)--;
@@ -6801,9 +6805,9 @@ static void elink_8073_specific_func(struct elink_phy *phy,
 	}
 }
 
-static elink_status_t elink_8073_config_init(struct elink_phy *phy,
-					     struct elink_params *params,
-					     struct elink_vars *vars)
+static uint8_t elink_8073_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint16_t val = 0, tmp1;
@@ -7096,9 +7100,9 @@ static void elink_8073_link_reset(__rte_unused struct elink_phy *phy,
 /******************************************************************/
 /*			BNX2X8705 PHY SECTION			  */
 /******************************************************************/
-static elink_status_t elink_8705_config_init(struct elink_phy *phy,
-					     struct elink_params *params,
-					     __rte_unused struct elink_vars
+static uint8_t elink_8705_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      __rte_unused struct elink_vars
 					     *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
@@ -8402,9 +8406,9 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 	return ELINK_STATUS_OK;
 }
 
-static elink_status_t elink_8706_read_status(struct elink_phy *phy,
-					     struct elink_params *params,
-					     struct elink_vars *vars)
+static uint8_t elink_8706_read_status(struct elink_phy *phy,
+				      struct elink_params *params,
+				      struct elink_vars *vars)
 {
 	return elink_8706_8726_read_status(phy, params, vars);
 }
@@ -8476,9 +8480,9 @@ static uint8_t elink_8726_read_status(struct elink_phy *phy,
 	return link_up;
 }
 
-static elink_status_t elink_8726_config_init(struct elink_phy *phy,
-					     struct elink_params *params,
-					     struct elink_vars *vars)
+static uint8_t elink_8726_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	PMD_DRV_LOG(DEBUG, "Initializing BNX2X8726");
@@ -8683,9 +8687,9 @@ static void elink_8727_config_speed(struct elink_phy *phy,
 	}
 }
 
-static elink_status_t elink_8727_config_init(struct elink_phy *phy,
-					     struct elink_params *params,
-					     __rte_unused struct elink_vars
+static uint8_t elink_8727_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      __rte_unused struct elink_vars
 					     *vars)
 {
 	uint32_t tx_en_mode;
@@ -9290,7 +9294,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 	return ELINK_STATUS_OK;
 }
 
-static elink_status_t elink_8481_config_init(struct elink_phy *phy,
+static uint8_t elink_8481_config_init(struct elink_phy *phy,
 					     struct elink_params *params,
 					     struct elink_vars *vars)
 {
@@ -9441,8 +9445,8 @@ static uint8_t elink_84833_get_reset_gpios(struct bnx2x_softc *sc,
 	return reset_gpios;
 }
 
-static elink_status_t elink_84833_hw_reset_phy(struct elink_phy *phy,
-					       struct elink_params *params)
+static void elink_84833_hw_reset_phy(struct elink_phy *phy,
+					struct elink_params *params)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint8_t reset_gpios;
@@ -9470,8 +9474,6 @@ static elink_status_t elink_84833_hw_reset_phy(struct elink_phy *phy,
 				 MISC_REGISTERS_GPIO_OUTPUT_LOW);
 	DELAY(10);
 	PMD_DRV_LOG(DEBUG, "84833 hw reset on pin values 0x%x", reset_gpios);
-
-	return ELINK_STATUS_OK;
 }
 
 static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
@@ -9512,9 +9514,9 @@ static elink_status_t elink_8483x_enable_eee(struct elink_phy *phy,
 }
 
 #define PHY84833_CONSTANT_LATENCY 1193
-static elink_status_t elink_848x3_config_init(struct elink_phy *phy,
-					      struct elink_params *params,
-					      struct elink_vars *vars)
+static uint8_t elink_848x3_config_init(struct elink_phy *phy,
+				       struct elink_params *params,
+				       struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint8_t port, initialize = 1;
@@ -9818,7 +9820,7 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
 	return link_up;
 }
 
-static elink_status_t elink_848xx_format_ver(uint32_t raw_ver, uint8_t * str,
+static uint8_t elink_848xx_format_ver(uint32_t raw_ver, uint8_t * str,
 					     uint16_t * len)
 {
 	elink_status_t status = ELINK_STATUS_OK;
@@ -10145,9 +10147,9 @@ static void elink_54618se_specific_func(struct elink_phy *phy,
 	}
 }
 
-static elink_status_t elink_54618se_config_init(struct elink_phy *phy,
-						struct elink_params *params,
-						struct elink_vars *vars)
+static uint8_t elink_54618se_config_init(struct elink_phy *phy,
+					 struct elink_params *params,
+					 struct elink_vars *vars)
 {
 	struct bnx2x_softc *sc = params->sc;
 	uint8_t port;
@@ -10541,9 +10543,9 @@ static void elink_7101_config_loopback(struct elink_phy *phy,
 			 MDIO_XS_DEVAD, MDIO_XS_SFX7101_XGXS_TEST1, 0x100);
 }
 
-static elink_status_t elink_7101_config_init(struct elink_phy *phy,
-					     struct elink_params *params,
-					     struct elink_vars *vars)
+static uint8_t elink_7101_config_init(struct elink_phy *phy,
+				      struct elink_params *params,
+				      struct elink_vars *vars)
 {
 	uint16_t fw_ver1, fw_ver2, val;
 	struct bnx2x_softc *sc = params->sc;
@@ -10613,8 +10615,8 @@ static uint8_t elink_7101_read_status(struct elink_phy *phy,
 	return link_up;
 }
 
-static elink_status_t elink_7101_format_ver(uint32_t spirom_ver, uint8_t * str,
-					    uint16_t * len)
+static uint8_t elink_7101_format_ver(uint32_t spirom_ver, uint8_t * str,
+				     uint16_t * len)
 {
 	if (*len < 5)
 		return ELINK_STATUS_ERROR;
@@ -10679,14 +10681,14 @@ static const struct elink_phy phy_null = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) NULL,
-	.read_status = (read_status_t) NULL,
-	.link_reset = (link_reset_t) NULL,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) NULL,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = NULL,
+	.read_status = NULL,
+	.link_reset = NULL,
+	.config_loopback = NULL,
+	.format_fw_ver = NULL,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_serdes = {
@@ -10713,14 +10715,14 @@ static const struct elink_phy phy_serdes = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_xgxs_config_init,
-	.read_status = (read_status_t) elink_link_settings_status,
-	.link_reset = (link_reset_t) elink_int_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) NULL,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_xgxs_config_init,
+	.read_status = elink_link_settings_status,
+	.link_reset = elink_int_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = NULL,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_xgxs = {
@@ -10748,14 +10750,14 @@ static const struct elink_phy phy_xgxs = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_xgxs_config_init,
-	.read_status = (read_status_t) elink_link_settings_status,
-	.link_reset = (link_reset_t) elink_int_link_reset,
-	.config_loopback = (config_loopback_t) elink_set_xgxs_loopback,
-	.format_fw_ver = (format_fw_ver_t) NULL,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) elink_xgxs_specific_func
+	.config_init = elink_xgxs_config_init,
+	.read_status = elink_link_settings_status,
+	.link_reset = elink_int_link_reset,
+	.config_loopback = elink_set_xgxs_loopback,
+	.format_fw_ver = NULL,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = elink_xgxs_specific_func
 };
 
 static const struct elink_phy phy_warpcore = {
@@ -10784,14 +10786,14 @@ static const struct elink_phy phy_warpcore = {
 	.speed_cap_mask = 0,
 	/* req_duplex = */ 0,
 	/* rsrv = */ 0,
-	.config_init = (config_init_t) elink_warpcore_config_init,
-	.read_status = (read_status_t) elink_warpcore_read_status,
-	.link_reset = (link_reset_t) elink_warpcore_link_reset,
-	.config_loopback = (config_loopback_t) elink_set_warpcore_loopback,
-	.format_fw_ver = (format_fw_ver_t) NULL,
-	.hw_reset = (hw_reset_t) elink_warpcore_hw_reset,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_warpcore_config_init,
+	.read_status = elink_warpcore_read_status,
+	.link_reset = elink_warpcore_link_reset,
+	.config_loopback = elink_set_warpcore_loopback,
+	.format_fw_ver = NULL,
+	.hw_reset = elink_warpcore_hw_reset,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_7101 = {
@@ -10813,14 +10815,14 @@ static const struct elink_phy phy_7101 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_7101_config_init,
-	.read_status = (read_status_t) elink_7101_read_status,
-	.link_reset = (link_reset_t) elink_common_ext_link_reset,
-	.config_loopback = (config_loopback_t) elink_7101_config_loopback,
-	.format_fw_ver = (format_fw_ver_t) elink_7101_format_ver,
-	.hw_reset = (hw_reset_t) elink_7101_hw_reset,
-	.set_link_led = (set_link_led_t) elink_7101_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_7101_config_init,
+	.read_status = elink_7101_read_status,
+	.link_reset = elink_common_ext_link_reset,
+	.config_loopback = elink_7101_config_loopback,
+	.format_fw_ver = elink_7101_format_ver,
+	.hw_reset = elink_7101_hw_reset,
+	.set_link_led = elink_7101_set_link_led,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_8073 = {
@@ -10844,14 +10846,14 @@ static const struct elink_phy phy_8073 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8073_config_init,
-	.read_status = (read_status_t) elink_8073_read_status,
-	.link_reset = (link_reset_t) elink_8073_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_format_ver,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) elink_8073_specific_func
+	.config_init = elink_8073_config_init,
+	.read_status = elink_8073_read_status,
+	.link_reset = elink_8073_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_format_ver,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = elink_8073_specific_func
 };
 
 static const struct elink_phy phy_8705 = {
@@ -10872,14 +10874,14 @@ static const struct elink_phy phy_8705 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8705_config_init,
-	.read_status = (read_status_t) elink_8705_read_status,
-	.link_reset = (link_reset_t) elink_common_ext_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_null_format_ver,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_8705_config_init,
+	.read_status = elink_8705_read_status,
+	.link_reset = elink_common_ext_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_null_format_ver,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_8706 = {
@@ -10901,14 +10903,14 @@ static const struct elink_phy phy_8706 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8706_config_init,
-	.read_status = (read_status_t) elink_8706_read_status,
-	.link_reset = (link_reset_t) elink_common_ext_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_format_ver,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_8706_config_init,
+	.read_status = elink_8706_read_status,
+	.link_reset = elink_common_ext_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_format_ver,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_8726 = {
@@ -10931,14 +10933,14 @@ static const struct elink_phy phy_8726 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8726_config_init,
-	.read_status = (read_status_t) elink_8726_read_status,
-	.link_reset = (link_reset_t) elink_8726_link_reset,
-	.config_loopback = (config_loopback_t) elink_8726_config_loopback,
-	.format_fw_ver = (format_fw_ver_t) elink_format_ver,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) NULL,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_8726_config_init,
+	.read_status = elink_8726_read_status,
+	.link_reset = elink_8726_link_reset,
+	.config_loopback = elink_8726_config_loopback,
+	.format_fw_ver = elink_format_ver,
+	.hw_reset = NULL,
+	.set_link_led = NULL,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_8727 = {
@@ -10960,14 +10962,14 @@ static const struct elink_phy phy_8727 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8727_config_init,
-	.read_status = (read_status_t) elink_8727_read_status,
-	.link_reset = (link_reset_t) elink_8727_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_format_ver,
-	.hw_reset = (hw_reset_t) elink_8727_hw_reset,
-	.set_link_led = (set_link_led_t) elink_8727_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) elink_8727_specific_func
+	.config_init = elink_8727_config_init,
+	.read_status = elink_8727_read_status,
+	.link_reset = elink_8727_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_format_ver,
+	.hw_reset = elink_8727_hw_reset,
+	.set_link_led = elink_8727_set_link_led,
+	.phy_specific_func = elink_8727_specific_func
 };
 
 static const struct elink_phy phy_8481 = {
@@ -10995,14 +10997,14 @@ static const struct elink_phy phy_8481 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_8481_config_init,
-	.read_status = (read_status_t) elink_848xx_read_status,
-	.link_reset = (link_reset_t) elink_8481_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_848xx_format_ver,
-	.hw_reset = (hw_reset_t) elink_8481_hw_reset,
-	.set_link_led = (set_link_led_t) elink_848xx_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) NULL
+	.config_init = elink_8481_config_init,
+	.read_status = elink_848xx_read_status,
+	.link_reset = elink_8481_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_848xx_format_ver,
+	.hw_reset = elink_8481_hw_reset,
+	.set_link_led = elink_848xx_set_link_led,
+	.phy_specific_func = NULL
 };
 
 static const struct elink_phy phy_84823 = {
@@ -11030,14 +11032,14 @@ static const struct elink_phy phy_84823 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_848x3_config_init,
-	.read_status = (read_status_t) elink_848xx_read_status,
-	.link_reset = (link_reset_t) elink_848x3_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_848xx_format_ver,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) elink_848xx_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) elink_848xx_specific_func
+	.config_init = elink_848x3_config_init,
+	.read_status = elink_848xx_read_status,
+	.link_reset = elink_848x3_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_848xx_format_ver,
+	.hw_reset = NULL,
+	.set_link_led = elink_848xx_set_link_led,
+	.phy_specific_func = elink_848xx_specific_func
 };
 
 static const struct elink_phy phy_84833 = {
@@ -11064,14 +11066,14 @@ static const struct elink_phy phy_84833 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_848x3_config_init,
-	.read_status = (read_status_t) elink_848xx_read_status,
-	.link_reset = (link_reset_t) elink_848x3_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_848xx_format_ver,
-	.hw_reset = (hw_reset_t) elink_84833_hw_reset_phy,
-	.set_link_led = (set_link_led_t) elink_848xx_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) elink_848xx_specific_func
+	.config_init = elink_848x3_config_init,
+	.read_status = elink_848xx_read_status,
+	.link_reset = elink_848x3_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_848xx_format_ver,
+	.hw_reset = elink_84833_hw_reset_phy,
+	.set_link_led = elink_848xx_set_link_led,
+	.phy_specific_func = elink_848xx_specific_func
 };
 
 static const struct elink_phy phy_84834 = {
@@ -11097,14 +11099,14 @@ static const struct elink_phy phy_84834 = {
 	.speed_cap_mask = 0,
 	.req_duplex = 0,
 	.rsrv = 0,
-	.config_init = (config_init_t) elink_848x3_config_init,
-	.read_status = (read_status_t) elink_848xx_read_status,
-	.link_reset = (link_reset_t) elink_848x3_link_reset,
-	.config_loopback = (config_loopback_t) NULL,
-	.format_fw_ver = (format_fw_ver_t) elink_848xx_format_ver,
-	.hw_reset = (hw_reset_t) elink_84833_hw_reset_phy,
-	.set_link_led = (set_link_led_t) elink_848xx_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) elink_848xx_specific_func
+	.config_init = elink_848x3_config_init,
+	.read_status = elink_848xx_read_status,
+	.link_reset = elink_848x3_link_reset,
+	.config_loopback = NULL,
+	.format_fw_ver = elink_848xx_format_ver,
+	.hw_reset = elink_84833_hw_reset_phy,
+	.set_link_led = elink_848xx_set_link_led,
+	.phy_specific_func = elink_848xx_specific_func
 };
 
 static const struct elink_phy phy_54618se = {
@@ -11130,14 +11132,14 @@ static const struct elink_phy phy_54618se = {
 	.speed_cap_mask = 0,
 	/* req_duplex = */ 0,
 	/* rsrv = */ 0,
-	.config_init = (config_init_t) elink_54618se_config_init,
-	.read_status = (read_status_t) elink_54618se_read_status,
-	.link_reset = (link_reset_t) elink_54618se_link_reset,
-	.config_loopback = (config_loopback_t) elink_54618se_config_loopback,
-	.format_fw_ver = (format_fw_ver_t) NULL,
-	.hw_reset = (hw_reset_t) NULL,
-	.set_link_led = (set_link_led_t) elink_5461x_set_link_led,
-	.phy_specific_func = (phy_specific_func_t) elink_54618se_specific_func
+	.config_init = elink_54618se_config_init,
+	.read_status = elink_54618se_read_status,
+	.link_reset = elink_54618se_link_reset,
+	.config_loopback = elink_54618se_config_loopback,
+	.format_fw_ver = NULL,
+	.hw_reset = NULL,
+	.set_link_led = elink_5461x_set_link_led,
+	.phy_specific_func = elink_54618se_specific_func
 };
 
 /*****************************************************************/
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnx2x: fix KR2 device check' has been queued to LTS release 16.11.7
  2018-05-16 10:09       ` [dpdk-stable] patch 'mempool: fix virtual address population' " luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' " luca.boccassi
@ 2018-05-16 10:09         ` luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix memzone name overrun' " luca.boccassi
  2 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-16 10:09 UTC (permalink / raw)
  To: Andy Green; +Cc: Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0d9489fd9c905991273d49d1e29d569b3fad98ce Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Mon, 14 May 2018 13:04:33 +0800
Subject: [PATCH] net/bnx2x: fix KR2 device check
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit d9b8838ab2e90713827ee8843d836b0fccbaf2f7 ]

In function ‘elink_check_kr2_wa’:
drivers/net/bnx2x/elink.c:12922:28:
error: bitwise comparison always evaluates to false
[-Werror=tautological-compare]
        ((next_page & 0xe0) == 0x2))));

This was fixed elsewhere in 2014

Fixes: b5bf7719221d ("bnx2x: driver support routines")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/bnx2x/elink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnx2x/elink.c b/drivers/net/bnx2x/elink.c
index beaeb6ccd..89747104a 100644
--- a/drivers/net/bnx2x/elink.c
+++ b/drivers/net/bnx2x/elink.c
@@ -12918,7 +12918,7 @@ static void elink_check_kr2_wa(struct elink_params *params,
 	 */
 	not_kr2_device = (((base_page & 0x8000) == 0) ||
 			  (((base_page & 0x8000) &&
-			    ((next_page & 0xe0) == 0x2))));
+			    ((next_page & 0xe0) == 0x20))));
 
 	/* In case KR2 is already disabled, check if we need to re-enable it */
 	if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnx2x: fix memzone name overrun' has been queued to LTS release 16.11.7
  2018-05-16 10:09       ` [dpdk-stable] patch 'mempool: fix virtual address population' " luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' " luca.boccassi
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix KR2 device check' " luca.boccassi
@ 2018-05-16 10:09         ` luca.boccassi
  2 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-16 10:09 UTC (permalink / raw)
  To: Andy Green; +Cc: Pablo de Lara, Rasesh Mody, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2b7cddab9ed2d66904a57853c11768e7ab1c7bf4 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Mon, 14 May 2018 13:04:43 +0800
Subject: [PATCH] net/bnx2x: fix memzone name overrun

[ upstream commit 52f766443423a7728a9dedda13fd8b23d7e50665 ]

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/bnx2x/bnx2x.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 9ad9d2baa..c2842e3a2 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -170,10 +170,10 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma,
 
 	dma->sc = sc;
 	if (IS_PF(sc))
-		sprintf(mz_name, "bnx2x%d_%s_%" PRIx64, SC_ABS_FUNC(sc), msg,
+		snprintf(mz_name, sizeof(mz_name), "bnx2x%d_%s_%" PRIx64, SC_ABS_FUNC(sc), msg,
 			rte_get_timer_cycles());
 	else
-		sprintf(mz_name, "bnx2x%d_%s_%" PRIx64, sc->pcie_device, msg,
+		snprintf(mz_name, sizeof(mz_name), "bnx2x%d_%s_%" PRIx64, sc->pcie_device, msg,
 			rte_get_timer_cycles());
 
 	/* Caller must take care that strlen(mz_name) < RTE_MEMZONE_NAMESIZE */
-- 
2.14.2

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

* Re: [dpdk-stable] patch 'vhost: fix device cleanup at stop' has been queued to LTS release 16.11.7
  2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix device cleanup at stop' " luca.boccassi
@ 2018-05-23  7:35   ` Maxime Coquelin
  2018-05-23  9:20     ` Luca Boccassi
  0 siblings, 1 reply; 108+ messages in thread
From: Maxime Coquelin @ 2018-05-23  7:35 UTC (permalink / raw)
  To: luca.boccassi, Tomasz Kulasek
  Cc: Dariusz Stojaczyk, Jianfeng Tan, dpdk stable

Hi Luca, Tomasz,

While testing 16.11 branch, I noticed vhost lib is broken.
The symptoms is no packets are sent or received.

I ran a bisect which points to this commit. Reverting it solves the
issue.

Debugging a bit more, I can see that the callfd is valid when no packets
are being transmitted. I think the problem is that the callfd is
received after the kickfd:

VHOST_CONFIG: read message VHOST_USER_SET_VRING_KICK
VHOST_CONFIG: vring kick idx:0 file:16
VHOST_CONFIG: virtio is not ready for processing.
VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
VHOST_CONFIG: vring call idx:0 file:17

And in 16.11, the new_device callback is called from the
VHOST_USER_SET_VRING_KICK handling, only if the device is ready.
This is different in later versions, where the new_device callback
can be called for any request.

The right way to fix this would be to move the new_device callback call
for any request, but I think there is a non-negligible risk of
regression so we'd need to be careful doing that.

Other option is to simply revert Tomasz patch in 16.11 LTS. This is not
ideal because Tomasz patch is fixing a real issue (new_device get called
with an outdated/invalid callfd). However, I don't know if it has real
consequences, as the callfd is updated right after.

Except if someone face real issue due to callfd being updated after
new_device is called, then my suggestion would be to revert Tomasz patch
as we are at 6 months of 16.11 EOL.

Luca, Tomasz, what's your take on this?

Regards,
Maxime

On 05/01/2018 12:44 PM, luca.boccassi@gmail.com wrote:
> Hi,
> 
> FYI, your patch has been queued to LTS release 16.11.7
> 
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 05/03/18. So please
> shout if anyone has objections.
> 
> Thanks.
> 
> Luca Boccassi
> 
> ---
>  From 357f27736c79d0258409666277b6e113d11c757b Mon Sep 17 00:00:00 2001
> From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> Date: Fri, 9 Feb 2018 18:10:00 +0100
> Subject: [PATCH] vhost: fix device cleanup at stop
> 
> [ upstream commit ace7b6b7859e1dc410589610a8e436c1a3b430f3 ]
> 
> This prevents from destroying & recreating user device in "incomplete"
> vring state. virtio_is_ready() was returning true for devices with
> vrings which did not have valid callfd (their VHOST_USER_SET_VRING_CALL
> hasn't arrived yet)
> 
> Fixes: 8f972312b8f4 ("vhost: support vhost-user")
> 
> Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
>   lib/librte_vhost/vhost_user.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index abcb6ac14..0d30f11ef 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -800,6 +800,11 @@ vhost_user_get_vring_base(struct virtio_net *dev,
>   
>   	vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
>   
> +	if (vq->callfd >= 0)
> +		close(vq->callfd);
> +
> +	vq->callfd = VIRTIO_UNINITIALIZED_EVENTFD;
> +
>   	if (dev->dequeue_zero_copy)
>   		free_zmbufs(vq);
>   	rte_free(vq->shadow_used_ring);
> 

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

* Re: [dpdk-stable] patch 'vhost: fix device cleanup at stop' has been queued to LTS release 16.11.7
  2018-05-23  7:35   ` Maxime Coquelin
@ 2018-05-23  9:20     ` Luca Boccassi
  2018-06-01 15:46       ` Luca Boccassi
  0 siblings, 1 reply; 108+ messages in thread
From: Luca Boccassi @ 2018-05-23  9:20 UTC (permalink / raw)
  To: Maxime Coquelin, Tomasz Kulasek
  Cc: Dariusz Stojaczyk, Jianfeng Tan, dpdk stable

On Wed, 2018-05-23 at 09:35 +0200, Maxime Coquelin wrote:
> Hi Luca, Tomasz,
> 
> While testing 16.11 branch, I noticed vhost lib is broken.
> The symptoms is no packets are sent or received.
> 
> I ran a bisect which points to this commit. Reverting it solves the
> issue.
> 
> Debugging a bit more, I can see that the callfd is valid when no
> packets
> are being transmitted. I think the problem is that the callfd is
> received after the kickfd:
> 
> VHOST_CONFIG: read message VHOST_USER_SET_VRING_KICK
> VHOST_CONFIG: vring kick idx:0 file:16
> VHOST_CONFIG: virtio is not ready for processing.
> VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
> VHOST_CONFIG: vring call idx:0 file:17
> 
> And in 16.11, the new_device callback is called from the
> VHOST_USER_SET_VRING_KICK handling, only if the device is ready.
> This is different in later versions, where the new_device callback
> can be called for any request.
> 
> The right way to fix this would be to move the new_device callback
> call
> for any request, but I think there is a non-negligible risk of
> regression so we'd need to be careful doing that.
> 
> Other option is to simply revert Tomasz patch in 16.11 LTS. This is
> not
> ideal because Tomasz patch is fixing a real issue (new_device get
> called
> with an outdated/invalid callfd). However, I don't know if it has
> real
> consequences, as the callfd is updated right after.
> 
> Except if someone face real issue due to callfd being updated after
> new_device is called, then my suggestion would be to revert Tomasz
> patch
> as we are at 6 months of 16.11 EOL.
> 
> Luca, Tomasz, what's your take on this?
> 
> Regards,
> Maxime

I'm fine with your suggestion of reverting the patch, as it seems less
risky.

> On 05/01/2018 12:44 PM, luca.boccassi@gmail.com wrote:
> > Hi,
> > 
> > FYI, your patch has been queued to LTS release 16.11.7
> > 
> > Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable
> > yet.
> > It will be pushed if I get no objections before 05/03/18. So please
> > shout if anyone has objections.
> > 
> > Thanks.
> > 
> > Luca Boccassi
> > 
> > ---
> >  From 357f27736c79d0258409666277b6e113d11c757b Mon Sep 17 00:00:00
> > 2001
> > From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> > Date: Fri, 9 Feb 2018 18:10:00 +0100
> > Subject: [PATCH] vhost: fix device cleanup at stop
> > 
> > [ upstream commit ace7b6b7859e1dc410589610a8e436c1a3b430f3 ]
> > 
> > This prevents from destroying & recreating user device in
> > "incomplete"
> > vring state. virtio_is_ready() was returning true for devices with
> > vrings which did not have valid callfd (their
> > VHOST_USER_SET_VRING_CALL
> > hasn't arrived yet)
> > 
> > Fixes: 8f972312b8f4 ("vhost: support vhost-user")
> > 
> > Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
> > Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> > Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
> > Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> > ---
> >   lib/librte_vhost/vhost_user.c | 5 +++++
> >   1 file changed, 5 insertions(+)
> > 
> > diff --git a/lib/librte_vhost/vhost_user.c
> > b/lib/librte_vhost/vhost_user.c
> > index abcb6ac14..0d30f11ef 100644
> > --- a/lib/librte_vhost/vhost_user.c
> > +++ b/lib/librte_vhost/vhost_user.c
> > @@ -800,6 +800,11 @@ vhost_user_get_vring_base(struct virtio_net
> > *dev,
> >   
> >   	vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
> >   
> > +	if (vq->callfd >= 0)
> > +		close(vq->callfd);
> > +
> > +	vq->callfd = VIRTIO_UNINITIALIZED_EVENTFD;
> > +
> >   	if (dev->dequeue_zero_copy)
> >   		free_zmbufs(vq);
> >   	rte_free(vq->shadow_used_ring);
> > 

-- 
Kind regards,
Luca Boccassi

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

* [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' has been queued to LTS release 16.11.7
  2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' " luca.boccassi
@ 2018-05-23 14:33           ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix too many interrupts' " luca.boccassi
                               ` (21 more replies)
  0 siblings, 22 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Beilei Xing; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 06b478e85b8ce773afd0fc0529a511e009a0469d Mon Sep 17 00:00:00 2001
From: Beilei Xing <beilei.xing@intel.com>
Date: Wed, 16 May 2018 00:19:05 +0800
Subject: [PATCH] net/i40e: fix failing to disable FDIR Tx queue

[ upstream commit ba2e8c6f29346245c0e1ff23f84fd10e076a9bbc ]

If flow director is enabled, FDIR Tx queue can't
be disabled when exiting application. Root cause
is FDIR Tx queue is not disabled before removing
HMC backing store.

Fixes: 71d35259ff67 ("i40e: tear down flow director")

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 4669245f2..7e93c3e1a 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2008,6 +2008,8 @@ i40e_dev_close(struct rte_eth_dev *dev)
 	i40e_pf_disable_irq0(hw);
 	rte_intr_disable(&(dev->pci_dev->intr_handle));
 
+	i40e_fdir_teardown(pf);
+
 	/* shutdown and destroy the HMC */
 	i40e_shutdown_lan_hmc(hw);
 
@@ -2019,7 +2021,6 @@ i40e_dev_close(struct rte_eth_dev *dev)
 	pf->vmdq = NULL;
 
 	/* release all the existing VSIs and VEBs */
-	i40e_fdir_teardown(pf);
 	i40e_vsi_release(pf->main_vsi);
 
 	/* shutdown the adminq */
-- 
2.14.2

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

* [dpdk-stable] patch 'net/ixgbe: fix too many interrupts' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'eal: fix casts in random functions' " luca.boccassi
                               ` (20 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Wenzhuo Lu; +Cc: Michael Luo, Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From beb1dc15572d3f729568f2d6de315a8f57486df6 Mon Sep 17 00:00:00 2001
From: Wenzhuo Lu <wenzhuo.lu@intel.com>
Date: Thu, 17 May 2018 13:34:09 +0800
Subject: [PATCH] net/ixgbe: fix too many interrupts

[ upstream commit 874f79102d2a15dd50293082842006fbc06572c7 ]

To support kernel VF, PBA bit is always set. But it may
cause the too many interrupts issue on specific Linux
kernel versions, e.g. 4.4.0-116.
PF host should set the auto clean, mask and throttling
as we always set the register for kernel VF.

Fixes: 6b75183ac4d0 ("net/ixgbe: fix wrong PBA setting")

Signed-off-by: Michael Luo <michael.luo@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Reviewed-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 49 +++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 6444a6ce2..d3cfdc189 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -5422,8 +5422,12 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
 
 	/* won't configure msix register if no mapping is done
 	 * between intr vector and event fd
+	 * but if misx has been enabled already, need to configure
+	 * auto clean, auto mask and throttling.
 	 */
-	if (!rte_intr_dp_is_en(intr_handle))
+	gpie = IXGBE_READ_REG(hw, IXGBE_GPIE);
+	if (!rte_intr_dp_is_en(intr_handle) &&
+	    !(gpie & (IXGBE_GPIE_MSIX_MODE | IXGBE_GPIE_PBA_SUPPORT)))
 		return;
 
 	if (rte_intr_allow_others(intr_handle))
@@ -5447,27 +5451,30 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
 	/* Populate the IVAR table and set the ITR values to the
 	 * corresponding register.
 	 */
-	for (queue_id = 0; queue_id < dev->data->nb_rx_queues;
-	     queue_id++) {
-		/* by default, 1:1 mapping */
-		ixgbe_set_ivar_map(hw, 0, queue_id, vec);
-		intr_handle->intr_vec[queue_id] = vec;
-		if (vec < base + intr_handle->nb_efd - 1)
-			vec++;
-	}
+	if (rte_intr_dp_is_en(intr_handle)) {
+		for (queue_id = 0; queue_id < dev->data->nb_rx_queues;
+			queue_id++) {
+			/* by default, 1:1 mapping */
+			ixgbe_set_ivar_map(hw, 0, queue_id, vec);
+			intr_handle->intr_vec[queue_id] = vec;
+			if (vec < base + intr_handle->nb_efd - 1)
+				vec++;
+		}
 
-	switch (hw->mac.type) {
-	case ixgbe_mac_82598EB:
-		ixgbe_set_ivar_map(hw, -1, IXGBE_IVAR_OTHER_CAUSES_INDEX,
-				   IXGBE_MISC_VEC_ID);
-		break;
-	case ixgbe_mac_82599EB:
-	case ixgbe_mac_X540:
-	case ixgbe_mac_X550:
-		ixgbe_set_ivar_map(hw, -1, 1, IXGBE_MISC_VEC_ID);
-		break;
-	default:
-		break;
+		switch (hw->mac.type) {
+		case ixgbe_mac_82598EB:
+			ixgbe_set_ivar_map(hw, -1,
+					   IXGBE_IVAR_OTHER_CAUSES_INDEX,
+					   IXGBE_MISC_VEC_ID);
+			break;
+		case ixgbe_mac_82599EB:
+		case ixgbe_mac_X540:
+		case ixgbe_mac_X550:
+			ixgbe_set_ivar_map(hw, -1, 1, IXGBE_MISC_VEC_ID);
+			break;
+		default:
+			break;
+		}
 	}
 	IXGBE_WRITE_REG(hw, IXGBE_EITR(IXGBE_MISC_VEC_ID),
 			IXGBE_MIN_INTER_INTERRUPT_INTERVAL_DEFAULT & 0xFFF);
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: fix casts in random functions' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix too many interrupts' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix reference counter integer promotion' " luca.boccassi
                               ` (19 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From c29efdd157a17d0ef2725cb07abec7189659694d Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:12 +0800
Subject: [PATCH] eal: fix casts in random functions

[ upstream commit d3db77d7d88e1f9227c2847f3355fc3e4bd256e8 ]

GCC 8.1 warns:

In function 'rte_srand':
rte_random.h:34:10:
warning: conversion to 'long int' from 'long unsigned int'
may change the sign of the result [-Wsign-conversion]
  srand48((long unsigned int)seedval);

rte_random.h:51:8:
warning: conversion to 'uint64_t' {aka 'long unsigned int'}
from 'long int' may change the sign of the result
[-Wsign-conversion]
  val = lrand48();
        ^~~~~~~

rte_random.h:53:6:
warning: conversion to 'long unsigned int' from 'long int'
may change the sign of the result [-Wsign-conversion]
  val += lrand48();

Fixes: af75078fece3 ("first public release")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_eal/common/include/rte_random.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_random.h b/lib/librte_eal/common/include/rte_random.h
index 24ae83632..9f0e5e16e 100644
--- a/lib/librte_eal/common/include/rte_random.h
+++ b/lib/librte_eal/common/include/rte_random.h
@@ -60,7 +60,7 @@ extern "C" {
 static inline void
 rte_srand(uint64_t seedval)
 {
-	srand48((long unsigned int)seedval);
+	srand48((long)seedval);
 }
 
 /**
@@ -77,9 +77,9 @@ static inline uint64_t
 rte_rand(void)
 {
 	uint64_t val;
-	val = lrand48();
+	val = (uint64_t)lrand48();
 	val <<= 32;
-	val += lrand48();
+	val += (uint64_t)lrand48();
 	return val;
 }
 
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: fix reference counter integer promotion' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix too many interrupts' " luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'eal: fix casts in random functions' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit casts of reference counter' " luca.boccassi
                               ` (18 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From c0e0b36abbcacee75799e7c02f50e7b71edce827 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:27 +0800
Subject: [PATCH] mbuf: fix reference counter integer promotion

[ upstream commit ee07d519ceb05e59dd970c48a42cf2f09b3ac4dc ]

GCC 8.1 warned:

"1 + value", where value is an uint16_t causes promotion
to a signed int.  The compiler complained that we are
shoving an int into a uint16_t return type with different
size and sign.

Bumping and returning value directly instead removes the
promotion and the problem.

Fixes: f20b50b946da ("mbuf: optimize refcnt update")
Fixes: a53aa2b9f3be ("mbuf: support attaching external buffer")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_mbuf/rte_mbuf.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index b6a01c992..07caef69b 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -668,8 +668,9 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
 	 * reference counter can occur.
 	 */
 	if (likely(rte_mbuf_refcnt_read(m) == 1)) {
-		rte_mbuf_refcnt_set(m, 1 + value);
-		return 1 + value;
+		++value;
+		rte_mbuf_refcnt_set(m, value);
+		return value;
 	}
 
 	return (uint16_t)(rte_atomic16_add_return(&m->refcnt_atomic, value));
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: explicit casts of reference counter' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (2 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix reference counter integer promotion' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of headroom on reset' " luca.boccassi
                               ` (17 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Olivier Matz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From cdf7b544d3755cb9908fa76c6ef11a8739413e29 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:32 +0800
Subject: [PATCH] mbuf: explicit casts of reference counter

[ upstream commit f6ffdf1c2c1cfbb2a3cbce246b545560609abeb5 ]

differences to the atomic16 are signed, but the
atomic16 itself is unsigned.  It needs to be
made explicit with casts.

Fixes: af75078fece3 ("first public release")
Fixes: a53aa2b9f3be ("mbuf: support attaching external buffer")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_mbuf/rte_mbuf.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 07caef69b..1d88ad8d1 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -645,7 +645,7 @@ rte_mbuf_refcnt_read(const struct rte_mbuf *m)
 static inline void
 rte_mbuf_refcnt_set(struct rte_mbuf *m, uint16_t new_value)
 {
-	rte_atomic16_set(&m->refcnt_atomic, new_value);
+	rte_atomic16_set(&m->refcnt_atomic, (int16_t)new_value);
 }
 
 /**
@@ -669,8 +669,8 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
 	 */
 	if (likely(rte_mbuf_refcnt_read(m) == 1)) {
 		++value;
-		rte_mbuf_refcnt_set(m, value);
-		return value;
+		rte_mbuf_refcnt_set(m, (uint16_t)value);
+		return (uint16_t)value;
 	}
 
 	return (uint16_t)(rte_atomic16_add_return(&m->refcnt_atomic, value));
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: explicit cast of headroom on reset' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (3 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit casts of reference counter' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of size on detach' " luca.boccassi
                               ` (16 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From a70aedd1070c842245f4231dc47b056a1c447655 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:37 +0800
Subject: [PATCH] mbuf: explicit cast of headroom on reset

[ upstream commit 553ff494cb4d7fa9539911d3bbb4d94de5f69f20 ]

GCC 8.1 warned:

rte_common.h:384:2:
warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
  __extension__ ({ \
  ^~~~~~~~~~~~~
rte_mbuf.h:1204:16:
note: in expansion of macro 'RTE_MIN'
  m->data_off = RTE_MIN(RTE_PKTMBUF_HEADROOM, (uint16_t)m->buf_len);

RTE_PKTMBUF_HEADROOM is typ 128, so it doesn't make trouble.

Fixes: 08b563ffb19d ("mbuf: replace data pointer by an offset")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_mbuf/rte_mbuf.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 1d88ad8d1..1e108f3b1 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -989,7 +989,8 @@ rte_pktmbuf_priv_size(struct rte_mempool *mp)
  */
 static inline void rte_pktmbuf_reset_headroom(struct rte_mbuf *m)
 {
-	m->data_off = RTE_MIN(RTE_PKTMBUF_HEADROOM, (uint16_t)m->buf_len);
+	m->data_off = (uint16_t)RTE_MIN((uint16_t)RTE_PKTMBUF_HEADROOM,
+					(uint16_t)m->buf_len);
 }
 
 /**
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: explicit cast of size on detach' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (4 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of headroom on reset' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of multicast bit clearing' " luca.boccassi
                               ` (15 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From e61e94d11ac9f936855bccc05fb1c5ca6dc9c749 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:50:22 +0800
Subject: [PATCH] mbuf: explicit cast of size on detach

[ upstream commit c779ebdca0e4765158bd1eaa6f65c9d714605fae ]

GCC 8.1 warned:

In function 'rte_pktmbuf_detach':
rte_mbuf.h:1580:14: warning: conversion from 'long unsigned int'
to 'uint32_t' {aka 'unsigned int'} may change value [-Wconversion]
  mbuf_size = sizeof(struct rte_mbuf) + priv_size;
              ^~~~~~

Fixes: 355e6735b335 ("mbuf: fix cloning with private mbuf data")

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_mbuf/rte_mbuf.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 1e108f3b1..9a6ae3c07 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -1171,7 +1171,7 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m)
 	uint32_t mbuf_size, buf_len, priv_size;
 
 	priv_size = rte_pktmbuf_priv_size(mp);
-	mbuf_size = sizeof(struct rte_mbuf) + priv_size;
+	mbuf_size = (uint32_t)(sizeof(struct rte_mbuf) + priv_size);
 	buf_len = rte_pktmbuf_data_room_size(mp);
 
 	m->priv_size = priv_size;
-- 
2.14.2

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

* [dpdk-stable] patch 'net: explicit cast of multicast bit clearing' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (5 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of size on detach' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of IP checksum to 16-bit' " luca.boccassi
                               ` (14 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 11b8de648c148911d29728c6fa9a831268ac242f Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:47 +0800
Subject: [PATCH] net: explicit cast of multicast bit clearing

[ upstream commit beb4076567441bb6f936f99f442c2a8de911bb3c ]

GCC 8.1 warned:

rte_ether.h:213:13:
warning: conversion from 'int' to 'uint8_t'
{aka 'unsigned char'} may change value [-Wconversion]
  addr[0] &= ~ETHER_GROUP_ADDR;

Fixes: 7ef007291004 ("ethdev: random MAC address")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_net/rte_ether.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
index 43814f626..796fd56de 100644
--- a/lib/librte_net/rte_ether.h
+++ b/lib/librte_net/rte_ether.h
@@ -239,7 +239,7 @@ static inline void eth_random_addr(uint8_t *addr)
 	uint8_t *p = (uint8_t *)&rand;
 
 	rte_memcpy(addr, p, ETHER_ADDR_LEN);
-	addr[0] &= ~ETHER_GROUP_ADDR;       /* clear multicast bit */
+	addr[0] &= (uint8_t)~ETHER_GROUP_ADDR;       /* clear multicast bit */
 	addr[0] |= ETHER_LOCAL_ADMIN_ADDR;  /* set local assignment bit */
 }
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net: explicit cast of IP checksum to 16-bit' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (6 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of multicast bit clearing' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of protocol in IPv6 checksum' " luca.boccassi
                               ` (13 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 399c501705df7ed2f6d9b81784be01300c2abcb2 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:49:57 +0800
Subject: [PATCH] net: explicit cast of IP checksum to 16-bit

[ upstream commit 466de6d5d8648f6a2c6cfc90c2d1bf217dd06e90 ]

GCC 8.1 warned:

In function 'rte_raw_cksum_mbuf':
rte_ip.h:225:22: warning: conversion from 'uint32_t'
{aka 'unsigned int'} to 'uint16_t' {aka 'short unsigned int'}
may change value [-Wconversion]
    tmp = rte_bswap16(tmp);
                      ^~~

In function 'rte_ipv4_cksum':
rte_ip.h:256:35: warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
  return (cksum == 0xffff) ? cksum : ~cksum;
         ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~

rte_ip.h:332:9: warning: conversion from 'uint32_t'
{aka 'unsigned int'} to 'uint16_t' {aka 'short unsigned int'}
may change value [-Wconversion]
  return cksum;
         ^~~~~

In function 'rte_ipv6_udptcp_cksum':
rte_ip.h:421:9: warning: conversion from 'uint32_t' {aka 'unsigned int'}
to 'uint16_t' {aka 'short unsigned int'} may change value [-Wconversion]
  return cksum;
         ^~~~~

Fixes: 6006818cfb26 ("net: new checksum functions")
Fixes: 4199fdea60c3 ("mbuf: generic support for TCP segmentation offload")

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_net/rte_ip.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index 4491b86e2..2e060ba46 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -284,7 +284,7 @@ rte_raw_cksum_mbuf(const struct rte_mbuf *m, uint32_t off, uint32_t len,
 	for (;;) {
 		tmp = __rte_raw_cksum(buf, seglen, 0);
 		if (done & 1)
-			tmp = rte_bswap16(tmp);
+			tmp = rte_bswap16((uint16_t)tmp);
 		sum += tmp;
 		done += seglen;
 		if (done == len)
@@ -315,7 +315,7 @@ rte_ipv4_cksum(const struct ipv4_hdr *ipv4_hdr)
 {
 	uint16_t cksum;
 	cksum = rte_raw_cksum(ipv4_hdr, sizeof(struct ipv4_hdr));
-	return (cksum == 0xffff) ? cksum : ~cksum;
+	return (cksum == 0xffff) ? cksum : (uint16_t)~cksum;
 }
 
 /**
@@ -391,7 +391,7 @@ rte_ipv4_udptcp_cksum(const struct ipv4_hdr *ipv4_hdr, const void *l4_hdr)
 	if (cksum == 0)
 		cksum = 0xffff;
 
-	return cksum;
+	return (uint16_t)cksum;
 }
 
 /**
@@ -474,7 +474,7 @@ rte_ipv6_udptcp_cksum(const struct ipv6_hdr *ipv6_hdr, const void *l4_hdr)
 	if (cksum == 0)
 		cksum = 0xffff;
 
-	return cksum;
+	return (uint16_t)cksum;
 }
 
 #ifdef __cplusplus
-- 
2.14.2

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

* [dpdk-stable] patch 'net: explicit cast of protocol in IPv6 checksum' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (7 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of IP checksum to 16-bit' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: explicit cast of queue count return' " luca.boccassi
                               ` (12 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 6f73854b4d145dcfb3fd43b53a6c1b41497346fe Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 17 May 2018 21:50:17 +0800
Subject: [PATCH] net: explicit cast of protocol in IPv6 checksum

[ upstream commit 8bf255bb3862d8f35496b26bc8c2511239bdc18b ]

GCC 8.1 warned:

In function 'rte_ipv6_phdr_cksum':
rte_ip.h:378:18: warning: conversion to 'uint32_t' {aka 'unsigned int'}
from 'int' may change the sign of the result [-Wsign-conversion]
  psd_hdr.proto = (ipv6_hdr->proto << 24);

Fixes: 6006818cfb26 ("net: new checksum functions")

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_net/rte_ip.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index 2e060ba46..32ee38461 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -431,7 +431,7 @@ rte_ipv6_phdr_cksum(const struct ipv6_hdr *ipv6_hdr, uint64_t ol_flags)
 		uint32_t proto; /* L4 protocol - top 3 bytes must be zero */
 	} psd_hdr;
 
-	psd_hdr.proto = (ipv6_hdr->proto << 24);
+	psd_hdr.proto = (uint32_t)(ipv6_hdr->proto << 24);
 	if (ol_flags & PKT_TX_TCP_SEG) {
 		psd_hdr.len = 0;
 	} else {
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: explicit cast of queue count return' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (8 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of protocol in IPv6 checksum' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'app/testpmd: fix burst stats reporting' " luca.boccassi
                               ` (11 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From f4570448a674882f3179a0b97e83b106a54928d2 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Fri, 18 May 2018 21:02:38 +0800
Subject: [PATCH] ethdev: explicit cast of queue count return

[ upstream commit 45d1be93b9020dfe9c1f3e81822621580312dcc3 ]

GCC 8.1 produces a warning:
rte_ethdev.h: In function 'rte_eth_rx_queue_count':
rte_ethdev.h:3882:10: warning: conversion to 'int' from 'uint32_t'
{aka 'unsigned int'} may change the sign of the result [-Wsign-conversion]
  return (*dev->dev_ops->rx_queue_count)(dev, queue_id);
         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fixes: 33cf6be04d60 ("ethdev: add sanity checks to functions")

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_ether/rte_ethdev.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index aa79040fe..d14d8375d 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -2692,7 +2692,7 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)
 	struct rte_eth_dev *dev = &rte_eth_devices[port_id];
 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, -ENOTSUP);
-        return (*dev->dev_ops->rx_queue_count)(dev, queue_id);
+        return (int)(*dev->dev_ops->rx_queue_count)(dev, queue_id);
 }
 
 /**
-- 
2.14.2

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

* [dpdk-stable] patch 'app/testpmd: fix burst stats reporting' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (9 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: explicit cast of queue count return' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'eal: explicit cast in rwlock functions' " luca.boccassi
                               ` (10 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Daniel Shelepov; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 5dc113c7fba96eb070311a871b4b6388a4ae2d5c Mon Sep 17 00:00:00 2001
From: Daniel Shelepov <dashel@microsoft.com>
Date: Mon, 14 May 2018 21:12:15 +0000
Subject: [PATCH] app/testpmd: fix burst stats reporting

[ upstream commit fe613657ce486083a3ed96890c95de4f35c8593b ]

When RTE_TEST_PMD_RECORD_BURST_STATS is enabled, testpmd collects
burst statistics and includes them in the port stats report.  The
summary should include top 2 most frequent burst sizes, but there is a
bug in finding the top-2.  During the scan of burst size counts, the
top-2 can change only if top-1 also changes.

Added logic to update the top-2 if current burst size is larger than
existing top-2, but smaller than existing top-1.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Daniel Shelepov <dashel@microsoft.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/testpmd.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 765afef9a..4512ba92d 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -725,6 +725,9 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
 			pktnb_stats[1] = pktnb_stats[0];
 			burst_stats[0] = nb_burst;
 			pktnb_stats[0] = nb_pkt;
+		} else if (nb_burst > burst_stats[1]) {
+			burst_stats[1] = nb_burst;
+			pktnb_stats[1] = nb_pkt;
 		}
 	}
 	if (total_burst == 0)
-- 
2.14.2

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

* [dpdk-stable] patch 'eal: explicit cast in rwlock functions' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (10 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'app/testpmd: fix burst stats reporting' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast in L4 checksum' " luca.boccassi
                               ` (9 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2c02f6323d97102ddfb68fcdce86084e8e63d241 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Tue, 22 May 2018 09:24:17 +0800
Subject: [PATCH] eal: explicit cast in rwlock functions

[ upstream commit 1587d36e22d0cf0e037a104e1e851acefd6597f0 ]

GCC 8.1 warned:

In function 'rte_rwlock_read_lock':
rte_rwlock.h:74:12: warning: conversion to 'uint32_t'
{aka 'unsigned int'} from 'int32_t' {aka 'int'} may
change the sign of the result [-Wsign-conversion]
            x, x + 1);
            ^
rte_rwlock.h:74:17: warning: conversion to 'uint32_t'
{aka 'unsigned int'} from 'int' may change the sign
of the result [-Wsign-conversion]
            x, x + 1);
               ~~^~~

In function 'rte_rwlock_write_lock':
rte_rwlock.h:110:15: warning: unsigned conversion
from 'int' to 'uint32_t' {aka 'unsigned int'}
changes value from '-1' to '4294967295' [-Wsign-conversion]
            0, -1);
               ^~

Again in this case we are making explicit the exact cast
that was always happening implicitly.  The patch does not
change the generated code.

The int32_t temp "x" is required to be signed to detect
a < 0 error condition from the lock status.  Afterwards,
it has always been implicitly cast to uint32_t when it
is used in the arguments to rte_atomic32_cmpset()...
gcc8.1 objects to the implicit cast now and requires us
to cast it explicitly.

Fixes: af75078fec ("first public release")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_eal/common/include/generic/rte_rwlock.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/common/include/generic/rte_rwlock.h b/lib/librte_eal/common/include/generic/rte_rwlock.h
index 7a0fdc55c..e57ce2105 100644
--- a/lib/librte_eal/common/include/generic/rte_rwlock.h
+++ b/lib/librte_eal/common/include/generic/rte_rwlock.h
@@ -99,7 +99,7 @@ rte_rwlock_read_lock(rte_rwlock_t *rwl)
 			continue;
 		}
 		success = rte_atomic32_cmpset((volatile uint32_t *)&rwl->cnt,
-					      x, x + 1);
+					      (uint32_t)x, (uint32_t)(x + 1));
 	}
 }
 
@@ -135,7 +135,7 @@ rte_rwlock_write_lock(rte_rwlock_t *rwl)
 			continue;
 		}
 		success = rte_atomic32_cmpset((volatile uint32_t *)&rwl->cnt,
-					      0, -1);
+					      0, (uint32_t)-1);
 	}
 }
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net: explicit cast in L4 checksum' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (11 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'eal: explicit cast in rwlock functions' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix type of private size in detach' " luca.boccassi
                               ` (8 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From d50a05251b3d59d177ce952e1677c88282580b6c Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Tue, 22 May 2018 09:24:22 +0800
Subject: [PATCH] net: explicit cast in L4 checksum

[ upstream commit f37a2e7c747b0758fcd8390482aeeac490f688b5 ]

GCC 8.1 warned:

In function 'rte_ipv4_udptcp_cksum':
rte_byteorder.h:51:24: warning: conversion from 'long unsigned int' to
'uint32_t' {aka 'unsigned int'} may change value [-Wconversion]
 #define rte_bswap16(x) ((uint16_t) (__builtin_constant_p(x) ?  \
                        ^
rte_byteorder.h:85:29: note: in expansion of macro 'rte_bswap16'
 #define rte_be_to_cpu_16(x) rte_bswap16(x)
                             ^~~~~~~~~~~
rte_ip.h:321:11: note: in expansion of macro 'rte_be_to_cpu_16'
  l4_len = rte_be_to_cpu_16(ipv4_hdr->total_length) -
           ^~~~~~~~~~~~~~~~

Also with this one, it is a cast that always occurred
and is just being done explicitly, with no changes to
the generated code.

The warning stack is misleading, it points to the last
element in the macro that produced the lhs of the subtraction
above.  But the only "unsigned long int" in the expression is
the result of the sizeof() on the rhs, it promotes the
subtraction result to unsigned long.  So the error actually
relates to the result of the outer subtraction.

The actual error is "you are trying to put an unsigned long
into a uint32_t".  We always did so, the fix is just to inform
the compiler it is intentional with an explicit cast.

Fixes: 6006818cfb ("net: new checksum functions")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_net/rte_ip.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index 32ee38461..19d6c95c8 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -380,8 +380,8 @@ rte_ipv4_udptcp_cksum(const struct ipv4_hdr *ipv4_hdr, const void *l4_hdr)
 	uint32_t cksum;
 	uint32_t l4_len;
 
-	l4_len = rte_be_to_cpu_16(ipv4_hdr->total_length) -
-		sizeof(struct ipv4_hdr);
+	l4_len = (uint32_t)(rte_be_to_cpu_16(ipv4_hdr->total_length) -
+		sizeof(struct ipv4_hdr));
 
 	cksum = rte_raw_cksum(l4_hdr, l4_len);
 	cksum += rte_ipv4_phdr_cksum(ipv4_hdr, 0);
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: fix type of private size in detach' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (12 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast in L4 checksum' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: avoid integer promotion in prepend/adj/chain' " luca.boccassi
                               ` (7 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0e6a561d5e9aea7cb083f0e7a351ec3149c2aea9 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Tue, 22 May 2018 09:24:27 +0800
Subject: [PATCH] mbuf: fix type of private size in detach

[ upstream commit ad3781066261848c163e700c3c5baa16fecc2247 ]

GCC 8.1 warned:

In function 'rte_pktmbuf_detach':
rte_mbuf.h:1583:17: warning: conversion from 'uint32_t'
{aka 'unsigned int'} to 'uint16_t' {aka 'short unsigned int'}
may change value [-Wconversion]
  m->priv_size = priv_size;
                 ^~~~~~~~~

The temp priv_size is declared as a uint32_t.  But it
only deals in uint16_t.  m->priv_size is a uint16_t.
Change it to a uint16_t.

Fixes: 355e6735b3 ("mbuf: fix cloning with private mbuf data")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_mbuf/rte_mbuf.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 9a6ae3c07..25ef1a37f 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -1168,7 +1168,8 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m)
 {
 	struct rte_mbuf *md = rte_mbuf_from_indirect(m);
 	struct rte_mempool *mp = m->pool;
-	uint32_t mbuf_size, buf_len, priv_size;
+	uint32_t mbuf_size, buf_len;
+	uint16_t priv_size;
 
 	priv_size = rte_pktmbuf_priv_size(mp);
 	mbuf_size = (uint32_t)(sizeof(struct rte_mbuf) + priv_size);
-- 
2.14.2

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

* [dpdk-stable] patch 'mbuf: avoid integer promotion in prepend/adj/chain' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (13 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix type of private size in detach' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: fix type and scope of variables in Rx burst' " luca.boccassi
                               ` (6 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From d0094bc1093e327fef511801cc45b0b1f7bbc974 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Tue, 22 May 2018 09:24:42 +0800
Subject: [PATCH] mbuf: avoid integer promotion in prepend/adj/chain

[ upstream commit 9d0b59f84e1170b12a128cdcccab5711f25b5dd8 ]

GCC 8.1 warned:

In function 'rte_pktmbuf_prepend':
rte_mbuf.h:1908:17: warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
  m->data_off -= len;
                 ^~~
m->data_off is a uint16_t

        uint16_t data_off;

len (a uint16_t) is promoted to an int using -=.  Do the
subtraction explicitly and cast the result to uint16_t.

The below += or -= changes are solving the same thing.

In function 'rte_pktmbuf_adj':
rte_mbuf.h:1969:17: warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
  m->data_off += len;
                 ^~~

In function 'rte_pktmbuf_chain':
rte_mbuf.h:2082:19: warning: conversion from 'int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
  head->nb_segs += tail->nb_segs;
                   ^~~~
Also uint16_t

        uint16_t nb_segs;         /**< Number of segments. */

Fixes: 08b563ffb19d ("mbuf: replace data pointer by an offset")
Fixes: 1a60a0daa6e4 ("mbuf: fix segments number type increase")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_mbuf/rte_mbuf.h | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 25ef1a37f..5b7546456 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -1456,7 +1456,10 @@ static inline char *rte_pktmbuf_prepend(struct rte_mbuf *m,
 	if (unlikely(len > rte_pktmbuf_headroom(m)))
 		return NULL;
 
-	m->data_off -= len;
+	/* NB: elaborating the subtraction like this instead of using
+	 *     -= allows us to ensure the result type is uint16_t
+	 *     avoiding compiler warnings on gcc 8.1 at least */
+	m->data_off = (uint16_t)(m->data_off - len);
 	m->data_len = (uint16_t)(m->data_len + len);
 	m->pkt_len  = (m->pkt_len + len);
 
@@ -1516,8 +1519,11 @@ static inline char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len)
 	if (unlikely(len > m->data_len))
 		return NULL;
 
+	/* NB: elaborating the addition like this instead of using
+	 *     += allows us to ensure the result type is uint16_t
+	 *     avoiding compiler warnings on gcc 8.1 at least */
 	m->data_len = (uint16_t)(m->data_len - len);
-	m->data_off += len;
+	m->data_off = (uint16_t)(m->data_off + len);
 	m->pkt_len  = (m->pkt_len - len);
 	return (char *)m->buf_addr + m->data_off;
 }
@@ -1629,7 +1635,10 @@ static inline int rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf *tail
 	cur_tail = rte_pktmbuf_lastseg(head);
 	cur_tail->next = tail;
 
-	/* accumulate number of segments and total length. */
+	/* accumulate number of segments and total length.
+	 * NB: elaborating the addition like this instead of using
+	 *     -= allows us to ensure the result type is uint16_t
+	 *     avoiding compiler warnings on gcc 8.1 at least */
 	head->nb_segs = (uint8_t)(head->nb_segs + tail->nb_segs);
 	head->pkt_len += tail->pkt_len;
 
-- 
2.14.2

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

* [dpdk-stable] patch 'ethdev: fix type and scope of variables in Rx burst' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (14 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: avoid integer promotion in prepend/adj/chain' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'app/crypto-perf: fix parameters copy' " luca.boccassi
                               ` (5 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Andy Green; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2042157390706bd7f25407f267fa0422b0bb5527 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Tue, 22 May 2018 09:24:47 +0800
Subject: [PATCH] ethdev: fix type and scope of variables in Rx burst

[ upstream commit 3291abb5a2a5f24c109ab74e6aad0545927333a7 ]

GCC 8.1 warned:

In function 'rte_eth_rx_burst':
rte_ethdev.h:3836:18: warning: conversion to 'int16_t'
{aka 'short int'} from 'uint16_t' {aka 'short unsigned int'}
may change the sign of the result [-Wsign-conversion]
  int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
                  ^
rte_ethdev.h:3844:50: warning: conversion to 'uint16_t'
{aka 'short unsigned int'} from 'int16_t' {aka 'short int'}
may change the sign of the result [-Wsign-conversion]
    nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
                                                  ^~~~~
rte_ethdev.h:3844:12: warning: conversion to 'int16_t'
{aka 'short int'} from 'uint16_t' {aka 'short unsigned int'}
may change the sign of the result [-Wsign-conversion]
    nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
            ^~
rte_ethdev.h:3851:9: warning: conversion to 'uint16_t'
{aka 'short unsigned int'} from 'int16_t' {aka 'short int'}
may change the sign of the result [-Wsign-conversion]
  return nb_rx;
         ^~~~~

The second part of the patch is solved by its own basic
block because it is inside a preprocessor conditional.

Bringing the declaration of the var to the top of the
function would require that also being given its own
preprocessor conditional, or a (void)var to avoid an
unused var warning.  The basic block is no worse than
those imho.

Fixes: 467465d86df1 ("ethdev: add packet count parameter to Rx callback")
Fixes: 4dc294158cac ("ethdev: support optional Rx and Tx callbacks")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_ether/rte_ethdev.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index d14d8375d..da33b9d50 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -2646,6 +2646,7 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id,
 		 struct rte_mbuf **rx_pkts, const uint16_t nb_pkts)
 {
 	struct rte_eth_dev *dev = &rte_eth_devices[port_id];
+	uint16_t nb_rx;
 
 #ifdef RTE_LIBRTE_ETHDEV_DEBUG
 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0);
@@ -2656,13 +2657,14 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id,
 		return 0;
 	}
 #endif
-	int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
+	nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
 			rx_pkts, nb_pkts);
 
 #ifdef RTE_ETHDEV_RXTX_CALLBACKS
-	struct rte_eth_rxtx_callback *cb = dev->post_rx_burst_cbs[queue_id];
+	if (unlikely(dev->post_rx_burst_cbs[queue_id] != NULL)) {
+		struct rte_eth_rxtx_callback *cb =
+				dev->post_rx_burst_cbs[queue_id];
 
-	if (unlikely(cb != NULL)) {
 		do {
 			nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
 						nb_pkts, cb->param);
-- 
2.14.2

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

* [dpdk-stable] patch 'app/crypto-perf: fix parameters copy' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (15 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: fix type and scope of variables in Rx burst' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix DCB configuration' " luca.boccassi
                               ` (4 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Pablo de Lara, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From ab33ff3c50d91d12ae3dc1cc94912939bf59e69c Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Wed, 16 May 2018 17:58:04 +0530
Subject: [PATCH] app/crypto-perf: fix parameters copy

[ upstream commit 873dac8ec608ca02d59214b4a3022b2f25de717b ]

Since arm64 was using plain memcpy for rte_memcpy, gcc 8.1, could
detect size was more than source address range. In this case, the
source was wrong.

test/test/test_cryptodev.c: In function 'test_multi_session_random_usage':
rte_memcpy_64.h:364:29: error: 'memcpy'
forming offset [113, 184] is out of the bounds [0, 112] of object
'testsuite_params' with type 'struct crypto_testsuite_params'
[-Werror=array-bounds]
 #define rte_memcpy(d, s, n) memcpy((d), (s), (n))
                             ^~~~~~~~~~~~~~~~~~~~~
test/test/test_cryptodev.c:6618:3: note:
in expansion of macro 'rte_memcpy'
   rte_memcpy(&ut_paramz[i].ut_params, &testsuite_params,
   ^~~~~~~~~~
test/test/test_cryptodev.c:140:39: note:
'testsuite_params' declared here
 static struct crypto_testsuite_params testsuite_params = { NULL };

Fixes: ffbe3be0d4b5 ("app/test: add libcrypto")

Suggested-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 app/test/test_cryptodev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index c9e0b66e5..24c729639 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -4621,7 +4621,7 @@ test_multi_session_random_usage(void)
 					* dev_info.sym.max_nb_sessions) + 1, 0);
 
 	for (i = 0; i < MB_SESSION_NUMBER; i++) {
-		rte_memcpy(&ut_paramz[i].ut_params, &testsuite_params,
+		rte_memcpy(&ut_paramz[i].ut_params, &unittest_params,
 				sizeof(struct crypto_unittest_params));
 
 		test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
-- 
2.14.2

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

* [dpdk-stable] patch 'net/ixgbe: fix DCB configuration' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (16 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'app/crypto-perf: fix parameters copy' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/qede: fix unicast filter routine return code' " luca.boccassi
                               ` (3 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Qiming Yang; +Cc: Wenzhuo Lu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 5d7e2abaf47a853d0d140596b8be516542073758 Mon Sep 17 00:00:00 2001
From: Qiming Yang <qiming.yang@intel.com>
Date: Fri, 18 May 2018 17:51:56 +0800
Subject: [PATCH] net/ixgbe: fix DCB configuration

[ upstream commit 3e8d16a0fbb3c9f33b9611e8e1644683e9ece23d ]

This patch removes unnecessary check in ixgbe_check_mq_mode, which
fixes the DCB configuration issue.

Fixes: 27b609cbd1c6 ("ethdev: move the multi-queue mode check to specific drivers")

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index d3cfdc189..182a8c662 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2097,11 +2097,6 @@ ixgbe_check_mq_mode(struct rte_eth_dev *dev)
 		if (dev_conf->rxmode.mq_mode == ETH_MQ_RX_DCB) {
 			const struct rte_eth_dcb_rx_conf *conf;
 
-			if (nb_rx_q != IXGBE_DCB_NB_QUEUES) {
-				PMD_INIT_LOG(ERR, "DCB selected, nb_rx_q != %d.",
-						 IXGBE_DCB_NB_QUEUES);
-				return -EINVAL;
-			}
 			conf = &dev_conf->rx_adv_conf.dcb_rx_conf;
 			if (!(conf->nb_tcs == ETH_4_TCS ||
 			       conf->nb_tcs == ETH_8_TCS)) {
@@ -2115,11 +2110,6 @@ ixgbe_check_mq_mode(struct rte_eth_dev *dev)
 		if (dev_conf->txmode.mq_mode == ETH_MQ_TX_DCB) {
 			const struct rte_eth_dcb_tx_conf *conf;
 
-			if (nb_tx_q != IXGBE_DCB_NB_QUEUES) {
-				PMD_INIT_LOG(ERR, "DCB, nb_tx_q != %d.",
-						 IXGBE_DCB_NB_QUEUES);
-				return -EINVAL;
-			}
 			conf = &dev_conf->tx_adv_conf.dcb_tx_conf;
 			if (!(conf->nb_tcs == ETH_4_TCS ||
 			       conf->nb_tcs == ETH_8_TCS)) {
-- 
2.14.2

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

* [dpdk-stable] patch 'net/qede: fix unicast filter routine return code' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (17 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix DCB configuration' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/i40e: fix shifts of signed values' " luca.boccassi
                               ` (2 subsequent siblings)
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Shahed Shaikh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 20a4c778f2191a79886accf32f5ec373277bae87 Mon Sep 17 00:00:00 2001
From: Shahed Shaikh <shahed.shaikh@cavium.com>
Date: Sat, 19 May 2018 17:15:46 -0700
Subject: [PATCH] net/qede: fix unicast filter routine return code

[ upstream commit f8d2581ecbba056db08888d562eafe5181a009ba ]

There is no need to return failure (-EEXIST) when the requested
filter is already configured.

Fixes: d6cb17535f88 ("net/qede: fix VLAN filters")
Fixes: 77fac1b54fc9 ("net/qede: fix filtering code")

Signed-off-by: Shahed Shaikh <shahed.shaikh@cavium.com>
---
 drivers/net/qede/qede_ethdev.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 5275ef9d2..ce3a0936d 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -248,10 +248,10 @@ qede_ucast_filter(struct rte_eth_dev *eth_dev, struct ecore_filter_ucast *ucast,
 			if ((memcmp(mac_addr, &tmp->mac,
 				    ETHER_ADDR_LEN) == 0) &&
 			     ucast->vlan == tmp->vlan) {
-				DP_ERR(edev, "Unicast MAC is already added"
-				       " with vlan = %u, vni = %u\n",
-				       ucast->vlan,  ucast->vni);
-					return -EEXIST;
+				DP_INFO(edev, "Unicast MAC is already added"
+					" with vlan = %u, vni = %u\n",
+					ucast->vlan,  ucast->vni);
+					return 0;
 			}
 		}
 		u = rte_malloc(NULL, sizeof(struct qede_ucast_entry),
@@ -613,9 +613,9 @@ static int qede_vlan_filter_set(struct rte_eth_dev *eth_dev,
 
 		SLIST_FOREACH(tmp, &qdev->vlan_list_head, list) {
 			if (tmp->vid == vlan_id) {
-				DP_ERR(edev, "VLAN %u already configured\n",
-				       vlan_id);
-				return -EEXIST;
+				DP_INFO(edev, "VLAN %u already configured\n",
+					vlan_id);
+				return 0;
 			}
 		}
 
-- 
2.14.2

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

* [dpdk-stable] patch 'net/i40e: fix shifts of signed values' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (18 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/qede: fix unicast filter routine return code' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/bonding: export mode 4 slave info routine' " luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags' " luca.boccassi
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 2ea2ceb2fa7c5eaa7f97672e2ef14ffd8e2bb5aa Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Mon, 21 May 2018 15:45:59 +0100
Subject: [PATCH] net/i40e: fix shifts of signed values

[ upstream commit 1962193cc86a23c0a6d89c7e8563818a40f5dedd ]

Following error reported by cppcheck:
(error) Shifting signed 32-bit value by 31 bits is
undefined behaviour. The patch fixes it.

Fixes: 8db9e2a1b232 ("i40e: base driver")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/base/i40e_register.h | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_register.h b/drivers/net/i40e/base/i40e_register.h
index caa2e1eb8..9b841eb8e 100644
--- a/drivers/net/i40e/base/i40e_register.h
+++ b/drivers/net/i40e/base/i40e_register.h
@@ -90,7 +90,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_PF_ARQLEN_ARQCRIT_SHIFT   30
 #define I40E_PF_ARQLEN_ARQCRIT_MASK    I40E_MASK(0x1, I40E_PF_ARQLEN_ARQCRIT_SHIFT)
 #define I40E_PF_ARQLEN_ARQENABLE_SHIFT 31
-#define I40E_PF_ARQLEN_ARQENABLE_MASK  I40E_MASK(0x1, I40E_PF_ARQLEN_ARQENABLE_SHIFT)
+#define I40E_PF_ARQLEN_ARQENABLE_MASK  I40E_MASK(0x1u, I40E_PF_ARQLEN_ARQENABLE_SHIFT)
 #define I40E_PF_ARQT            0x00080480 /* Reset: EMPR */
 #define I40E_PF_ARQT_ARQT_SHIFT 0
 #define I40E_PF_ARQT_ARQT_MASK  I40E_MASK(0x3FF, I40E_PF_ARQT_ARQT_SHIFT)
@@ -113,7 +113,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_PF_ATQLEN_ATQCRIT_SHIFT   30
 #define I40E_PF_ATQLEN_ATQCRIT_MASK    I40E_MASK(0x1, I40E_PF_ATQLEN_ATQCRIT_SHIFT)
 #define I40E_PF_ATQLEN_ATQENABLE_SHIFT 31
-#define I40E_PF_ATQLEN_ATQENABLE_MASK  I40E_MASK(0x1, I40E_PF_ATQLEN_ATQENABLE_SHIFT)
+#define I40E_PF_ATQLEN_ATQENABLE_MASK  I40E_MASK(0x1u, I40E_PF_ATQLEN_ATQENABLE_SHIFT)
 #define I40E_PF_ATQT            0x00080400 /* Reset: EMPR */
 #define I40E_PF_ATQT_ATQT_SHIFT 0
 #define I40E_PF_ATQT_ATQT_MASK  I40E_MASK(0x3FF, I40E_PF_ATQT_ATQT_SHIFT)
@@ -140,7 +140,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_VF_ARQLEN_ARQCRIT_SHIFT   30
 #define I40E_VF_ARQLEN_ARQCRIT_MASK    I40E_MASK(0x1, I40E_VF_ARQLEN_ARQCRIT_SHIFT)
 #define I40E_VF_ARQLEN_ARQENABLE_SHIFT 31
-#define I40E_VF_ARQLEN_ARQENABLE_MASK  I40E_MASK(0x1, I40E_VF_ARQLEN_ARQENABLE_SHIFT)
+#define I40E_VF_ARQLEN_ARQENABLE_MASK  I40E_MASK(0x1u, I40E_VF_ARQLEN_ARQENABLE_SHIFT)
 #define I40E_VF_ARQT(_VF)       (0x00082C00 + ((_VF) * 4)) /* _i=0...127 */ /* Reset: EMPR */
 #define I40E_VF_ARQT_MAX_INDEX  127
 #define I40E_VF_ARQT_ARQT_SHIFT 0
@@ -168,7 +168,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_VF_ATQLEN_ATQCRIT_SHIFT   30
 #define I40E_VF_ATQLEN_ATQCRIT_MASK    I40E_MASK(0x1, I40E_VF_ATQLEN_ATQCRIT_SHIFT)
 #define I40E_VF_ATQLEN_ATQENABLE_SHIFT 31
-#define I40E_VF_ATQLEN_ATQENABLE_MASK  I40E_MASK(0x1, I40E_VF_ATQLEN_ATQENABLE_SHIFT)
+#define I40E_VF_ATQLEN_ATQENABLE_MASK  I40E_MASK(0x1u, I40E_VF_ATQLEN_ATQENABLE_SHIFT)
 #define I40E_VF_ATQT(_VF)       (0x00082800 + ((_VF) * 4)) /* _i=0...127 */ /* Reset: EMPR */
 #define I40E_VF_ATQT_MAX_INDEX  127
 #define I40E_VF_ATQT_ATQT_SHIFT 0
@@ -291,7 +291,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_PRTDCB_RETSTCC_UPINTC_MODE_SHIFT 30
 #define I40E_PRTDCB_RETSTCC_UPINTC_MODE_MASK  I40E_MASK(0x1, I40E_PRTDCB_RETSTCC_UPINTC_MODE_SHIFT)
 #define I40E_PRTDCB_RETSTCC_ETSTC_SHIFT       31
-#define I40E_PRTDCB_RETSTCC_ETSTC_MASK        I40E_MASK(0x1, I40E_PRTDCB_RETSTCC_ETSTC_SHIFT)
+#define I40E_PRTDCB_RETSTCC_ETSTC_MASK        I40E_MASK(0x1u, I40E_PRTDCB_RETSTCC_ETSTC_SHIFT)
 #define I40E_PRTDCB_RPPMC                    0x001223A0 /* Reset: CORER */
 #define I40E_PRTDCB_RPPMC_LANRPPM_SHIFT      0
 #define I40E_PRTDCB_RPPMC_LANRPPM_MASK       I40E_MASK(0xFF, I40E_PRTDCB_RPPMC_LANRPPM_SHIFT)
@@ -535,7 +535,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_GLGEN_MSCA_MDICMD_SHIFT      30
 #define I40E_GLGEN_MSCA_MDICMD_MASK       I40E_MASK(0x1, I40E_GLGEN_MSCA_MDICMD_SHIFT)
 #define I40E_GLGEN_MSCA_MDIINPROGEN_SHIFT 31
-#define I40E_GLGEN_MSCA_MDIINPROGEN_MASK  I40E_MASK(0x1, I40E_GLGEN_MSCA_MDIINPROGEN_SHIFT)
+#define I40E_GLGEN_MSCA_MDIINPROGEN_MASK  I40E_MASK(0x1u, I40E_GLGEN_MSCA_MDIINPROGEN_SHIFT)
 #define I40E_GLGEN_MSRWD(_i)             (0x0008819C + ((_i) * 4)) /* _i=0...3 */ /* Reset: POR */
 #define I40E_GLGEN_MSRWD_MAX_INDEX       3
 #define I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT 0
@@ -1274,14 +1274,14 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_GLLAN_TXPRE_QDIS_SET_QDIS_SHIFT   30
 #define I40E_GLLAN_TXPRE_QDIS_SET_QDIS_MASK    I40E_MASK(0x1, I40E_GLLAN_TXPRE_QDIS_SET_QDIS_SHIFT)
 #define I40E_GLLAN_TXPRE_QDIS_CLEAR_QDIS_SHIFT 31
-#define I40E_GLLAN_TXPRE_QDIS_CLEAR_QDIS_MASK  I40E_MASK(0x1, I40E_GLLAN_TXPRE_QDIS_CLEAR_QDIS_SHIFT)
+#define I40E_GLLAN_TXPRE_QDIS_CLEAR_QDIS_MASK  I40E_MASK(0x1u, I40E_GLLAN_TXPRE_QDIS_CLEAR_QDIS_SHIFT)
 #define I40E_PFLAN_QALLOC              0x001C0400 /* Reset: CORER */
 #define I40E_PFLAN_QALLOC_FIRSTQ_SHIFT 0
 #define I40E_PFLAN_QALLOC_FIRSTQ_MASK  I40E_MASK(0x7FF, I40E_PFLAN_QALLOC_FIRSTQ_SHIFT)
 #define I40E_PFLAN_QALLOC_LASTQ_SHIFT  16
 #define I40E_PFLAN_QALLOC_LASTQ_MASK   I40E_MASK(0x7FF, I40E_PFLAN_QALLOC_LASTQ_SHIFT)
 #define I40E_PFLAN_QALLOC_VALID_SHIFT  31
-#define I40E_PFLAN_QALLOC_VALID_MASK   I40E_MASK(0x1, I40E_PFLAN_QALLOC_VALID_SHIFT)
+#define I40E_PFLAN_QALLOC_VALID_MASK   I40E_MASK(0x1u, I40E_PFLAN_QALLOC_VALID_SHIFT)
 #define I40E_QRX_ENA(_Q)             (0x00120000 + ((_Q) * 4)) /* _i=0...1535 */ /* Reset: PFR */
 #define I40E_QRX_ENA_MAX_INDEX       1535
 #define I40E_QRX_ENA_QENA_REQ_SHIFT  0
@@ -1692,7 +1692,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_GLNVM_SRCTL_START_SHIFT  30
 #define I40E_GLNVM_SRCTL_START_MASK   I40E_MASK(0x1, I40E_GLNVM_SRCTL_START_SHIFT)
 #define I40E_GLNVM_SRCTL_DONE_SHIFT   31
-#define I40E_GLNVM_SRCTL_DONE_MASK    I40E_MASK(0x1, I40E_GLNVM_SRCTL_DONE_SHIFT)
+#define I40E_GLNVM_SRCTL_DONE_MASK    I40E_MASK(0x1u, I40E_GLNVM_SRCTL_DONE_SHIFT)
 #define I40E_GLNVM_SRDATA              0x000B6114 /* Reset: POR */
 #define I40E_GLNVM_SRDATA_WRDATA_SHIFT 0
 #define I40E_GLNVM_SRDATA_WRDATA_MASK  I40E_MASK(0xFFFF, I40E_GLNVM_SRDATA_WRDATA_SHIFT)
@@ -3059,7 +3059,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_PF_VT_PFALLOC_LASTVF_SHIFT  8
 #define I40E_PF_VT_PFALLOC_LASTVF_MASK   I40E_MASK(0xFF, I40E_PF_VT_PFALLOC_LASTVF_SHIFT)
 #define I40E_PF_VT_PFALLOC_VALID_SHIFT   31
-#define I40E_PF_VT_PFALLOC_VALID_MASK    I40E_MASK(0x1, I40E_PF_VT_PFALLOC_VALID_SHIFT)
+#define I40E_PF_VT_PFALLOC_VALID_MASK    I40E_MASK(0x1u, I40E_PF_VT_PFALLOC_VALID_SHIFT)
 #define I40E_VP_MDET_RX(_VF)        (0x0012A000 + ((_VF) * 4)) /* _i=0...127 */ /* Reset: CORER */
 #define I40E_VP_MDET_RX_MAX_INDEX   127
 #define I40E_VP_MDET_RX_VALID_SHIFT 0
@@ -3196,7 +3196,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_VF_ARQLEN1_ARQCRIT_SHIFT   30
 #define I40E_VF_ARQLEN1_ARQCRIT_MASK    I40E_MASK(0x1, I40E_VF_ARQLEN1_ARQCRIT_SHIFT)
 #define I40E_VF_ARQLEN1_ARQENABLE_SHIFT 31
-#define I40E_VF_ARQLEN1_ARQENABLE_MASK  I40E_MASK(0x1, I40E_VF_ARQLEN1_ARQENABLE_SHIFT)
+#define I40E_VF_ARQLEN1_ARQENABLE_MASK  I40E_MASK(0x1u, I40E_VF_ARQLEN1_ARQENABLE_SHIFT)
 #define I40E_VF_ARQT1            0x00007000 /* Reset: EMPR */
 #define I40E_VF_ARQT1_ARQT_SHIFT 0
 #define I40E_VF_ARQT1_ARQT_MASK  I40E_MASK(0x3FF, I40E_VF_ARQT1_ARQT_SHIFT)
@@ -3219,7 +3219,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_VF_ATQLEN1_ATQCRIT_SHIFT   30
 #define I40E_VF_ATQLEN1_ATQCRIT_MASK    I40E_MASK(0x1, I40E_VF_ATQLEN1_ATQCRIT_SHIFT)
 #define I40E_VF_ATQLEN1_ATQENABLE_SHIFT 31
-#define I40E_VF_ATQLEN1_ATQENABLE_MASK  I40E_MASK(0x1, I40E_VF_ATQLEN1_ATQENABLE_SHIFT)
+#define I40E_VF_ATQLEN1_ATQENABLE_MASK  I40E_MASK(0x1u, I40E_VF_ATQLEN1_ATQENABLE_SHIFT)
 #define I40E_VF_ATQT1            0x00008400 /* Reset: EMPR */
 #define I40E_VF_ATQT1_ATQT_SHIFT 0
 #define I40E_VF_ATQT1_ATQT_MASK  I40E_MASK(0x3FF, I40E_VF_ATQT1_ATQT_SHIFT)
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bonding: export mode 4 slave info routine' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (19 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/i40e: fix shifts of signed values' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags' " luca.boccassi
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Chas Williams; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 5819424a79edab3792d6dc46aaed8f80e892debf Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Thu, 17 May 2018 19:22:51 -0400
Subject: [PATCH] net/bonding: export mode 4 slave info routine

[ upstream commit ab2e38e82889dbfd89eddda731f8a1185800f29c ]

rte_eth_bond_8023ad_slave_info() wasn't exported in the original work.
Useful to extract information about the current 802.3ad state.

Fixes: 46fb43683679 ("bond: add mode 4")

Signed-off-by: Chas Williams <chas3@att.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/bonding/rte_eth_bond_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/bonding/rte_eth_bond_version.map b/drivers/net/bonding/rte_eth_bond_version.map
index 2de0a7d3b..b13bb0e23 100644
--- a/drivers/net/bonding/rte_eth_bond_version.map
+++ b/drivers/net/bonding/rte_eth_bond_version.map
@@ -3,6 +3,7 @@ DPDK_2.0 {
 
 	rte_eth_bond_8023ad_conf_get;
 	rte_eth_bond_8023ad_setup;
+	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
 	rte_eth_bond_link_monitoring_set;
-- 
2.14.2

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

* [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags' has been queued to LTS release 16.11.7
  2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
                               ` (20 preceding siblings ...)
  2018-05-23 14:33             ` [dpdk-stable] patch 'net/bonding: export mode 4 slave info routine' " luca.boccassi
@ 2018-05-23 14:33             ` luca.boccassi
  21 siblings, 0 replies; 108+ messages in thread
From: luca.boccassi @ 2018-05-23 14:33 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 16.11.7

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

Thanks.

Luca Boccassi

---
>From 0b1de008cbcbafbbdf27593743ca0518f90b18ae Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Tue, 22 May 2018 11:13:47 -0700
Subject: [PATCH] net/bnxt: fix Rx checksum flags

[ upstream commit 65ee636872ebd13b85bb0bebeb3cade56f94e6f1 ]

For frames where the hardware is not able to calculate checksum
we are indicating such frames to be bad. And that is incorrect.
Indicate PKT_RX_IP_CKSUM_UNKNOWN or PKT_RX_L4_CKSUM_UNKNOWN
for such frames.

Fixes: 7ec39d8c524b ("net/bnxt: update status of Rx IP/L4 CKSUM")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c | 4 ++++
 drivers/net/bnxt/bnxt_rxr.h | 6 ++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 71f314245..ccf8196a1 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -153,11 +153,15 @@ static uint16_t bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
 
 	if (likely(RX_CMP_IP_CS_OK(rxcmp1)))
 		mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
+	else if (likely(RX_CMP_IP_CS_UNKNOWN(rxcmp1)))
+		mbuf->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN;
 	else
 		mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;
 
 	if (likely(RX_CMP_L4_CS_OK(rxcmp1)))
 		mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD;
+	else if (likely(RX_CMP_L4_CS_UNKNOWN(rxcmp1)))
+		mbuf->ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
 	else
 		mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD;
 
diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h
index 40c9df440..ec2832b57 100644
--- a/drivers/net/bnxt/bnxt_rxr.h
+++ b/drivers/net/bnxt/bnxt_rxr.h
@@ -49,6 +49,9 @@
 	    (((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS) &&		\
 	     !((rxcmp1)->errors_v2 & RX_CMP_L4_CS_ERR_BITS))
 
+#define RX_CMP_L4_CS_UNKNOWN(rxcmp1)					\
+	    !((rxcmp1)->flags2 & RX_CMP_L4_CS_BITS)
+
 #define RX_CMP_IP_CS_ERR_BITS	\
 	rte_cpu_to_le_32(RX_PKT_CMPL_ERRORS_IP_CS_ERROR | \
 			 RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR)
@@ -61,6 +64,9 @@
 		(((rxcmp1)->flags2 & RX_CMP_IP_CS_BITS) &&	\
 		!((rxcmp1)->errors_v2 & RX_CMP_IP_CS_ERR_BITS))
 
+#define RX_CMP_IP_CS_UNKNOWN(rxcmp1)					\
+		!((rxcmp1)->flags2 & RX_CMP_IP_CS_BITS)
+
 struct bnxt_sw_rx_bd {
 	struct rte_mbuf		*mbuf; /* data associated with RX descriptor */
 };
-- 
2.14.2

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

* Re: [dpdk-stable] patch 'vhost: fix device cleanup at stop' has been queued to LTS release 16.11.7
  2018-05-23  9:20     ` Luca Boccassi
@ 2018-06-01 15:46       ` Luca Boccassi
  0 siblings, 0 replies; 108+ messages in thread
From: Luca Boccassi @ 2018-06-01 15:46 UTC (permalink / raw)
  To: Maxime Coquelin, Tomasz Kulasek
  Cc: Dariusz Stojaczyk, Jianfeng Tan, dpdk stable

On Wed, 2018-05-23 at 10:20 +0100, Luca Boccassi wrote:
> On Wed, 2018-05-23 at 09:35 +0200, Maxime Coquelin wrote:
> > Hi Luca, Tomasz,
> > 
> > While testing 16.11 branch, I noticed vhost lib is broken.
> > The symptoms is no packets are sent or received.
> > 
> > I ran a bisect which points to this commit. Reverting it solves the
> > issue.
> > 
> > Debugging a bit more, I can see that the callfd is valid when no
> > packets
> > are being transmitted. I think the problem is that the callfd is
> > received after the kickfd:
> > 
> > VHOST_CONFIG: read message VHOST_USER_SET_VRING_KICK
> > VHOST_CONFIG: vring kick idx:0 file:16
> > VHOST_CONFIG: virtio is not ready for processing.
> > VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
> > VHOST_CONFIG: vring call idx:0 file:17
> > 
> > And in 16.11, the new_device callback is called from the
> > VHOST_USER_SET_VRING_KICK handling, only if the device is ready.
> > This is different in later versions, where the new_device callback
> > can be called for any request.
> > 
> > The right way to fix this would be to move the new_device callback
> > call
> > for any request, but I think there is a non-negligible risk of
> > regression so we'd need to be careful doing that.
> > 
> > Other option is to simply revert Tomasz patch in 16.11 LTS. This is
> > not
> > ideal because Tomasz patch is fixing a real issue (new_device get
> > called
> > with an outdated/invalid callfd). However, I don't know if it has
> > real
> > consequences, as the callfd is updated right after.
> > 
> > Except if someone face real issue due to callfd being updated after
> > new_device is called, then my suggestion would be to revert Tomasz
> > patch
> > as we are at 6 months of 16.11 EOL.
> > 
> > Luca, Tomasz, what's your take on this?
> > 
> > Regards,
> > Maxime
> 
> I'm fine with your suggestion of reverting the patch, as it seems
> less
> risky.

I also can easily confirm the regression - given no objection from
Tomasz, I'll revert.

-- 
Kind regards,
Luca Boccassi

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

end of thread, other threads:[~2018-06-01 15:46 UTC | newest]

Thread overview: 108+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-01 10:44 [dpdk-stable] patch 'eal/ppc: remove braces in SMP memory barrier macro' has been queued to LTS release 16.11.7 luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'kni: fix build on RHEL 7.5' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'examples/exception_path: limit core count to 64' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'kvargs: fix syntax in comments' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix offset while mmaping log base address' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: check cmsg not null' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix device cleanup at stop' " luca.boccassi
2018-05-23  7:35   ` Maxime Coquelin
2018-05-23  9:20     ` Luca Boccassi
2018-06-01 15:46       ` Luca Boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix realloc failure' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'vhost: fix log macro name conflict' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix assigning port id in mbuf' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/nfp: fix barrier location' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/qede: fix alloc from socket 0' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix string length in name comparison' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: allocate stats DMA buffer upfront during probe' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix link update no wait' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/vmxnet3: set the queue shared buffer at start' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/mlx5: fix ARM build' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'ethdev: fix queue start' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/i40e: fix intr callback unregister by adding retry' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'ip_frag: fix double free of chained mbufs' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'hash: fix comment for lookup' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: fix setting VLAN ID on slave ports' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/bonding: clear started state if start fails' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix total stats' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/szedata2: fix format string for PCI address' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/enic: fix crash on MTU update with non-setup queues' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'net/bnxt: fix Rx drop setting' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'drivers/net: fix icc deprecated parameter warning' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'doc: fix a typo in the EAL guide' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'mbuf: fix Tx checksum offload API doc' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: do not set default op status' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'crypto/zuc: remove unnecessary check' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'mempool: fix leak when no objects are populated' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'test: fix memory flags test for low NUMA nodes number' " luca.boccassi
2018-05-01 10:44 ` [dpdk-stable] patch 'test/mempool: fix autotest retry' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix endianness of flag' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags for tunnel frames' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: avoid freeing memzone multiple times' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/thunderx: fix MTU configuration for jumbo packets' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnx2x: fix for PCI FLR after ungraceful exit' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/vmxnet3: keep link state consistent' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/bnxt: fix mbuf data offset initialization' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'app/testpmd: fix command token' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'net/nfp: fix mbufs releasing when stop or close' " luca.boccassi
2018-05-01 10:45 ` [dpdk-stable] patch 'drivers/net: fix link autoneg value for virtual PMDs' " luca.boccassi
2018-05-15 17:19   ` [dpdk-stable] patch 'eal: explicit cast of builtin for bsf32' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'eal: explicit cast of core id when getting index' " luca.boccassi
2018-05-16 10:09       ` [dpdk-stable] patch 'mempool: fix virtual address population' " luca.boccassi
2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: do not cast function pointers as a policy' " luca.boccassi
2018-05-23 14:33           ` [dpdk-stable] patch 'net/i40e: fix failing to disable FDIR Tx queue' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix too many interrupts' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'eal: fix casts in random functions' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix reference counter integer promotion' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit casts of reference counter' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of headroom on reset' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: explicit cast of size on detach' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of multicast bit clearing' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of IP checksum to 16-bit' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast of protocol in IPv6 checksum' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: explicit cast of queue count return' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'app/testpmd: fix burst stats reporting' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'eal: explicit cast in rwlock functions' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net: explicit cast in L4 checksum' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: fix type of private size in detach' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'mbuf: avoid integer promotion in prepend/adj/chain' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'ethdev: fix type and scope of variables in Rx burst' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'app/crypto-perf: fix parameters copy' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/ixgbe: fix DCB configuration' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/qede: fix unicast filter routine return code' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/i40e: fix shifts of signed values' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/bonding: export mode 4 slave info routine' " luca.boccassi
2018-05-23 14:33             ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags' " luca.boccassi
2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix KR2 device check' " luca.boccassi
2018-05-16 10:09         ` [dpdk-stable] patch 'net/bnx2x: fix memzone name overrun' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'eal: declare trace buffer at top of own block' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'spinlock/x86: move stack declaration before code' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net: move stack variable at top of VLAN strip function' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: explicit cast of buffered Tx number' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'hash: move stack declaration at top of CRC32c function' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'hash: explicit casts for truncation in CRC32c' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'test/reorder: fix freeing mbuf twice' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'test/distributor: fix return type of thread function' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix return type of stub miss' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'eal: fix typo in doc of pointer offset macro' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'memzone: fix size on reserving biggest memzone' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix slave port detection' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix valid ports prints' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports update' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix forward ports Rx flush' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'app/testpmd: fix synchronic port hotplug' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'examples/performance-thread: fix return type of threads' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'test/pipeline: fix type of table entry parameter' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'ip_frag: fix some debug logs' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix dead lock on closing in server mode' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'vhost: fix typo in comment' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/vhost: initialise device as inactive' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/virtio-user: fix hugepage files enumeration' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/bnxt: fix Rx mbuf and agg ring leak in dev stop' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix double free on error handling' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/mlx5: fix resource leak in case of error' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/i40e: fix link status update' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'ethdev: improve doc for name by port ID API' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'net/nfp: fix memcpy out of source range' " luca.boccassi
2018-05-15 17:19     ` [dpdk-stable] patch 'eal: remove unused path pattern' " luca.boccassi

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