Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

self-tests: more rps self tests

Explicitly check for child netns and main ns independency

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Paolo Abeni and committed by
David S. Miller
3a7d84ea 50bcfe8d

+29 -12
+29 -12
tools/testing/selftests/net/rps_default_mask.sh
··· 8 8 [ $cpus -gt 2 ] || exit $ksft_skip 9 9 10 10 readonly INITIAL_RPS_DEFAULT_MASK=$(cat /proc/sys/net/core/rps_default_mask) 11 - readonly NETNS="ns-$(mktemp -u XXXXXX)" 11 + readonly TAG="$(mktemp -u XXXXXX)" 12 + readonly VETH="veth${TAG}" 13 + readonly NETNS="ns-${TAG}" 12 14 13 15 setup() { 14 16 ip netns add "${NETNS}" ··· 23 21 } 24 22 25 23 chk_rps() { 26 - local rps_mask expected_rps_mask=$3 27 - local dev_name=$2 24 + local rps_mask expected_rps_mask=$4 25 + local dev_name=$3 26 + local netns=$2 27 + local cmd="cat" 28 28 local msg=$1 29 29 30 - rps_mask=$(ip netns exec $NETNS cat /sys/class/net/$dev_name/queues/rx-0/rps_cpus) 30 + [ -n "$netns" ] && cmd="ip netns exec $netns $cmd" 31 + 32 + rps_mask=$($cmd /sys/class/net/$dev_name/queues/rx-0/rps_cpus) 31 33 printf "%-60s" "$msg" 32 34 if [ $rps_mask -eq $expected_rps_mask ]; then 33 35 echo "[ ok ]" ··· 45 39 46 40 echo 0 > /proc/sys/net/core/rps_default_mask 47 41 setup 48 - chk_rps "empty rps_default_mask" lo 0 42 + chk_rps "empty rps_default_mask" $NETNS lo 0 49 43 cleanup 50 44 51 45 echo 1 > /proc/sys/net/core/rps_default_mask 52 46 setup 53 - chk_rps "non zero rps_default_mask" lo 1 47 + chk_rps "changing rps_default_mask dont affect existing devices" "" lo $INITIAL_RPS_DEFAULT_MASK 54 48 55 49 echo 3 > /proc/sys/net/core/rps_default_mask 56 - chk_rps "changing rps_default_mask dont affect existing netns" lo 1 50 + chk_rps "changing rps_default_mask dont affect existing netns" $NETNS lo 0 57 51 58 - ip -n $NETNS link add type veth 59 - ip -n $NETNS link set dev veth0 up 60 - ip -n $NETNS link set dev veth1 up 61 - chk_rps "changing rps_default_mask affect newly created devices" veth0 3 62 - chk_rps "changing rps_default_mask affect newly created devices[II]" veth1 3 52 + ip link add name $VETH type veth peer netns $NETNS name $VETH 53 + ip link set dev $VETH up 54 + ip -n $NETNS link set dev $VETH up 55 + chk_rps "changing rps_default_mask affect newly created devices" "" $VETH 3 56 + chk_rps "changing rps_default_mask don't affect newly child netns[II]" $NETNS $VETH 0 57 + ip netns del $NETNS 58 + 59 + setup 60 + chk_rps "rps_default_mask is 0 by default in child netns" "$NETNS" lo 0 61 + 62 + ip netns exec $NETNS sysctl -qw net.core.rps_default_mask=1 63 + ip link add name $VETH type veth peer netns $NETNS name $VETH 64 + chk_rps "changing rps_default_mask in child ns don't affect the main one" "" lo $INITIAL_RPS_DEFAULT_MASK 65 + chk_rps "changing rps_default_mask in child ns affects new childns devices" $NETNS $VETH 1 66 + chk_rps "changing rps_default_mask in child ns don't affect existing devices" $NETNS lo 0 67 + 63 68 exit $ret