examples/l2fwd-keepalive: fix packet drops limited mbufs

Message ID 20200311120456.36510-1-louise.kilheeney@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series examples/l2fwd-keepalive: fix packet drops limited mbufs |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed

Commit Message

Louise Kilheeney March 11, 2020, 12:04 p.m. UTC
  MBUF pool of size 8192 was causing packet loss when using four ports. To
fix this issue this patch specifies the number of MBUF's per port
instead of having one set MBUF pool size, this way it will adapt to any
number of ports.

Fixes: e64833f2273a ("examples/l2fwd-keepalive: add sample application")

Cc: stable@dpdk.org

Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
---
 examples/l2fwd-keepalive/main.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
  

Comments

Jiang Mao March 13, 2020, 3:07 a.m. UTC | #1
Tested-by:xix.zhang@intel.com

Best regards,
Jiang Mao

> -----Original Message-----
> From: stable [mailto:stable-bounces@dpdk.org] On Behalf Of Louise
> Kilheeney
> Sent: Wednesday, March 11, 2020 8:05 PM
> To: dev@dpdk.org
> Cc: Kilheeney, Louise <louise.kilheeney@intel.com>; stable@dpdk.org
> Subject: [dpdk-stable] [PATCH] examples/l2fwd-keepalive: fix packet drops
> limited mbufs
> 
> MBUF pool of size 8192 was causing packet loss when using four ports. To fix
> this issue this patch specifies the number of MBUF's per port instead of
> having one set MBUF pool size, this way it will adapt to any number of ports.
> 
> Fixes: e64833f2273a ("examples/l2fwd-keepalive: add sample application")
> 
> Cc: stable@dpdk.org
> 
> Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
> ---
>  examples/l2fwd-keepalive/main.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-
> keepalive/main.c index b36834974..0f0010d51 100644
> --- a/examples/l2fwd-keepalive/main.c
> +++ b/examples/l2fwd-keepalive/main.c
> @@ -44,7 +44,7 @@
> 
>  #define RTE_LOGTYPE_L2FWD RTE_LOGTYPE_USER1
> 
> -#define NB_MBUF   8192
> +#define NB_MBUF_PER_PORT 3000
> 
>  #define MAX_PKT_BURST 32
>  #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */ @@ -561,16
> +561,19 @@ main(int argc, char **argv)
>  	if (ret < 0)
>  		rte_exit(EXIT_FAILURE, "Invalid L2FWD arguments\n");
> 
> -	/* create the mbuf pool */
> -	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool",
> NB_MBUF, 32,
> -		0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
> -	if (l2fwd_pktmbuf_pool == NULL)
> -		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
> -
>  	nb_ports = rte_eth_dev_count_avail();
>  	if (nb_ports == 0)
>  		rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
> 
> +	/* create the mbuf pool */
> +	unsigned int total_nb_mbufs = NB_MBUF_PER_PORT * nb_ports;
> +
> +	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool",
> +		total_nb_mbufs,	32, 0,
> RTE_MBUF_DEFAULT_BUF_SIZE,
> +		rte_socket_id());
> +	if (l2fwd_pktmbuf_pool == NULL)
> +		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
> +
>  	/* reset l2fwd_dst_ports */
>  	for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
>  		l2fwd_dst_ports[portid] = 0;
> --
> 2.17.1
  
Thomas Monjalon April 26, 2020, 9:12 p.m. UTC | #2
11/03/2020 13:04, Louise Kilheeney:
> MBUF pool of size 8192 was causing packet loss when using four ports. To
> fix this issue this patch specifies the number of MBUF's per port
> instead of having one set MBUF pool size, this way it will adapt to any
> number of ports.
> 
> Fixes: e64833f2273a ("examples/l2fwd-keepalive: add sample application")
> 
> Cc: stable@dpdk.org

No blank line between Fixes and Cc lines please.

> 
> Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
> ---
>  examples/l2fwd-keepalive/main.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c
> index b36834974..0f0010d51 100644
> --- a/examples/l2fwd-keepalive/main.c
> +++ b/examples/l2fwd-keepalive/main.c
>  	nb_ports = rte_eth_dev_count_avail();
>  	if (nb_ports == 0)
>  		rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
>  
> +	/* create the mbuf pool */
> +	unsigned int total_nb_mbufs = NB_MBUF_PER_PORT * nb_ports;

