mirror of https://github.com/torvalds/linux.git
81 lines
2.0 KiB
Bash
Executable File
81 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
set -e
|
|
|
|
NSIM_LRO_ID=$((256 + RANDOM % 256))
|
|
NSIM_LRO_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_LRO_ID
|
|
|
|
NSIM_DEV_SYS_NEW=/sys/bus/netdevsim/new_device
|
|
NSIM_DEV_SYS_DEL=/sys/bus/netdevsim/del_device
|
|
|
|
cleanup()
|
|
{
|
|
set +e
|
|
ip link del dummyteam &>/dev/null
|
|
ip link del team0 &>/dev/null
|
|
echo $NSIM_LRO_ID > $NSIM_DEV_SYS_DEL
|
|
modprobe -r netdevsim
|
|
}
|
|
|
|
# Trigger LRO propagation to the lower.
|
|
# https://lore.kernel.org/netdev/aBvOpkIoxcr9PfDg@mini-arch/
|
|
team_lro()
|
|
{
|
|
# using netdevsim because it supports NETIF_F_LRO
|
|
NSIM_LRO_NAME=$(find $NSIM_LRO_SYS/net -maxdepth 1 -type d ! \
|
|
-path $NSIM_LRO_SYS/net -exec basename {} \;)
|
|
|
|
ip link add name team0 type team
|
|
ip link set $NSIM_LRO_NAME down
|
|
ip link set dev $NSIM_LRO_NAME master team0
|
|
ip link set team0 up
|
|
ethtool -K team0 large-receive-offload off
|
|
|
|
ip link del team0
|
|
}
|
|
|
|
# Trigger promisc propagation to the lower during IFLA_MASTER.
|
|
# https://lore.kernel.org/netdev/20250506032328.3003050-1-sdf@fomichev.me/
|
|
team_promisc()
|
|
{
|
|
ip link add name dummyteam type dummy
|
|
ip link add name team0 type team
|
|
ip link set dummyteam down
|
|
ip link set team0 promisc on
|
|
ip link set dev dummyteam master team0
|
|
ip link set team0 up
|
|
|
|
ip link del team0
|
|
ip link del dummyteam
|
|
}
|
|
|
|
# Trigger promisc propagation to the lower via netif_change_flags (aka
|
|
# ndo_change_rx_flags).
|
|
# https://lore.kernel.org/netdev/20250514220319.3505158-1-stfomichev@gmail.com/
|
|
team_change_flags()
|
|
{
|
|
ip link add name dummyteam type dummy
|
|
ip link add name team0 type team
|
|
ip link set dummyteam down
|
|
ip link set dev dummyteam master team0
|
|
ip link set team0 up
|
|
ip link set team0 promisc on
|
|
|
|
# Make sure we can add more L2 addresses without any issues.
|
|
ip link add link team0 address 00:00:00:00:00:01 team0.1 type macvlan
|
|
ip link set team0.1 up
|
|
|
|
ip link del team0.1
|
|
ip link del team0
|
|
ip link del dummyteam
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
modprobe netdevsim || :
|
|
echo $NSIM_LRO_ID > $NSIM_DEV_SYS_NEW
|
|
udevadm settle
|
|
team_lro
|
|
team_promisc
|
|
team_change_flags
|