Bug 1329 - Kernel BPF API changes break TAP RSS
Summary: Kernel BPF API changes break TAP RSS
Status: UNCONFIRMED
Alias: None
Product: DPDK
Classification: Unclassified
Component: ethdev (show other bugs)
Version: 22.11
Hardware: All All
: Normal normal
Target Milestone: ---
Assignee: Stephen Hemminger
URL:
Depends on:
Blocks:
 
Reported: 2023-11-23 02:31 CET by Stephen Hemminger
Modified: 2024-02-28 01:40 CET (History)
2 users (show)



Attachments

Description Stephen Hemminger 2023-11-23 02:31:37 CET
The kernel BPF interface is unstable and the older format used by TAP device no longer works with current kernels.  Fixing it means changing how the BPF program is loaded likely creating dependency on a version of libpbpf.  Or just drop the feature.
Comment 1 Thomas Monjalon 2023-11-23 03:17:46 CET
Good question.
I would vote for deprecating it with a clear announce.
If nobody complains, we can drop.
Comment 2 Madhuker Mythri 2023-11-23 08:09:21 CET
On the RHEL9.2 with DPDK 22.11.1 version, DPDK primary application failed
to add RSS flow on TAP sub-device, when loading the TAP BPF byte-code
instructions.

This "struct bpf_insn l3_l4_hash_insns[]" array(from file:
drivers/net/tap/tap_bpf_insns.h) is in eBPF bytecode instructions format,
this eBPF failed to load on TAP PMD with the following error:

========================
rss_add_actions(): Failed to load BPF section 'l3_l4' (7): Argument list
too long.
net_failsafe: Failed to create a flow on sub_device 1."
========================
On Kernel-version:  5.15.0 #9 SMP PREEMPT
Arch: x86_64 GNU/Linux

When added some debug logs on Kernel BPF verifier code, we could see that
instruction processed were reached to 1 Million and returning the "-E2BIG" error.

Whereas with older Kernel-version:5.4.x, this BPF load worked well.

Note You need to log in before you can comment on or make changes to this bug.