On 11/6/26 14:27, Bing Zhao wrote:
> The PACKET_IGNORE_OUTGOING socket option is used unconditionally,
> but it was only added to the uapi headers in Linux 4.20. The build
> fails on distributions shipping older kernel headers, like RHEL 8
> (kernel-headers-4.18.0-193.el8, gcc 8.5.0):
>
...
>
> DPDK documents Linux 5.4 as the minimum kernel, but the PMD already
> tolerates older kernels for multi-queue ports. Do the same here
> instead of failing the probe, for example on the 4.18 kernel of
> RHEL 8.
>
> Fixes: 3db7aa7868b2 ("net/af_packet: use kernel to filter
single-queue Rx")
>
> Signed-off-by: Bing Zhao <[email protected]>
> ---
> doc/guides/nics/af_packet.rst | 1 +
> drivers/net/af_packet/rte_eth_af_packet.c | 16 ++++++++++++++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/doc/guides/nics/af_packet.rst
b/doc/guides/nics/af_packet.rst
> index 6282f1e18b..09e79ff392 100644
Thank you for the patch.
I do not think it is a literal fix since the feature to ignore outgoing
packets in the AF_PACKET PMD was added new in DPDK 26.11 which requires
Kernel >= 5.4 which you mentioned.
It is, of course, a valuable feature to older versions of DPDK and/or
Linux. I added that feature in a patch series. The first patch of that
series adds the feature in a way that does not require
`setsockopt(...PACKET_IGNORE_OUTGOING...)`, doing all the filtering in
the PMD. It is in commit b44eeed1d7. It could be cherry picked to the
stable versions, providing that feature in DPDK versions that still
support the older kernel.
If RHEL 8 uses Linux 4.18, and there is a requirement somewhere that the
current DPDK must be compatible with it, should DPDK's Linux kernel
required be lowered to 4.18 maybe?
According to the docs, the following stable versions [1] are still
support which I have annotated with the documented required Linux kernel
versions [2]:
* 23.11, EOL December 2026, Linux >= 4.14
* 24.11, EOL December 2027, Linux >= 4.19
* 25.11, EOL December 2028, Linux >= 5.4
[1]: Stable Versions: https://core.dpdk.org/roadmap/
[2]: Requirements:
https://doc.dpdk.org/guides-23.11/linux_gsg/sys_reqs.html
https://doc.dpdk.org/guides-24.11/linux_gsg/sys_reqs.html
https://doc.dpdk.org/guides-25.11/linux_gsg/sys_reqs.html
To me this looks like RHEL 8 is simply not compatible with DPDK 25.11 or
newer if it is still using Linux 4.18. Lowering the required version to
4.18 would be odd considering 24.11 requires 4.19 and 25.11 5.4.
If DPDK needs to stay compatible with RHEL 8, would this compatibility
be required in all parts of DPDK or only some? If only parts, which
parts or areas? Maybe these parts and areas then need to be listed
somewhere so that new patches can be developed accordingly.