selftests: bonding: use tc filter to check if LACP was sent
authorHangbin Liu <liuhangbin@gmail.com>
Mon, 5 Feb 2024 13:00:46 +0000 (21:00 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 8 Feb 2024 02:26:20 +0000 (18:26 -0800)
Use tc filter to check if LACP was sent, which is accurate and save
more time.

No need to remove bonding module as some test env may buildin bonding.
And the bond link has been deleted.

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Link: https://lore.kernel.org/r/20240205130048.282087-3-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/bonding/bond-break-lacpdu-tx.sh

index 6358df5752f9078660607ab0a81b82de47ed932a..1ec7f59db7f4a891264f07d81dab93e0fc28677c 100755 (executable)
 #    +------+ +------+
 #
 # We use veths instead of physical interfaces
+REQUIRE_MZ=no
+NUM_NETIFS=0
+lib_dir=$(dirname "$0")
+source "$lib_dir"/../../../net/forwarding/lib.sh
 
 set -e
-tmp=$(mktemp -q dump.XXXXXX)
 cleanup() {
        ip link del fab-br0 >/dev/null 2>&1 || :
        ip link del fbond  >/dev/null 2>&1 || :
        ip link del veth1-bond  >/dev/null 2>&1 || :
        ip link del veth2-bond  >/dev/null 2>&1 || :
-       modprobe -r bonding  >/dev/null 2>&1 || :
-       rm -f -- ${tmp}
 }
 
 trap cleanup 0 1 2
 cleanup
-sleep 1
 
 # create the bridge
 ip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \
@@ -67,13 +67,12 @@ ip link set fab-br0 up
 ip link set fbond up
 ip addr add dev fab-br0 10.0.0.3
 
-tcpdump -n -i veth1-end -e ether proto 0x8809 >${tmp} 2>&1 &
-sleep 15
-pkill tcpdump >/dev/null 2>&1
 rc=0
-num=$(grep "packets captured" ${tmp} | awk '{print $1}')
-if test "$num" -gt 0; then
-       echo "PASS, captured ${num}"
+tc qdisc add dev veth1-end clsact
+tc filter add dev veth1-end ingress protocol 0x8809 pref 1 handle 101 flower skip_hw action pass
+if slowwait_for_counter 15 2 \
+       tc_rule_handle_stats_get "dev veth1-end ingress" 101 ".packets" "" &> /dev/null; then
+       echo "PASS, captured 2"
 else
        echo "FAIL"
        rc=1