doc: new testpmd commands
[dpdk.git] / doc / guides / testpmd_app_ug / testpmd_funcs.rst
1 ..  BSD LICENSE
2     Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
3     All rights reserved.
4
5     Redistribution and use in source and binary forms, with or without
6     modification, are permitted provided that the following conditions
7     are met:
8
9     * Redistributions of source code must retain the above copyright
10     notice, this list of conditions and the following disclaimer.
11     * Redistributions in binary form must reproduce the above copyright
12     notice, this list of conditions and the following disclaimer in
13     the documentation and/or other materials provided with the
14     distribution.
15     * Neither the name of Intel Corporation nor the names of its
16     contributors may be used to endorse or promote products derived
17     from this software without specific prior written permission.
18
19     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 Testpmd Runtime Functions
32 =========================
33
34 Where the testpmd application is started in interactive mode, (-i|--interactive),
35 it displays a prompt that can be used to start and stop forwarding,
36 configure the application, display statistics, set the Flow Director and other tasks.
37
38 .. code-block:: console
39
40     testpmd>
41
42 The testpmd prompt has some, limited, readline support.
43 Common bash command- line functions such as Ctrl+a and Ctrl+e to go to the start and end of the prompt line are supported
44 as well as access to the command history via the up-arrow.
45
46 There is also support for tab completion.
47 If you type a partial command and hit <TAB> you get a list of the available completions:
48
49 .. code-block:: console
50
51     testpmd> show port <TAB>
52
53         info [Mul-choice STRING]: show|clear port info|stats|fdir|stat_qmap X
54         info [Mul-choice STRING]: show|clear port info|stats|fdir|stat_qmap all
55         stats [Mul-choice STRING]: show|clear port info|stats|fdir|stat_qmap X
56         stats [Mul-choice STRING]: show|clear port info|stats|fdir|stat_qmap all
57         ...
58
59 Help Functions
60 --------------
61
62 The testpmd has on-line help for the functions that are available at runtime.
63 These are divided into sections and can be accessed using help, help section or help all:
64
65 .. code-block:: console
66
67     testpmd> help
68
69         Help is available for the following sections:
70         help control    : Start and stop forwarding.
71         help display    : Displaying port, stats and config information.
72         help config     : Configuration information.
73         help ports      : Configuring ports.
74         help flowdir    : Flow Director filter help.
75         help registers  : Reading and setting port registers.
76         help filters    : Filters configuration help.
77         help all        : All of the above sections.
78
79 Control Functions
80 -----------------
81
82 start
83 ~~~~~
84
85 Start packet forwarding with current configuration:
86
87 start
88
89 start tx_first
90 ~~~~~~~~~~~~~~
91
92 Start packet forwarding with current configuration after sending one burst of packets:
93
94 start tx_first
95
96 stop
97 ~~~~
98
99 Stop packet forwarding, and display accumulated statistics:
100
101 stop
102
103 quit
104 ~~~~
105
106 Quit to prompt:
107
108 quit
109
110 Display Functions
111 -----------------
112
113 The functions in the following sections are used to display information about the
114 testpmd configuration or the NIC status.
115
116 show port
117 ~~~~~~~~~
118
119 Display information for a given port or all ports:
120
121 show port (info|stats|fdir|stat_qmap) (port_id|all)
122
123 The available information categories are:
124
125 info    : General port information such as MAC address.
126
127 stats   : RX/TX statistics.
128
129 fdir    : Flow Director information and statistics.
130
131 stat_qmap : Queue statistics mapping.
132
133 For example:
134
135 .. code-block:: console
136
137     testpmd> show port info 0
138
139     ********************* Infos for port 0 *********************
140
141     MAC address: XX:XX:XX:XX:XX:XX
142     Link status: up
143     Link speed: 10000 Mbps
144     Link duplex: full-duplex
145     Promiscuous mode: enabled
146     Allmulticast mode: disabled
147     Maximum number of MAC addresses: 127
148     VLAN offload:
149         strip on
150         filter on
151         qinq(extend) off
152
153 show port rss reta
154 ~~~~~~~~~~~~~~~~~~
155
156 Display the rss redirection table entry indicated by masks on port X:
157
158 show port (port_id) rss reta (size) (mask0, mask1...)
159
160 size is used to indicate the hardware supported reta size
161
162 show port rss-hash
163 ~~~~~~~~~~~~~~~~~~
164
165 Display the RSS hash functions and RSS hash key of port (port_id).
166
167 show port (port_id) rss-hash [key] clear port
168 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169
170 Clear the port statistics for a given port or for all ports:
171
172 clear port (info|stats|fdir|stat_qmap) (port_id|all)
173
174 For example:
175
176 .. code-block:: console
177
178     testpmd> clear port stats all
179
180 show config
181 ~~~~~~~~~~~
182
183 Displays the configuration of the application.
184 The configuration comes from the command-line, the runtime or the application defaults:
185
186 show config (rxtx|cores|fwd)
187
188 The available information categories are:
189
190 rxtx  : RX/TX configuration items.
191
192 cores : List of forwarding cores.
193
194 fwd   : Packet forwarding configuration.
195
196 For example:
197
198 .. code-block:: console
199
200     testpmd> show config rxtx
201
202     io packet forwarding - CRC stripping disabled - packets/burst=16
203     nb forwarding cores=2 - nb forwarding ports=1
204     RX queues=1 - RX desc=128 - RX free threshold=0
205     RX threshold registers: pthresh=8 hthresh=8 wthresh=4
206     TX queues=1 - TX desc=512 - TX free threshold=0
207     TX threshold registers: pthresh=36 hthresh=0 wthresh=0
208     TX RS bit threshold=0 - TXQ flags=0x0
209
210 read rxd
211 ~~~~~~~~
212
213 Display an RX descriptor for a port RX queue:
214
215 read rxd (port_id) (queue_id) (rxd_id)
216
217 For example:
218
219 .. code-block:: console
220
221     testpmd> read rxd 0 0 4
222         0x0000000B - 0x001D0180 / 0x0000000B - 0x001D0180
223
224 read txd
225 ~~~~~~~~
226
227 Display a TX descriptor for a port TX queue:
228
229 read txd (port_id) (queue_id) (txd_id)
230
231 For example:
232
233 .. code-block:: console
234
235     testpmd> read txd 0 0 4
236         0x00000001 - 0x24C3C440 / 0x000F0000 - 0x2330003C
237
238 Configuration Functions
239 -----------------------
240
241 The testpmd application can be configured from the runtime as well as from the command-line.
242
243 This section details the available configuration functions that are available.
244
245 .. note::
246
247     Configuration changes only become active when forwarding is started/restarted.
248
249 set default
250 ~~~~~~~~~~~
251
252 Reset forwarding to the default configuration:
253
254 set default
255
256 set verbose
257 ~~~~~~~~~~~
258
259 Set the debug verbosity level:
260
261 set verbose (level)
262
263 Currently the only available levels are 0 (silent except for error) and 1 (fully verbose).
264
265 set nbport
266 ~~~~~~~~~~
267
268 Set the number of ports used by the application:
269
270 set nbport (num)
271
272 This is equivalent to the --nb-ports command-line option.
273
274 set nbcore
275 ~~~~~~~~~~
276
277 Set the number of cores used by the application:
278
279 set nbcore (num)
280
281 This is equivalent to the --nb-cores command-line option.
282
283 .. note::
284
285     The number of cores used must not be greater than number of ports used multiplied by the number of queues per port.
286
287 set coremask
288 ~~~~~~~~~~~~
289
290 Set the forwarding cores hexadecimal mask:
291
292 set coremask (mask)
293
294 This is equivalent to the --coremask command-line option.
295
296 .. note::
297
298     The master lcore is reserved for command line parsing only and cannot be masked on for packet forwarding.
299
300 set portmask
301 ~~~~~~~~~~~~
302
303 Set the forwarding ports hexadecimal mask:
304
305 set portmask (mask)
306
307 This is equivalent to the --portmask command-line option.
308
309 set burst
310 ~~~~~~~~~
311
312 Set number of packets per burst:
313
314 set burst (num)
315
316 This is equivalent to the --burst command-line option.
317
318 In mac_retry forwarding mode, the transmit delay time and number of retries can also be set.
319
320 set burst tx delay (micrseconds) retry (num)
321
322 set txpkts
323 ~~~~~~~~~~
324
325 Set the length of each segment of the TX-ONLY packets:
326
327 set txpkts (x[,y]*)
328
329 Where x[,y]* represents a CSV list of values, without white space.
330
331 set corelist
332 ~~~~~~~~~~~~
333
334 Set the list of forwarding cores:
335
336 set corelist (x[,y]*)
337
338 For example, to change the forwarding cores:
339
340 .. code-block:: console
341
342     testpmd> set corelist 3,1
343     testpmd> show config fwd
344
345     io packet forwarding - ports=2 - cores=2 - streams=2 - NUMA support disabled
346     Logical Core 3 (socket 0) forwards packets on 1 streams:
347     RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
348     Logical Core 1 (socket 0) forwards packets on 1 streams:
349     RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
350
351 .. note::
352
353     The cores are used in the same order as specified on the command line.
354
355 set portlist
356 ~~~~~~~~~~~~
357
358 Set the list of forwarding ports:
359
360 set portlist (x[,y]*)
361
362 For example, to change the port forwarding:
363
364 .. code-block:: console
365
366     testpmd> set portlist 0,2,1,3
367     testpmd> show config fwd
368
369     io packet forwarding - ports=4 - cores=1 - streams=4
370     Logical Core 3 (socket 0) forwards packets on 4 streams:
371     RX P=0/Q=0 (socket 0) -> TX P=2/Q=0 (socket 0) peer=02:00:00:00:00:01
372     RX P=2/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
373     RX P=1/Q=0 (socket 0) -> TX P=3/Q=0 (socket 0) peer=02:00:00:00:00:03
374     RX P=3/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:02
375
376 vlan set strip
377 ~~~~~~~~~~~~~~
378
379 Set the VLAN strip on a port:
380
381 vlan set strip (on|off) (port_id)
382
383 vlan set stripq
384 ~~~~~~~~~~~~~~~
385
386 Set the VLAN strip for a queue on a port:
387
388 vlan set stripq (on|off) (port_id,queue_id)
389
390 vlan set filter
391 ~~~~~~~~~~~~~~~
392
393 Set the VLAN filter on a port:
394
395 vlan set filter (on|off) (port_id)
396
397 vlan set qinq
398 ~~~~~~~~~~~~~
399
400 Set the VLAN QinQ (extended queue in queue) on for a port:
401
402 vlan set qinq (on|off) (port_id)
403
404 vlan set tpid
405 ~~~~~~~~~~~~~
406
407 Set the outer VLAN TPID for packet filtering on a port:
408
409 vlan set tpid (value) (port_id)
410
411 .. note::
412
413     TPID value must be a 16-bit number (value <= 65536).
414
415 rx_vlan add
416 ~~~~~~~~~~~
417
418 Add a VLAN ID, or all identifiers, to the set of VLAN identifiers filtered by port ID:
419
420 rx_vlan add (vlan_id|all) (port_id)
421
422 .. note::
423
424     VLAN filter must be set on that port. VLAN ID < 4096.
425
426 rx_vlan rm
427 ~~~~~~~~~~
428
429 Remove a VLAN ID, or all identifiers, from the set of VLAN identifiers filtered by port ID:
430
431 rx_vlan rm (vlan_id|all) (port_id)
432
433 rx_vlan add(for VF)
434 ~~~~~~~~~~~~~~~~~~~
435
436 Add a VLAN ID, to the set of VLAN identifiers filtered for VF(s) for port ID:
437
438 rx_vlan add (vlan_id) port (port_id) vf (vf_mask)
439
440 rx_vlan rm(for VF)
441 ~~~~~~~~~~~~~~~~~~
442
443 Remove a VLAN ID, from the set of VLAN identifiers filtered for VF(s) for port ID:
444
445 rx_vlan rm (vlan_id) port (port_id) vf (vf_mask)
446
447 tx_rate (for Queue)
448 ~~~~~~~~~~~~~~~~~~~
449
450 Set TX rate limitation for queue of a port ID:
451
452 set port (port_id) queue (queue_id) rate (rate_value)
453
454 tx_rate (for VF)
455 ~~~~~~~~~~~~~~~~
456
457 Set TX rate limitation for queues in VF of a port ID:
458
459 set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask)
460
461 rx_vlan set tpid
462 ~~~~~~~~~~~~~~~~
463
464 Set the outer VLAN TPID for packet filtering on a port:
465
466 rx_vlan set tpid (value) (port_id)
467
468 tunnel_filter add
469 ~~~~~~~~~~~~~~~~~
470
471 Add a tunnel filter on a port:
472
473 tunnel_filter add (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
474  (tunnel_type) (filter_type) (tenant_id) (queue_id)
475
476 tunnel_filter remove
477 ~~~~~~~~~~~~~~~~~~~~
478
479 Remove a tunnel filter on a port:
480
481 tunnel_filter rm (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
482  (tunnel_type) (filter_type) (tenant_id) (queue_id)
483
484 rx_vxlan_port add
485 ~~~~~~~~~~~~~~~~~
486
487 Add an UDP port for VXLAN packet filter on a port:
488
489 rx_vxlan_port add (udp_port) (port_id)
490
491 rx_vxlan_port remove
492 ~~~~~~~~~~~~~~~~~~~~
493
494 Remove an UDP port for VXLAN packet filter on a port:
495
496 rx_vxlan_port rm (udp_port) (port_id)
497
498 tx_vlan set
499 ~~~~~~~~~~~
500
501 Set hardware insertion of VLAN ID in packets sent on a port:
502
503 tx_vlan set (vlan_id) (port_id)
504
505 tx_vlan set pvid
506 ~~~~~~~~~~~~~~~~
507
508 Set port based hardware insertion of VLAN ID in pacekts sent on a port:
509
510 tx_vlan set pvid (port_id) (vlan_id) (on|off)
511
512 tx_vlan reset
513 ~~~~~~~~~~~~~
514
515 Disable hardware insertion of a VLAN header in packets sent on a port:
516
517 tx_vlan reset (port_id)
518
519 tx_checksum set mask
520 ~~~~~~~~~~~~~~~~~~~~
521
522 Enable hardware insertion of checksum offload with a 4-bit mask, 0x0 - 0xF, in packets sent on a port:
523
524 tx_checksum set (mask) (port_id)
525
526 The bits in the mask are:
527
528 bit 0 - if set insert ip checksum offload
529
530 bit 1 - if set insert udp checksum offload
531
532 bit 2 - if set insert tcp checksum offload
533
534 bit 3 - if set insert sctp checksum offload
535
536 .. note::
537
538     Check the NIC Datasheet for hardware limits.
539
540 tx_checksum show
541 ~~~~~~~~~~~~~~~~
542
543 Display tx checksum offload configuration:
544
545 tx_checksum show (port_id)
546
547 tso set
548 ~~~~~~~
549
550 Enable TCP Segmentation Offload in csum forward engine:
551
552 tso set (segsize) (port_id)
553
554 .. note::
555    Please check the NIC datasheet for HW limits
556
557 tso show
558 ~~~~~~~~
559
560 Display the status of TCP Segmentation Offload:
561
562 tso show (port_id)
563
564 set fwd
565 ~~~~~~~
566
567 Set the packet forwarding mode:
568
569 set fwd (io|mac|mac_retry|macswap|flowgen|rxonly|txonly|csum|icmpecho)
570
571 The available information categories are:
572
573 *   io: forwards packets "as-is" in I/O mode.
574     This is the fastest possible forwarding operation as it does not access packets data.
575     This is the default mode.
576
577 *   mac: changes the source and the destination Ethernet addresses of packets before forwarding them.
578
579 *   mac_retry: same as "mac" forwarding mode, but includes retries if the destination queue is full.
580
581 *   macswap: MAC swap forwarding mode.
582     Swaps the source and the destination Ethernet addresses of packets before forwarding them.
583
584 *   flowgen: multi-flow generation mode.
585     Originates a bunch of flows (varying destination IP addresses), and terminate receive traffic.
586
587 *   rxonly: receives packets but doesn't transmit them.
588
589 *   txonly: generates and transmits packets without receiving any.
590
591 *   csum: changes the checksum field with HW or SW methods depending on the offload flags on the packet.
592
593 *   icmpecho: receives a burst of packets, lookup for IMCP echo requests and, if any, send back ICMP echo replies.
594
595
596 Example:
597
598 .. code-block:: console
599
600     testpmd> set fwd rxonly
601
602     Set rxonly packet forwarding mode
603
604 mac_addr add
605 ~~~~~~~~~~~~
606
607 Add an alternative MAC address to a port:
608
609 mac_addr add (port_id) (XX:XX:XX:XX:XX:XX)
610
611 mac_addr remove
612 ~~~~~~~~~~~~~~~
613
614 Remove a MAC address from a port:
615
616 mac_addr remove (port_id) (XX:XX:XX:XX:XX:XX)
617
618 mac_addr add(for VF)
619 ~~~~~~~~~~~~~~~~~~~~
620
621 Add an alternative MAC address for a VF to a port:
622
623 mac_add add port (port_id) vf (vf_id) (XX:XX:XX:XX:XX:XX)
624
625 set port-uta
626 ~~~~~~~~~~~~
627
628 Set the unicast hash filter(s) on/off for a port X:
629
630 set port (port_id) uta (XX:XX:XX:XX:XX:XX|all) (on|off)
631
632 set promisc
633 ~~~~~~~~~~~
634
635 Set the promiscuous mode on for a port or for all ports.
636 In promiscuous mode packets are not dropped if they aren't for the specified MAC address:
637
638 set promisc (port_id|all) (on|off)
639
640 set allmulti
641 ~~~~~~~~~~~~
642
643 Set the allmulti mode for a port or for all ports:
644
645 set allmulti (port_id|all) (on|off)
646
647 Same as the ifconfig (8) option. Controls how multicast packets are handled.
648
649 set flow_ctrl rx
650 ~~~~~~~~~~~~~~~~
651
652 Set the link flow control parameter on a port:
653
654 set flow_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \
655 (pause_time) (send_xon) (port_id)
656
657 Where:
658
659 high_water (integer): High threshold value to trigger XOFF.
660
661 low_water (integer) : Low threshold value to trigger XON.
662
663 pause_time (integer): Pause quota in the Pause frame.
664
665 send_xon (0/1) : Send XON frame.
666
667 mac_ctrl_frame_fwd : Enable receiving MAC control frames
668
669 set pfc_ctrl rx
670 ~~~~~~~~~~~~~~~
671
672 Set the priority flow control parameter on a port:
673
674 set pfc_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \ (pause_time) (priority) (port_id)
675
676 Where:
677
678 priority (0-7): VLAN User Priority.
679
680 set stat_qmap
681 ~~~~~~~~~~~~~
682
683 Set statistics mapping (qmapping 0..15) for RX/TX queue on port:
684
685 set stat_qmap (tx|rx) (port_id) (queue_id) (qmapping)
686
687 For example, to set rx queue 2 on port 0 to mapping 5:
688
689 .. code-block:: console
690
691      testpmd>set stat_qmap rx 0 2 5
692
693 set port - rx/tx(for VF)
694 ~~~~~~~~~~~~~~~~~~~~~~~~
695
696 Set VF receive/transmit from a port:
697
698 set port (port_id) vf (vf_id) (rx|tx) (on|off)
699
700 set port - mac address filter (for VF)
701 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
702
703 Add/Remove unicast or multicast MAC addr filter for a VF:
704
705 set port (port_id) vf (vf_id) (mac_addr)
706  (exact-mac|exact-mac-vlan|hashmac|hashmac-vlan) (on|off)
707
708 set port - rx mode(for VF)
709 ~~~~~~~~~~~~~~~~~~~~~~~~~~
710
711 Set the VF receive mode of a port:
712
713 set port (port_id) vf (vf_id) rxmode (AUPE|ROPE|BAM|MPE) (on|off)
714
715 The available receive modes are:
716
717 *  AUPE: accepts untagged VLAN.
718
719 *  ROPE: accepts unicast hash.
720
721 *  BAM: accepts broadcast packets
722
723 *  MPE: accepts all multicast packets
724
725 set port - mirror rule
726 ~~~~~~~~~~~~~~~~~~~~~~
727
728 Set port or vlan type mirror rule for a port.
729
730 set port (port_id) mirror-rule (rule_id) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)
731
732 For example to enable mirror traffic with vlan 0,1 to pool 0:
733
734 .. code-block:: console
735
736     set port 0 mirror-rule 0 vlan-mirror 0,1 dst-pool 0 on
737
738 reset port - mirror rule
739 ~~~~~~~~~~~~~~~~~~~~~~~~
740
741 Reset a mirror rule for a port.
742
743 reset port (port_id) mirror-rule (rule_id)
744
745 set flush_rx
746 ~~~~~~~~~~~~
747
748 Flush (default) or don't flush RX streams before forwarding.
749 Mainly used with PCAP drivers to avoid the default behavior of flushing the first 512 packets on RX streams.
750
751 set flush_rx off
752
753 set bypass mode
754 ~~~~~~~~~~~~~~~
755
756 Set the bypass mode for the lowest port on bypass enabled NIC.
757
758 set bypass mode (normal|bypass|isolate) (port_id)
759
760 set bypass event
761 ~~~~~~~~~~~~~~~~
762
763 Set the event required to initiate specified bypass mode for the lowest port on a bypass enabled NIC where:
764
765 *   timeout: enable bypass after watchdog timeout.
766
767 *   os_on: enable bypass when OS/board is powered on.
768
769 *   os_off: enable bypass when OS/board is powered off.
770
771 *   power_on: enable bypass when power supply is turned on.
772
773 *   power_off: enable bypass when power supply is turned off.
774
775 set bypass event (timeout|os_on|os_off|power_on|power_off) mode (normal|bypass|isolate) (port_id)
776
777 set bypass timeout
778 ~~~~~~~~~~~~~~~~~~
779
780 Set the bypass watchdog timeout to 'n' seconds where 0 = instant.
781
782 set bypass timeout (0|1.5|2|3|4|8|16|32)
783
784 show bypass config
785 ~~~~~~~~~~~~~~~~~~
786
787 Show the bypass configuration for a bypass enabled NIC using the lowest port on the NIC.
788
789 show bypass config (port_id)
790
791 add_ethertype_filter
792 ~~~~~~~~~~~~~~~~~~~~
793
794 Add a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue.
795
796 add_ethertype_filter (port_id) ethertype (eth_value) priority (enable|disable) (pri_value) queue (queue_id) index (idx)
797
798 The available information parameters are:
799
800 *   port_id:  the port which the Ethertype filter assigned on.
801
802 *   eth_value: the EtherType value want to match,
803     for example 0x0806 for ARP packet. 0x0800 (IPv4) and 0x86DD (IPv6) are invalid.
804
805 *   enable: user priority participates in the match.
806
807 *   disable: user priority doesn't participate in the match.
808
809 *   pri_value: user priority value that want to match.
810
811 *   queue_id : The receive queue associated with this EtherType filter
812
813 *   index: the index of this EtherType filter
814
815 Example:
816
817 .. code-block:: console
818
819     testpmd> add_ethertype_filter 0 ethertype 0x0806 priority disable 0 queue 3 index 0
820     Assign ARP packet to receive queue 3
821
822 remove_ethertype_filter
823 ~~~~~~~~~~~~~~~~~~~~~~~
824
825 Remove a L2 Ethertype filter
826
827 remove_ethertype_filter (port_id) index (idx)
828
829 get_ethertype_filter
830 ~~~~~~~~~~~~~~~~~~~~
831
832 Get and display a L2 Ethertype filter
833
834 get_ethertype_filter (port_id) index (idx)
835
836 Example:
837
838 .. code-block:: console
839
840     testpmd> get_ethertype_filter 0 index 0
841
842     filter[0]:
843         ethertype: 0x0806
844         priority: disable, 0
845         queue: 3
846
847 add_2tuple_filter
848 ~~~~~~~~~~~~~~~~~
849
850 Add a 2-tuple filter,
851 which identify packets by specific protocol and destination TCP/UDP port
852 and forwards packets into one of the receive queues.
853
854 add_2tuple_filter (port_id) protocol (pro_value) (pro_mask) dst_port (port_value) (port_mask)
855 flags (flg_value) priority (prio_value) queue (queue_id) index (idx)
856
857 The available information parameters are:
858
859 *   port_id: the port which the 2-tuple filter assigned on.
860
861 *   pro_value: IP L4 protocol
862
863 *   pro_mask: protocol participates in the match or not, 1 means participate
864
865 *   port_value: destination port in L4.
866
867 *   port_mask: destination port participates in the match or not, 1 means participate.
868
869 *   flg_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP).
870
871 *   prio_value: the priority of this filter.
872
873 *   queue_id: The receive queue associated with this 2-tuple filter
874
875 *   index: the index of this 2-tuple filter
876
877 Example:
878
879 .. code-block:: console
880
881     testpmd> add_2tuple_filter 0 protocol 0x06 1 dst_port 32 1 flags 0x02 priority 3 queue 3 index 0
882
883 remove_2tuple_filter
884 ~~~~~~~~~~~~~~~~~~~~
885
886 Remove a 2-tuple filter
887
888 remove_2tuple_filter (port_id) index (idx)
889
890 get_2tuple_filter
891 ~~~~~~~~~~~~~~~~~
892
893 Get and display a 2-tuple filter
894
895 get_2tuple_filter (port_id) index (idx)
896
897 Example:
898
899 .. code-block:: console
900
901     testpmd> get_2tuple_filter 0 index 0
902
903     filter[0]:
904         Destination Port: 0x0020 mask: 1
905         protocol: 0x06 mask:1 tcp_flags: 0x02
906         priority: 3   queue: 3
907
908 add_5tuple_filter
909 ~~~~~~~~~~~~~~~~~
910
911 Add a 5-tuple filter,
912 which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port)
913 and routes packets into one of the receive queues.
914
915 add_5tuple_filter (port_id) dst_ip (dst_address) src_ip (src_address) dst_port (dst_port_value) src_port (src_port_value)
916 protocol (protocol_value) mask (mask_value) flags (flags_value) priority (prio_value) queue (queue_id) index (idx)
917
918 The available information parameters are:
919
920 *   port_id: the port which the 5-tuple filter assigned on.
921
922 *   dst_address: destination IP address.
923
924 *   src_address: source IP address.
925
926 *   dst_port_value: TCP/UDP destination port.
927
928 *   src_port_value: TCP/UDP source port.
929
930 *   protocol_value: L4 protocol.
931
932 *   mask_value: participates in the match or not by bit for field above, 1b means participate
933
934 *   flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP).
935
936 *   prio_value: the priority of this filter.
937
938 *   queue_id: The receive queue associated with this 5-tuple filter.
939
940 *   index: the index of this 5-tuple filter
941
942 Example:
943
944 .. code-block:: console
945
946     testpmd> add_5tuple_filter 1 dst_ip 2.2.2.5 src_ip 2.2.2.4 dst_port 64 src_port 32 protocol 0x06 mask 0x1F flags 0x0 priority 3 queue 3 index 0
947
948 remove_5tuple_filter
949 ~~~~~~~~~~~~~~~~~~~~
950
951 Remove a 5-tuple filter
952
953 remove_5tuple_filter (port_id) index (idx)
954
955 get_5tuple_filter
956 ~~~~~~~~~~~~~~~~~
957
958 Get and display a 5-tuple filter
959
960 get_5tuple_filter (port_id) index (idx)
961
962 Example:
963
964 .. code-block:: console
965
966     testpmd> get_5tuple_filter 1 index 0
967
968     filter[0]:
969         Destination IP: 0x02020205 mask: 1
970         Source IP: 0x02020204 mask: 1
971         Destination Port: 0x0040 mask: 1
972         Source Port: 0x0020 mask: 1
973         protocol: 0x06 mask: 1
974         priority: 3 flags: 0x00 queue: 3
975
976 add_syn_filter
977 ~~~~~~~~~~~~~~
978
979 Add SYN filter, which can forward TCP packets whose *SYN* flag is set into a separate queue.
980
981 add_syn_filter (port_id) priority (high|low) queue (queue_id)
982
983 The available information parameters are:
984
985 *   port_id: the port which the SYN filter assigned on.
986
987 *   high: this SYN filter has higher priority than other filters.
988
989 *   low: this SYN filter has lower priority than other filters.
990
991 *   queue_id: The receive queue associated with this SYN filter
992
993 Example:
994
995 .. code-block:: console
996
997     testpmd> add_syn_filter 0 priority high queue 3,
998
999 remove_syn_filter
1000 ~~~~~~~~~~~~~~~~~
1001
1002 Remove SYN filter
1003
1004 remove_syn_filter (port_id)
1005
1006 get_syn_filter
1007 ~~~~~~~~~~~~~~
1008
1009 Get and display SYN filter
1010
1011 get_syn_filter (port_id)
1012
1013 Example:
1014
1015 .. code-block:: console
1016
1017     testpmd> get_syn_filter 0
1018
1019     syn filter: on, priority: high, queue: 3
1020
1021 add_flex_filter
1022 ~~~~~~~~~~~~~~~
1023
1024 Add a Flex filter,
1025 which recognizes any arbitrary pattern within the first 128 bytes of the packet
1026 and routes packets into one of the receive queues.
1027
1028 add_flex_filter (port_id) len (len_value) bytes (bytes_string) mask (mask_value)
1029 priority (prio_value) queue (queue_id) index (idx)
1030
1031 The available information parameters are:
1032
1033 *   port_id: the port which the Flex filter assigned on.
1034
1035 *   len_value: filter length in byte, no greater than 128.
1036
1037 *   bytes_string: a sting in format of octal, means the value the flex filter need to match.
1038
1039 *   mask_value: a sting in format of octal, bit 1 means corresponding byte in DWORD participates in the match.
1040
1041 *   prio_value: the priority of this filter.
1042
1043 *   queue_id: The receive queue associated with this Flex filter.
1044
1045 *   index: the index of this Flex filter
1046
1047 Example:
1048
1049 .. code-block:: console
1050
1051    testpmd> add_flex_filter 0 len 16 bytes 0x00000000000000000000000008060000 mask 000C priority 3 queue 3 index 0
1052
1053 Assign a packet whose 13th and 14th bytes are 0x0806 to queue 3.
1054
1055 remove_flex_filter
1056 ~~~~~~~~~~~~~~~~~~
1057
1058 Remove a Flex filter
1059
1060 remove_flex_filter (port_id) index (idx)
1061
1062 get_flex_filter
1063 ~~~~~~~~~~~~~~~
1064
1065 Get and display a Flex filter
1066
1067 get_flex_filter (port_id) index (idx)
1068
1069 Example:
1070
1071 .. code-block:: console
1072
1073     testpmd> get_flex_filter 0 index 0
1074
1075     filter[0]:
1076
1077         length: 16
1078
1079         dword[]: 0x00000000 00000000 00000000 08060000 00000000 00000000 00000000
1080     00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1081     00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1082     00000000 00000000 00000000 00000000 00000000 00000000 00000000
1083
1084         mask[]:
1085     0b0000000000001100000000000000000000000000000000000000000000000000000000
1086     0000000000000000000000000000000000000000000000000000000000
1087
1088         priority: 3   queue: 3
1089
1090 set link up
1091 ~~~~~~~~~~~
1092
1093 Set link up for a port.
1094
1095 set link-up port (port id)
1096
1097 set link down
1098 ~~~~~~~~~~~~~
1099
1100 Set link down for a port.
1101
1102 set link-down port (port id)
1103
1104 Port Functions
1105 --------------
1106
1107 The following sections show functions for configuring ports.
1108
1109 .. note::
1110
1111     Port configuration changes only become active when forwarding is started/restarted.
1112
1113 port start
1114 ~~~~~~~~~~
1115
1116 Start all ports or a specific port:
1117
1118 port start (port_id|all)
1119
1120 port stop
1121 ~~~~~~~~~
1122
1123 Stop all ports or a specific port:
1124
1125 port stop (port_id|all)
1126
1127 port close
1128 ~~~~~~~~~~
1129
1130 Close all ports or a specific port:
1131
1132 port close (port_id|all)
1133
1134 port start/stop queue
1135 ~~~~~~~~~~~~~~~~~~~~~
1136
1137 Start/stop a rx/tx queue on a specific port:
1138
1139 port (port_id) (rxq|txq) (queue_id) (start|stop)
1140
1141 Only take effect when port is started.
1142
1143 port config - speed
1144 ~~~~~~~~~~~~~~~~~~~
1145
1146 Set the speed and duplex mode for all ports or a specific port:
1147
1148 port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto)
1149
1150 port config - queues/descriptors
1151 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1152
1153 Set number of queues/descriptors for rxq, txq, rxd and txd:
1154
1155 port config all (rxq|txq|rxd|txd) (value)
1156
1157 This is equivalent to the --rxq, --txq, --rxd and --txd command-line options.
1158
1159 port config - max-pkt-len
1160 ~~~~~~~~~~~~~~~~~~~~~~~~~
1161
1162 Set the maximum packet length:
1163
1164 port config all max-pkt-len (value)
1165
1166 This is equivalent to the --max-pkt-len command-line option.
1167
1168 port config - CRC Strip
1169 ~~~~~~~~~~~~~~~~~~~~~~~
1170
1171 Set hardware CRC stripping on or off for all ports:
1172
1173 port config all crc-strip (on|off)
1174
1175 CRC stripping is off by default.
1176
1177 The on option is equivalent to the --crc-strip command-line option.
1178
1179 port config - RX Checksum
1180 ~~~~~~~~~~~~~~~~~~~~~~~~~
1181
1182 Set hardware RX checksum offload to on or off for all ports:
1183
1184 port config all rx-cksum (on|off)
1185
1186 Checksum offload is off by default.
1187
1188 The on option is equivalent to the --enable-rx-cksum command-line option.
1189
1190 port config - VLAN
1191 ~~~~~~~~~~~~~~~~~~
1192
1193 Set hardware VLAN on or off for all ports:
1194
1195 port config all hw-vlan (on|off)
1196
1197 Hardware VLAN is on by default.
1198
1199 The off option is equivalent to the --disable-hw-vlan command-line option.
1200
1201 port config - Drop Packets
1202 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1203
1204 Set packet drop for packets with no descriptors on or off for all ports:
1205
1206 port config all drop-en (on|off)
1207
1208 Packet dropping for packets with no descriptors is off by default.
1209
1210 The on option is equivalent to the --enable-drop-en command-line option.
1211
1212 port config - RSS
1213 ~~~~~~~~~~~~~~~~~
1214
1215 Set the RSS (Receive Side Scaling) mode on or off:
1216
1217 port config all rss (ip|udp|none)
1218
1219 RSS is on by default.
1220
1221 The off option is equivalent to the --disable-rss command-line option.
1222
1223 port config - RSS Reta
1224 ~~~~~~~~~~~~~~~~~~~~~~
1225
1226 Set the RSS (Receive Side Scaling) redirection table:
1227
1228 port config all rss reta (hash,queue)[,(hash,queue)]
1229
1230 port config - DCB
1231 ~~~~~~~~~~~~~~~~~
1232
1233 Set the DCB mode for an individual port:
1234
1235 port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off)
1236
1237 The traffic class should be 4 or 8.
1238
1239 port config - Burst
1240 ~~~~~~~~~~~~~~~~~~~
1241
1242 Set the number of packets per burst:
1243
1244 port config all burst (value)
1245
1246 This is equivalent to the --burst command-line option.
1247
1248 port config - Threshold
1249 ~~~~~~~~~~~~~~~~~~~~~~~
1250
1251 Set thresholds for TX/RX queues:
1252
1253 port config all (threshold) (value)
1254
1255 Where the threshold type can be:
1256
1257 *   txpt: Set the prefetch threshold register of the TX rings, 0 <= value <= 255.
1258
1259 *   txht: Set the host threshold register of the TX rings, 0 <= value <= 255.
1260
1261 *   txwt: Set the write-back threshold register of the TX rings, 0 <= value <= 255.
1262
1263 *   rxpt: Set the prefetch threshold register of the RX rings, 0 <= value <= 255.
1264
1265 *   rxht: Set the host threshold register of the RX rings, 0 <= value <= 255.
1266
1267 *   rxwt: Set the write-back threshold register of the RX rings, 0 <= value <= 255.
1268
1269 *   txfreet: Set the transmit free threshold of the TX rings, 0 <= value <= txd.
1270
1271 *   rxfreet: Set the transmit free threshold of the RX rings, 0 <= value <= rxd.
1272
1273 *   txrst: Set the transmit RS bit threshold of TX rings, 0 <= value <= txd.
1274     These threshold options are also available from the command-line.
1275
1276 Flow Director Functions
1277 -----------------------
1278
1279 The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
1280
1281 Two types of filtering are supported which are referred to as Perfect Match and Signature filters:
1282
1283 *   Perfect match filters.
1284     The hardware checks a match between the masked fields of the received packets and the programmed filters.
1285
1286 *   Signature filters.
1287     The hardware checks a match between a hash-based signature of the masked fields of the received packet.
1288
1289 The Flow Director filters can match the following fields in a packet:
1290
1291 *   Source IP and destination IP addresses.
1292
1293 *   Source port and destination port numbers (for UDP and TCP packets).
1294
1295 *   IPv4/IPv6 and UDP/ TCP/SCTP protocol match.
1296
1297 *   VLAN header.
1298
1299 *   Flexible 2-byte tuple match anywhere in the first 64 bytes of the packet.
1300
1301 The Flow Director can also mask out parts of all of these fields so that filters are only applied to certain fields
1302 or parts of the fields.
1303 For example it is possible to mask out sub-nets of IP addresses or to ignore VLAN headers.
1304
1305 In the following sections, several common parameters are used in the Flow Director filters.
1306 These are explained below:
1307
1308 *   src: A pair of source address values. The source IP, in IPv4 or IPv6 format, and the source port:
1309
1310     src 192.168.0.1 1024
1311
1312     src 2001:DB8:85A3:0:0:8A2E:370:7000 1024
1313
1314 *   dst: A pair of destination address values. The destination IP, in IPv4 or IPv6 format, and the destination port.
1315
1316 *   flexbytes: A 2-byte tuple to be matched within the first 64 bytes of a packet.
1317
1318 The offset where the match occurs is set by the --pkt-filter-flexbytes-offset command-line parameter
1319 and is counted from the first byte of the destination Ethernet MAC address.
1320 The default offset is 0xC bytes, which is the "Type" word in the MAC header.
1321 Typically, the flexbyte value is set to 0x0800 to match the IPv4 MAC type or 0x86DD to match IPv6.
1322 These values change when a VLAN tag is added.
1323
1324 *   vlan: The VLAN header to match in the packet.
1325
1326 *   queue: The index of the RX queue to route matched packets to.
1327
1328 *   soft: The 16-bit value in the MBUF flow director ID field for RX packets matching the filter.
1329
1330 add_signature_filter
1331 ~~~~~~~~~~~~~~~~~~~~
1332
1333 Add a signature filter:
1334
1335 # Command is displayed on several lines for clarity.
1336
1337 add_signature_filter (port_id) (ip|udp|tcp|sctp)
1338
1339     src (src_ip_address) (src_port)
1340
1341     dst (dst_ip_address) (dst_port)
1342
1343     flexbytes (flexbytes_values)
1344
1345     vlan (vlan_id) queue (queue_id)
1346
1347 upd_signature_filter
1348 ~~~~~~~~~~~~~~~~~~~~
1349
1350 Update a signature filter:
1351
1352 # Command is displayed on several lines for clarity.
1353
1354 upd_signature_filter (port_id) (ip|udp|tcp|sctp)
1355
1356     src (src_ip_address) (src_port)
1357
1358     dst (dst_ip_address) (dst_port)
1359
1360     flexbytes (flexbytes_values)
1361
1362     vlan (vlan_id) queue (queue_id)
1363
1364 rm_signature_filter
1365 ~~~~~~~~~~~~~~~~~~~
1366
1367 Remove a signature filter:
1368
1369 # Command is displayed on several lines for clarity.
1370
1371 rm_signature_filter (port_id) (ip|udp|tcp|sctp)
1372
1373     src (src_ip_address) (src_port)
1374
1375     dst (dst_ip_address) (dst_port)
1376
1377     flexbytes (flexbytes_values)
1378
1379     vlan (vlan_id)
1380
1381 add_perfect_filter
1382 ~~~~~~~~~~~~~~~~~~
1383
1384 Add a perfect filter:
1385
1386 # Command is displayed on several lines for clarity.
1387
1388 add_perfect_filter (port_id) (ip|udp|tcp|sctp)
1389
1390     src (src_ip_address) (src_port)
1391
1392     dst (dst_ip_address) (dst_port)
1393
1394     flexbytes (flexbytes_values)
1395
1396     vlan (vlan_id) queue (queue_id) soft (soft_id)
1397
1398 upd_perfect_filter
1399 ~~~~~~~~~~~~~~~~~~
1400
1401 Update a perfect filter:
1402
1403 # Command is displayed on several lines for clarity.
1404
1405 upd_perfect_filter (port_id) (ip|udp|tcp|sctp)
1406
1407     src (src_ip_address) (src_port)
1408
1409     dst (dst_ip_address) (dst_port)
1410
1411     flexbytes (flexbytes_values)
1412
1413     vlan (vlan_id) queue (queue_id)
1414
1415 rm_perfect_filter
1416 ~~~~~~~~~~~~~~~~~
1417
1418 Remove a perfect filter:
1419
1420 rm_perfect_filter (port_id) (ip|udp|tcp|sctp)
1421
1422     src (src_ip_address) (src_port)
1423
1424     dst (dst_ip_address) (dst_port)
1425
1426     flexbytes (flexbytes_values)
1427
1428     vlan (vlan_id) soft (soft_id)
1429
1430 set_masks_filter
1431 ~~~~~~~~~~~~~~~~
1432
1433 Set IPv4 filter masks:
1434
1435 # Command is displayed on several lines for clarity.
1436
1437 set_masks_filter (port_id) only_ip_flow (0|1)
1438
1439     src_mask (ip_src_mask) (src_port_mask)
1440
1441     dst_mask (ip_dst_mask) (dst_port_mask)
1442
1443     flexbytes (0|1) vlan_id (0|1) vlan_prio (0|1)
1444
1445 set_ipv6_masks_filter
1446 ~~~~~~~~~~~~~~~~~~~~~
1447
1448 Set IPv6 filter masks:
1449
1450 # Command is displayed on several lines for clarity.
1451
1452 set_ipv6_masks_filter (port_id) only_ip_flow (0|1)
1453
1454     src_mask (ip_src_mask) (src_port_mask)
1455
1456     dst_mask (ip_dst_mask) (dst_port_mask)
1457
1458     flexbytes (0|1) vlan_id (0|1) vlan_prio (0|1)
1459
1460     compare_dst (0|1)
1461
1462 Link Bonding Functions
1463 ----------------------
1464
1465 The Link Bonding functions make it possible to dynamically create and
1466 manage link bonding devices from within testpmd interactive prompt.
1467
1468 create bonded device
1469 ~~~~~~~~~~~~~~~~~~~~
1470
1471 Create a new bonding device:
1472
1473 create bonded device (mode) (socket)
1474
1475 For example, to create a bonded device in mode 1 on socket 0.
1476
1477 .. code-block:: console
1478
1479     testpmd> create bonded 1 0
1480     created new bonded device (port X)
1481
1482 add bonding slave
1483 ~~~~~~~~~~~~~~~~~
1484
1485 Adds Ethernet device to a Link Bonding device:
1486
1487 add bonding slave (slave id) (port id)
1488
1489 For example, to add Ethernet device (port 6) to a Link Bonding device (port 10).
1490
1491 .. code-block:: console
1492
1493     testpmd> add bonding slave 6 10
1494
1495
1496 remove bonding slave
1497 ~~~~~~~~~~~~~~~~~~~~
1498
1499 Removes an Ethernet slave device from a Link Bonding device:
1500
1501 remove bonding slave (slave id) (port id)
1502
1503 For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10).
1504
1505 .. code-block:: console
1506
1507     testpmd> remove bonding slave 6 10
1508
1509 set bonding mode
1510 ~~~~~~~~~~~~~~~~
1511
1512 Set the Link Bonding mode of a Link Bonding device:
1513
1514 set bonding mode (value) (port id)
1515
1516 For example, to set the bonding mode of a Link Bonding device (port 10) to broadcast (mode 3).
1517
1518 .. code-block:: console
1519
1520     testpmd> set bonding mode 3 10
1521
1522 set bonding primary
1523 ~~~~~~~~~~~~~~~~~~~
1524
1525 Set an Ethernet slave device as the primary device on a Link Bonding device:
1526
1527 set bonding primary (slave id) (port id)
1528
1529 For example, to set the Ethernet slave device (port 6) as the primary port of a Link Bonding device (port 10).
1530
1531 .. code-block:: console
1532
1533     testpmd> set bonding primary 6 10
1534
1535 set bonding mac
1536 ~~~~~~~~~~~~~~~
1537
1538 Set the MAC address of a Link Bonding device:
1539
1540 set bonding mac (port id) (mac)
1541
1542 For example, to set the MAC address of a Link Bonding device (port 10) to 00:00:00:00:00:01
1543
1544 .. code-block:: console
1545
1546     testpmd> set bonding mac 10 00:00:00:00:00:01
1547
1548 set bonding xmit_balance_policy
1549 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1550
1551 Set the transmission policy for a Link Bonding device when it is in Balance XOR mode:
1552
1553 set bonding xmit_balance_policy (port_id) (l2|l23|l34)
1554
1555 For example, set a Link Bonding device (port 10) to use a balance policy of layer 3+4 (IP addresses & UDP ports )
1556
1557 .. code-block:: console
1558
1559     testpmd> set bonding xmit_balance_policy 10 l34
1560
1561
1562 set bonding mon_period
1563 ~~~~~~~~~~~~~~~~~~~~~~
1564
1565 Set the link status monitoring polling period in milliseconds for a bonding devicie.
1566
1567 This adds support for PMD slave devices which do not support link status interrupts.
1568 When the mon_period is set to a value greater than 0 then all PMD's which do not support
1569 link status ISR will be queried every polling interval to check if their link status has changed.
1570
1571 set bonding mon_period (port_id) (value)
1572
1573 For example, to set the link status monitoring polling period of bonded device (port 5) to 150ms
1574
1575 .. code-block:: console
1576
1577     testpmd> set bonding mon_period 5 150
1578
1579
1580 show bonding config
1581 ~~~~~~~~~~~~~~~~~~~
1582
1583 Show the current configuration of a Link Bonding device:
1584
1585 show bonding config (port id)
1586
1587 For example,
1588 to show the configuration a Link Bonding device (port 9) with 3 slave devices (1, 3, 4)
1589 in balance mode with a transmission policy of layer 2+3.
1590
1591 .. code-block:: console
1592
1593     testpmd> show bonding config 9
1594         Bonding mode: 2
1595         Balance Xmit Policy: BALANCE_XMIT_POLICY_LAYER23
1596         Slaves (3): [1 3 4]
1597         Active Slaves (3): [1 3 4]
1598         Primary: [3]
1599
1600 Register Functions
1601 ------------------
1602
1603 The Register functions can be used to read from and write to registers on the network card referenced by a port number.
1604 This is mainly useful for debugging purposes.
1605 Reference should be made to the appropriate datasheet for the network card for details on the register addresses
1606 and fields that can be accessed.
1607
1608 read reg
1609 ~~~~~~~~
1610
1611 Display the value of a port register:
1612
1613 read reg (port_id) (address)
1614
1615 For example, to examine the Flow Director control register (FDIRCTL, 0x0000EE000) on an IntelĀ® 82599 10 GbE Controller:
1616
1617 .. code-block:: console
1618
1619     testpmd> read reg 0 0xEE00
1620     port 0 PCI register at offset 0xEE00: 0x4A060029 (1241907241)
1621
1622 read regfield
1623 ~~~~~~~~~~~~~
1624
1625 Display a port register bit field:
1626
1627 read regfield (port_id) (address) (bit_x) (bit_y)
1628
1629 For example, reading the lowest two bits from the register in the example above:
1630
1631 .. code-block:: console
1632
1633     testpmd> read regfield 0 0xEE00 0 1
1634     port 0 PCI register at offset 0xEE00: bits[0, 1]=0x1 (1)
1635
1636 read regbit
1637 ~~~~~~~~~~~
1638
1639 Display a single port register bit:
1640
1641 read regbit (port_id) (address) (bit_x)
1642
1643 For example, reading the lowest bit from the register in the example above:
1644
1645 .. code-block:: console
1646
1647     testpmd> read regbit 0 0xEE00 0
1648     port 0 PCI register at offset 0xEE00: bit 0=1
1649
1650 write reg
1651 ~~~~~~~~~
1652
1653 Set the value of a port register:
1654
1655 write reg (port_id) (address) (value)
1656
1657 For example, to clear a register:
1658
1659 .. code-block:: console
1660
1661     testpmd> write reg 0 0xEE00 0x0
1662     port 0 PCI register at offset 0xEE00: 0x00000000 (0)
1663
1664 write regfield
1665 ~~~~~~~~~~~~~~
1666
1667 Set bit field of a port register:
1668
1669 write regfield (port_id) (address) (bit_x) (bit_y) (value)
1670
1671 For example, writing to the register cleared in the example above:
1672
1673 .. code-block:: console
1674
1675     testpmd> write regfield 0 0xEE00 0 1 2
1676     port 0 PCI register at offset 0xEE00: 0x00000002 (2)
1677
1678 write regbit
1679 ~~~~~~~~~~~~
1680
1681 Set single bit value of a port register:
1682
1683 write regbit (port_id) (address) (bit_x) (value)
1684
1685 For example, to set the high bit in the register from the example above:
1686
1687 .. code-block:: console
1688
1689     testpmd> write regbit 0 0xEE00 31 1
1690     port 0 PCI register at offset 0xEE00: 0x8000000A (2147483658)