]> git.proxmox.com Git - mirror_ovs.git/blame - tests/pmd.at
dpctl: Add the option 'pmd' for dump-flows.
[mirror_ovs.git] / tests / pmd.at
CommitLineData
589dd1d5
IM
1AT_BANNER([PMD])
2
a12e2a88
DDP
3m4_divert_push([PREPARE_TESTS])
4
5# Given the output of `ovs-appctl dpif-netdev/pmd-rxq-show`, prints a list
6# of every rxq (one per line) in the form:
7# port_name rxq_id numa_id core_id
8parse_pmd_rxq_show () {
5a0e4aec 9 awk '/pmd thread/ {numa=$4; core=substr($6, 1, length($6) - 1)} /^ port:/ {print $2, $4, numa, core}' | sort
2a2c67b4
KT
10}
11
12# Given the output of `ovs-appctl dpif-netdev/pmd-rxq-show`,
13# and with queues for each core on one line, prints the rxqs
14# of the core on one line
15# 'port:' port_name 'queue_id:' rxq_id rxq_id rxq_id rxq_id
16parse_pmd_rxq_show_group () {
35c91567 17 awk '/port:/ {print $1, $2, $3, $4, $13, $22, $31}'
a12e2a88
DDP
18}
19
20# Given the output of `ovs-appctl dpctl/dump-flows`, prints a list of flows
21# (one per line), with the pmd_id at the beginning of the line
22#
23flow_dump_prepend_pmd () {
138d30a9 24 awk '/flow-dump from the main/ {pmd_id=-1; next} /flow-dump from pmd/ {pmd_id=$7; next} {print pmd_id, $0}' | sort
a12e2a88
DDP
25}
26
27m4_divert_pop([PREPARE_TESTS])
28
589dd1d5
IM
29dnl CHECK_CPU_DISCOVERED([n_cpu])
30dnl
31dnl Waits until CPUs discovered and checks if number of discovered CPUs
32dnl is greater or equal to 'n_cpu'. Without parameters checks that at
33dnl least one CPU discovered.
34m4_define([CHECK_CPU_DISCOVERED], [
35 PATTERN="Discovered [[0-9]]* NUMA nodes and [[0-9]]* CPU cores"
3a21992e
PB
36 OVS_WAIT_UNTIL([grep "$PATTERN" ovs-vswitchd.log])
37 N_CPU=$(grep "$PATTERN" ovs-vswitchd.log | sed -e 's/.* \([[0-9]]*\) CPU cores/\1/')
589dd1d5
IM
38 if [[ -z "$1" ]]
39 then AT_CHECK([test "$N_CPU" -gt "0"])
40 else AT_SKIP_IF([test "$N_CPU" -lt "$1"])
41 fi
42])
43
44dnl CHECK_PMD_THREADS_CREATED([n_threads], [numa_id], [+line])
45dnl
46dnl Whaits for creation of 'n_threads' or at least 1 thread if $1 not
47dnl passed. Checking starts from line number 'line' in ovs-vswithd.log .
48m4_define([CHECK_PMD_THREADS_CREATED], [
140dd699 49 PATTERN="There are [[0-9]]* pmd threads on numa node $2"
589dd1d5
IM
50 line_st=$3
51 if [[ -z "$line_st" ]]
52 then
53 line_st="+0"
54 fi
55 OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log | grep "$PATTERN"])
56 N_THREADS=$(tail -n $line_st ovs-vswitchd.log | grep "$PATTERN" | tail -1 | sed -e 's/.* \([[0-9]]*\) pmd .*/\1/')
57 if [[ -z "$1" ]]
58 then AT_CHECK([test "$N_THREADS" -gt 0])
59 else AT_CHECK([test "$N_THREADS" -eq "$1"])
60 fi
61])
62
63m4_define([SED_NUMA_CORE_PATTERN], ["s/\(numa_id \)[[0-9]]*\( core_id \)[[0-9]]*:/\1<cleared>\2<cleared>:/"])
b9584f21 64m4_define([DUMMY_NUMA], [--dummy-numa="0,0,0,0"])
589dd1d5
IM
65
66AT_SETUP([PMD - creating a thread/add-port])
67OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy-pmd], [], [], [DUMMY_NUMA])
68
69CHECK_CPU_DISCOVERED()
70CHECK_PMD_THREADS_CREATED()
71
72AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
73pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec 74 isolated : false
35c91567 75 port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL
589dd1d5
IM
76])
77
78AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
79dummy@ovs-dummy: hit:0 missed:0
7be29a47
BP
80 br0:
81 br0 65534/100: (dummy-internal)
82 p0 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
589dd1d5
IM
83])
84
85OVS_VSWITCHD_STOP
86AT_CLEANUP
87
88AT_SETUP([PMD - multiqueue support])
89OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy-pmd], [], [], [DUMMY_NUMA])
90
91CHECK_CPU_DISCOVERED()
92CHECK_PMD_THREADS_CREATED()
93
94AT_CHECK([ovs-vsctl set interface p0 options:n_rxq=8])
95
96AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
97dummy@ovs-dummy: hit:0 missed:0
7be29a47
BP
98 br0:
99 br0 65534/100: (dummy-internal)
100 p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
589dd1d5
IM
101])
102
103AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
104pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec 105 isolated : false
35c91567
DM
106 port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL
107 port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL
108 port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL
109 port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL
110 port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL
111 port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL
112 port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL
113 port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL
589dd1d5
IM
114])
115
116OVS_VSWITCHD_STOP
117AT_CLEANUP
118
119
120AT_SETUP([PMD - pmd-cpu-mask/distribution of rx queues])
121OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy-pmd options:n_rxq=8],
122 [], [], [DUMMY_NUMA])
123
124CHECK_CPU_DISCOVERED(2)
125CHECK_PMD_THREADS_CREATED()
126
127AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
128dummy@ovs-dummy: hit:0 missed:0
7be29a47
BP
129 br0:
130 br0 65534/100: (dummy-internal)
131 p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
589dd1d5
IM
132])
133
134AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
135pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec 136 isolated : false
35c91567
DM
137 port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL
138 port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL
139 port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL
140 port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL
141 port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL
142 port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL
143 port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL
144 port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL
589dd1d5
IM
145])
146
e77c97b9 147AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=cycles])
589dd1d5 148TMP=$(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])
3fa215b1 149AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x3])
589dd1d5
IM
150CHECK_PMD_THREADS_CREATED([2], [], [+$TMP])
151
47b5fd98
IM
152AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | awk '/AVAIL$/ { printf("%s\t", $0); next } 1' | parse_pmd_rxq_show_group | sort], [0], [dnl
153port: p0 queue-id: 0 3 4 7
154port: p0 queue-id: 1 2 5 6
e77c97b9
KT
155])
156
157AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=roundrobin])
47b5fd98
IM
158AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | awk '/AVAIL$/ { printf("%s\t", $0); next } 1' | parse_pmd_rxq_show_group | sort], [0], [dnl
159port: p0 queue-id: 0 2 4 6
160port: p0 queue-id: 1 3 5 7
589dd1d5
IM
161])
162
163TMP=$(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])
3fa215b1 164AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x1])
589dd1d5
IM
165CHECK_PMD_THREADS_CREATED([1], [], [+$TMP])
166
167AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
168pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec 169 isolated : false
35c91567
DM
170 port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL
171 port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL
172 port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL
173 port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL
174 port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL
175 port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL
176 port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL
177 port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL
589dd1d5
IM
178])
179
180OVS_VSWITCHD_STOP
181AT_CLEANUP
182
183
184AT_SETUP([PMD - stats])
185OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 ofport_request=7 type=dummy-pmd options:n_rxq=4],
186 [], [], [DUMMY_NUMA])
187
188CHECK_CPU_DISCOVERED()
189CHECK_PMD_THREADS_CREATED()
190
191AT_CHECK([ovs-appctl vlog/set dpif_netdev:dbg])
192AT_CHECK([ovs-ofctl add-flow br0 action=normal])
4c30b246 193AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:emc-insert-inv-prob=1])
60d8ccae 194AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:smc-enable=true])
589dd1d5
IM
195
196sleep 1
197
198AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
199dummy@ovs-dummy: hit:0 missed:0
7be29a47
BP
200 br0:
201 br0 65534/100: (dummy-internal)
202 p0 7/1: (dummy-pmd: configured_rx_queues=4, configured_tx_queues=<cleared>, requested_rx_queues=4, requested_tx_queues=<cleared>)
589dd1d5
IM
203])
204
60d8ccae 205AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 9], [0], [dnl
589dd1d5 206pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec
BP
207 packets received: 0
208 packet recirculations: 0
209 avg. datapath passes per packet: 0.00
210 emc hits: 0
60d8ccae 211 smc hits: 0
5a0e4aec
BP
212 megaflow hits: 0
213 avg. subtable lookups per megaflow hit: 0.00
214 miss with success upcall: 0
215 miss with failed upcall: 0
589dd1d5
IM
216])
217
218ovs-appctl time/stop
219ovs-appctl time/warp 100
220(
221for i in `seq 0 19`;
222 do
223 pkt="in_port(7),eth(src=50:54:00:00:00:77,dst=50:54:00:00:01:78),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)"
224 AT_CHECK([ovs-appctl netdev-dummy/receive p0 $pkt])
225 done
226)
227ovs-appctl time/warp 100
228
229AT_CHECK([grep -A 1 'miss upcall' ovs-vswitchd.log | tail -n 1], [0], [dnl
3d4b2e6e 230skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:77,dst=50:54:00:00:01:78),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)
589dd1d5
IM
231])
232AT_CHECK([cat ovs-vswitchd.log | filter_flow_install | strip_xout], [0], [dnl
3d4b2e6e 233recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:77,dst=50:54:00:00:01:78),eth_type(0x0800),ipv4(frag=no), actions: <del>
589dd1d5
IM
234])
235
60d8ccae 236AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 9], [0], [dnl
589dd1d5 237pmd thread numa_id <cleared> core_id <cleared>:
5a0e4aec
BP
238 packets received: 20
239 packet recirculations: 0
240 avg. datapath passes per packet: 1.00
241 emc hits: 19
60d8ccae 242 smc hits: 0
5a0e4aec
BP
243 megaflow hits: 0
244 avg. subtable lookups per megaflow hit: 0.00
245 miss with success upcall: 1
246 miss with failed upcall: 0
589dd1d5
IM
247])
248
249OVS_VSWITCHD_STOP
250AT_CLEANUP
a12e2a88
DDP
251
252dnl Reconfigure the number of rx queues of a port, make sure that all the
253dnl queues are polled by the datapath and try to send a couple of packets.
254AT_SETUP([PMD - reconfigure n_rxq])
255OVS_VSWITCHD_START(
256 [add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=2 -- \
257 add-port br0 p2 -- set Interface p2 type=dummy-pmd ofport_request=2
258], [], [], [--dummy-numa 0])
259AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
260
261AT_CHECK([ovs-ofctl add-flow br0 action=controller])
262
263AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
264p1 0 0 0
265p1 1 0 0
266p2 0 0 0
267])
268
269AT_CAPTURE_FILE([ofctl_monitor.log])
270AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
271
272AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
273
274OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
275OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
276
277AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
278NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
279icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
280])
281
282AT_CHECK([ovs-vsctl set interface p1 options:n_rxq=4])
283
284AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
285p1 0 0 0
286p1 1 0 0
287p1 2 0 0
288p1 3 0 0
289p2 0 0 0
290])
291
292AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
293
294AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 3 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
295
296OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
297OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
298
299AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
300NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
301icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
302])
303
2a21e757
IM
304dnl Check resetting to default number of rx queues after removal from the db.
305AT_CHECK([ovs-vsctl remove interface p1 options n_rxq])
306
307AT_CHECK([ovs-appctl dpif/show | grep p1 | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
7be29a47 308 p1 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
2a21e757
IM
309])
310
a12e2a88
DDP
311OVS_VSWITCHD_STOP
312AT_CLEANUP
313
314dnl There was a bug where OVS failed to create a ukey and install a megaflow
315dnl if a packet with the exact same flow was received by two different pmd
316dnl threads. This is a regression test for that bug.
317AT_SETUP([PMD - same flow multiple threads])
318OVS_VSWITCHD_START(
319 [add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=2 -- \
320 set Open_vSwitch . other_config:pmd-cpu-mask=3
321], [], [], [--dummy-numa 0,0])
322AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
323
324AT_CHECK([ovs-ofctl add-flow br0 action=controller])
325
326dnl Make sure that the queues are on different cores. There's no way to
327dnl control which queue is on which thread, we just need to make sure that
328dnl two threads (core_id) show up in pmd-rxq-show
329AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show | cut -f 4 -d ' ' | sort], [0], [dnl
3300
3311
332])
333
334AT_CAPTURE_FILE([ofctl_monitor.log])
335AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
336
337AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
338
339AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
340
341OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 4])
342OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
343
344dnl Make sure that both flows have been installed
345AT_CHECK([ovs-appctl dpctl/dump-flows | flow_dump_prepend_pmd], [0], [dnl
74c4530d
JP
3460 recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:userspace(pid=0,controller(reason=1,dont_send=0,continuation=0,recirc_id=1,rule_cookie=0,controller_id=0,max_len=65535))
3471 recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:userspace(pid=0,controller(reason=1,dont_send=0,continuation=0,recirc_id=1,rule_cookie=0,controller_id=0,max_len=65535))
a12e2a88
DDP
348])
349
350AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
351NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
352icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
353NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
354icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
355])
356
357OVS_VSWITCHD_STOP
358AT_CLEANUP
359
360AT_SETUP([PMD - change numa node])
361OVS_VSWITCHD_START(
362 [add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=2 -- \
363 add-port br0 p2 -- set Interface p2 type=dummy-pmd ofport_request=2 options:n_rxq=2 -- \
364 set Open_vSwitch . other_config:pmd-cpu-mask=3
365], [], [], [--dummy-numa 0,1])
366AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
367
368AT_CHECK([ovs-ofctl add-flow br0 action=controller])
369
370AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
371p1 0 0 0
372p1 1 0 0
373p2 0 0 0
374p2 1 0 0
375])
376
377AT_CAPTURE_FILE([ofctl_monitor.log])
378AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
379
380AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
381
ad73c142 382OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
a12e2a88
DDP
383OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
384
385AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
386NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
387icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
ad73c142
TR
388])
389
390AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
391
392AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
393
394OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
395OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
396
397AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
398NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered)
399icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
400])
401
402AT_CHECK([ovs-vsctl set Interface p2 options:numa_id=1])
403
404AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
405p1 0 0 0
406p1 1 0 0
407p2 0 1 1
408p2 1 1 1
409])
410
411AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
412
413AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
414
ad73c142 415OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
a12e2a88
DDP
416OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
417
418AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
419NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
420icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
ad73c142
TR
421])
422
423AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
424
425AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
426
427OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
428OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
429
430AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
431NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered)
432icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
433])
434
435OVS_VSWITCHD_STOP
436AT_CLEANUP
437
438AT_SETUP([PMD - non pmd device])
439OVS_VSWITCHD_START(
440 [add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=1 -- \
441 add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2 -- \
442 set Interface br0 options:tx_pcap=br0.pcap -- \
443 set Open_vSwitch . other_config:pmd-cpu-mask=1
444], [], [], [--dummy-numa 0,0])
445AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
446
447AT_CHECK([ovs-ofctl add-flow br0 actions=LOCAL])
448
449AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
450p1 0 0 0
451])
452
453AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
454
455AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
456
457OVS_WAIT_UNTIL([test `ovs-pcap br0.pcap | wc -l` -ge 2])
458
459AT_CHECK([ovs-pcap br0.pcap], [0], [dnl
6f068379
BP
46050540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
46150540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
a12e2a88
DDP
462])
463
464AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=2])
465
466AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
467p1 0 0 1
468])
469
470AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
471
472AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
473
474AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
475
476OVS_WAIT_UNTIL([test `ovs-pcap br0.pcap | wc -l` -ge 4])
477
478AT_CHECK([ovs-pcap br0.pcap], [0], [dnl
6f068379
BP
47950540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
48050540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
48150540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
48250540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
a12e2a88
DDP
483])
484
485OVS_VSWITCHD_STOP
486AT_CLEANUP
487
488AT_SETUP([PMD - add remove ports])
489OVS_VSWITCHD_START(
490 [], [], [], [--dummy-numa 0,0])
491AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
492
493AT_CHECK([ovs-ofctl add-flow br0 actions=controller])
494
495AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=1])
496
497AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
498p1 0 0 0
499])
500
501AT_CAPTURE_FILE([ofctl_monitor.log])
502AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
503
504AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
505
506OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
507OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
508
509AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
510NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
511icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
512])
513
514AT_CHECK([ovs-vsctl del-port br0 p1])
515AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=1])
516
517AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
518
519AT_CHECK([ovs-appctl netdev-dummy/receive p1 --qid 0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
520
521OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2])
522OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
523
524AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6f068379
BP
525NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered)
526icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc
a12e2a88
DDP
527])
528
529OVS_VSWITCHD_STOP
530AT_CLEANUP
5e512845
DDP
531
532AT_SETUP([PMD - rxq affinity])
533OVS_VSWITCHD_START(
534 [], [], [], [--dummy-numa 0,0,0,0,0,0,0,0,0])
535AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
536
537AT_CHECK([ovs-ofctl add-flow br0 actions=controller])
538
3fa215b1 539AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x1fe])
5e512845
DDP
540
541AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=4 other_config:pmd-rxq-affinity="0:3,1:7,2:2,3:8"])
542
543dnl The rxqs should be on the requested cores.
544AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
545p1 0 0 3
546p1 1 0 7
547p1 2 0 2
548p1 3 0 8
549])
550
551AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=6])
552
553dnl We removed the cores requested by some queues from pmd-cpu-mask.
554dnl Those queues will not be polled.
555AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
556p1 2 0 2
557])
558
559AT_CHECK([ovs-vsctl remove Interface p1 other_config pmd-rxq-affinity])
560
561dnl We removed the rxq-affinity request. dpif-netdev should assign queues
562dnl in a round robin fashion. We just make sure that every rxq is being
563dnl polled again.
564AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show | cut -f 1,2 -d ' ' | sort], [0], [dnl
565p1 0
566p1 1
567p1 2
568p1 3
569])
570
571AT_CHECK([ovs-vsctl set Interface p1 other_config:pmd-rxq-affinity='0:1'])
572
573dnl We explicitly requested core 1 for queue 0. Core 1 becomes isolated and
574dnl every other queue goes to core 2.
575AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
576p1 0 0 1
577p1 1 0 2
578p1 2 0 2
579p1 3 0 2
580])
581
582OVS_VSWITCHD_STOP(["/dpif_netdev|WARN|There is no PMD thread on core/d"])
583AT_CLEANUP
546e57d4 584
5dd57e80
IM
585AT_SETUP([PMD - rxq affinity - NUMA])
586OVS_VSWITCHD_START(
587 [], [], [], [--dummy-numa 0,0,0,1,1])
588AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
589
590AT_CHECK([ovs-ofctl add-flow br0 actions=controller])
591
592AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=7e])
593
594AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=2 options:numa_id=0 other_config:pmd-rxq-affinity="0:1,1:2"])
595
596dnl The rxqs should be on the requested cores.
597AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
598p1 0 0 1
599p1 1 0 2
600])
601
602AT_CHECK([ovs-vsctl set Interface p1 other_config:pmd-rxq-affinity="0:3,1:4"])
603
604dnl We moved the queues to different numa node. Expecting threads on
605dnl NUMA node 1 to be created.
606AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
607p1 0 1 3
608p1 1 1 4
609])
610
611AT_CHECK([ovs-vsctl set Interface p1 other_config:pmd-rxq-affinity="0:3,1:1"])
612
613dnl Queues splitted between NUMA nodes.
614AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
615p1 0 1 3
616p1 1 0 1
617])
618
619AT_CHECK([ovs-vsctl remove Interface p1 other_config pmd-rxq-affinity])
620
621dnl We removed the rxq-affinity request. dpif-netdev should assign queues
622dnl in a round robin fashion. We just make sure that every rxq is being
623dnl polled again.
624AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show | cut -f 1,2 -d ' ' | sort], [0], [dnl
625p1 0
626p1 1
627])
628
629AT_CHECK([ovs-vsctl set Interface p1 other_config:pmd-rxq-affinity='0:3'])
630
631dnl We explicitly requesting NUMA node 1 for queue 0.
632dnl Queue 1 should be polled by thread from NUMA node 0.
633AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show | cut -f 1,2,3 -d ' '], [0], [dnl
634p1 0 1
635p1 1 0
636])
637
638OVS_VSWITCHD_STOP
639AT_CLEANUP
640
546e57d4
DDP
641AT_SETUP([PMD - monitor threads])
642OVS_VSWITCHD_START(
643 [], [], [], [--dummy-numa 0,0])
644AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
645
646dnl The two devices are connected together externally using net.sock
647AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy-pmd ofport_request=1 options:n_rxq=1 options:pstream=punix:$OVS_RUNDIR/net.sock])
648AT_CHECK([ovs-vsctl add-port br0 p2 -- set Interface p2 type=dummy-pmd ofport_request=2 options:n_rxq=1 options:stream=unix:$OVS_RUNDIR/net.sock])
649
650AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
651p1 0 0 0
652p2 0 0 0
653])
654
655dnl Enable bfd with a very aggressive interval. This will make the monitor very
656dnl busy, and uncover race conditions with the main thread.
657AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true bfd:min_rx=1 bfd:min_tx=1])
658AT_CHECK([ovs-vsctl set Interface p2 bfd:enable=true bfd:min_rx=1 bfd:min_tx=1])
659
15394e0f
IM
660AT_CHECK([ovs-vsctl wait-until Interface p1 bfd_status:forwarding=true \
661 -- wait-until Interface p2 bfd_status:forwarding=true])
546e57d4
DDP
662
663dnl Trigger reconfiguration of the datapath
664AT_CHECK([ovs-vsctl set Interface p1 options:n_rxq=2])
665AT_CHECK([ovs-vsctl set Interface p2 options:n_rxq=2])
666
667dnl Make sure that reconfiguration succeded
668AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | parse_pmd_rxq_show], [0], [dnl
669p1 0 0 0
670p1 1 0 0
671p2 0 0 0
672p2 1 0 0
673])
674
e32971b8 675OVS_VSWITCHD_STOP
546e57d4 676AT_CLEANUP
f5d317a1
DDP
677
678AT_SETUP([PMD - dpctl])
679OVS_VSWITCHD_START(
680 [del-br br0], [], [], [--dummy-numa 0,0])
681AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
682
683AT_CHECK([ovs-appctl dpctl/add-dp dummy@dp0])
684AT_CHECK([ovs-appctl dpctl/add-if dummy@dp0 p1,type=dummy-pmd])
685AT_CHECK([ovs-appctl dpctl/add-if dummy@dp0 p2,type=dummy])
686
687AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show dp0 | parse_pmd_rxq_show], [0], [dnl
688p1 0 0 0
689])
690
691AT_CHECK([ovs-appctl dpctl/show dummy@dp0], [0], [dnl
692dummy@dp0:
d14a36f4
BP
693 lookups: hit:0 missed:0 lost:0
694 flows: 0
695 port 0: dp0 (dummy-internal)
696 port 1: p1 (dummy-pmd: configured_rx_queues=1, configured_tx_queues=1, requested_rx_queues=1, requested_tx_queues=1)
697 port 2: p2 (dummy)
f5d317a1
DDP
698])
699
700AT_CHECK([ovs-appctl dpctl/add-flow dummy@dp0 'in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234)' 2], [0], [dnl
701])
702
703AT_CHECK([ovs-appctl dpctl/dump-flows dummy@dp0 | sort], [0], [dnl
f5d317a1 704flow-dump from pmd on cpu core: 0
138d30a9 705flow-dump from the main thread:
f5d317a1
DDP
706recirc_id(0),in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234), packets:0, bytes:0, used:never, actions:2
707recirc_id(0),in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234), packets:0, bytes:0, used:never, actions:2
708])
709
2fe34c03
TZ
710dnl Check pmd filtering option.
711AT_CHECK([ovs-appctl dpctl/dump-flows dummy@dp0 pmd=0], [0], [dnl
712recirc_id(0),in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234), packets:0, bytes:0, used:never, actions:2
713])
714
715AT_CHECK([ovs-appctl dpctl/dump-flows dummy@dp0 pmd=-1], [0], [dnl
716recirc_id(0),in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234), packets:0, bytes:0, used:never, actions:2
717])
718
f5d317a1
DDP
719AT_CHECK([ovs-appctl dpctl/del-flow dummy@dp0 'in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x1234)'], [0], [dnl
720])
721
722AT_CHECK([ovs-appctl dpctl/dump-flows dummy@dp0], [0], [dnl
723])
724
725AT_CHECK([ovs-appctl dpctl/del-dp dummy@dp0], [0], [dnl
726])
727
728OVS_VSWITCHD_STOP
729AT_CLEANUP