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} "
@@ -21,11 +23,15 @@ cleanup() {
21
23
}
22
24
23
25
chk_rps () {
24
- local rps_mask expected_rps_mask=$3
25
- local dev_name=$2
26
+ local rps_mask expected_rps_mask=$4
27
+ local dev_name=$3
28
+ local netns=$2
29
+ local cmd=" cat"
26
30
local msg=$1
27
31
28
- rps_mask=$( ip netns exec $NETNS cat /sys/class/net/$dev_name /queues/rx-0/rps_cpus)
32
+ [ -n " $netns " ] && cmd=" ip netns exec $netns $cmd "
33
+
34
+ rps_mask=$( $cmd /sys/class/net/$dev_name /queues/rx-0/rps_cpus)
29
35
printf " %-60s" " $msg "
30
36
if [ $rps_mask -eq $expected_rps_mask ]; then
31
37
echo " [ ok ]"
@@ -39,19 +45,30 @@ trap cleanup EXIT
39
45
40
46
echo 0 > /proc/sys/net/core/rps_default_mask
41
47
setup
42
- chk_rps " empty rps_default_mask" lo 0
48
+ chk_rps " empty rps_default_mask" $NETNS lo 0
43
49
cleanup
44
50
45
51
echo 1 > /proc/sys/net/core/rps_default_mask
46
52
setup
47
- chk_rps " non zero rps_default_mask" lo 1
53
+ chk_rps " changing rps_default_mask dont affect existing devices " " " lo $INITIAL_RPS_DEFAULT_MASK
48
54
49
55
echo 3 > /proc/sys/net/core/rps_default_mask
50
- chk_rps " changing rps_default_mask dont affect existing netns" lo 1
56
+ chk_rps " changing rps_default_mask dont affect existing netns" $NETNS lo 0
57
+
58
+ ip link add name $VETH type veth peer netns $NETNS name $VETH
59
+ ip link set dev $VETH up
60
+ ip -n $NETNS link set dev $VETH up
61
+ chk_rps " changing rps_default_mask affect newly created devices" " " $VETH 3
62
+ chk_rps " changing rps_default_mask don't affect newly child netns[II]" $NETNS $VETH 0
63
+ ip netns del $NETNS
64
+
65
+ setup
66
+ chk_rps " rps_default_mask is 0 by default in child netns" " $NETNS " lo 0
67
+
68
+ ip netns exec $NETNS sysctl -qw net.core.rps_default_mask=1
69
+ ip link add name $VETH type veth peer netns $NETNS name $VETH
70
+ chk_rps " changing rps_default_mask in child ns don't affect the main one" " " lo $INITIAL_RPS_DEFAULT_MASK
71
+ chk_rps " changing rps_default_mask in child ns affects new childns devices" $NETNS $VETH 1
72
+ chk_rps " changing rps_default_mask in child ns don't affect existing devices" $NETNS lo 0
51
73
52
- ip -n $NETNS link add type veth
53
- ip -n $NETNS link set dev veth0 up
54
- ip -n $NETNS link set dev veth1 up
55
- chk_rps " changing rps_default_mask affect newly created devices" veth0 3
56
- chk_rps " changing rps_default_mask affect newly created devices[II]" veth1 3
57
74
exit $ret
0 commit comments