Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4set -e
5
6NSIM_LRO_ID=$((256 + RANDOM % 256))
7NSIM_LRO_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_LRO_ID
8
9NSIM_DEV_SYS_NEW=/sys/bus/netdevsim/new_device
10NSIM_DEV_SYS_DEL=/sys/bus/netdevsim/del_device
11
12cleanup()
13{
14 set +e
15 ip link del dummyteam &>/dev/null
16 ip link del team0 &>/dev/null
17 echo $NSIM_LRO_ID > $NSIM_DEV_SYS_DEL
18 modprobe -r netdevsim
19}
20
21# Trigger LRO propagation to the lower.
22# https://lore.kernel.org/netdev/aBvOpkIoxcr9PfDg@mini-arch/
23team_lro()
24{
25 # using netdevsim because it supports NETIF_F_LRO
26 NSIM_LRO_NAME=$(find $NSIM_LRO_SYS/net -maxdepth 1 -type d ! \
27 -path $NSIM_LRO_SYS/net -exec basename {} \;)
28
29 ip link add name team0 type team
30 ip link set $NSIM_LRO_NAME down
31 ip link set dev $NSIM_LRO_NAME master team0
32 ip link set team0 up
33 ethtool -K team0 large-receive-offload off
34
35 ip link del team0
36}
37
38# Trigger promisc propagation to the lower during IFLA_MASTER.
39# https://lore.kernel.org/netdev/20250506032328.3003050-1-sdf@fomichev.me/
40team_promisc()
41{
42 ip link add name dummyteam type dummy
43 ip link add name team0 type team
44 ip link set dummyteam down
45 ip link set team0 promisc on
46 ip link set dev dummyteam master team0
47 ip link set team0 up
48
49 ip link del team0
50 ip link del dummyteam
51}
52
53# Trigger promisc propagation to the lower via netif_change_flags (aka
54# ndo_change_rx_flags).
55# https://lore.kernel.org/netdev/20250514220319.3505158-1-stfomichev@gmail.com/
56team_change_flags()
57{
58 ip link add name dummyteam type dummy
59 ip link add name team0 type team
60 ip link set dummyteam down
61 ip link set dev dummyteam master team0
62 ip link set team0 up
63 ip link set team0 promisc on
64
65 # Make sure we can add more L2 addresses without any issues.
66 ip link add link team0 address 00:00:00:00:00:01 team0.1 type macvlan
67 ip link set team0.1 up
68
69 ip link del team0.1
70 ip link del team0
71 ip link del dummyteam
72}
73
74trap cleanup EXIT
75modprobe netdevsim || :
76echo $NSIM_LRO_ID > $NSIM_DEV_SYS_NEW
77udevadm settle
78team_lro
79team_promisc
80team_change_flags