[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZEt3hvyREPVdbesO@Laptop-X1>
Date: Fri, 28 Apr 2023 15:36:38 +0800
From: Hangbin Liu <liuhangbin@...il.com>
To: Jay Vosburgh <jay.vosburgh@...onical.com>
Cc: netdev@...r.kernel.org
Subject: [Issue] Bonding can't show correct speed if lower interface is bond
802.3ad
Hi Jay,
A user reported a bonding issue that if we put an active-back bond on top of a
802.3ad bond interface. When the 802.3ad bond's speed/duplex changed
dynamically. The upper bonding interface's speed/duplex can't be changed at
the same time.
This seems not easy to fix since we update the speed/duplex only
when there is a failover(except 802.3ad mode) or slave netdev change.
But the lower bonding interface doesn't trigger netdev change when the speed
changed as ethtool get bonding speed via bond_ethtool_get_link_ksettings(),
which not affect bonding interface itself.
Here is a reproducer:
```
#!/bin/bash
s_ns="s"
c_ns="c"
ip netns del ${c_ns} &> /dev/null
ip netns del ${s_ns} &> /dev/null
sleep 1
ip netns add ${c_ns}
ip netns add ${s_ns}
ip -n ${c_ns} link add bond0 type bond mode 802.3ad miimon 100
ip -n ${s_ns} link add bond0 type bond mode 802.3ad miimon 100
ip -n ${s_ns} link add bond1 type bond mode active-backup miimon 100
for i in $(seq 0 2); do
ip -n ${c_ns} link add eth${i} type veth peer name eth${i} netns ${s_ns}
[ $i -eq 2 ] && break
ip -n ${c_ns} link set eth${i} master bond0
ip -n ${s_ns} link set eth${i} master bond0
done
ip -n ${c_ns} link set eth2 up
ip -n ${c_ns} link set bond0 up
ip -n ${s_ns} link set bond0 master bond1
ip -n ${s_ns} link set bond1 up
sleep 5
ip netns exec ${s_ns} ethtool bond0 | grep Speed
ip netns exec ${s_ns} ethtool bond1 | grep Speed
```
When run the reproducer directly, you will see:
# ./bond_topo_lacp.sh
Speed: 20000Mb/s
Speed: 10000Mb/s
So do you have any thoughts about how to fix it?
Thanks
Hangbin
Powered by blists - more mailing lists