9
9
from lib .py import EthtoolFamily , NetDrvEpEnv
10
10
from lib .py import bkg , cmd , wait_port_listen
11
11
12
- def test_receive (cfg , ipv4 = False , extra_args = None ):
12
+ def test_receive (cfg , ipver = "6" , extra_args = None ):
13
13
"""Test local nic checksum receive. Remote host sends crafted packets."""
14
14
if not cfg .have_rx_csum :
15
15
raise KsftSkipEx (f"Test requires rx checksum offload on { cfg .ifname } " )
16
16
17
- if ipv4 :
18
- ip_args = f"-4 -S { cfg .remote_v4 } -D { cfg .v4 } "
19
- else :
20
- ip_args = f"-6 -S { cfg .remote_v6 } -D { cfg .v6 } "
17
+ ip_args = f"-{ ipver } -S { cfg .remote_addr_v [ipver ]} -D { cfg .addr_v [ipver ]} "
21
18
22
19
rx_cmd = f"{ cfg .bin_local } -i { cfg .ifname } -n 100 { ip_args } -r 1 -R { extra_args } "
23
20
tx_cmd = f"{ cfg .bin_remote } -i { cfg .ifname } -n 100 { ip_args } -r 1 -T { extra_args } "
@@ -27,17 +24,14 @@ def test_receive(cfg, ipv4=False, extra_args=None):
27
24
cmd (tx_cmd , host = cfg .remote )
28
25
29
26
30
- def test_transmit (cfg , ipv4 = False , extra_args = None ):
27
+ def test_transmit (cfg , ipver = "6" , extra_args = None ):
31
28
"""Test local nic checksum transmit. Remote host verifies packets."""
32
29
if (not cfg .have_tx_csum_generic and
33
- not (cfg .have_tx_csum_ipv4 and ipv4 ) and
34
- not (cfg .have_tx_csum_ipv6 and not ipv4 )):
30
+ not (cfg .have_tx_csum_ipv4 and ipver == "4" ) and
31
+ not (cfg .have_tx_csum_ipv6 and ipver == "6" )):
35
32
raise KsftSkipEx (f"Test requires tx checksum offload on { cfg .ifname } " )
36
33
37
- if ipv4 :
38
- ip_args = f"-4 -S { cfg .v4 } -D { cfg .remote_v4 } "
39
- else :
40
- ip_args = f"-6 -S { cfg .v6 } -D { cfg .remote_v6 } "
34
+ ip_args = f"-{ ipver } -S { cfg .addr_v [ipver ]} -D { cfg .remote_addr_v [ipver ]} "
41
35
42
36
# Cannot randomize input when calculating zero checksum
43
37
if extra_args != "-U -Z" :
@@ -51,26 +45,20 @@ def test_transmit(cfg, ipv4=False, extra_args=None):
51
45
cmd (tx_cmd )
52
46
53
47
54
- def test_builder (name , cfg , ipv4 = False , tx = False , extra_args = "" ):
48
+ def test_builder (name , cfg , ipver = "6" , tx = False , extra_args = "" ):
55
49
"""Construct specific tests from the common template.
56
50
57
51
Most tests follow the same basic pattern, differing only in
58
52
Direction of the test and optional flags passed to csum."""
59
53
def f (cfg ):
60
- if ipv4 :
61
- cfg .require_v4 ()
62
- else :
63
- cfg .require_v6 ()
54
+ cfg .require_ipver (ipver )
64
55
65
56
if tx :
66
- test_transmit (cfg , ipv4 , extra_args )
57
+ test_transmit (cfg , ipver , extra_args )
67
58
else :
68
- test_receive (cfg , ipv4 , extra_args )
59
+ test_receive (cfg , ipver , extra_args )
69
60
70
- if ipv4 :
71
- f .__name__ = "ipv4_" + name
72
- else :
73
- f .__name__ = "ipv6_" + name
61
+ f .__name__ = f"ipv{ ipver } _" + name
74
62
return f
75
63
76
64
@@ -104,15 +92,15 @@ def main() -> None:
104
92
cfg .bin_remote = cfg .remote .deploy (cfg .bin_local )
105
93
106
94
cases = []
107
- for ipv4 in [True , False ]:
108
- cases .append (test_builder ("rx_tcp" , cfg , ipv4 , False , "-t" ))
109
- cases .append (test_builder ("rx_tcp_invalid" , cfg , ipv4 , False , "-t -E" ))
95
+ for ipver in ["4" , "6" ]:
96
+ cases .append (test_builder ("rx_tcp" , cfg , ipver , False , "-t" ))
97
+ cases .append (test_builder ("rx_tcp_invalid" , cfg , ipver , False , "-t -E" ))
110
98
111
- cases .append (test_builder ("rx_udp" , cfg , ipv4 , False , "" ))
112
- cases .append (test_builder ("rx_udp_invalid" , cfg , ipv4 , False , "-E" ))
99
+ cases .append (test_builder ("rx_udp" , cfg , ipver , False , "" ))
100
+ cases .append (test_builder ("rx_udp_invalid" , cfg , ipver , False , "-E" ))
113
101
114
- cases .append (test_builder ("tx_udp_csum_offload" , cfg , ipv4 , True , "-U" ))
115
- cases .append (test_builder ("tx_udp_zero_checksum" , cfg , ipv4 , True , "-U -Z" ))
102
+ cases .append (test_builder ("tx_udp_csum_offload" , cfg , ipver , True , "-U" ))
103
+ cases .append (test_builder ("tx_udp_zero_checksum" , cfg , ipver , True , "-U -Z" ))
116
104
117
105
ksft_run (cases = cases , args = (cfg , ))
118
106
ksft_exit ()
0 commit comments