Commit 2491d66a authored by Vladimir Oltean's avatar Vladimir Oltean Committed by David S. Miller

selftests: forwarding: ethtool_mm: support devices with higher rx-min-frag-size

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: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: default avatarRoger Quadros <rogerq@kernel.org>
Signed-off-by: default avatarRoger Quadros <rogerq@kernel.org>
Tested-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2437c0f5
...@@ -155,15 +155,48 @@ manual_failed_verification_h2_to_h1() ...@@ -155,15 +155,48 @@ manual_failed_verification_h2_to_h1()
manual_failed_verification $h2 $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() lldp_change_add_frag_size()
{ {
local add_frag_size=$1 local add_frag_size=$1
local pattern=
lldptool -T -i $h1 -V addEthCaps addFragSize=$add_frag_size >/dev/null lldptool -T -i $h1 -V addEthCaps addFragSize=$add_frag_size >/dev/null
# Wait for TLVs to be received # Wait for TLVs to be received
sleep 2 sleep 2
lldptool -i $h2 -t -n -V addEthCaps | \ pattern=$(printf "Additional fragment size: %d" \
grep -q "Additional fragment size: $add_frag_size" $(expected_add_frag_size $h1 $add_frag_size))
lldptool -i $h2 -t -n -V addEthCaps | grep -q "$pattern"
} }
lldp() lldp()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment