From: Pavan Nikhilesh <[email protected]>

Add configurable mbuf burst size macros:
- RTE_MBUF_BURST_SIZE_THROUGHPUT: optimized for throughput (default 32)
- RTE_MBUF_BURST_SIZE_LATENCY: optimized for low latency (default 4)
- RTE_MBUF_BURST_SIZE_DEFAULT: references the selected profile

Add meson option 'mbuf_burst_size_default' to select between
'throughput' (default) and 'latency' profiles.

Platform-specific configurations can override
RTE_MBUF_BURST_SIZE_THROUGHPUT.
Set to 64 for CN10K which benefits from larger bursts.

Signed-off-by: Pavan Nikhilesh <[email protected]>
---
v1 Changes:
- Renamed RTE_OPTIMAL_BURST_SIZE to RTE_MBUF_BURST_SIZE_DEFAULT,
- Added RTE_MBUF_BURST_SIZE_THROUGHPUT/RTE_MBUF_BURST_SIZE_LATENCY
  macros with meson option mbuf_burst_size_default to select profile.

 config/arm/meson.build |  1 +
 config/meson.build     | 15 +++++++++++++++
 meson_options.txt      |  2 ++
 3 files changed, 18 insertions(+)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 523b0fc0ed50..1b2cdbd25774 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -481,6 +481,7 @@ soc_cn10k = {
         ['RTE_MAX_LCORE', 24],
         ['RTE_MAX_NUMA_NODES', 1],
         ['RTE_MEMPOOL_ALIGN', 128],
+        ['RTE_MBUF_BURST_SIZE_THROUGHPUT', 64],
     ],
     'part_number': '0xd49',
     'extra_march_features': ['crypto'],
diff --git a/config/meson.build b/config/meson.build
index 02e2798ccaf1..578b561a4fd1 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -393,10 +393,25 @@ if get_option('mbuf_refcnt_atomic')
 endif
 dpdk_conf.set10('RTE_IOVA_IN_MBUF', get_option('enable_iova_as_pa'))

+# Recommended mbuf burst sizes for generic applications.
+# Platform-specific configs may override these values.
+# RTE_MBUF_BURST_SIZE_THROUGHPUT: Burst size optimized for throughput.
+dpdk_conf.set('RTE_MBUF_BURST_SIZE_THROUGHPUT', 32)
+# RTE_MBUF_BURST_SIZE_LATENCY: Burst size optimized for low latency.
+dpdk_conf.set('RTE_MBUF_BURST_SIZE_LATENCY', 4)
+
 compile_time_cpuflags = []
 subdir(arch_subdir)
 dpdk_conf.set('RTE_COMPILE_TIME_CPUFLAGS', ','.join(compile_time_cpuflags))

+# RTE_MBUF_BURST_SIZE_DEFAULT: Default burst size used by examples and testpmd.
+# Controlled by -Dmbuf_burst_size_default option (throughput or latency).
+if get_option('mbuf_burst_size_default') == 'latency'
+    dpdk_conf.set('RTE_MBUF_BURST_SIZE_DEFAULT', 'RTE_MBUF_BURST_SIZE_LATENCY')
+else
+    dpdk_conf.set('RTE_MBUF_BURST_SIZE_DEFAULT', 
'RTE_MBUF_BURST_SIZE_THROUGHPUT')
+endif
+
 # apply cross-specific options
 if meson.is_cross_build()
     # configure RTE_MAX_LCORE and RTE_MAX_NUMA_NODES from cross file
diff --git a/meson_options.txt b/meson_options.txt
index e28d24054cf1..2caf0be91d39 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -46,6 +46,8 @@ option('enable_iova_as_pa', type: 'boolean', value: true, 
description:
        'Support the use of physical addresses for IO addresses, such as used 
by UIO or VFIO in no-IOMMU mode. When disabled, DPDK can only run with IOMMU 
support for address mappings, but will have more space available in the mbuf 
structure.')
 option('mbuf_refcnt_atomic', type: 'boolean', value: true, description:
        'Atomically access the mbuf refcnt.')
+option('mbuf_burst_size_default', type: 'combo', choices: ['throughput', 
'latency'], value: 'throughput', description:
+       'Default mbuf burst size profile: throughput-optimized or 
latency-optimized.')
 option('platform', type: 'string', value: 'native', description:
        'Platform to build, either "native", "generic" or a SoC. Please refer 
to the Linux build guide for more information.')
 option('pkt_mbuf_headroom', type: 'integer', value: 128, description:
--
2.50.1 (Apple Git-155)

Reply via email to