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