Message ID | 20231219105805.80617-2-rogerq@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 2491d66ae66cdd761c38563e17940a707d1b5e91 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ethernet: am65-cpsw: Add mqprio, frame preemption & coalescing | expand |
On Tue, Dec 19, 2023 at 12:57:56PM +0200, Roger Quadros wrote: > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > Some devices have errata due to which they cannot report ETH_ZLEN (60) > in the rx-min-frag-size. This was foreseen of course, and lldpad has > logic that when we request it to advertise addFragSize 0, it will round > it up to the lowest value that is _actually_ supported by the hardware. > > The problem is that the selftest expects lldpad to report back to us the > same value as we requested. > > Make the selftest smarter by figuring out on its own what is a > reasonable value to expect. > > Cc: Shuah Khan <shuah@kernel.org> > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> > Tested-by: Roger Quadros <rogerq@kernel.org> > Signed-off-by: Roger Quadros <rogerq@kernel.org> > --- Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
diff --git a/tools/testing/selftests/net/forwarding/ethtool_mm.sh b/tools/testing/selftests/net/forwarding/ethtool_mm.sh index 39e736f30322..6212913f4ad1 100755 --- a/tools/testing/selftests/net/forwarding/ethtool_mm.sh +++ b/tools/testing/selftests/net/forwarding/ethtool_mm.sh @@ -155,15 +155,48 @@ manual_failed_verification_h2_to_h1() manual_failed_verification $h2 $h1 } +smallest_supported_add_frag_size() +{ + local iface=$1 + local rx_min_frag_size= + + rx_min_frag_size=$(ethtool --json --show-mm $iface | \ + jq '.[]."rx-min-frag-size"') + + if [ $rx_min_frag_size -le 60 ]; then + echo 0 + elif [ $rx_min_frag_size -le 124 ]; then + echo 1 + elif [ $rx_min_frag_size -le 188 ]; then + echo 2 + elif [ $rx_min_frag_size -le 252 ]; then + echo 3 + else + echo "$iface: RX min frag size $rx_min_frag_size cannot be advertised over LLDP" + exit 1 + fi +} + +expected_add_frag_size() +{ + local iface=$1 + local requested=$2 + local min=$(smallest_supported_add_frag_size $iface) + + [ $requested -le $min ] && echo $min || echo $requested +} + lldp_change_add_frag_size() { local add_frag_size=$1 + local pattern= lldptool -T -i $h1 -V addEthCaps addFragSize=$add_frag_size >/dev/null # Wait for TLVs to be received sleep 2 - lldptool -i $h2 -t -n -V addEthCaps | \ - grep -q "Additional fragment size: $add_frag_size" + pattern=$(printf "Additional fragment size: %d" \ + $(expected_add_frag_size $h1 $add_frag_size)) + lldptool -i $h2 -t -n -V addEthCaps | grep -q "$pattern" } lldp()