mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
81 lines
2 KiB
Bash
81 lines
2 KiB
Bash
![]() |
#!/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
|