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.
Good question. I would vote for deprecating it with a clear announce. If nobody complains, we can drop.
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.