xref: /dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst (revision 6fe5f2f74f2e008c184ee01a0f6f224935ad9bb6)
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
31Testpmd Runtime Functions
32=========================
33
34Where the testpmd application is started in interactive mode, (-i|--interactive),
35it displays a prompt that can be used to start and stop forwarding,
36configure the application, display statistics, set the Flow Director and other tasks.
37
38.. code-block:: console
39
40    testpmd>
41
42The testpmd prompt has some, limited, readline support.
43Common bash command- line functions such as Ctrl+a and Ctrl+e to go to the start and end of the prompt line are supported
44as well as access to the command history via the up-arrow.
45
46There is also support for tab completion.
47If 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
59Help Functions
60--------------
61
62The testpmd has on-line help for the functions that are available at runtime.
63These 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
79Control Functions
80-----------------
81
82start
83~~~~~
84
85Start packet forwarding with current configuration:
86
87start
88
89start tx_first
90~~~~~~~~~~~~~~
91
92Start packet forwarding with current configuration after sending one burst of packets:
93
94start tx_first
95
96stop
97~~~~
98
99Stop packet forwarding, and display accumulated statistics:
100
101stop
102
103quit
104~~~~
105
106Quit to prompt:
107
108quit
109
110Display Functions
111-----------------
112
113The functions in the following sections are used to display information about the
114testpmd configuration or the NIC status.
115
116show port
117~~~~~~~~~
118
119Display information for a given port or all ports:
120
121show port (info|stats|fdir|stat_qmap) (port_id|all)
122
123The available information categories are:
124
125info    : General port information such as MAC address.
126
127stats   : RX/TX statistics.
128
129fdir    : Flow Director information and statistics.
130
131stat_qmap : Queue statistics mapping.
132
133For 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
153show port rss reta
154~~~~~~~~~~~~~~~~~~
155
156Display the rss redirection table entry indicated by masks on port X:
157
158show port (port_id) rss reta (size) (mask0, mask1...)
159
160size is used to indicate the hardware supported reta size
161
162show port rss-hash
163~~~~~~~~~~~~~~~~~~
164
165Display the RSS hash functions and RSS hash key of port (port_id).
166
167show port (port_id) rss-hash [key] clear port
168~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169
170Clear the port statistics for a given port or for all ports:
171
172clear port (info|stats|fdir|stat_qmap) (port_id|all)
173
174For example:
175
176.. code-block:: console
177
178    testpmd> clear port stats all
179
180show config
181~~~~~~~~~~~
182
183Displays the configuration of the application.
184The configuration comes from the command-line, the runtime or the application defaults:
185
186show config (rxtx|cores|fwd)
187
188The available information categories are:
189
190rxtx  : RX/TX configuration items.
191
192cores : List of forwarding cores.
193
194fwd   : Packet forwarding configuration.
195
196For 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
210read rxd
211~~~~~~~~
212
213Display an RX descriptor for a port RX queue:
214
215read rxd (port_id) (queue_id) (rxd_id)
216
217For example:
218
219.. code-block:: console
220
221    testpmd> read rxd 0 0 4
222        0x0000000B - 0x001D0180 / 0x0000000B - 0x001D0180
223
224read txd
225~~~~~~~~
226
227Display a TX descriptor for a port TX queue:
228
229read txd (port_id) (queue_id) (txd_id)
230
231For example:
232
233.. code-block:: console
234
235    testpmd> read txd 0 0 4
236        0x00000001 - 0x24C3C440 / 0x000F0000 - 0x2330003C
237
238Configuration Functions
239-----------------------
240
241The testpmd application can be configured from the runtime as well as from the command-line.
242
243This 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
249set default
250~~~~~~~~~~~
251
252Reset forwarding to the default configuration:
253
254set default
255
256set verbose
257~~~~~~~~~~~
258
259Set the debug verbosity level:
260
261set verbose (level)
262
263Currently the only available levels are 0 (silent except for error) and 1 (fully verbose).
264
265set nbport
266~~~~~~~~~~
267
268Set the number of ports used by the application:
269
270set nbport (num)
271
272This is equivalent to the --nb-ports command-line option.
273
274set nbcore
275~~~~~~~~~~
276
277Set the number of cores used by the application:
278
279set nbcore (num)
280
281This 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
287set coremask
288~~~~~~~~~~~~
289
290Set the forwarding cores hexadecimal mask:
291
292set coremask (mask)
293
294This 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
300set portmask
301~~~~~~~~~~~~
302
303Set the forwarding ports hexadecimal mask:
304
305set portmask (mask)
306
307This is equivalent to the --portmask command-line option.
308
309set burst
310~~~~~~~~~
311
312Set number of packets per burst:
313
314set burst (num)
315
316This is equivalent to the --burst command-line option.
317
318In mac_retry forwarding mode, the transmit delay time and number of retries can also be set.
319
320set burst tx delay (micrseconds) retry (num)
321
322set txpkts
323~~~~~~~~~~
324
325Set the length of each segment of the TX-ONLY packets:
326
327set txpkts (x[,y]*)
328
329Where x[,y]* represents a CSV list of values, without white space.
330
331set corelist
332~~~~~~~~~~~~
333
334Set the list of forwarding cores:
335
336set corelist (x[,y]*)
337
338For 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
355set portlist
356~~~~~~~~~~~~
357
358Set the list of forwarding ports:
359
360set portlist (x[,y]*)
361
362For 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
376vlan set strip
377~~~~~~~~~~~~~~
378
379Set the VLAN strip on a port:
380
381vlan set strip (on|off) (port_id)
382
383vlan set stripq
384~~~~~~~~~~~~~~~
385
386Set the VLAN strip for a queue on a port:
387
388vlan set stripq (on|off) (port_id,queue_id)
389
390vlan set filter
391~~~~~~~~~~~~~~~
392
393Set the VLAN filter on a port:
394
395vlan set filter (on|off) (port_id)
396
397vlan set qinq
398~~~~~~~~~~~~~
399
400Set the VLAN QinQ (extended queue in queue) on for a port:
401
402vlan set qinq (on|off) (port_id)
403
404vlan set tpid
405~~~~~~~~~~~~~
406
407Set the outer VLAN TPID for packet filtering on a port:
408
409vlan set tpid (value) (port_id)
410
411.. note::
412
413    TPID value must be a 16-bit number (value <= 65536).
414
415rx_vlan add
416~~~~~~~~~~~
417
418Add a VLAN ID, or all identifiers, to the set of VLAN identifiers filtered by port ID:
419
420rx_vlan add (vlan_id|all) (port_id)
421
422.. note::
423
424    VLAN filter must be set on that port. VLAN ID < 4096.
425
426rx_vlan rm
427~~~~~~~~~~
428
429Remove a VLAN ID, or all identifiers, from the set of VLAN identifiers filtered by port ID:
430
431rx_vlan rm (vlan_id|all) (port_id)
432
433rx_vlan add(for VF)
434~~~~~~~~~~~~~~~~~~~
435
436Add a VLAN ID, to the set of VLAN identifiers filtered for VF(s) for port ID:
437
438rx_vlan add (vlan_id) port (port_id) vf (vf_mask)
439
440rx_vlan rm(for VF)
441~~~~~~~~~~~~~~~~~~
442
443Remove a VLAN ID, from the set of VLAN identifiers filtered for VF(s) for port ID:
444
445rx_vlan rm (vlan_id) port (port_id) vf (vf_mask)
446
447tx_rate (for Queue)
448~~~~~~~~~~~~~~~~~~~
449
450Set TX rate limitation for queue of a port ID:
451
452set port (port_id) queue (queue_id) rate (rate_value)
453
454tx_rate (for VF)
455~~~~~~~~~~~~~~~~
456
457Set TX rate limitation for queues in VF of a port ID:
458
459set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask)
460
461rx_vlan set tpid
462~~~~~~~~~~~~~~~~
463
464Set the outer VLAN TPID for packet filtering on a port:
465
466rx_vlan set tpid (value) (port_id)
467
468tunnel_filter add
469~~~~~~~~~~~~~~~~~
470
471Add a tunnel filter on a port:
472
473tunnel_filter add (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
474 (tunnel_type) (filter_type) (tenant_id) (queue_id)
475
476tunnel_filter remove
477~~~~~~~~~~~~~~~~~~~~
478
479Remove a tunnel filter on a port:
480
481tunnel_filter rm (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
482 (tunnel_type) (filter_type) (tenant_id) (queue_id)
483
484rx_vxlan_port add
485~~~~~~~~~~~~~~~~~
486
487Add an UDP port for VXLAN packet filter on a port:
488
489rx_vxlan_port add (udp_port) (port_id)
490
491rx_vxlan_port remove
492~~~~~~~~~~~~~~~~~~~~
493
494Remove an UDP port for VXLAN packet filter on a port:
495
496rx_vxlan_port rm (udp_port) (port_id)
497
498tx_vlan set
499~~~~~~~~~~~
500
501Set hardware insertion of VLAN ID in packets sent on a port:
502
503tx_vlan set (vlan_id) (port_id)
504
505tx_vlan set pvid
506~~~~~~~~~~~~~~~~
507
508Set port based hardware insertion of VLAN ID in pacekts sent on a port:
509
510tx_vlan set pvid (port_id) (vlan_id) (on|off)
511
512tx_vlan reset
513~~~~~~~~~~~~~
514
515Disable hardware insertion of a VLAN header in packets sent on a port:
516
517tx_vlan reset (port_id)
518
519tx_checksum set mask
520~~~~~~~~~~~~~~~~~~~~
521
522Enable hardware insertion of checksum offload with a 4-bit mask, 0x0 - 0xF, in packets sent on a port:
523
524tx_checksum set (mask) (port_id)
525
526The bits in the mask are:
527
528bit 0 - if set insert ip checksum offload
529
530bit 1 - if set insert udp checksum offload
531
532bit 2 - if set insert tcp checksum offload
533
534bit 3 - if set insert sctp checksum offload
535
536.. note::
537
538    Check the NIC Datasheet for hardware limits.
539
540tx_checksum show
541~~~~~~~~~~~~~~~~
542
543Display tx checksum offload configuration:
544
545tx_checksum show (port_id)
546
547tso set
548~~~~~~~
549
550Enable TCP Segmentation Offload in csum forward engine:
551
552tso set (segsize) (port_id)
553
554.. note::
555   Please check the NIC datasheet for HW limits
556
557tso show
558~~~~~~~~
559
560Display the status of TCP Segmentation Offload:
561
562tso show (port_id)
563
564set fwd
565~~~~~~~
566
567Set the packet forwarding mode:
568
569set fwd (io|mac|mac_retry|macswap|flowgen|rxonly|txonly|csum|icmpecho)
570
571The 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
596Example:
597
598.. code-block:: console
599
600    testpmd> set fwd rxonly
601
602    Set rxonly packet forwarding mode
603
604mac_addr add
605~~~~~~~~~~~~
606
607Add an alternative MAC address to a port:
608
609mac_addr add (port_id) (XX:XX:XX:XX:XX:XX)
610
611mac_addr remove
612~~~~~~~~~~~~~~~
613
614Remove a MAC address from a port:
615
616mac_addr remove (port_id) (XX:XX:XX:XX:XX:XX)
617
618mac_addr add(for VF)
619~~~~~~~~~~~~~~~~~~~~
620
621Add an alternative MAC address for a VF to a port:
622
623mac_add add port (port_id) vf (vf_id) (XX:XX:XX:XX:XX:XX)
624
625set port-uta
626~~~~~~~~~~~~
627
628Set the unicast hash filter(s) on/off for a port X:
629
630set port (port_id) uta (XX:XX:XX:XX:XX:XX|all) (on|off)
631
632set promisc
633~~~~~~~~~~~
634
635Set the promiscuous mode on for a port or for all ports.
636In promiscuous mode packets are not dropped if they aren't for the specified MAC address:
637
638set promisc (port_id|all) (on|off)
639
640set allmulti
641~~~~~~~~~~~~
642
643Set the allmulti mode for a port or for all ports:
644
645set allmulti (port_id|all) (on|off)
646
647Same as the ifconfig (8) option. Controls how multicast packets are handled.
648
649set flow_ctrl rx
650~~~~~~~~~~~~~~~~
651
652Set the link flow control parameter on a port:
653
654set flow_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \
655(pause_time) (send_xon) (port_id)
656
657Where:
658
659high_water (integer): High threshold value to trigger XOFF.
660
661low_water (integer) : Low threshold value to trigger XON.
662
663pause_time (integer): Pause quota in the Pause frame.
664
665send_xon (0/1) : Send XON frame.
666
667mac_ctrl_frame_fwd : Enable receiving MAC control frames
668
669set pfc_ctrl rx
670~~~~~~~~~~~~~~~
671
672Set the priority flow control parameter on a port:
673
674set pfc_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \ (pause_time) (priority) (port_id)
675
676Where:
677
678priority (0-7): VLAN User Priority.
679
680set stat_qmap
681~~~~~~~~~~~~~
682
683Set statistics mapping (qmapping 0..15) for RX/TX queue on port:
684
685set stat_qmap (tx|rx) (port_id) (queue_id) (qmapping)
686
687For 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
693set port - rx/tx(for VF)
694~~~~~~~~~~~~~~~~~~~~~~~~
695
696Set VF receive/transmit from a port:
697
698set port (port_id) vf (vf_id) (rx|tx) (on|off)
699
700set port - mac address filter (for VF)
701~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
702
703Add/Remove unicast or multicast MAC addr filter for a VF:
704
705set port (port_id) vf (vf_id) (mac_addr)
706 (exact-mac|exact-mac-vlan|hashmac|hashmac-vlan) (on|off)
707
708set port - rx mode(for VF)
709~~~~~~~~~~~~~~~~~~~~~~~~~~
710
711Set the VF receive mode of a port:
712
713set port (port_id) vf (vf_id) rxmode (AUPE|ROPE|BAM|MPE) (on|off)
714
715The 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
725set port - mirror rule
726~~~~~~~~~~~~~~~~~~~~~~
727
728Set port or vlan type mirror rule for a port.
729
730set port (port_id) mirror-rule (rule_id) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)
731
732For 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
738reset port - mirror rule
739~~~~~~~~~~~~~~~~~~~~~~~~
740
741Reset a mirror rule for a port.
742
743reset port (port_id) mirror-rule (rule_id)
744
745set flush_rx
746~~~~~~~~~~~~
747
748Flush (default) or don't flush RX streams before forwarding.
749Mainly used with PCAP drivers to avoid the default behavior of flushing the first 512 packets on RX streams.
750
751set flush_rx off
752
753set bypass mode
754~~~~~~~~~~~~~~~
755
756Set the bypass mode for the lowest port on bypass enabled NIC.
757
758set bypass mode (normal|bypass|isolate) (port_id)
759
760set bypass event
761~~~~~~~~~~~~~~~~
762
763Set 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
775set bypass event (timeout|os_on|os_off|power_on|power_off) mode (normal|bypass|isolate) (port_id)
776
777set bypass timeout
778~~~~~~~~~~~~~~~~~~
779
780Set the bypass watchdog timeout to 'n' seconds where 0 = instant.
781
782set bypass timeout (0|1.5|2|3|4|8|16|32)
783
784show bypass config
785~~~~~~~~~~~~~~~~~~
786
787Show the bypass configuration for a bypass enabled NIC using the lowest port on the NIC.
788
789show bypass config (port_id)
790
791add_ethertype_filter
792~~~~~~~~~~~~~~~~~~~~
793
794Add a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue.
795
796add_ethertype_filter (port_id) ethertype (eth_value) priority (enable|disable) (pri_value) queue (queue_id) index (idx)
797
798The 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
815Example:
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
822remove_ethertype_filter
823~~~~~~~~~~~~~~~~~~~~~~~
824
825Remove a L2 Ethertype filter
826
827remove_ethertype_filter (port_id) index (idx)
828
829get_ethertype_filter
830~~~~~~~~~~~~~~~~~~~~
831
832Get and display a L2 Ethertype filter
833
834get_ethertype_filter (port_id) index (idx)
835
836Example:
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
847add_2tuple_filter
848~~~~~~~~~~~~~~~~~
849
850Add a 2-tuple filter,
851which identify packets by specific protocol and destination TCP/UDP port
852and forwards packets into one of the receive queues.
853
854add_2tuple_filter (port_id) protocol (pro_value) (pro_mask) dst_port (port_value) (port_mask)
855flags (flg_value) priority (prio_value) queue (queue_id) index (idx)
856
857The 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
877Example:
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
883remove_2tuple_filter
884~~~~~~~~~~~~~~~~~~~~
885
886Remove a 2-tuple filter
887
888remove_2tuple_filter (port_id) index (idx)
889
890get_2tuple_filter
891~~~~~~~~~~~~~~~~~
892
893Get and display a 2-tuple filter
894
895get_2tuple_filter (port_id) index (idx)
896
897Example:
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
908add_5tuple_filter
909~~~~~~~~~~~~~~~~~
910
911Add a 5-tuple filter,
912which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port)
913and routes packets into one of the receive queues.
914
915add_5tuple_filter (port_id) dst_ip (dst_address) src_ip (src_address) dst_port (dst_port_value) src_port (src_port_value)
916protocol (protocol_value) mask (mask_value) flags (flags_value) priority (prio_value) queue (queue_id) index (idx)
917
918The 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
942Example:
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
948remove_5tuple_filter
949~~~~~~~~~~~~~~~~~~~~
950
951Remove a 5-tuple filter
952
953remove_5tuple_filter (port_id) index (idx)
954
955get_5tuple_filter
956~~~~~~~~~~~~~~~~~
957
958Get and display a 5-tuple filter
959
960get_5tuple_filter (port_id) index (idx)
961
962Example:
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
976add_syn_filter
977~~~~~~~~~~~~~~
978
979Add SYN filter, which can forward TCP packets whose *SYN* flag is set into a separate queue.
980
981add_syn_filter (port_id) priority (high|low) queue (queue_id)
982
983The 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
993Example:
994
995.. code-block:: console
996
997    testpmd> add_syn_filter 0 priority high queue 3,
998
999remove_syn_filter
1000~~~~~~~~~~~~~~~~~
1001
1002Remove SYN filter
1003
1004remove_syn_filter (port_id)
1005
1006get_syn_filter
1007~~~~~~~~~~~~~~
1008
1009Get and display SYN filter
1010
1011get_syn_filter (port_id)
1012
1013Example:
1014
1015.. code-block:: console
1016
1017    testpmd> get_syn_filter 0
1018
1019    syn filter: on, priority: high, queue: 3
1020
1021add_flex_filter
1022~~~~~~~~~~~~~~~
1023
1024Add a Flex filter,
1025which recognizes any arbitrary pattern within the first 128 bytes of the packet
1026and routes packets into one of the receive queues.
1027
1028add_flex_filter (port_id) len (len_value) bytes (bytes_string) mask (mask_value)
1029priority (prio_value) queue (queue_id) index (idx)
1030
1031The 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
1047Example:
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
1053Assign a packet whose 13th and 14th bytes are 0x0806 to queue 3.
1054
1055remove_flex_filter
1056~~~~~~~~~~~~~~~~~~
1057
1058Remove a Flex filter
1059
1060remove_flex_filter (port_id) index (idx)
1061
1062get_flex_filter
1063~~~~~~~~~~~~~~~
1064
1065Get and display a Flex filter
1066
1067get_flex_filter (port_id) index (idx)
1068
1069Example:
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
1090set link up
1091~~~~~~~~~~~
1092
1093Set link up for a port.
1094
1095set link-up port (port id)
1096
1097set link down
1098~~~~~~~~~~~~~
1099
1100Set link down for a port.
1101
1102set link-down port (port id)
1103
1104Port Functions
1105--------------
1106
1107The following sections show functions for configuring ports.
1108
1109.. note::
1110
1111    Port configuration changes only become active when forwarding is started/restarted.
1112
1113port start
1114~~~~~~~~~~
1115
1116Start all ports or a specific port:
1117
1118port start (port_id|all)
1119
1120port stop
1121~~~~~~~~~
1122
1123Stop all ports or a specific port:
1124
1125port stop (port_id|all)
1126
1127port close
1128~~~~~~~~~~
1129
1130Close all ports or a specific port:
1131
1132port close (port_id|all)
1133
1134port start/stop queue
1135~~~~~~~~~~~~~~~~~~~~~
1136
1137Start/stop a rx/tx queue on a specific port:
1138
1139port (port_id) (rxq|txq) (queue_id) (start|stop)
1140
1141Only take effect when port is started.
1142
1143port config - speed
1144~~~~~~~~~~~~~~~~~~~
1145
1146Set the speed and duplex mode for all ports or a specific port:
1147
1148port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto)
1149
1150port config - queues/descriptors
1151~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1152
1153Set number of queues/descriptors for rxq, txq, rxd and txd:
1154
1155port config all (rxq|txq|rxd|txd) (value)
1156
1157This is equivalent to the --rxq, --txq, --rxd and --txd command-line options.
1158
1159port config - max-pkt-len
1160~~~~~~~~~~~~~~~~~~~~~~~~~
1161
1162Set the maximum packet length:
1163
1164port config all max-pkt-len (value)
1165
1166This is equivalent to the --max-pkt-len command-line option.
1167
1168port config - CRC Strip
1169~~~~~~~~~~~~~~~~~~~~~~~
1170
1171Set hardware CRC stripping on or off for all ports:
1172
1173port config all crc-strip (on|off)
1174
1175CRC stripping is off by default.
1176
1177The on option is equivalent to the --crc-strip command-line option.
1178
1179port config - RX Checksum
1180~~~~~~~~~~~~~~~~~~~~~~~~~
1181
1182Set hardware RX checksum offload to on or off for all ports:
1183
1184port config all rx-cksum (on|off)
1185
1186Checksum offload is off by default.
1187
1188The on option is equivalent to the --enable-rx-cksum command-line option.
1189
1190port config - VLAN
1191~~~~~~~~~~~~~~~~~~
1192
1193Set hardware VLAN on or off for all ports:
1194
1195port config all hw-vlan (on|off)
1196
1197Hardware VLAN is on by default.
1198
1199The off option is equivalent to the --disable-hw-vlan command-line option.
1200
1201port config - Drop Packets
1202~~~~~~~~~~~~~~~~~~~~~~~~~~
1203
1204Set packet drop for packets with no descriptors on or off for all ports:
1205
1206port config all drop-en (on|off)
1207
1208Packet dropping for packets with no descriptors is off by default.
1209
1210The on option is equivalent to the --enable-drop-en command-line option.
1211
1212port config - RSS
1213~~~~~~~~~~~~~~~~~
1214
1215Set the RSS (Receive Side Scaling) mode on or off:
1216
1217port config all rss (ip|udp|none)
1218
1219RSS is on by default.
1220
1221The off option is equivalent to the --disable-rss command-line option.
1222
1223port config - RSS Reta
1224~~~~~~~~~~~~~~~~~~~~~~
1225
1226Set the RSS (Receive Side Scaling) redirection table:
1227
1228port config all rss reta (hash,queue)[,(hash,queue)]
1229
1230port config - DCB
1231~~~~~~~~~~~~~~~~~
1232
1233Set the DCB mode for an individual port:
1234
1235port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off)
1236
1237The traffic class should be 4 or 8.
1238
1239port config - Burst
1240~~~~~~~~~~~~~~~~~~~
1241
1242Set the number of packets per burst:
1243
1244port config all burst (value)
1245
1246This is equivalent to the --burst command-line option.
1247
1248port config - Threshold
1249~~~~~~~~~~~~~~~~~~~~~~~
1250
1251Set thresholds for TX/RX queues:
1252
1253port config all (threshold) (value)
1254
1255Where 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
1276Flow Director Functions
1277-----------------------
1278
1279The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
1280
1281Two 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
1289The 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
1301The Flow Director can also mask out parts of all of these fields so that filters are only applied to certain fields
1302or parts of the fields.
1303For example it is possible to mask out sub-nets of IP addresses or to ignore VLAN headers.
1304
1305In the following sections, several common parameters are used in the Flow Director filters.
1306These 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
1318The offset where the match occurs is set by the --pkt-filter-flexbytes-offset command-line parameter
1319and is counted from the first byte of the destination Ethernet MAC address.
1320The default offset is 0xC bytes, which is the "Type" word in the MAC header.
1321Typically, the flexbyte value is set to 0x0800 to match the IPv4 MAC type or 0x86DD to match IPv6.
1322These 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
1330add_signature_filter
1331~~~~~~~~~~~~~~~~~~~~
1332
1333Add a signature filter:
1334
1335# Command is displayed on several lines for clarity.
1336
1337add_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
1347upd_signature_filter
1348~~~~~~~~~~~~~~~~~~~~
1349
1350Update a signature filter:
1351
1352# Command is displayed on several lines for clarity.
1353
1354upd_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
1364rm_signature_filter
1365~~~~~~~~~~~~~~~~~~~
1366
1367Remove a signature filter:
1368
1369# Command is displayed on several lines for clarity.
1370
1371rm_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
1381add_perfect_filter
1382~~~~~~~~~~~~~~~~~~
1383
1384Add a perfect filter:
1385
1386# Command is displayed on several lines for clarity.
1387
1388add_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
1398upd_perfect_filter
1399~~~~~~~~~~~~~~~~~~
1400
1401Update a perfect filter:
1402
1403# Command is displayed on several lines for clarity.
1404
1405upd_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
1415rm_perfect_filter
1416~~~~~~~~~~~~~~~~~
1417
1418Remove a perfect filter:
1419
1420rm_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
1430set_masks_filter
1431~~~~~~~~~~~~~~~~
1432
1433Set IPv4 filter masks:
1434
1435# Command is displayed on several lines for clarity.
1436
1437set_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
1445set_ipv6_masks_filter
1446~~~~~~~~~~~~~~~~~~~~~
1447
1448Set IPv6 filter masks:
1449
1450# Command is displayed on several lines for clarity.
1451
1452set_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
1462Link Bonding Functions
1463----------------------
1464
1465The Link Bonding functions make it possible to dynamically create and
1466manage link bonding devices from within testpmd interactive prompt.
1467
1468create bonded device
1469~~~~~~~~~~~~~~~~~~~~
1470
1471Create a new bonding device:
1472
1473create bonded device (mode) (socket)
1474
1475For 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
1482add bonding slave
1483~~~~~~~~~~~~~~~~~
1484
1485Adds Ethernet device to a Link Bonding device:
1486
1487add bonding slave (slave id) (port id)
1488
1489For 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
1496remove bonding slave
1497~~~~~~~~~~~~~~~~~~~~
1498
1499Removes an Ethernet slave device from a Link Bonding device:
1500
1501remove bonding slave (slave id) (port id)
1502
1503For 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
1509set bonding mode
1510~~~~~~~~~~~~~~~~
1511
1512Set the Link Bonding mode of a Link Bonding device:
1513
1514set bonding mode (value) (port id)
1515
1516For 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
1522set bonding primary
1523~~~~~~~~~~~~~~~~~~~
1524
1525Set an Ethernet slave device as the primary device on a Link Bonding device:
1526
1527set bonding primary (slave id) (port id)
1528
1529For 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
1535set bonding mac
1536~~~~~~~~~~~~~~~
1537
1538Set the MAC address of a Link Bonding device:
1539
1540set bonding mac (port id) (mac)
1541
1542For 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
1548set bonding xmit_balance_policy
1549~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1550
1551Set the transmission policy for a Link Bonding device when it is in Balance XOR mode:
1552
1553set bonding xmit_balance_policy (port_id) (l2|l23|l34)
1554
1555For 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
1562set bonding mon_period
1563~~~~~~~~~~~~~~~~~~~~~~
1564
1565Set the link status monitoring polling period in milliseconds for a bonding devicie.
1566
1567This adds support for PMD slave devices which do not support link status interrupts.
1568When the mon_period is set to a value greater than 0 then all PMD's which do not support
1569link status ISR will be queried every polling interval to check if their link status has changed.
1570
1571set bonding mon_period (port_id) (value)
1572
1573For 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
1580show bonding config
1581~~~~~~~~~~~~~~~~~~~
1582
1583Show the current configuration of a Link Bonding device:
1584
1585show bonding config (port id)
1586
1587For example,
1588to show the configuration a Link Bonding device (port 9) with 3 slave devices (1, 3, 4)
1589in 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
1600Register Functions
1601------------------
1602
1603The Register functions can be used to read from and write to registers on the network card referenced by a port number.
1604This is mainly useful for debugging purposes.
1605Reference should be made to the appropriate datasheet for the network card for details on the register addresses
1606and fields that can be accessed.
1607
1608read reg
1609~~~~~~~~
1610
1611Display the value of a port register:
1612
1613read reg (port_id) (address)
1614
1615For 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
1622read regfield
1623~~~~~~~~~~~~~
1624
1625Display a port register bit field:
1626
1627read regfield (port_id) (address) (bit_x) (bit_y)
1628
1629For 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
1636read regbit
1637~~~~~~~~~~~
1638
1639Display a single port register bit:
1640
1641read regbit (port_id) (address) (bit_x)
1642
1643For 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
1650write reg
1651~~~~~~~~~
1652
1653Set the value of a port register:
1654
1655write reg (port_id) (address) (value)
1656
1657For 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
1664write regfield
1665~~~~~~~~~~~~~~
1666
1667Set bit field of a port register:
1668
1669write regfield (port_id) (address) (bit_x) (bit_y) (value)
1670
1671For 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
1678write regbit
1679~~~~~~~~~~~~
1680
1681Set single bit value of a port register:
1682
1683write regbit (port_id) (address) (bit_x) (value)
1684
1685For 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)
1691