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