Both are real, and v2 fixes them.
The Medium one: the else branch treated any failure as "the key is not
there". v2 reads the exit status of the recirc set, takes EOPNOTSUPP
(95, what set-dp returns when ovs_dp_change() rejects the recirc bit
under !IS_ENABLED(CONFIG_NET_TC_SKB_EXT)) as the reason to return
$ksft_skip, and fails the test on any other status.
You are also right about the fragment. tools/testing/selftests/net/
openvswitch/config selected neither CONFIG_NET_CLS_ACT nor
CONFIG_NET_TC_SKB_EXT, so a kernel built from it could never run that
round, and the claim that both rounds fail without the fix did not hold
for such a build. v2 adds both symbols. I built a kernel from the
fragment before the change and one from the fragment after it: the first
reports the skip with the test harness marking it SKIP, the second has
both symbols set and runs the round.
The Low one: ovs_dp_change() starts user_features at 0, so a set-dp
without --features cleared every bit, and a pid list sent without the
dispatch bit was ignored while the command still printed "updated". v2
reads the current features from the GET reply and sends those when
--features is left out, and the help text says so.