dpdk: improve rx burst count per loop 10/36410/1
authorFan Zhang <[email protected]>
Thu, 10 Mar 2022 14:49:19 +0000 (14:49 +0000)
committerFan Zhang <[email protected]>
Wed, 15 Jun 2022 07:30:38 +0000 (07:30 +0000)
Type: improvement

This patch improves the per dpdk-input loop number of packets
received from the port. The change mimics how packets rx happened
before VPP 22.02/DPDK 21.11: instead of trying to rx huge number
of packets (256) in one go, rx more times with up to 32 packets
max each time.

Signed-off-by: Fan Zhang <[email protected]>
Change-Id: I804dce6d9121ab21b02e53dd0328dc52ac49d80f
(cherry picked from commit a9fe20f4b8f7a9bd65cc8ee1b6a0204af7fc3627)

src/plugins/dpdk/device/node.c

index d83fa35..3ae74e0 100644 (file)
@@ -364,12 +364,13 @@ dpdk_device_input (vlib_main_t * vm, dpdk_main_t * dm, dpdk_device_t * xd,
   /* get up to DPDK_RX_BURST_SZ buffers from PMD */
   while (n_rx_packets < DPDK_RX_BURST_SZ)
     {
-      n = rte_eth_rx_burst (xd->port_id, queue_id,
-                           ptd->mbufs + n_rx_packets,
-                           DPDK_RX_BURST_SZ - n_rx_packets);
+      u32 n_to_rx = clib_min (DPDK_RX_BURST_SZ - n_rx_packets, 32);
+
+      n = rte_eth_rx_burst (xd->port_id, queue_id, ptd->mbufs + n_rx_packets,
+                           n_to_rx);
       n_rx_packets += n;
 
-      if (n < 32)
+      if (n < n_to_rx)
        break;
     }