9
9
from lib .py import bkg , cmd , wait_port_listen , rand_port
10
10
from lib .py import defer , ethtool , ip
11
11
12
- remote_ifname = ""
13
12
no_sleep = False
14
13
15
14
def _test_v4 (cfg ) -> None :
16
- cfg .require_ipver ("4" )
15
+ if not cfg .addr_v ["4" ]:
16
+ return
17
17
18
18
cmd ("ping -c 1 -W0.5 " + cfg .remote_addr_v ["4" ])
19
19
cmd ("ping -c 1 -W0.5 " + cfg .addr_v ["4" ], host = cfg .remote )
20
20
cmd ("ping -s 65000 -c 1 -W0.5 " + cfg .remote_addr_v ["4" ])
21
21
cmd ("ping -s 65000 -c 1 -W0.5 " + cfg .addr_v ["4" ], host = cfg .remote )
22
22
23
23
def _test_v6 (cfg ) -> None :
24
- cfg .require_ipver ("6" )
24
+ if not cfg .addr_v ["6" ]:
25
+ return
25
26
26
27
cmd ("ping -c 1 -W5 " + cfg .remote_addr_v ["6" ])
27
28
cmd ("ping -c 1 -W5 " + cfg .addr_v ["6" ], host = cfg .remote )
@@ -57,7 +58,7 @@ def _set_offload_checksum(cfg, netnl, on) -> None:
57
58
58
59
def _set_xdp_generic_sb_on (cfg ) -> None :
59
60
prog = cfg .net_lib_dir / "xdp_dummy.bpf.o"
60
- cmd (f"ip link set dev { remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
61
+ cmd (f"ip link set dev { cfg . remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
61
62
cmd (f"ip link set dev { cfg .ifname } mtu 1500 xdpgeneric obj { prog } sec xdp" , shell = True )
62
63
defer (cmd , f"ip link set dev { cfg .ifname } xdpgeneric off" )
63
64
@@ -66,8 +67,8 @@ def _set_xdp_generic_sb_on(cfg) -> None:
66
67
67
68
def _set_xdp_generic_mb_on (cfg ) -> None :
68
69
prog = cfg .net_lib_dir / "xdp_dummy.bpf.o"
69
- cmd (f"ip link set dev { remote_ifname } mtu 9000" , shell = True , host = cfg .remote )
70
- defer (ip , f"link set dev { remote_ifname } mtu 1500" , host = cfg .remote )
70
+ cmd (f"ip link set dev { cfg . remote_ifname } mtu 9000" , shell = True , host = cfg .remote )
71
+ defer (ip , f"link set dev { cfg . remote_ifname } mtu 1500" , host = cfg .remote )
71
72
ip ("link set dev %s mtu 9000 xdpgeneric obj %s sec xdp.frags" % (cfg .ifname , prog ))
72
73
defer (ip , f"link set dev { cfg .ifname } mtu 1500 xdpgeneric off" )
73
74
@@ -76,7 +77,7 @@ def _set_xdp_generic_mb_on(cfg) -> None:
76
77
77
78
def _set_xdp_native_sb_on (cfg ) -> None :
78
79
prog = cfg .net_lib_dir / "xdp_dummy.bpf.o"
79
- cmd (f"ip link set dev { remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
80
+ cmd (f"ip link set dev { cfg . remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
80
81
cmd (f"ip -j link set dev { cfg .ifname } mtu 1500 xdp obj { prog } sec xdp" , shell = True )
81
82
defer (ip , f"link set dev { cfg .ifname } mtu 1500 xdp off" )
82
83
xdp_info = ip ("-d link show %s" % (cfg .ifname ), json = True )[0 ]
@@ -93,8 +94,8 @@ def _set_xdp_native_sb_on(cfg) -> None:
93
94
94
95
def _set_xdp_native_mb_on (cfg ) -> None :
95
96
prog = cfg .net_lib_dir / "xdp_dummy.bpf.o"
96
- cmd (f"ip link set dev { remote_ifname } mtu 9000" , shell = True , host = cfg .remote )
97
- defer (ip , f"link set dev { remote_ifname } mtu 1500" , host = cfg .remote )
97
+ cmd (f"ip link set dev { cfg . remote_ifname } mtu 9000" , shell = True , host = cfg .remote )
98
+ defer (ip , f"link set dev { cfg . remote_ifname } mtu 1500" , host = cfg .remote )
98
99
try :
99
100
cmd (f"ip link set dev { cfg .ifname } mtu 9000 xdp obj { prog } sec xdp.frags" , shell = True )
100
101
defer (ip , f"link set dev { cfg .ifname } mtu 1500 xdp off" )
@@ -112,18 +113,15 @@ def _set_xdp_offload_on(cfg) -> None:
112
113
except Exception as e :
113
114
raise KsftSkipEx ('device does not support offloaded XDP' )
114
115
defer (ip , f"link set dev { cfg .ifname } xdpoffload off" )
115
- cmd (f"ip link set dev { remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
116
+ cmd (f"ip link set dev { cfg . remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
116
117
117
118
if no_sleep != True :
118
119
time .sleep (10 )
119
120
120
121
def get_interface_info (cfg ) -> None :
121
- global remote_ifname
122
122
global no_sleep
123
123
124
- remote_info = cmd (f"ip -4 -o addr show to { cfg .remote_addr_v ['4' ]} | awk '{{print $2}}'" , shell = True , host = cfg .remote ).stdout
125
- remote_ifname = remote_info .rstrip ('\n ' )
126
- if remote_ifname == "" :
124
+ if cfg .remote_ifname == "" :
127
125
raise KsftFailEx ('Can not get remote interface' )
128
126
local_info = ip ("-d link show %s" % (cfg .ifname ), json = True )[0 ]
129
127
if 'parentbus' in local_info and local_info ['parentbus' ] == "netdevsim" :
@@ -136,15 +134,25 @@ def set_interface_init(cfg) -> None:
136
134
cmd (f"ip link set dev { cfg .ifname } xdp off " , shell = True )
137
135
cmd (f"ip link set dev { cfg .ifname } xdpgeneric off " , shell = True )
138
136
cmd (f"ip link set dev { cfg .ifname } xdpoffload off" , shell = True )
139
- cmd (f"ip link set dev { remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
137
+ cmd (f"ip link set dev { cfg .remote_ifname } mtu 1500" , shell = True , host = cfg .remote )
138
+
139
+ def test_default_v4 (cfg , netnl ) -> None :
140
+ cfg .require_ipver ("4" )
140
141
141
- def test_default (cfg , netnl ) -> None :
142
142
_set_offload_checksum (cfg , netnl , "off" )
143
143
_test_v4 (cfg )
144
- _test_v6 (cfg )
145
144
_test_tcp (cfg )
146
145
_set_offload_checksum (cfg , netnl , "on" )
147
146
_test_v4 (cfg )
147
+ _test_tcp (cfg )
148
+
149
+ def test_default_v6 (cfg , netnl ) -> None :
150
+ cfg .require_ipver ("6" )
151
+
152
+ _set_offload_checksum (cfg , netnl , "off" )
153
+ _test_v6 (cfg )
154
+ _test_tcp (cfg )
155
+ _set_offload_checksum (cfg , netnl , "on" )
148
156
_test_v6 (cfg )
149
157
_test_tcp (cfg )
150
158
@@ -202,7 +210,8 @@ def main() -> None:
202
210
with NetDrvEpEnv (__file__ ) as cfg :
203
211
get_interface_info (cfg )
204
212
set_interface_init (cfg )
205
- ksft_run ([test_default ,
213
+ ksft_run ([test_default_v4 ,
214
+ test_default_v6 ,
206
215
test_xdp_generic_sb ,
207
216
test_xdp_generic_mb ,
208
217
test_xdp_native_sb ,
0 commit comments