Commit 3a7d84ea authored by Paolo Abeni's avatar Paolo Abeni Committed by David S. Miller

self-tests: more rps self tests

Explicitly check for child netns and main ns independency
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 50bcfe8d
...@@ -8,7 +8,9 @@ ret=0 ...@@ -8,7 +8,9 @@ ret=0
[ $cpus -gt 2 ] || exit $ksft_skip [ $cpus -gt 2 ] || exit $ksft_skip
readonly INITIAL_RPS_DEFAULT_MASK=$(cat /proc/sys/net/core/rps_default_mask) readonly INITIAL_RPS_DEFAULT_MASK=$(cat /proc/sys/net/core/rps_default_mask)
readonly NETNS="ns-$(mktemp -u XXXXXX)" readonly TAG="$(mktemp -u XXXXXX)"
readonly VETH="veth${TAG}"
readonly NETNS="ns-${TAG}"
setup() { setup() {
ip netns add "${NETNS}" ip netns add "${NETNS}"
...@@ -21,11 +23,15 @@ cleanup() { ...@@ -21,11 +23,15 @@ cleanup() {
} }
chk_rps() { chk_rps() {
local rps_mask expected_rps_mask=$3 local rps_mask expected_rps_mask=$4
local dev_name=$2 local dev_name=$3
local netns=$2
local cmd="cat"
local msg=$1 local msg=$1
rps_mask=$(ip netns exec $NETNS cat /sys/class/net/$dev_name/queues/rx-0/rps_cpus) [ -n "$netns" ] && cmd="ip netns exec $netns $cmd"
rps_mask=$($cmd /sys/class/net/$dev_name/queues/rx-0/rps_cpus)
printf "%-60s" "$msg" printf "%-60s" "$msg"
if [ $rps_mask -eq $expected_rps_mask ]; then if [ $rps_mask -eq $expected_rps_mask ]; then
echo "[ ok ]" echo "[ ok ]"
...@@ -39,19 +45,30 @@ trap cleanup EXIT ...@@ -39,19 +45,30 @@ trap cleanup EXIT
echo 0 > /proc/sys/net/core/rps_default_mask echo 0 > /proc/sys/net/core/rps_default_mask
setup setup
chk_rps "empty rps_default_mask" lo 0 chk_rps "empty rps_default_mask" $NETNS lo 0
cleanup cleanup
echo 1 > /proc/sys/net/core/rps_default_mask echo 1 > /proc/sys/net/core/rps_default_mask
setup setup
chk_rps "non zero rps_default_mask" lo 1 chk_rps "changing rps_default_mask dont affect existing devices" "" lo $INITIAL_RPS_DEFAULT_MASK
echo 3 > /proc/sys/net/core/rps_default_mask echo 3 > /proc/sys/net/core/rps_default_mask
chk_rps "changing rps_default_mask dont affect existing netns" lo 1 chk_rps "changing rps_default_mask dont affect existing netns" $NETNS lo 0
ip link add name $VETH type veth peer netns $NETNS name $VETH
ip link set dev $VETH up
ip -n $NETNS link set dev $VETH up
chk_rps "changing rps_default_mask affect newly created devices" "" $VETH 3
chk_rps "changing rps_default_mask don't affect newly child netns[II]" $NETNS $VETH 0
ip netns del $NETNS
setup
chk_rps "rps_default_mask is 0 by default in child netns" "$NETNS" lo 0
ip netns exec $NETNS sysctl -qw net.core.rps_default_mask=1
ip link add name $VETH type veth peer netns $NETNS name $VETH
chk_rps "changing rps_default_mask in child ns don't affect the main one" "" lo $INITIAL_RPS_DEFAULT_MASK
chk_rps "changing rps_default_mask in child ns affects new childns devices" $NETNS $VETH 1
chk_rps "changing rps_default_mask in child ns don't affect existing devices" $NETNS lo 0
ip -n $NETNS link add type veth
ip -n $NETNS link set dev veth0 up
ip -n $NETNS link set dev veth1 up
chk_rps "changing rps_default_mask affect newly created devices" veth0 3
chk_rps "changing rps_default_mask affect newly created devices[II]" veth1 3
exit $ret exit $ret
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