xref: /openbmc/linux/tools/testing/selftests/drivers/net/bonding/bond-break-lacpdu-tx.sh (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1c078290aSJonathan Toppins#!/bin/sh
2c078290aSJonathan Toppins# SPDX-License-Identifier: GPL-2.0
3c078290aSJonathan Toppins
4c078290aSJonathan Toppins# Regression Test:
5c078290aSJonathan Toppins#   Verify LACPDUs get transmitted after setting the MAC address of
6c078290aSJonathan Toppins#   the bond.
7c078290aSJonathan Toppins#
8c078290aSJonathan Toppins# https://bugzilla.redhat.com/show_bug.cgi?id=2020773
9c078290aSJonathan Toppins#
10c078290aSJonathan Toppins#       +---------+
11c078290aSJonathan Toppins#       | fab-br0 |
12c078290aSJonathan Toppins#       +---------+
13c078290aSJonathan Toppins#            |
14c078290aSJonathan Toppins#       +---------+
15c078290aSJonathan Toppins#       |  fbond  |
16c078290aSJonathan Toppins#       +---------+
17c078290aSJonathan Toppins#        |       |
18c078290aSJonathan Toppins#    +------+ +------+
19c078290aSJonathan Toppins#    |veth1 | |veth2 |
20c078290aSJonathan Toppins#    +------+ +------+
21c078290aSJonathan Toppins#
22c078290aSJonathan Toppins# We use veths instead of physical interfaces
23c078290aSJonathan Toppins
24c078290aSJonathan Toppinsset -e
25c078290aSJonathan Toppinstmp=$(mktemp -q dump.XXXXXX)
26c078290aSJonathan Toppinscleanup() {
27c078290aSJonathan Toppins	ip link del fab-br0 >/dev/null 2>&1 || :
28c078290aSJonathan Toppins	ip link del fbond  >/dev/null 2>&1 || :
29c078290aSJonathan Toppins	ip link del veth1-bond  >/dev/null 2>&1 || :
30c078290aSJonathan Toppins	ip link del veth2-bond  >/dev/null 2>&1 || :
31c078290aSJonathan Toppins	modprobe -r bonding  >/dev/null 2>&1 || :
32c078290aSJonathan Toppins	rm -f -- ${tmp}
33c078290aSJonathan Toppins}
34c078290aSJonathan Toppins
35c078290aSJonathan Toppinstrap cleanup 0 1 2
36c078290aSJonathan Toppinscleanup
37c078290aSJonathan Toppinssleep 1
38c078290aSJonathan Toppins
39c078290aSJonathan Toppins# create the bridge
40c078290aSJonathan Toppinsip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \
41c078290aSJonathan Toppins	forward_delay 15
42c078290aSJonathan Toppins
43c078290aSJonathan Toppins# create the bond
44c078290aSJonathan Toppinsip link add fbond type bond mode 4 miimon 200 xmit_hash_policy 1 \
45c078290aSJonathan Toppins	ad_actor_sys_prio 65535 lacp_rate fast
46c078290aSJonathan Toppins
47c078290aSJonathan Toppins# set bond address
48c078290aSJonathan Toppinsip link set fbond address 52:54:00:3B:7C:A6
49c078290aSJonathan Toppinsip link set fbond up
50c078290aSJonathan Toppins
51c078290aSJonathan Toppins# set again bond sysfs parameters
52c078290aSJonathan Toppinsip link set fbond type bond ad_actor_sys_prio 65535
53c078290aSJonathan Toppins
54c078290aSJonathan Toppins# create veths
55c078290aSJonathan Toppinsip link add name veth1-bond type veth peer name veth1-end
56c078290aSJonathan Toppinsip link add name veth2-bond type veth peer name veth2-end
57c078290aSJonathan Toppins
58c078290aSJonathan Toppins# add ports
59c078290aSJonathan Toppinsip link set fbond master fab-br0
60*be809424SHangbin Liuip link set veth1-bond master fbond
61*be809424SHangbin Liuip link set veth2-bond master fbond
62c078290aSJonathan Toppins
63c078290aSJonathan Toppins# bring up
64c078290aSJonathan Toppinsip link set veth1-end up
65c078290aSJonathan Toppinsip link set veth2-end up
66c078290aSJonathan Toppinsip link set fab-br0 up
67c078290aSJonathan Toppinsip link set fbond up
68c078290aSJonathan Toppinsip addr add dev fab-br0 10.0.0.3
69c078290aSJonathan Toppins
70c078290aSJonathan Toppinstcpdump -n -i veth1-end -e ether proto 0x8809 >${tmp} 2>&1 &
71c078290aSJonathan Toppinssleep 15
72c078290aSJonathan Toppinspkill tcpdump >/dev/null 2>&1
73c078290aSJonathan Toppinsrc=0
74c078290aSJonathan Toppinsnum=$(grep "packets captured" ${tmp} | awk '{print $1}')
75c078290aSJonathan Toppinsif test "$num" -gt 0; then
76c078290aSJonathan Toppins	echo "PASS, captured ${num}"
77c078290aSJonathan Toppinselse
78c078290aSJonathan Toppins	echo "FAIL"
79c078290aSJonathan Toppins	rc=1
80c078290aSJonathan Toppinsfi
81c078290aSJonathan Toppinsexit $rc
82