]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: vxlan_bridge: Test flood with unresolved FDB entry
authorAmit Cohen <amcohen@nvidia.com>
Mon, 17 Mar 2025 17:37:31 +0000 (18:37 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 24 Mar 2025 22:09:31 +0000 (15:09 -0700)
Extend flood test to configure FDB entry with unresolved destination IP,
check that packets are not sent twice.

Without the previous patch which handles such scenario in mlxsw, the
tests fail:

$ TESTS='test_flood' ./vxlan_bridge_1d.sh
Running tests with UDP port 4789
TEST: VXLAN: flood                                                  [ OK ]
TEST: VXLAN: flood, unresolved FDB entry                            [FAIL]
        vx2 ns2: Expected to capture 10 packets, got 20.

$ TESTS='test_flood' ./vxlan_bridge_1q.sh
INFO: Running tests with UDP port 4789
TEST: VXLAN: flood vlan 10                                          [ OK ]
TEST: VXLAN: flood vlan 20                                          [ OK ]
TEST: VXLAN: flood vlan 10, unresolved FDB entry                    [FAIL]
        vx10 ns2: Expected to capture 10 packets, got 20.
TEST: VXLAN: flood vlan 20, unresolved FDB entry                    [FAIL]
        vx20 ns2: Expected to capture 10 packets, got 20.

With the previous patch, the tests pass.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/7bc96e317531f3bf06319fb2ea447bd8666f29fa.1742224300.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/forwarding/vxlan_bridge_1d.sh
tools/testing/selftests/net/forwarding/vxlan_bridge_1q.sh

index 180c5eca556fe04973a92d7e774855ef00c6cebd..b43816dd998cab2d9e8a1707c14070ae851a525d 100755 (executable)
@@ -428,6 +428,14 @@ __test_flood()
 test_flood()
 {
        __test_flood de:ad:be:ef:13:37 192.0.2.100 "flood"
+
+       # Add an entry with arbitrary destination IP. Verify that packets are
+       # not duplicated (this can happen if hardware floods the packets, and
+       # then traps them due to misconfiguration, so software data path repeats
+       # flooding and resends packets).
+       bridge fdb append dev vx1 00:00:00:00:00:00 dst 198.51.100.1 self
+       __test_flood de:ad:be:ef:13:37 192.0.2.100 "flood, unresolved FDB entry"
+       bridge fdb del dev vx1 00:00:00:00:00:00 dst 198.51.100.1 self
 }
 
 vxlan_fdb_add_del()
index fb9a34cb50c667b6b9ab884aa3de50ed575616a9..afc65647f67314297199fb88cd42ff6b23e3a058 100755 (executable)
@@ -539,6 +539,21 @@ test_flood()
                10 10 0 10 0
        __test_flood ca:fe:be:ef:13:37 198.51.100.100 20 "flood vlan 20" \
                10 0 10 0 10
+
+       # Add entries with arbitrary destination IP. Verify that packets are
+       # not duplicated (this can happen if hardware floods the packets, and
+       # then traps them due to misconfiguration, so software data path repeats
+       # flooding and resends packets).
+       bridge fdb append dev vx10 00:00:00:00:00:00 dst 203.0.113.1 self
+       bridge fdb append dev vx20 00:00:00:00:00:00 dst 203.0.113.2 self
+
+       __test_flood de:ad:be:ef:13:37 192.0.2.100 10 \
+               "flood vlan 10, unresolved FDB entry" 10 10 0 10 0
+       __test_flood ca:fe:be:ef:13:37 198.51.100.100 20 \
+               "flood vlan 20, unresolved FDB entry" 10 0 10 0 10
+
+       bridge fdb del dev vx20 00:00:00:00:00:00 dst 203.0.113.2 self
+       bridge fdb del dev vx10 00:00:00:00:00:00 dst 203.0.113.1 self
 }
 
 vxlan_fdb_add_del()