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