Please avoid declaring a variable in the middle of a function.
This code style is too much modern for DPDK ;-)
It could break on a random compiler.
  
Thomas Monjalon April 26, 2020, 9:13 p.m. UTC | #3
13/03/2020 04:07, Jiang, MaoX:
> Tested-by:xix.zhang@intel.com

Please provide full name.
  
Jiang Mao April 27, 2020, 1:38 a.m. UTC | #4
Tested-by:zhang,xi <xix.zhang@intel.com>

Best regards,
Jiang Mao


> -----Original Message-----
> From: stable [mailto:stable-bounces@dpdk.org] On Behalf Of Louise
> Kilheeney
> Sent: Wednesday, March 11, 2020 8:05 PM
> To: dev@dpdk.org
> Cc: Kilheeney, Louise <louise.kilheeney@intel.com>; stable@dpdk.org
> Subject: [dpdk-stable] [PATCH] examples/l2fwd-keepalive: fix packet drops
> limited mbufs
> 
> MBUF pool of size 8192 was causing packet loss when using four ports. To fix
> this issue this patch specifies the number of MBUF's per port instead of
> having one set MBUF pool size, this way it will adapt to any number of ports.
> 
> Fixes: e64833f2273a ("examples/l2fwd-keepalive: add sample application")
> 
> Cc: stable@dpdk.org
> 
> Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
> ---
>  examples/l2fwd-keepalive/main.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-
> keepalive/main.c index b36834974..0f0010d51 100644
> --- a/examples/l2fwd-keepalive/main.c
> +++ b/examples/l2fwd-keepalive/main.c
> @@ -44,7 +44,7 @@
> 
>  #define RTE_LOGTYPE_L2FWD RTE_LOGTYPE_USER1
> 
> -#define NB_MBUF   8192
> +#define NB_MBUF_PER_PORT 3000
> 
>  #define MAX_PKT_BURST 32
>  #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */ @@ -561,16
> +561,19 @@ main(int argc, char **argv)
>  	if (ret < 0)
>  		rte_exit(EXIT_FAILURE, "Invalid L2FWD arguments\n");
> 
> -	/* create the mbuf pool */
> -	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool",
> NB_MBUF, 32,
> -		0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
> -	if (l2fwd_pktmbuf_pool == NULL)
> -		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
> -
>  	nb_ports = rte_eth_dev_count_avail();
>  	if (nb_ports == 0)
>  		rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
> 
> +	/* create the mbuf pool */
> +	unsigned int total_nb_mbufs = NB_MBUF_PER_PORT * nb_ports;
> +
> +	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool",
> +		total_nb_mbufs,	32, 0,
> RTE_MBUF_DEFAULT_BUF_SIZE,
> +		rte_socket_id());
> +	if (l2fwd_pktmbuf_pool == NULL)
> +		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
> +
>  	/* reset l2fwd_dst_ports */
>  	for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
>  		l2fwd_dst_ports[portid] = 0;
> --
> 2.17.1
  

Patch

diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c
index b36834974..0f0010d51 100644
--- a/examples/l2fwd-keepalive/main.c
+++ b/examples/l2fwd-keepalive/main.c
@@ -44,7 +44,7 @@ 
 
 #define RTE_LOGTYPE_L2FWD RTE_LOGTYPE_USER1
 
-#define NB_MBUF   8192
+#define NB_MBUF_PER_PORT 3000
 
 #define MAX_PKT_BURST 32
 #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */
@@ -561,16 +561,19 @@  main(int argc, char **argv)
 	if (ret < 0)
 		rte_exit(EXIT_FAILURE, "Invalid L2FWD arguments\n");
 
-	/* create the mbuf pool */
-	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool", NB_MBUF, 32,
-		0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
-	if (l2fwd_pktmbuf_pool == NULL)
-		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
-
 	nb_ports = rte_eth_dev_count_avail();
 	if (nb_ports == 0)
 		rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
 
+	/* create the mbuf pool */
+	unsigned int total_nb_mbufs = NB_MBUF_PER_PORT * nb_ports;
+
+	l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool",
+		total_nb_mbufs,	32, 0, RTE_MBUF_DEFAULT_BUF_SIZE,
+		rte_socket_id());
+	if (l2fwd_pktmbuf_pool == NULL)
+		rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
+
 	/* reset l2fwd_dst_ports */
 	for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
 		l2fwd_dst_ports[portid] = 0;