doc: fix ethertype filter example in testpmd guide
[dpdk.git] / doc / guides / testpmd_app_ug / testpmd_funcs.rst
index 70fe9ea..aa77a91 100644 (file)
@@ -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
+    ============================================
+    <none>
+
+    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
+    ============================================
+    <none>
+
+    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 packets 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