On 23/07/2024 12:24, Paolo Abeni wrote: > > > On 7/23/24 10:30, Nikolay Aleksandrov wrote: >> On 23/07/2024 11:22, Hangbin Liu wrote: >>> If the testing kernel doesn't support setting fdb_max_learned or show >>> fdb_n_learned, just skip it. Or we will get errors like >>> >>> ./bridge_fdb_learning_limit.sh: line 218: [: null: integer expression expected >>> ./bridge_fdb_learning_limit.sh: line 225: [: null: integer expression expected >>> >>> Fixes: 6f84090333bb ("selftests: forwarding: bridge_fdb_learning_limit: Add a new selftest") >>> Signed-off-by: Hangbin Liu <liuhangbin@xxxxxxxxx> >>> --- >>> .../forwarding/bridge_fdb_learning_limit.sh | 18 ++++++++++++++++++ >>> 1 file changed, 18 insertions(+) >>> >>> diff --git a/tools/testing/selftests/net/forwarding/bridge_fdb_learning_limit.sh b/tools/testing/selftests/net/forwarding/bridge_fdb_learning_limit.sh >>> index 0760a34b7114..a21b7085da2e 100755 >>> --- a/tools/testing/selftests/net/forwarding/bridge_fdb_learning_limit.sh >>> +++ b/tools/testing/selftests/net/forwarding/bridge_fdb_learning_limit.sh >>> @@ -178,6 +178,22 @@ fdb_del() >>> check_err $? "Failed to remove a FDB entry of type ${type}" >>> } >>> +check_fdb_n_learned_support() >>> +{ >>> + if ! ip link help bridge 2>&1 | grep -q "fdb_max_learned"; then >>> + echo "SKIP: iproute2 too old, missing bridge max learned support" >>> + exit $ksft_skip >>> + fi >>> + >>> + ip link add dev br0 type bridge >>> + local learned=$(fdb_get_n_learned) >>> + ip link del dev br0 >>> + if [ "$learned" == "null" ]; then >>> + echo "SKIP: kernel too old; bridge fdb_n_learned feature not supported." >>> + exit $ksft_skip >>> + fi >>> +} >>> + >>> check_accounting_one_type() >>> { >>> local type=$1 is_counted=$2 overrides_learned=$3 >>> @@ -274,6 +290,8 @@ check_limit() >>> done >>> } >>> +check_fdb_n_learned_support >>> + >>> trap cleanup EXIT >>> setup_prepare >> >> Isn't the selftest supposed to be added after the feature was included? >> >> I don't understand why this one is special, we should have the same >> issue with all new features. > > I must admit I was surprised when I learned the fact, but the stable team routinely runs up2date upstream self-tests on top of stable/older kernels: > > https://lore.kernel.org/mptcp/ZAHLYvOPEYghRcJ1@xxxxxxxxx/ > > The expected self-test design is to probe the tested feature and skip if not available in the running kernel. The self-test should not break when run on an older kernel not offering such feature. > > I understand some (most?) of the self-tests do not cope with the above perfectly, but we can improve ;). > > Thanks, > > Paolo > > Interesting, and unexpected at least for me. :) But okay, I'll keep it in mind when sending/reviewing patches. Thanks! For the patch: Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>