So we right now (at WEKA) have a somewhat older version of DPDK that we have customized heavily, and I am going to to need to to make the headroom *dynamic* (passed in at run time, and per port.)
We have this requirement because we need payload to be at a specific offset, but have to deal with different header lengths for IPv4 and now IPv6. My reason for pointing this out, is that I would dearly like if we could collaborate on this -- this change is going to touch pretty much every PMD (we don't need it on all of them as we only support a subset of PMDs, but its still a significant set.) I'm not sure if anyone else has considered such a need -- this particular message caught my eye as I'm looking specifically in this area right now. On Feb 15, 2024 at 11:02 AM -0800, Parthakumar Roy <parthakumar....@ibm.com>, wrote: > Hello, > Bruce Richardson suggested that I submit this patch - at IBM we needed to > adjust the pkt_mbuf_headroom for our application to work. This is my first > ever patch through a mailing list, I have only done it through Pull Requests > before, so let me know if I need to correct something. > > Message: > Add meson configuration option to adjust RTE_PKTMBUF_HEADROOM > > diff --git a/config/meson.build b/config/meson.build > index 7cd375e991..43b765ade1 100644 > --- a/config/meson.build > +++ b/config/meson.build > @@ -304,6 +304,7 @@ endforeach > dpdk_conf.set('RTE_MAX_ETHPORTS', get_option('max_ethports')) > dpdk_conf.set('RTE_LIBEAL_USE_HPET', get_option('use_hpet')) > dpdk_conf.set('RTE_ENABLE_TRACE_FP', get_option('enable_trace_fp')) > +dpdk_conf.set('RTE_PKTMBUF_HEADROOM', get_option('pkt_mbuf_headroom')) > # values which have defaults which may be overridden > dpdk_conf.set('RTE_MAX_VFIO_GROUPS', 64) > dpdk_conf.set('RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB', 64) > diff --git a/config/rte_config.h b/config/rte_config.h > index 7b8c85e948..a2bb4ea61b 100644 > --- a/config/rte_config.h > +++ b/config/rte_config.h > @@ -51,7 +51,6 @@ > > /* mbuf defines */ > #define RTE_MBUF_DEFAULT_MEMPOOL_OPS "ring_mp_mc" > -#define RTE_PKTMBUF_HEADROOM 128 > > /* ether defines */ > #define RTE_MAX_QUEUES_PER_PORT 1024 > diff --git a/meson_options.txt b/meson_options.txt > index 08528492f7..169fcc94c7 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -36,6 +36,8 @@ option('machine', type: 'string', value: 'auto', > description: > 'Alias of cpu_instruction_set.') > option('max_ethports', type: 'integer', value: 32, description: > 'maximum number of Ethernet devices') > +option('pkt_mbuf_headroom', type: 'integer', value: 128, description: > + 'number of bytes skipped on Rx at the start of the packet buffer to > leave room for additional packet headers') > option('max_lcores', type: 'string', value: 'default', description: > 'Set maximum number of cores/threads supported by EAL; "default" is > different per-arch, "detect" detects the number of cores on the build > machine.') > option('max_numa_nodes', type: 'string', value: 'default', description: >