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 , 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: >