** Description changed: + [ Impact ] + + The test veth.sh from ubuntu_kselftests_net fails on both Jammy and Noble. + ... + bad setting: reducing RX nr below peer TX with XDP set ok + with xdp attached - gro flag fail - expected on found off + - peer gro flag ok + - tso flag ok + - peer tso flag ok + - aggregation fail - got 10 packets, expected 1 + - after dev off, flag fail - expected on found off + - peer flag ok + ... + + The test execution reveals a consistent failure pattern + during the interaction between XDP program attachment and GRO + feature state management on veth interfaces. + + It is possible to notice that the commit + d7db7775ea2e (net: veth: do not manipulate GRO when using XDP) + changed the veth driver's behavior by removing automatic GRO manipulation + when XDP programs attach or detach. + Both Noble and Jammy includes this behavioral change, + but the kselftest net:vet.sh has not been update accordingly. + In practice, commit ba5a6476e386 (selftests: net: veth: test the ability + to independently manipulate GRO and XDP) it’s missing. + This creates a mismatch between actual kernel behavior and test expectations. + + [ Fix ] + + Backport commit ba5a6476e386 (selftests: net: veth: test the ability + to independently manipulate GRO and XDP) from mainline. + + [ Test ] + + Execute net:vet.sh on both Noble and Jammy. + + In Noble: + $ uname -a + Linux ubuntu-noble-amd64-server 6.8.0-91-generic #92-Ubuntu SMP PREEMPT_DYNAMIC Fri Nov 28 16:26:35 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux + $ sudo apt install -y build-essential docutils-common ethtool iptables jq kernel-wedge libfuse-dev libnuma-dev libssl-dev net-tools pkg-config tcpdump uuid-runtime socat netsniff-ng libcap-dev libelf-dev clang llvm + $ fakeroot debian/rules clean + $ make -j$(nproc) headers + $ sudo make run_tests -C tools/testing/selftests/net TEST_PROGS=veth.sh + # selftests: net: veth.sh + # default - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation ok + # - aggregation with TSO off ok + # with gro on - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation with TSO off ok + # gro vs xdp while down - gro flag off ok + # - after down ok + # - after xdp off ok + # - after up ok + # - after peer xdp ok + # gro vs xdp while down - gro flag on ok + # - after down ok + # - after xdp off ok + # - after up ok + # - after peer xdp ok + # default channels ok + # with gro enabled on link down - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation with TSO off ok + # setting tx channels ok + # setting both rx and tx channels ok + # bad setting: combined channels ok + # setting invalid channels nr ok + # bad setting: XDP with RX nr less than TX ok + # bad setting: reducing RX nr below peer TX with XDP set ok + # bad setting: increasing peer TX nr above RX with XDP set ok + # setting invalid channels nr ok + # with xdp attached - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - no aggregation ok + # - gro flag with GRO on ok + # - aggregation ok + # - after dev off, flag ok + # - peer flag ok + # - after gro on xdp off, gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # decreasing tx channels with device down ok + # - aggregation ok + # increasing tx channels with device down ok + # aggregation again with default and TSO off ok + ok 14 selftests: net: veth.sh + + In Jammy: + + $ uname -a + Linux ubuntu-jammy-amd64-server 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux + $ sudo apt install -y build-essential docutils-common ethtool iptables jq kernel-wedge libfuse-dev libnuma-dev libssl-dev net-tools pkg-config tcpdump uuid-runtime socat netsniff-ng libcap-dev libelf-dev clang llvm + $ fakeroot debian/rules clean + $ make -j$(nproc) headers + $ make -j$(nproc) -C tools/testing/selftests TARGETS=bpf SKIP_TARGETS= KDIR=/usr/src/linux-headers-5.15.0-163-generic + $ sudo make run_tests -C tools/testing/selftests/net TEST_PROGS=veth.sh + # selftests: net: veth.sh + # default - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation ok + # - aggregation with TSO off ok + # with gro on - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation with TSO off ok + # gro vs xdp while down - gro flag on ok + # - after down ok + # - after xdp off ok + # - after up ok + # - after peer xdp ok + # default channels ok + # with gro enabled on link down - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - aggregation with TSO off ok + # setting tx channels ok + # setting both rx and tx channels ok + # bad setting: combined channels ok + # setting invalid channels nr ok + # bad setting: XDP with RX nr less than TX ok + # bad setting: reducing RX nr below peer TX with XDP set ok + # bad setting: increasing peer TX nr above RX with XDP set ok + # setting invalid channels nr ok + # with xdp attached - gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # - no aggregation ok + # - gro flag with GRO on ok + # - aggregation ok + # - after dev off, flag ok + # - peer flag ok + # - after gro on xdp off, gro flag ok + # - peer gro flag ok + # - tso flag ok + # - peer tso flag ok + # decreasing tx channels with device down ok + # - aggregation ok + # increasing tx channels with device down ok + # aggregation again with default and TSO off ok + ok 7 selftests: net: veth.sh + + [ Regression Potential ] + + The fix affects only scripts in kselftest. + No regression potential for the kernel. + + --- + Issue found with Jammy 5.15.0-111.121 in sru-20240429 Reproduce rate is 100% across different arches on openstack cloud. Test log: ubuntu@kt-j-l-gen-5-15-bc2r4d20-u-kselftests-net-amd64:~/autotest/client/tmp/ubuntu_kselftests_net/src/linux/tools/testing/selftests/net$ sudo ./veth.sh default - gro flag ok - peer gro flag ok - tso flag ok - peer tso flag ok - aggregation ok - aggregation with TSO off ok with gro on - gro flag ok - peer gro flag ok - tso flag ok - peer tso flag ok - aggregation with TSO off ok default channels ok with gro enabled on link down - gro flag ok - peer gro flag ok - tso flag ok - peer tso flag ok - aggregation with TSO off ok setting tx channels ok bad setting: combined channels ok setting invalid channels nr ok bad setting: XDP with RX nr less than TX ok bad setting: reducing RX nr below peer TX with XDP set ok with xdp attached - gro flag fail - expected on found off - peer gro flag ok - tso flag ok - peer tso flag ok - aggregation fail - got 10 packets, expected 1 - after dev off, flag fail - expected on found off - peer flag ok - after gro on xdp off, gro flag ok - peer gro flag ok - tso flag ok - peer tso flag ok decreasing tx channels with device down ok - aggregation ok increasing tx channels with device down ok aggregation again with default and TSO off ok This failure is different than our known issue of this test (LP: #1949569 with gro on/aggregation with TSO off) And we don't have this failure on openstack cloud in the previous cycles. I have also verified the following combinations: * 105 kernel + 106 source code - GOOD * 106 kernel + 106 source code - GOOD * 111 kernel + 106 source code - BAD * 111 kernel + 111 source code - BAD * 106 kernel + 111 source code - GOOD This appears to be a possible regression in the kernel to me.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2065369 Title: veth.sh from ubuntu_kselftests_net failed on J-5.15 / N-6.8 (with xdp attached - gro flag) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/2065369/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
