examples/l2fwd-keepalive: fix packet drops limited mbufs
Checks
Commit Message
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
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
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.
13/03/2020 04:07, Jiang, MaoX:
> Tested-by:xix.zhang@intel.com
Please provide full name.
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
@@ -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;