X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Ftestpmd_app_ug%2Ftestpmd_funcs.rst;h=aa77a91599baf3ad798636efa6d4d835d99befe5;hb=4a9a307a990c7318e649cd36da28665b87242e0e;hp=70fe9ea0db3659da1a57fe6884fe2b9560bc5e39;hpb=a56335925919d26c81dec8accf31c39d2f790c5a;p=dpdk.git diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 70fe9ea0db..aa77a91599 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1,5 +1,5 @@ .. BSD LICENSE - Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + Copyright(c) 2010-2015 Intel Corporation. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -138,16 +138,32 @@ For example: ********************* Infos for port 0 ********************* MAC address: XX:XX:XX:XX:XX:XX + Connect to socket: 0 + memory allocation on the socket: 0 Link status: up - Link speed: 10000 Mbps + Link speed: 40000 Mbps Link duplex: full-duplex Promiscuous mode: enabled Allmulticast mode: disabled - Maximum number of MAC addresses: 127 + Maximum number of MAC addresses: 64 + Maximum number of MAC addresses of hash filtering: 0 VLAN offload: strip on filter on qinq(extend) off + Redirection table size: 512 + Supported flow types: + ipv4-frag + ipv4-tcp + ipv4-udp + ipv4-sctp + ipv4-other + ipv6-frag + ipv6-tcp + ipv6-udp + ipv6-sctp + ipv6-other + l2_payload show port rss reta ~~~~~~~~~~~~~~~~~~ @@ -423,6 +439,8 @@ rx_vlan add (vlan_id|all) (port_id) .. note:: VLAN filter must be set on that port. VLAN ID < 4096. + Depending on the NIC used, number of vlan_ids may be limited to the maximum entries + in VFTA table. This is important if enabling all vlan_ids. rx_vlan rm ~~~~~~~~~~ @@ -485,14 +503,24 @@ rx_vxlan_port rm (udp_port) (port_id) tx_vlan set ~~~~~~~~~~~ -Set hardware insertion of VLAN ID in packets sent on a port: +Set hardware insertion of VLAN IDs in packets sent on a port: -tx_vlan set (vlan_id) (port_id) +tx_vlan set (port_id) vlan_id[, vlan_id_outer] + +.. code-block:: console + + Set a single VLAN ID (5) insertion on port 0. + + tx_vlan set 0 5 + + Set double VLAN ID (inner: 2, outer: 3) insertion on port 1. + + tx_vlan set 1 2 3 tx_vlan set pvid ~~~~~~~~~~~~~~~~ -Set port based hardware insertion of VLAN ID in pacekts sent on a port: +Set port based hardware insertion of VLAN ID in packets sent on a port: tx_vlan set pvid (port_id) (vlan_id) (on|off) @@ -503,28 +531,60 @@ Disable hardware insertion of a VLAN header in packets sent on a port: tx_vlan reset (port_id) -tx_checksum set -~~~~~~~~~~~~~~~ +csum set +~~~~~~~~ Select hardware or software calculation of the checksum when transmitting a packet using the csum forward engine: -tx_cksum set (ip|udp|tcp|sctp|vxlan) +csum set (ip|udp|tcp|sctp|outer-ip) (hw|sw) (port_id) + +- ip|udp|tcp|sctp always concern the inner layer. -ip|udp|tcp|sctp always concern the inner layer. -vxlan concerns the outer IP and UDP layer (in case the packet -is recognized as a vxlan packet by the forward engine) +- outer-ip concerns the outer IP layer (only for IPv4) in case the packet is recognized + as a tunnel packet by the forward engine (vxlan, gre and ipip are + supported). See "csum parse-tunnel" command. .. note:: Check the NIC Datasheet for hardware limits. -tx_checksum show -~~~~~~~~~~~~~~~~ +csum parse-tunnel +~~~~~~~~~~~~~~~~~ + +Define how tunneled packets should be handled by the csum forward +engine. + +csum parse-tunnel (on|off) (tx_port_id) + +If enabled, the csum forward engine will try to recognize supported +tunnel headers (vxlan, gre, ipip). + +If disabled, treat tunnel packets as non-tunneled packets (a inner +header is handled as a packet payload). + +.. note:: + + The port argument is the TX port like in the "csum set" command. + +Example: + +Consider a packet as following: +"eth_out/ipv4_out/udp_out/vxlan/eth_in/ipv4_in/tcp_in" + +- If parse-tunnel is enabled, the ip|udp|tcp|sctp parameters of "csum + set" command are about inner headers (here ipv4_in and tcp_in), and the + outer-ip parameter is about outer headers (here ipv4_out). + +- If parse-tunnel is disabled, the ip|udp|tcp|sctp parameters of "csum + set" command are about outer headers, here ipv4_out and udp_out. + +csum show +~~~~~~~~~ Display tx checksum offload configuration: -tx_checksum show (port_id) +csum show (port_id) tso set ~~~~~~~ @@ -534,7 +594,8 @@ Enable TCP Segmentation Offload in csum forward engine: tso set (segsize) (port_id) .. note:: - Please check the NIC datasheet for HW limits + + Check the NIC datasheet for hardware limits tso show ~~~~~~~~ @@ -574,6 +635,8 @@ The available information categories are: * icmpecho: receives a burst of packets, lookup for IMCP echo requests and, if any, send back ICMP echo replies. +* ieee1588: demonstrate L2 IEEE1588 V2 PTP timestamping for RX and TX. Requires ``CONFIG_RTE_LIBRTE_IEEE1588=y``. + Note: TX timestamping is only available in the "Full Featured" TX path. To force ``testpmd`` into this mode set ``--txqflags=0``. Example: @@ -721,9 +784,13 @@ set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask) set port - mirror rule ~~~~~~~~~~~~~~~~~~~~~~ -Set port or vlan type mirror rule for a port. +Set pool or vlan type mirror rule for a port: -set port (port_id) mirror-rule (rule_id) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off) +set port (port_id) mirror-rule (rule_id) (pool-mirror-up|pool-mirror-down|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off) + +Set link mirror rule for a port: + +set port (port_id) mirror-rule (rule_id) (uplink-mirror|downlink-mirror) dst-pool (pool_id) (on|off) For example to enable mirror traffic with vlan 0,1 to pool 0: @@ -807,6 +874,144 @@ The following sections show functions for configuring ports. Port configuration changes only become active when forwarding is started/restarted. +port attach +~~~~~~~~~~~ + +Attach a port specified by pci address or virtual device args. + +To attach a new pci device, the device should be recognized by kernel first. +Then it should be moved under DPDK management. +Finally the port can be attached to testpmd. + +For example, to move a pci device using ixgbe under DPDK management: + +.. code-block:: console + + ./tools/dpdk_nic_bind.py --status + + Network devices using DPDK-compatible driver + ============================================ + + + Network devices using kernel driver + =================================== + 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused= + + ./tools/dpdk_nic_bind.py -b igb_uio 0000:0a:00.0 + ./tools/dpdk_nic_bind.py --status + + Network devices using DPDK-compatible driver + ============================================ + 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused= + +To attach a port created by virtual device, above steps are not needed. + +port attach (identifier) + +For example, to attach a port whose pci address is 0000:0a:00.0. + +.. code-block:: console + + testpmd> port attach 0000:0a:00.0 + Attaching a new port... + EAL: PCI device 0000:0a:00.0 on NUMA socket -1 + EAL: probe driver: 8086:10fb rte_ixgbe_pmd + EAL: PCI memory mapped at 0x7f83bfa00000 + EAL: PCI memory mapped at 0x7f83bfa80000 + PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 18, SFP+: 5 + PMD: eth_ixgbe_dev_init(): port 0 vendorID=0x8086 deviceID=0x10fb + Port 0 is attached. Now total ports is 1 + Done + testpmd> + +For example, to attach a port created by pcap PMD. + +.. code-block:: console + + testpmd> port attach eth_pcap0 + Attaching a new port... + PMD: Initializing pmd_pcap for eth_pcap0 + PMD: Creating pcap-backed ethdev on numa socket 0 + Port 0 is attached. Now total ports is 1 + Done + testpmd> + +In this case, identifier is "eth_pcap0". +This identifier format is the same as "--vdev" format of DPDK applications. + +For example, to re-attach a bonded port which has been previously detached, +the mode and slave parameters must be given. + +.. code-block:: console + + testpmd> port attach eth_bond_testpmd_0,mode=0,slave=1 + Attaching a new port... + EAL: Initializing pmd_bond for eth_bond_testpmd_0 + EAL: Create bonded device eth_bond_testpmd_0 on port 0 in mode 0 on socket 0. + Port 0 is attached. Now total ports is 1 + Done + + +port detach +~~~~~~~~~~~ + +Detach a specific port. + +Before detaching a port, the port should be closed. + +port detach (port_id) + +For example, to detach a pci device port 0. + +.. code-block:: console + + testpmd> port close 0 + Closing ports... + Done + testpmd> port detach 0 + Detaching a port... + EAL: PCI device 0000:0a:00.0 on NUMA socket -1 + EAL: remove driver: 8086:10fb rte_ixgbe_pmd + EAL: PCI memory unmapped at 0x7f83bfa00000 + EAL: PCI memory unmapped at 0x7f83bfa80000 + Done + testpmd> + +For example, to detach a virtual device port 0. + +.. code-block:: console + + testpmd> port close 0 + Closing ports... + Done + testpmd> port detach 0 + Detaching a port... + PMD: Closing pcap ethdev on numa socket 0 + Port 'eth_pcap0' is detached. Now total ports is 0 + Done + testpmd> + +To remove a pci device completely from the system, first detach the port from testpmd. +Then the device should be moved under kernel management. +Finally the device can be removed using kernel pci hotplug functionality. + +For example, to move a pci device under kernel management: + +.. code-block:: console + + ./tools/dpdk_nic_bind.py -b ixgbe 0000:0a:00.0 + ./tools/dpdk_nic_bind.py --status + + Network devices using DPDK-compatible driver + ============================================ + + + Network devices using kernel driver + =================================== + 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused=igb_uio + +To remove a port created by a virtual device, above steps are not needed. + port start ~~~~~~~~~~ @@ -895,6 +1100,39 @@ Hardware VLAN is on by default. The off option is equivalent to the --disable-hw-vlan command-line option. +port config - VLAN filter +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Set hardware VLAN filter on or off for all ports: + +port config all hw-vlan-filter (on|off) + +Hardware VLAN filter is on by default. + +The off option is equivalent to the --disable-hw-vlan-filter command-line option. + +port config - VLAN strip +~~~~~~~~~~~~~~~~~~~~~~~~ + +Set hardware VLAN strip on or off for all ports: + +port config all hw-vlan-strip (on|off) + +Hardware VLAN strip is on by default. + +The off option is equivalent to the --disable-hw-vlan-strip command-line option. + +port config - VLAN extend +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Set hardware VLAN extend on or off for all ports: + +port config all hw-vlan-extend (on|off) + +Hardware VLAN extend is off by default. + +The off option is equivalent to the --disable-hw-vlan-extend command-line option. + port config - Drop Packets ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -911,7 +1149,7 @@ port config - RSS Set the RSS (Receive Side Scaling) mode on or off: -port config all rss (ip|udp|none) +port config all rss (all|ip|tcp|udp|sctp|ether|none) RSS is on by default. @@ -1073,7 +1311,7 @@ For example, set a Link Bonding device (port 10) to use a balance policy of laye set bonding mon_period ~~~~~~~~~~~~~~~~~~~~~~ -Set the link status monitoring polling period in milliseconds for a bonding devicie. +Set the link status monitoring polling period in milliseconds for a bonding device. This adds support for PMD slave devices which do not support link status interrupts. When the mon_period is set to a value greater than 0 then all PMD's which do not support @@ -1231,79 +1469,51 @@ Example, to add/remove an ethertype filter rule: .. code-block:: console - testpmd> ethertype_filter 0 add mac_ignr ethertype 0x0806 fwd queue 3 - testpmd> ethertype_filter 0 del mac_ignr ethertype 0x0806 fwd queue 3 + testpmd> ethertype_filter 0 add mac_ignr 00:11:22:33:44:55 ethertype 0x0806 fwd queue 3 + testpmd> ethertype_filter 0 del mac_ignr 00:11:22:33:44:55 ethertype 0x0806 fwd queue 3 -add_2tuple_filter +2tuple_filter ~~~~~~~~~~~~~~~~~ -Add a 2-tuple filter, +Add or delete a 2-tuple filter, which identify packets by specific protocol and destination TCP/UDP port and forwards packets into one of the receive queues. -add_2tuple_filter (port_id) protocol (pro_value) (pro_mask) dst_port (port_value) (port_mask) -flags (flg_value) priority (prio_value) queue (queue_id) index (idx) +2tuple_filter (port_id) (add|del) dst_port (dst_port_value) protocol (protocol_value) +mask (mask_value) tcp_flags (tcp_flags_value) priority (prio_value) queue (queue_id) The available information parameters are: * port_id: the port which the 2-tuple filter assigned on. -* pro_value: IP L4 protocol - -* pro_mask: protocol participates in the match or not, 1 means participate +* dst_port_value: destination port in L4. -* port_value: destination port in L4. +* protocol_value: IP L4 protocol. -* port_mask: destination port participates in the match or not, 1 means participate. +* mask_value: participates in the match or not by bit for field above, 1b means participate. -* flg_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP). +* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP). -* prio_value: the priority of this filter. +* prio_value: priority of this filter. -* queue_id: The receive queue associated with this 2-tuple filter +* queue_id: The receive queue associated with this 2-tuple filter. -* index: the index of this 2-tuple filter - -Example: +Example, to add/remove an 2tuple filter rule: .. code-block:: console - testpmd> add_2tuple_filter 0 protocol 0x06 1 dst_port 32 1 flags 0x02 priority 3 queue 3 index 0 - -remove_2tuple_filter -~~~~~~~~~~~~~~~~~~~~ + testpmd> 2tuple_filter 0 add dst_port 32 protocol 0x06 mask 0x03 tcp_flags 0x02 priority 3 queue 3 + testpmd> 2tuple_filter 0 del dst_port 32 protocol 0x06 mask 0x03 tcp_flags 0x02 priority 3 queue 3 -Remove a 2-tuple filter - -remove_2tuple_filter (port_id) index (idx) - -get_2tuple_filter +5tuple_filter ~~~~~~~~~~~~~~~~~ -Get and display a 2-tuple filter - -get_2tuple_filter (port_id) index (idx) - -Example: - -.. code-block:: console - - testpmd> get_2tuple_filter 0 index 0 - - filter[0]: - Destination Port: 0x0020 mask: 1 - protocol: 0x06 mask:1 tcp_flags: 0x02 - priority: 3 queue: 3 - -add_5tuple_filter -~~~~~~~~~~~~~~~~~ - -Add a 5-tuple filter, +Add or delete a 5-tuple filter, which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port) and routes packets into one of the receive queues. -add_5tuple_filter (port_id) dst_ip (dst_address) src_ip (src_address) dst_port (dst_port_value) src_port (src_port_value) -protocol (protocol_value) mask (mask_value) flags (flags_value) priority (prio_value) queue (queue_id) index (idx) +5tuple_filter (port_id) (add|del) dst_ip (dst_address) src_ip (src_address) dst_port (dst_port_value) src_port (src_port_value) +protocol (protocol_value) mask (mask_value) tcp_flags (tcp_flags_value) priority (prio_value) queue (queue_id) The available information parameters are: @@ -1321,54 +1531,25 @@ The available information parameters are: * mask_value: participates in the match or not by bit for field above, 1b means participate -* flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP). +* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP). * prio_value: the priority of this filter. * queue_id: The receive queue associated with this 5-tuple filter. -* index: the index of this 5-tuple filter - -Example: - -.. code-block:: console - - testpmd> add_5tuple_filter 1 dst_ip 2.2.2.5 src_ip 2.2.2.4 dst_port 64 src_port 32 protocol 0x06 mask 0x1F flags 0x0 priority 3 queue 3 index 0 - -remove_5tuple_filter -~~~~~~~~~~~~~~~~~~~~ - -Remove a 5-tuple filter - -remove_5tuple_filter (port_id) index (idx) - -get_5tuple_filter -~~~~~~~~~~~~~~~~~ - -Get and display a 5-tuple filter - -get_5tuple_filter (port_id) index (idx) - -Example: +Example, to add/remove an 5tuple filter rule: .. code-block:: console - testpmd> get_5tuple_filter 1 index 0 - - filter[0]: - Destination IP: 0x02020205 mask: 1 - Source IP: 0x02020204 mask: 1 - Destination Port: 0x0040 mask: 1 - Source Port: 0x0020 mask: 1 - protocol: 0x06 mask: 1 - priority: 3 flags: 0x00 queue: 3 + 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 + 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 -add_syn_filter +syn_filter ~~~~~~~~~~~~~~ -Add SYN filter, which can forward TCP packets whose *SYN* flag is set into a separate queue. +By SYN filter, TCP packets whose *SYN* flag is set can be forwarded to a separate queue. -add_syn_filter (port_id) priority (high|low) queue (queue_id) +syn_filter (port_id) (add|del) priority (high|low) queue (queue_id) The available information parameters are: @@ -1384,98 +1565,40 @@ Example: .. code-block:: console - testpmd> add_syn_filter 0 priority high queue 3, - -remove_syn_filter -~~~~~~~~~~~~~~~~~ - -Remove SYN filter - -remove_syn_filter (port_id) - -get_syn_filter -~~~~~~~~~~~~~~ + testpmd> syn_filter 0 add priority high queue 3 -Get and display SYN filter - -get_syn_filter (port_id) - -Example: - -.. code-block:: console - - testpmd> get_syn_filter 0 - - syn filter: on, priority: high, queue: 3 - -add_flex_filter -~~~~~~~~~~~~~~~ +flex_filter +~~~~~~~~~~~ -Add a Flex filter, -which recognizes any arbitrary pattern within the first 128 bytes of the packet +With flex filter, packets can be recognized by any arbitrary pattern within the first 128 bytes of the packet and routes packets into one of the receive queues. -add_flex_filter (port_id) len (len_value) bytes (bytes_string) mask (mask_value) -priority (prio_value) queue (queue_id) index (idx) +flex_filter (port_id) (add|del) len (len_value) bytes (bytes_value) +mask (mask_value) priority (prio_value) queue (queue_id) The available information parameters are: -* port_id: the port which the Flex filter assigned on. +* port_id: the port which the Flex filter is assigned on. -* len_value: filter length in byte, no greater than 128. +* len_value: filter length in bytes, no greater than 128. -* bytes_string: a sting in format of octal, means the value the flex filter need to match. +* bytes_value: a string in hexadecimal, means the value the flex filter needs to match. -* mask_value: a sting in format of octal, bit 1 means corresponding byte in DWORD participates in the match. +* mask_value: a string in hexadecimal, bit 1 means corresponding byte participates in the match. * prio_value: the priority of this filter. -* queue_id: The receive queue associated with this Flex filter. - -* index: the index of this Flex filter - -Example: - -.. code-block:: console - - testpmd> add_flex_filter 0 len 16 bytes 0x00000000000000000000000008060000 mask 000C priority 3 queue 3 index 0 - -Assign a packet whose 13th and 14th bytes are 0x0806 to queue 3. - -remove_flex_filter -~~~~~~~~~~~~~~~~~~ - -Remove a Flex filter - -remove_flex_filter (port_id) index (idx) - -get_flex_filter -~~~~~~~~~~~~~~~ - -Get and display a Flex filter - -get_flex_filter (port_id) index (idx) +* queue_id: the receive queue associated with this Flex filter. Example: .. code-block:: console - testpmd> get_flex_filter 0 index 0 + testpmd> flex_filter 0 add len 16 bytes 0x00000000000000000000000008060000 + mask 000C priority 3 queue 3 - filter[0]: - - length: 16 - - dword[]: 0x00000000 00000000 00000000 08060000 00000000 00000000 00000000 - 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - - mask[]: - 0b0000000000001100000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000 - - priority: 3 queue: 3 + testpmd> flex_filter 0 del len 16 bytes 0x00000000000000000000000008060000 + mask 000C priority 3 queue 3 flow_director_filter ~~~~~~~~~~~~~~~~~~~~ @@ -1499,29 +1622,32 @@ Different NICs may have different capabilities, command show port fdir (port_id) # Commands to add flow director filters of different flow types. -flow_director_filter (port_id) (add|del|update) flow (ip4|ip4-frag|ip6|ip6-frag) +flow_director_filter (port_id) (add|del|update) flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag) src (src_ip_address) dst (dst_ip_address) vlan (vlan_value) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) -flow_director_filter (port_id) (add|del|update) flow (udp4|tcp4|udp6|tcp6) +flow_director_filter (port_id) (add|del|update) flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) src (src_ip_address) (src_port) dst (dst_ip_address) (dst_port) vlan (vlan_value) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) -flow_director_filter (port_id) (add|del|update) flow (sctp4|sctp6) +flow_director_filter (port_id) (add|del|update) flow (ipv4-sctp|ipv6-sctp) src (src_ip_address) (src_port) dst (dst_ip_address) (dst_port) tag (verification_tag) vlan (vlan_value) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) -For example, to add an udp flow type filter: +flow_director_filter (port_id) (add|del|update) flow l2_payload +ether (ethertype) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value) + +For example, to add an ipv4-udp flow type filter: .. code-block:: console - testpmd> flow_director_filter 0 add flow udp4 src 2.2.2.3 32 dst 2.2.2.5 33 vlan 0x1 flexbytes (0x88,0x48) fwd queue 1 fd_id 1 + 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 -For example, add an ip4 flow type filter: +For example, add an ipv4-other flow type filter: .. code-block:: console - testpmd> flow_director_filter 0 add flow ip4 src 2.2.2.3 dst 2.2.2.5 vlan 0x1 flexbytes (0x88,0x48) fwd queue 1 fd_id 1 + 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 flush_flow_director ~~~~~~~~~~~~~~~~~~~ @@ -1555,9 +1681,10 @@ flow_director_flex_mask set masks of flow director's flexible payload based on certain flow type: -flow_director_flex_mask (port_id) flow (raw|ip4|ip4-frag|tcp4|udp4|sctp4|ip6|ip6-frag|tcp6|udp6|sctp6|all) (mask) +flow_director_flex_mask (port_id) flow (none|ipv4-other|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| +ipv6-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|l2_payload|all) (mask) -Example, to set flow director's udpv4 flex mask on port 0: +Example, to set flow director's flex mask for all flow type on port 0: .. code-block:: console @@ -1571,8 +1698,62 @@ Configure flexible payload selection. flow_director_flex_payload (port_id) (raw|l2|l3|l4) (config) -For example, to select the first 16 bytes from the offset 4 (bytes) of packet’s payload as flexible payload. +For example, to select the first 16 bytes from the offset 4 (bytes) of packet's payload as flexible payload. .. code-block:: console testpmd> flow_director_flex_payload 0 l4 (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) + +get_sym_hash_ena_per_port +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Get symmetric hash enable configuration per port. + +get_sym_hash_ena_per_port (port_id) + +For example, to get symmetric hash enable configuration of port 1. + +.. code-block:: console + + testpmd> get_sym_hash_ena_per_port 1 + +set_sym_hash_ena_per_port +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Set symmetric hash enable configuration per port to enable or disable. + +set_sym_hash_ena_per_port (port_id) (enable|disable) + +For example, to set symmetric hash enable configuration of port 1 to enable. + +.. code-block:: console + + testpmd> set_sym_hash_ena_per_port 1 enable + +get_hash_global_config +~~~~~~~~~~~~~~~~~~~~~~ + +Get the global configurations of hash filters. + +get_hash_global_config (port_id) + +For example, to get the global configurations of hash filters of port 1. + +.. code-block:: console + + testpmd> get_hash_global_config 1 + +set_hash_global_config +~~~~~~~~~~~~~~~~~~~~~~ + +Set the global configurations of hash filters. + +set_hash_global_config (port_id) (toeplitz|simple_xor|default) +(ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload) +(enable|disable) + +For example, to enable simple_xor for flow type of ipv6 on port 2. + +.. code-block:: console + + testpmd> set_hash_global_config 2 simple_xor ipv6 enable