Skip to content

Commit c078290

Browse files
Jonathan Toppinskuba-moo
authored andcommitted
selftests: include bonding tests into the kselftest infra
This creates a test collection in drivers/net/bonding for bonding specific kernel selftests. The first test is a reproducer that provisions a bond and given the specific order in how the ip-link(8) commands are issued the bond never transmits an LACPDU frame on any of its slaves. Signed-off-by: Jonathan Toppins <[email protected]> Acked-by: Jay Vosburgh <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 0ee7828 commit c078290

File tree

6 files changed

+91
-0
lines changed

6 files changed

+91
-0
lines changed

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3679,6 +3679,7 @@ F: Documentation/networking/bonding.rst
36793679
F: drivers/net/bonding/
36803680
F: include/net/bond*
36813681
F: include/uapi/linux/if_bonding.h
3682+
F: tools/testing/selftests/net/bonding/
36823683

36833684
BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER
36843685
M: Dan Robertson <[email protected]>

tools/testing/selftests/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ TARGETS += cpu-hotplug
1212
TARGETS += damon
1313
TARGETS += drivers/dma-buf
1414
TARGETS += drivers/s390x/uvdevice
15+
TARGETS += drivers/net/bonding
1516
TARGETS += efivarfs
1617
TARGETS += exec
1718
TARGETS += filesystems
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
# Makefile for net selftests
3+
4+
TEST_PROGS := bond-break-lacpdu-tx.sh
5+
6+
include ../../../lib.mk
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
# Regression Test:
5+
# Verify LACPDUs get transmitted after setting the MAC address of
6+
# the bond.
7+
#
8+
# https://bugzilla.redhat.com/show_bug.cgi?id=2020773
9+
#
10+
# +---------+
11+
# | fab-br0 |
12+
# +---------+
13+
# |
14+
# +---------+
15+
# | fbond |
16+
# +---------+
17+
# | |
18+
# +------+ +------+
19+
# |veth1 | |veth2 |
20+
# +------+ +------+
21+
#
22+
# We use veths instead of physical interfaces
23+
24+
set -e
25+
tmp=$(mktemp -q dump.XXXXXX)
26+
cleanup() {
27+
ip link del fab-br0 >/dev/null 2>&1 || :
28+
ip link del fbond >/dev/null 2>&1 || :
29+
ip link del veth1-bond >/dev/null 2>&1 || :
30+
ip link del veth2-bond >/dev/null 2>&1 || :
31+
modprobe -r bonding >/dev/null 2>&1 || :
32+
rm -f -- ${tmp}
33+
}
34+
35+
trap cleanup 0 1 2
36+
cleanup
37+
sleep 1
38+
39+
# create the bridge
40+
ip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \
41+
forward_delay 15
42+
43+
# create the bond
44+
ip link add fbond type bond mode 4 miimon 200 xmit_hash_policy 1 \
45+
ad_actor_sys_prio 65535 lacp_rate fast
46+
47+
# set bond address
48+
ip link set fbond address 52:54:00:3B:7C:A6
49+
ip link set fbond up
50+
51+
# set again bond sysfs parameters
52+
ip link set fbond type bond ad_actor_sys_prio 65535
53+
54+
# create veths
55+
ip link add name veth1-bond type veth peer name veth1-end
56+
ip link add name veth2-bond type veth peer name veth2-end
57+
58+
# add ports
59+
ip link set fbond master fab-br0
60+
ip link set veth1-bond down master fbond
61+
ip link set veth2-bond down master fbond
62+
63+
# bring up
64+
ip link set veth1-end up
65+
ip link set veth2-end up
66+
ip link set fab-br0 up
67+
ip link set fbond up
68+
ip addr add dev fab-br0 10.0.0.3
69+
70+
tcpdump -n -i veth1-end -e ether proto 0x8809 >${tmp} 2>&1 &
71+
sleep 15
72+
pkill tcpdump >/dev/null 2>&1
73+
rc=0
74+
num=$(grep "packets captured" ${tmp} | awk '{print $1}')
75+
if test "$num" -gt 0; then
76+
echo "PASS, captured ${num}"
77+
else
78+
echo "FAIL"
79+
rc=1
80+
fi
81+
exit $rc
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_BONDING=y
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
timeout=60

0 commit comments

Comments
 (0)