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 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 639Example: 640 641.. code-block:: console 642 643 testpmd> set fwd rxonly 644 645 Set rxonly packet forwarding mode 646 647mac_addr add 648~~~~~~~~~~~~ 649 650Add an alternative MAC address to a port: 651 652mac_addr add (port_id) (XX:XX:XX:XX:XX:XX) 653 654mac_addr remove 655~~~~~~~~~~~~~~~ 656 657Remove a MAC address from a port: 658 659mac_addr remove (port_id) (XX:XX:XX:XX:XX:XX) 660 661mac_addr add(for VF) 662~~~~~~~~~~~~~~~~~~~~ 663 664Add an alternative MAC address for a VF to a port: 665 666mac_add add port (port_id) vf (vf_id) (XX:XX:XX:XX:XX:XX) 667 668set port-uta 669~~~~~~~~~~~~ 670 671Set the unicast hash filter(s) on/off for a port X: 672 673set port (port_id) uta (XX:XX:XX:XX:XX:XX|all) (on|off) 674 675set promisc 676~~~~~~~~~~~ 677 678Set the promiscuous mode on for a port or for all ports. 679In promiscuous mode packets are not dropped if they aren't for the specified MAC address: 680 681set promisc (port_id|all) (on|off) 682 683set allmulti 684~~~~~~~~~~~~ 685 686Set the allmulti mode for a port or for all ports: 687 688set allmulti (port_id|all) (on|off) 689 690Same as the ifconfig (8) option. Controls how multicast packets are handled. 691 692set flow_ctrl rx 693~~~~~~~~~~~~~~~~ 694 695Set the link flow control parameter on a port: 696 697set flow_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \ 698(pause_time) (send_xon) (port_id) 699 700Where: 701 702high_water (integer): High threshold value to trigger XOFF. 703 704low_water (integer) : Low threshold value to trigger XON. 705 706pause_time (integer): Pause quota in the Pause frame. 707 708send_xon (0/1) : Send XON frame. 709 710mac_ctrl_frame_fwd : Enable receiving MAC control frames 711 712set pfc_ctrl rx 713~~~~~~~~~~~~~~~ 714 715Set the priority flow control parameter on a port: 716 717set pfc_ctrl rx (on|off) tx (on|off) (high_water) (low_water) \ (pause_time) (priority) (port_id) 718 719Where: 720 721priority (0-7): VLAN User Priority. 722 723set stat_qmap 724~~~~~~~~~~~~~ 725 726Set statistics mapping (qmapping 0..15) for RX/TX queue on port: 727 728set stat_qmap (tx|rx) (port_id) (queue_id) (qmapping) 729 730For example, to set rx queue 2 on port 0 to mapping 5: 731 732.. code-block:: console 733 734 testpmd>set stat_qmap rx 0 2 5 735 736set port - rx/tx(for VF) 737~~~~~~~~~~~~~~~~~~~~~~~~ 738 739Set VF receive/transmit from a port: 740 741set port (port_id) vf (vf_id) (rx|tx) (on|off) 742 743set port - mac address filter (for VF) 744~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 745 746Add/Remove unicast or multicast MAC addr filter for a VF: 747 748set port (port_id) vf (vf_id) (mac_addr) 749 (exact-mac|exact-mac-vlan|hashmac|hashmac-vlan) (on|off) 750 751set port - rx mode(for VF) 752~~~~~~~~~~~~~~~~~~~~~~~~~~ 753 754Set the VF receive mode of a port: 755 756set port (port_id) vf (vf_id) rxmode (AUPE|ROPE|BAM|MPE) (on|off) 757 758The available receive modes are: 759 760* AUPE: accepts untagged VLAN. 761 762* ROPE: accepts unicast hash. 763 764* BAM: accepts broadcast packets 765 766* MPE: accepts all multicast packets 767 768set port - tx_rate (for Queue) 769~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 770 771Set TX rate limitation for queue of a port ID: 772 773set port (port_id) queue (queue_id) rate (rate_value) 774 775set port - tx_rate (for VF) 776~~~~~~~~~~~~~~~~~~~~~~~~~~~ 777 778Set TX rate limitation for queues in VF of a port ID: 779 780set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask) 781 782set port - mirror rule 783~~~~~~~~~~~~~~~~~~~~~~ 784 785Set port or vlan type mirror rule for a port. 786 787set port (port_id) mirror-rule (rule_id) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off) 788 789For example to enable mirror traffic with vlan 0,1 to pool 0: 790 791.. code-block:: console 792 793 set port 0 mirror-rule 0 vlan-mirror 0,1 dst-pool 0 on 794 795reset port - mirror rule 796~~~~~~~~~~~~~~~~~~~~~~~~ 797 798Reset a mirror rule for a port. 799 800reset port (port_id) mirror-rule (rule_id) 801 802set flush_rx 803~~~~~~~~~~~~ 804 805Flush (default) or don't flush RX streams before forwarding. 806Mainly used with PCAP drivers to avoid the default behavior of flushing the first 512 packets on RX streams. 807 808set flush_rx off 809 810set bypass mode 811~~~~~~~~~~~~~~~ 812 813Set the bypass mode for the lowest port on bypass enabled NIC. 814 815set bypass mode (normal|bypass|isolate) (port_id) 816 817set bypass event 818~~~~~~~~~~~~~~~~ 819 820Set the event required to initiate specified bypass mode for the lowest port on a bypass enabled NIC where: 821 822* timeout: enable bypass after watchdog timeout. 823 824* os_on: enable bypass when OS/board is powered on. 825 826* os_off: enable bypass when OS/board is powered off. 827 828* power_on: enable bypass when power supply is turned on. 829 830* power_off: enable bypass when power supply is turned off. 831 832set bypass event (timeout|os_on|os_off|power_on|power_off) mode (normal|bypass|isolate) (port_id) 833 834set bypass timeout 835~~~~~~~~~~~~~~~~~~ 836 837Set the bypass watchdog timeout to 'n' seconds where 0 = instant. 838 839set bypass timeout (0|1.5|2|3|4|8|16|32) 840 841show bypass config 842~~~~~~~~~~~~~~~~~~ 843 844Show the bypass configuration for a bypass enabled NIC using the lowest port on the NIC. 845 846show bypass config (port_id) 847 848set link up 849~~~~~~~~~~~ 850 851Set link up for a port. 852 853set link-up port (port id) 854 855set link down 856~~~~~~~~~~~~~ 857 858Set link down for a port. 859 860set link-down port (port id) 861 862Port Functions 863-------------- 864 865The following sections show functions for configuring ports. 866 867.. note:: 868 869 Port configuration changes only become active when forwarding is started/restarted. 870 871port attach 872~~~~~~~~~~~ 873 874Attach a port specified by pci address or virtual device args. 875 876To attach a new pci device, the device should be recognized by kernel first. 877Then it should be moved under DPDK management. 878Finally the port can be attached to testpmd. 879On the other hand, to attach a port created by virtual device, above steps are not needed. 880 881port attach (identifier) 882 883For example, to attach a port whose pci address is 0000:02:00.0. 884 885.. code-block:: console 886 887 testpmd> port attach 0000:02:00.0 888 Attaching a new port... 889 ... snip ... 890 Port 0 is attached. Now total ports is 1 891 Done 892 893For example, to attach a port created by pcap PMD. 894 895.. code-block:: console 896 897 testpmd> port attach eth_pcap0,iface=eth0 898 Attaching a new port... 899 ... snip ... 900 Port 0 is attached. Now total ports is 1 901 Done 902 903In this case, identifier is "eth_pcap0,iface=eth0". 904This identifier format is the same as "--vdev" format of DPDK applications. 905 906port detach 907~~~~~~~~~~~ 908 909Detach a specific port. 910 911Before detaching a port, the port should be closed. 912Also to remove a pci device completely from the system, first detach the port from testpmd. 913Then the device should be moved under kernel management. 914Finally the device can be removed using kernel pci hotplug functionality. 915On the other hand, to remove a port created by a virtual device, above steps are not needed. 916 917port detach (port_id) 918 919For example, to detach a port 0. 920 921.. code-block:: console 922 923 testpmd> port detach 0 924 Detaching a port... 925 ... snip ... 926 Done 927 928port start 929~~~~~~~~~~ 930 931Start all ports or a specific port: 932 933port start (port_id|all) 934 935port stop 936~~~~~~~~~ 937 938Stop all ports or a specific port: 939 940port stop (port_id|all) 941 942port close 943~~~~~~~~~~ 944 945Close all ports or a specific port: 946 947port close (port_id|all) 948 949port start/stop queue 950~~~~~~~~~~~~~~~~~~~~~ 951 952Start/stop a rx/tx queue on a specific port: 953 954port (port_id) (rxq|txq) (queue_id) (start|stop) 955 956Only take effect when port is started. 957 958port config - speed 959~~~~~~~~~~~~~~~~~~~ 960 961Set the speed and duplex mode for all ports or a specific port: 962 963port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto) 964 965port config - queues/descriptors 966~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 967 968Set number of queues/descriptors for rxq, txq, rxd and txd: 969 970port config all (rxq|txq|rxd|txd) (value) 971 972This is equivalent to the --rxq, --txq, --rxd and --txd command-line options. 973 974port config - max-pkt-len 975~~~~~~~~~~~~~~~~~~~~~~~~~ 976 977Set the maximum packet length: 978 979port config all max-pkt-len (value) 980 981This is equivalent to the --max-pkt-len command-line option. 982 983port config - CRC Strip 984~~~~~~~~~~~~~~~~~~~~~~~ 985 986Set hardware CRC stripping on or off for all ports: 987 988port config all crc-strip (on|off) 989 990CRC stripping is off by default. 991 992The on option is equivalent to the --crc-strip command-line option. 993 994port config - RX Checksum 995~~~~~~~~~~~~~~~~~~~~~~~~~ 996 997Set hardware RX checksum offload to on or off for all ports: 998 999port config all rx-cksum (on|off) 1000 1001Checksum offload is off by default. 1002 1003The on option is equivalent to the --enable-rx-cksum command-line option. 1004 1005port config - VLAN 1006~~~~~~~~~~~~~~~~~~ 1007 1008Set hardware VLAN on or off for all ports: 1009 1010port config all hw-vlan (on|off) 1011 1012Hardware VLAN is on by default. 1013 1014The off option is equivalent to the --disable-hw-vlan command-line option. 1015 1016port config - VLAN filter 1017~~~~~~~~~~~~~~~~~~~~~~~~~ 1018 1019Set hardware VLAN filter on or off for all ports: 1020 1021port config all hw-vlan-filter (on|off) 1022 1023Hardware VLAN filter is on by default. 1024 1025The off option is equivalent to the --disable-hw-vlan-filter command-line option. 1026 1027port config - VLAN strip 1028~~~~~~~~~~~~~~~~~~~~~~~~ 1029 1030Set hardware VLAN strip on or off for all ports: 1031 1032port config all hw-vlan-strip (on|off) 1033 1034Hardware VLAN strip is on by default. 1035 1036The off option is equivalent to the --disable-hw-vlan-strip command-line option. 1037 1038port config - VLAN extend 1039~~~~~~~~~~~~~~~~~~~~~~~~~ 1040 1041Set hardware VLAN extend on or off for all ports: 1042 1043port config all hw-vlan-extend (on|off) 1044 1045Hardware VLAN extend is off by default. 1046 1047The off option is equivalent to the --disable-hw-vlan-extend command-line option. 1048 1049port config - Drop Packets 1050~~~~~~~~~~~~~~~~~~~~~~~~~~ 1051 1052Set packet drop for packets with no descriptors on or off for all ports: 1053 1054port config all drop-en (on|off) 1055 1056Packet dropping for packets with no descriptors is off by default. 1057 1058The on option is equivalent to the --enable-drop-en command-line option. 1059 1060port config - RSS 1061~~~~~~~~~~~~~~~~~ 1062 1063Set the RSS (Receive Side Scaling) mode on or off: 1064 1065port config all rss (all|ip|tcp|udp|sctp|ether|none) 1066 1067RSS is on by default. 1068 1069The off option is equivalent to the --disable-rss command-line option. 1070 1071port config - RSS Reta 1072~~~~~~~~~~~~~~~~~~~~~~ 1073 1074Set the RSS (Receive Side Scaling) redirection table: 1075 1076port config all rss reta (hash,queue)[,(hash,queue)] 1077 1078port config - DCB 1079~~~~~~~~~~~~~~~~~ 1080 1081Set the DCB mode for an individual port: 1082 1083port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off) 1084 1085The traffic class should be 4 or 8. 1086 1087port config - Burst 1088~~~~~~~~~~~~~~~~~~~ 1089 1090Set the number of packets per burst: 1091 1092port config all burst (value) 1093 1094This is equivalent to the --burst command-line option. 1095 1096port config - Threshold 1097~~~~~~~~~~~~~~~~~~~~~~~ 1098 1099Set thresholds for TX/RX queues: 1100 1101port config all (threshold) (value) 1102 1103Where the threshold type can be: 1104 1105* txpt: Set the prefetch threshold register of the TX rings, 0 <= value <= 255. 1106 1107* txht: Set the host threshold register of the TX rings, 0 <= value <= 255. 1108 1109* txwt: Set the write-back threshold register of the TX rings, 0 <= value <= 255. 1110 1111* rxpt: Set the prefetch threshold register of the RX rings, 0 <= value <= 255. 1112 1113* rxht: Set the host threshold register of the RX rings, 0 <= value <= 255. 1114 1115* rxwt: Set the write-back threshold register of the RX rings, 0 <= value <= 255. 1116 1117* txfreet: Set the transmit free threshold of the TX rings, 0 <= value <= txd. 1118 1119* rxfreet: Set the transmit free threshold of the RX rings, 0 <= value <= rxd. 1120 1121* txrst: Set the transmit RS bit threshold of TX rings, 0 <= value <= txd. 1122 These threshold options are also available from the command-line. 1123 1124Link Bonding Functions 1125---------------------- 1126 1127The Link Bonding functions make it possible to dynamically create and 1128manage link bonding devices from within testpmd interactive prompt. 1129 1130create bonded device 1131~~~~~~~~~~~~~~~~~~~~ 1132 1133Create a new bonding device: 1134 1135create bonded device (mode) (socket) 1136 1137For example, to create a bonded device in mode 1 on socket 0. 1138 1139.. code-block:: console 1140 1141 testpmd> create bonded 1 0 1142 created new bonded device (port X) 1143 1144add bonding slave 1145~~~~~~~~~~~~~~~~~ 1146 1147Adds Ethernet device to a Link Bonding device: 1148 1149add bonding slave (slave id) (port id) 1150 1151For example, to add Ethernet device (port 6) to a Link Bonding device (port 10). 1152 1153.. code-block:: console 1154 1155 testpmd> add bonding slave 6 10 1156 1157 1158remove bonding slave 1159~~~~~~~~~~~~~~~~~~~~ 1160 1161Removes an Ethernet slave device from a Link Bonding device: 1162 1163remove bonding slave (slave id) (port id) 1164 1165For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10). 1166 1167.. code-block:: console 1168 1169 testpmd> remove bonding slave 6 10 1170 1171set bonding mode 1172~~~~~~~~~~~~~~~~ 1173 1174Set the Link Bonding mode of a Link Bonding device: 1175 1176set bonding mode (value) (port id) 1177 1178For example, to set the bonding mode of a Link Bonding device (port 10) to broadcast (mode 3). 1179 1180.. code-block:: console 1181 1182 testpmd> set bonding mode 3 10 1183 1184set bonding primary 1185~~~~~~~~~~~~~~~~~~~ 1186 1187Set an Ethernet slave device as the primary device on a Link Bonding device: 1188 1189set bonding primary (slave id) (port id) 1190 1191For example, to set the Ethernet slave device (port 6) as the primary port of a Link Bonding device (port 10). 1192 1193.. code-block:: console 1194 1195 testpmd> set bonding primary 6 10 1196 1197set bonding mac 1198~~~~~~~~~~~~~~~ 1199 1200Set the MAC address of a Link Bonding device: 1201 1202set bonding mac (port id) (mac) 1203 1204For example, to set the MAC address of a Link Bonding device (port 10) to 00:00:00:00:00:01 1205 1206.. code-block:: console 1207 1208 testpmd> set bonding mac 10 00:00:00:00:00:01 1209 1210set bonding xmit_balance_policy 1211~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1212 1213Set the transmission policy for a Link Bonding device when it is in Balance XOR mode: 1214 1215set bonding xmit_balance_policy (port_id) (l2|l23|l34) 1216 1217For example, set a Link Bonding device (port 10) to use a balance policy of layer 3+4 (IP addresses & UDP ports ) 1218 1219.. code-block:: console 1220 1221 testpmd> set bonding xmit_balance_policy 10 l34 1222 1223 1224set bonding mon_period 1225~~~~~~~~~~~~~~~~~~~~~~ 1226 1227Set the link status monitoring polling period in milliseconds for a bonding device. 1228 1229This adds support for PMD slave devices which do not support link status interrupts. 1230When the mon_period is set to a value greater than 0 then all PMD's which do not support 1231link status ISR will be queried every polling interval to check if their link status has changed. 1232 1233set bonding mon_period (port_id) (value) 1234 1235For example, to set the link status monitoring polling period of bonded device (port 5) to 150ms 1236 1237.. code-block:: console 1238 1239 testpmd> set bonding mon_period 5 150 1240 1241 1242show bonding config 1243~~~~~~~~~~~~~~~~~~~ 1244 1245Show the current configuration of a Link Bonding device: 1246 1247show bonding config (port id) 1248 1249For example, 1250to show the configuration a Link Bonding device (port 9) with 3 slave devices (1, 3, 4) 1251in balance mode with a transmission policy of layer 2+3. 1252 1253.. code-block:: console 1254 1255 testpmd> show bonding config 9 1256 Bonding mode: 2 1257 Balance Xmit Policy: BALANCE_XMIT_POLICY_LAYER23 1258 Slaves (3): [1 3 4] 1259 Active Slaves (3): [1 3 4] 1260 Primary: [3] 1261 1262Register Functions 1263------------------ 1264 1265The Register functions can be used to read from and write to registers on the network card referenced by a port number. 1266This is mainly useful for debugging purposes. 1267Reference should be made to the appropriate datasheet for the network card for details on the register addresses 1268and fields that can be accessed. 1269 1270read reg 1271~~~~~~~~ 1272 1273Display the value of a port register: 1274 1275read reg (port_id) (address) 1276 1277For example, to examine the Flow Director control register (FDIRCTL, 0x0000EE000) on an Intel® 82599 10 GbE Controller: 1278 1279.. code-block:: console 1280 1281 testpmd> read reg 0 0xEE00 1282 port 0 PCI register at offset 0xEE00: 0x4A060029 (1241907241) 1283 1284read regfield 1285~~~~~~~~~~~~~ 1286 1287Display a port register bit field: 1288 1289read regfield (port_id) (address) (bit_x) (bit_y) 1290 1291For example, reading the lowest two bits from the register in the example above: 1292 1293.. code-block:: console 1294 1295 testpmd> read regfield 0 0xEE00 0 1 1296 port 0 PCI register at offset 0xEE00: bits[0, 1]=0x1 (1) 1297 1298read regbit 1299~~~~~~~~~~~ 1300 1301Display a single port register bit: 1302 1303read regbit (port_id) (address) (bit_x) 1304 1305For example, reading the lowest bit from the register in the example above: 1306 1307.. code-block:: console 1308 1309 testpmd> read regbit 0 0xEE00 0 1310 port 0 PCI register at offset 0xEE00: bit 0=1 1311 1312write reg 1313~~~~~~~~~ 1314 1315Set the value of a port register: 1316 1317write reg (port_id) (address) (value) 1318 1319For example, to clear a register: 1320 1321.. code-block:: console 1322 1323 testpmd> write reg 0 0xEE00 0x0 1324 port 0 PCI register at offset 0xEE00: 0x00000000 (0) 1325 1326write regfield 1327~~~~~~~~~~~~~~ 1328 1329Set bit field of a port register: 1330 1331write regfield (port_id) (address) (bit_x) (bit_y) (value) 1332 1333For example, writing to the register cleared in the example above: 1334 1335.. code-block:: console 1336 1337 testpmd> write regfield 0 0xEE00 0 1 2 1338 port 0 PCI register at offset 0xEE00: 0x00000002 (2) 1339 1340write regbit 1341~~~~~~~~~~~~ 1342 1343Set single bit value of a port register: 1344 1345write regbit (port_id) (address) (bit_x) (value) 1346 1347For example, to set the high bit in the register from the example above: 1348 1349.. code-block:: console 1350 1351 testpmd> write regbit 0 0xEE00 31 1 1352 port 0 PCI register at offset 0xEE00: 0x8000000A (2147483658) 1353 1354Filter Functions 1355---------------- 1356 1357This section details the available filter functions that are available. 1358 1359ethertype_filter 1360~~~~~~~~~~~~~~~~~~~~ 1361 1362Add or delete a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue. 1363 1364ethertype_filter (port_id) (add|del) (mac_addr|mac_ignr) (mac_address) ethertype (ether_type) (drop|fwd) queue (queue_id) 1365 1366The available information parameters are: 1367 1368* port_id: the port which the Ethertype filter assigned on. 1369 1370* mac_addr: compare destination mac address. 1371 1372* mac_ignr: ignore destination mac address match. 1373 1374* mac_address: destination mac address to match. 1375 1376* ether_type: the EtherType value want to match, 1377 for example 0x0806 for ARP packet. 0x0800 (IPv4) and 0x86DD (IPv6) are invalid. 1378 1379* queue_id : The receive queue associated with this EtherType filter. It is meaningless when deleting or dropping. 1380 1381Example, to add/remove an ethertype filter rule: 1382 1383.. code-block:: console 1384 1385 testpmd> ethertype_filter 0 add mac_ignr ethertype 0x0806 fwd queue 3 1386 testpmd> ethertype_filter 0 del mac_ignr ethertype 0x0806 fwd queue 3 1387 13882tuple_filter 1389~~~~~~~~~~~~~~~~~ 1390 1391Add or delete a 2-tuple filter, 1392which identify packets by specific protocol and destination TCP/UDP port 1393and forwards packets into one of the receive queues. 1394 13952tuple_filter (port_id) (add|del) dst_port (dst_port_value) protocol (protocol_value) 1396mask (mask_value) tcp_flags (tcp_flags_value) priority (prio_value) queue (queue_id) 1397 1398The available information parameters are: 1399 1400* port_id: the port which the 2-tuple filter assigned on. 1401 1402* dst_port_value: destination port in L4. 1403 1404* protocol_value: IP L4 protocol. 1405 1406* mask_value: participates in the match or not by bit for field above, 1b means participate. 1407 1408* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP). 1409 1410* prio_value: priority of this filter. 1411 1412* queue_id: The receive queue associated with this 2-tuple filter. 1413 1414Example, to add/remove an 2tuple filter rule: 1415 1416.. code-block:: console 1417 1418 testpmd> 2tuple_filter 0 add dst_port 32 protocol 0x06 mask 0x03 tcp_flags 0x02 priority 3 queue 3 1419 testpmd> 2tuple_filter 0 del dst_port 32 protocol 0x06 mask 0x03 tcp_flags 0x02 priority 3 queue 3 1420 14215tuple_filter 1422~~~~~~~~~~~~~~~~~ 1423 1424Add or delete a 5-tuple filter, 1425which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port) 1426and routes packets into one of the receive queues. 1427 14285tuple_filter (port_id) (add|del) dst_ip (dst_address) src_ip (src_address) dst_port (dst_port_value) src_port (src_port_value) 1429protocol (protocol_value) mask (mask_value) tcp_flags (tcp_flags_value) priority (prio_value) queue (queue_id) 1430 1431The available information parameters are: 1432 1433* port_id: the port which the 5-tuple filter assigned on. 1434 1435* dst_address: destination IP address. 1436 1437* src_address: source IP address. 1438 1439* dst_port_value: TCP/UDP destination port. 1440 1441* src_port_value: TCP/UDP source port. 1442 1443* protocol_value: L4 protocol. 1444 1445* mask_value: participates in the match or not by bit for field above, 1b means participate 1446 1447* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP). 1448 1449* prio_value: the priority of this filter. 1450 1451* queue_id: The receive queue associated with this 5-tuple filter. 1452 1453Example, to add/remove an 5tuple filter rule: 1454 1455.. code-block:: console 1456 1457 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 1458 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 1459 1460syn_filter 1461~~~~~~~~~~~~~~ 1462 1463By SYN filter, TCP packets whose *SYN* flag is set can be forwarded to a separate queue. 1464 1465syn_filter (port_id) (add|del) priority (high|low) queue (queue_id) 1466 1467The available information parameters are: 1468 1469* port_id: the port which the SYN filter assigned on. 1470 1471* high: this SYN filter has higher priority than other filters. 1472 1473* low: this SYN filter has lower priority than other filters. 1474 1475* queue_id: The receive queue associated with this SYN filter 1476 1477Example: 1478 1479.. code-block:: console 1480 1481 testpmd> syn_filter 0 add priority high queue 3 1482 1483flex_filter 1484~~~~~~~~~~~ 1485 1486With flex filter, packets can be recognized by any arbitrary pattern within the first 128 bytes of the packet 1487and routes packets into one of the receive queues. 1488 1489flex_filter (port_id) (add|del) len (len_value) bytes (bytes_value) 1490mask (mask_value) priority (prio_value) queue (queue_id) 1491 1492The available information parameters are: 1493 1494* port_id: the port which the Flex filter is assigned on. 1495 1496* len_value: filter length in bytes, no greater than 128. 1497 1498* bytes_value: a string in hexadecimal, means the value the flex filter needs to match. 1499 1500* mask_value: a string in hexadecimal, bit 1 means corresponding byte participates in the match. 1501 1502* prio_value: the priority of this filter. 1503 1504* queue_id: the receive queue associated with this Flex filter. 1505 1506Example: 1507 1508.. code-block:: console 1509 1510 testpmd> flex_filter 0 add len 16 bytes 0x00000000000000000000000008060000 1511 mask 000C priority 3 queue 3 1512 1513 testpmd> flex_filter 0 del len 16 bytes 0x00000000000000000000000008060000 1514 mask 000C priority 3 queue 3 1515 1516flow_director_filter 1517~~~~~~~~~~~~~~~~~~~~ 1518 1519The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues. 1520 1521Two types of filtering are supported which are referred to as Perfect Match and Signature filters, the match mode 1522is set by the --pkt-filter-mode command-line parameter: 1523 1524* Perfect match filters. 1525 The hardware checks a match between the masked fields of the received packets and the programmed filters. 1526 1527* Signature filters. 1528 The hardware checks a match between a hash-based signature of the masked fields of the received packet. 1529 1530The Flow Director filters can match the different fields for different type of packet: flow type, specific input set 1531per flow type and the flexible payload. The Flow Director can also mask out parts of all of these fields so that filters 1532are only applied to certain fields or parts of the fields. 1533 1534Different NICs may have different capabilities, command show port fdir (port_id) can be used to acquire the information. 1535 1536# Commands to add flow director filters of different flow types. 1537 1538flow_director_filter (port_id) (add|del|update) flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag) 1539src (src_ip_address) dst (dst_ip_address) vlan (vlan_value) flexbytes (flexbytes_value) 1540(drop|fwd) queue (queue_id) fd_id (fd_id_value) 1541 1542flow_director_filter (port_id) (add|del|update) flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) 1543src (src_ip_address) (src_port) dst (dst_ip_address) (dst_port) vlan (vlan_value) 1544flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) 1545 1546flow_director_filter (port_id) (add|del|update) flow (ipv4-sctp|ipv6-sctp) 1547src (src_ip_address) (src_port) dst (dst_ip_address) (dst_port) tag (verification_tag) 1548vlan (vlan_value) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) 1549 1550For example, to add an ipv4-udp flow type filter: 1551 1552.. code-block:: console 1553 1554 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 1555 1556For example, add an ipv4-other flow type filter: 1557 1558.. code-block:: console 1559 1560 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 1561 1562flush_flow_director 1563~~~~~~~~~~~~~~~~~~~ 1564 1565flush all flow director filters on a device: 1566 1567flush_flow_director (port_id) 1568 1569Example, to flush all flow director filter on port 0: 1570 1571.. code-block:: console 1572 1573 testpmd> flush_flow_director 0 1574 1575flow_director_mask 1576~~~~~~~~~~~~~~~~~~ 1577 1578set flow director's masks on match input set 1579 1580flow_director_mask (port_id) vlan (vlan_value) src_mask (ipv4_src) (ipv6_src) (src_port) dst_mask (ipv4_dst) (ipv6_dst) (dst_port) 1581 1582Example, to set flow director mask on port 0: 1583 1584.. code-block:: console 1585 1586 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 1587 1588 1589flow_director_flex_mask 1590~~~~~~~~~~~~~~~~~~~~~~~ 1591 1592set masks of flow director's flexible payload based on certain flow type: 1593 1594flow_director_flex_mask (port_id) flow (none|ipv4-other|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| 1595ipv6-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|all) (mask) 1596 1597Example, to set flow director's flex mask for all flow type on port 0: 1598 1599.. code-block:: console 1600 1601 testpmd> flow_director_flex_mask 0 flow all (0xff,0xff,0,0,0,0,0,0,0,0,0,0,0,0,0,0) 1602 1603 1604flow_director_flex_payload 1605~~~~~~~~~~~~~~~~~~~~~~~~~~ 1606 1607Configure flexible payload selection. 1608 1609flow_director_flex_payload (port_id) (raw|l2|l3|l4) (config) 1610 1611For example, to select the first 16 bytes from the offset 4 (bytes) of packet's payload as flexible payload. 1612 1613.. code-block:: console 1614 1615 testpmd> flow_director_flex_payload 0 l4 (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) 1616 1617get_sym_hash_ena_per_port 1618~~~~~~~~~~~~~~~~~~~~~~~~~ 1619 1620Get symmetric hash enable configuration per port. 1621 1622get_sym_hash_ena_per_port (port_id) 1623 1624For example, to get symmetric hash enable configuration of port 1. 1625 1626.. code-block:: console 1627 1628 testpmd> get_sym_hash_ena_per_port 1 1629 1630set_sym_hash_ena_per_port 1631~~~~~~~~~~~~~~~~~~~~~~~~~ 1632 1633Set symmetric hash enable configuration per port to enable or disable. 1634 1635set_sym_hash_ena_per_port (port_id) (enable|disable) 1636 1637For example, to set symmetric hash enable configuration of port 1 to enable. 1638 1639.. code-block:: console 1640 1641 testpmd> set_sym_hash_ena_per_port 1 enable 1642 1643get_hash_global_config 1644~~~~~~~~~~~~~~~~~~~~~~ 1645 1646Get the global configurations of hash filters. 1647 1648get_hash_global_config (port_id) 1649 1650For example, to get the global configurations of hash filters of port 1. 1651 1652.. code-block:: console 1653 1654 testpmd> get_hash_global_config 1 1655 1656set_hash_global_config 1657~~~~~~~~~~~~~~~~~~~~~~ 1658 1659Set the global configurations of hash filters. 1660 1661set_hash_global_config (port_id) (toeplitz|simple_xor|default) 1662(ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload) 1663(enable|disable) 1664 1665For example, to enable simple_xor for flow type of ipv6 on port 2. 1666 1667.. code-block:: console 1668 1669 testpmd> set_hash_global_config 2 simple_xor ipv6 enable 1670