ixgbe: fix scalar scattered Rx with CRC
[dpdk.git] / doc / guides / testpmd_app_ug / testpmd_funcs.rst
index 5e62ff9..3f076c8 100644 (file)
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
 ..  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
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -71,7 +71,6 @@ These are divided into sections and can be accessed using help, help section or
         help display    : Displaying port, stats and config information.
         help config     : Configuration information.
         help ports      : Configuring ports.
         help display    : Displaying port, stats and config information.
         help config     : Configuration information.
         help ports      : Configuring ports.
-        help flowdir    : Flow Director filter help.
         help registers  : Reading and setting port registers.
         help filters    : Filters configuration help.
         help all        : All of the above sections.
         help registers  : Reading and setting port registers.
         help filters    : Filters configuration help.
         help all        : All of the above sections.
@@ -139,24 +138,51 @@ For example:
     ********************* Infos for port 0 *********************
 
     MAC address: XX:XX:XX:XX:XX:XX
     ********************* 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 status: up
-    Link speed: 10000 Mbps
+    Link speed: 40000 Mbps
     Link duplex: full-duplex
     Promiscuous mode: enabled
     Allmulticast mode: disabled
     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
     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
+~~~~~~~~~~~~~~~~~~
+
+Display the rss redirection table entry indicated by masks on port X:
+
+show port (port_id) rss reta (size) (mask0, mask1...)
+
+size is used to indicate the hardware supported reta size
 
 show port rss-hash
 ~~~~~~~~~~~~~~~~~~
 
 
 show port rss-hash
 ~~~~~~~~~~~~~~~~~~
 
-Display the RSS hash functions and RSS hash key of port (port_id).
+Display the RSS hash functions and RSS hash key of a port:
 
 
-show port (port_id) rss-hash [key] clear port
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+show port (port_id) rss-hash [key]
+
+clear port
+~~~~~~~~~~
 
 Clear the port statistics for a given port or for all ports:
 
 
 Clear the port statistics for a given port or for all ports:
 
@@ -413,6 +439,8 @@ rx_vlan add (vlan_id|all) (port_id)
 .. note::
 
     VLAN filter must be set on that port. VLAN ID < 4096.
 .. 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
 ~~~~~~~~~~
 
 rx_vlan rm
 ~~~~~~~~~~
@@ -435,38 +463,64 @@ Remove a VLAN ID, from the set of VLAN identifiers filtered for VF(s) for port I
 
 rx_vlan rm (vlan_id) port (port_id) vf (vf_mask)
 
 
 rx_vlan rm (vlan_id) port (port_id) vf (vf_mask)
 
-tx_rate (for Queue)
-~~~~~~~~~~~~~~~~~~~
+rx_vlan set tpid
+~~~~~~~~~~~~~~~~
 
 
-Set TX rate limitation for queue of a port ID:
+Set the outer VLAN TPID for packet filtering on a port:
 
 
-set port (port_id) queue (queue_id) rate (rate_value)
+rx_vlan set tpid (value) (port_id)
 
 
-tx_rate (for VF)
-~~~~~~~~~~~~~~~~
+tunnel_filter add
+~~~~~~~~~~~~~~~~~
 
 
-Set TX rate limitation for queues in VF of a port ID:
+Add a tunnel filter on a port:
 
 
-set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask)
+tunnel_filter add (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
+ (tunnel_type) (filter_type) (tenant_id) (queue_id)
 
 
-rx_vlan set tpid
-~~~~~~~~~~~~~~~~
+tunnel_filter remove
+~~~~~~~~~~~~~~~~~~~~
 
 
-Set the outer VLAN TPID for packet filtering on a port:
+Remove a tunnel filter on a port:
 
 
-rx_vlan set tpid (value) (port_id)
+tunnel_filter rm (port_id) (outer_mac) (inner_mac) (ip_addr) (inner_vlan)
+ (tunnel_type) (filter_type) (tenant_id) (queue_id)
+
+rx_vxlan_port add
+~~~~~~~~~~~~~~~~~
+
+Add an UDP port for VXLAN packet filter on a port:
+
+rx_vxlan_port add (udp_port) (port_id)
+
+rx_vxlan_port remove
+~~~~~~~~~~~~~~~~~~~~
+
+Remove an UDP port for VXLAN packet filter on a port:
+
+rx_vxlan_port rm (udp_port) (port_id)
 
 tx_vlan set
 ~~~~~~~~~~~
 
 
 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 (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 (vlan_id) (port_id)
+    tx_vlan set 1 2 3
 
 tx_vlan set pvid
 ~~~~~~~~~~~~~~~~
 
 
 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)
 
 
 tx_vlan set pvid (port_id) (vlan_id) (on|off)
 
@@ -477,27 +531,78 @@ Disable hardware insertion of a VLAN header in packets sent on a port:
 
 tx_vlan reset (port_id)
 
 
 tx_vlan reset (port_id)
 
-tx_checksum set mask
-~~~~~~~~~~~~~~~~~~~~
+csum set
+~~~~~~~~
+
+Select hardware or software calculation of the checksum when
+transmitting a packet using the csum forward engine:
+
+csum set (ip|udp|tcp|sctp|outer-ip) (hw|sw) (port_id)
 
 
-Enable hardware insertion of checksum offload with a 4-bit mask, 0x0 - 0xF, in packets sent on a port:
+- ip|udp|tcp|sctp always concern the inner layer.
 
 
-tx_checksum set (mask) (port_id)
+- 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.
 
 
-The bits in the mask are:
+.. note::
+
+    Check the NIC Datasheet for hardware limits.
+
+csum parse-tunnel
+~~~~~~~~~~~~~~~~~
 
 
-bit 0 - if set insert ip checksum offload
+Define how tunneled packets should be handled by the csum forward
+engine.
 
 
-bit 1 - if set insert udp checksum offload
+csum parse-tunnel (on|off) (tx_port_id)
 
 
-bit 2 - if set insert tcp checksum offload
+If enabled, the csum forward engine will try to recognize supported
+tunnel headers (vxlan, gre, ipip).
 
 
-bit 3 - if set insert sctp checksum offload
+If disabled, treat tunnel packets as non-tunneled packets (a inner
+header is handled as a packet payload).
 
 .. note::
 
 
 .. note::
 
-    Check the NIC Datasheet for hardware limits.
+   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:
+
+csum show (port_id)
+
+tso set
+~~~~~~~
+
+Enable TCP Segmentation Offload in csum forward engine:
+
+tso set (segsize) (port_id)
+
+.. note::
+
+   Check the NIC datasheet for hardware limits
+
+tso show
+~~~~~~~~
 
 
+Display the status of TCP Segmentation Offload:
+
+tso show (port_id)
 
 set fwd
 ~~~~~~~
 
 set fwd
 ~~~~~~~
@@ -530,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.
 
 
 *   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:
 
 
 Example:
 
@@ -635,6 +742,14 @@ Set VF receive/transmit from a port:
 
 set port (port_id) vf (vf_id) (rx|tx) (on|off)
 
 
 set port (port_id) vf (vf_id) (rx|tx) (on|off)
 
+set port - mac address filter (for VF)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add/Remove unicast or multicast MAC addr filter for a VF:
+
+set port (port_id) vf (vf_id) (mac_addr)
+ (exact-mac|exact-mac-vlan|hashmac|hashmac-vlan) (on|off)
+
 set port - rx mode(for VF)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 set port - rx mode(for VF)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -652,12 +767,30 @@ The available receive modes are:
 
 *  MPE: accepts all multicast packets
 
 
 *  MPE: accepts all multicast packets
 
+set port - tx_rate (for Queue)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Set TX rate limitation for queue of a port ID:
+
+set port (port_id) queue (queue_id) rate (rate_value)
+
+set port - tx_rate (for VF)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Set TX rate limitation for queues in VF of a port ID:
+
+set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask)
+
 set port - mirror rule
 ~~~~~~~~~~~~~~~~~~~~~~
 
 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-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) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)
+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:
 
 
 For example to enable mirror traffic with vlan 0,1 to pool 0:
 
@@ -718,894 +851,909 @@ Show the bypass configuration for a bypass enabled NIC using the lowest port on
 
 show bypass config (port_id)
 
 
 show bypass config (port_id)
 
-add_ethertype_filter
-~~~~~~~~~~~~~~~~~~~~
+set link up
+~~~~~~~~~~~
 
 
-Add a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue.
+Set link up for a port.
 
 
-add_ethertype_filter (port_id) ethertype (eth_value) priority (enable|disable) (pri_value) queue (queue_id) index (idx)
+set link-up port (port id)
 
 
-The available information parameters are:
+set link down
+~~~~~~~~~~~~~
 
 
-*   port_id:  the port which the Ethertype filter assigned on.
+Set link down for a port.
 
 
-*   eth_value: the EtherType value want to match,
-    for example 0x0806 for ARP packet. 0x0800 (IPv4) and 0x86DD (IPv6) are invalid.
+set link-down port (port id)
+
+Port Functions
+--------------
+
+The following sections show functions for configuring ports.
 
 
-*   enable: user priority participates in the match.
+.. note::
 
 
-*   disable: user priority doesn't participate in the match.
+    Port configuration changes only become active when forwarding is started/restarted.
 
 
-*   pri_value: user priority value that want to match.
+port attach
+~~~~~~~~~~~
 
 
-*   queue_id : The receive queue associated with this EtherType filter
+Attach a port specified by pci address or virtual device args.
 
 
-*   index: the index of this EtherType filter
+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.
 
 
-Example:
+For example, to move a pci device using ixgbe under DPDK management:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> add_ethertype_filter 0 ethertype 0x0806 priority disable 0 queue 3 index 0
-    Assign ARP packet to receive queue 3
+    ./tools/dpdk_nic_bind.py --status
 
 
-remove_ethertype_filter
-~~~~~~~~~~~~~~~~~~~~~~~
+    Network devices using DPDK-compatible driver
+    ============================================
+    <none>
 
 
-Remove a L2 Ethertype filter
+    Network devices using kernel driver
+    ===================================
+    0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused=
 
 
-remove_ethertype_filter (port_id) index (idx)
+    ./tools/dpdk_nic_bind.py -b igb_uio 0000:0a:00.0
+    ./tools/dpdk_nic_bind.py --status
 
 
-get_ethertype_filter
-~~~~~~~~~~~~~~~~~~~~
+    Network devices using DPDK-compatible driver
+    ============================================
+    0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=
 
 
-Get and display a L2 Ethertype filter
+To attach a port created by virtual device, above steps are not needed.
 
 
-get_ethertype_filter (port_id) index (idx)
+port attach (identifier)
 
 
-Example:
+For example, to attach a port whose pci address is 0000:0a:00.0.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> get_ethertype_filter 0 index 0
+    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>
 
 
-    filter[0]:
-        ethertype: 0x0806
-        priority: disable, 0
-        queue: 3
+For example, to attach a port created by pcap PMD.
 
 
-add_2tuple_filter
-~~~~~~~~~~~~~~~~~
+.. code-block:: console
 
 
-Add a 2-tuple filter,
-which identify packets by specific protocol and destination TCP/UDP port
-and forwards packets into one of the receive queues.
+    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>
 
 
-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)
+In this case, identifier is "eth_pcap0".
+This identifier format is the same as "--vdev" format of DPDK applications.
 
 
-The available information parameters are:
+For example, to re-attach a bonded port which has been previously detached,
+the mode and slave parameters must be given.
 
 
-*   port_id: the port which the 2-tuple filter assigned on.
+.. 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
 
 
-*   pro_value: IP L4 protocol
 
 
-*   pro_mask: protocol participates in the match or not, 1 means participate
+port detach
+~~~~~~~~~~~
 
 
-*   port_value: destination port in L4.
+Detach a specific port.
 
 
-*   port_mask: destination port participates in the match or not, 1 means participate.
+Before detaching a port, the port should be closed.
 
 
-*   flg_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP).
+port detach (port_id)
 
 
-*   prio_value: the priority of this filter.
+For example, to detach a pci device port 0.
 
 
-*   queue_id: The receive queue associated with this 2-tuple filter
+.. code-block:: console
 
 
-*   index: the index of this 2-tuple filter
+    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>
 
 
-Example:
+For example, to detach a virtual device port 0.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> add_2tuple_filter 0 protocol 0x06 1 dst_port 32 1 flags 0x02 priority 3 queue 3 index 0
+    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>
 
 
-remove_2tuple_filter
-~~~~~~~~~~~~~~~~~~~~
+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.
 
 
-Remove a 2-tuple filter
+For example, to move a pci device under kernel management:
 
 
-remove_2tuple_filter (port_id) index (idx)
+.. code-block:: console
 
 
-get_2tuple_filter
-~~~~~~~~~~~~~~~~~
+    ./tools/dpdk_nic_bind.py -b ixgbe 0000:0a:00.0
+    ./tools/dpdk_nic_bind.py --status
 
 
-Get and display a 2-tuple filter
+    Network devices using DPDK-compatible driver
+    ============================================
+    <none>
 
 
-get_2tuple_filter (port_id) index (idx)
+    Network devices using kernel driver
+    ===================================
+    0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused=igb_uio
 
 
-Example:
+To remove a port created by a virtual device, above steps are not needed.
 
 
-.. code-block:: console
+port start
+~~~~~~~~~~
 
 
-    testpmd> get_2tuple_filter 0 index 0
+Start all ports or a specific port:
 
 
-    filter[0]:
-        Destination Port: 0x0020 mask: 1
-        protocol: 0x06 mask:1 tcp_flags: 0x02
-        priority: 3   queue: 3
+port start (port_id|all)
 
 
-add_5tuple_filter
-~~~~~~~~~~~~~~~~~
+port stop
+~~~~~~~~~
 
 
-Add 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.
+Stop all ports or a specific port:
 
 
-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)
+port stop (port_id|all)
 
 
-The available information parameters are:
+port close
+~~~~~~~~~~
 
 
-*   port_id: the port which the 5-tuple filter assigned on.
+Close all ports or a specific port:
 
 
-*   dst_address: destination IP address.
+port close (port_id|all)
 
 
-*   src_address: source IP address.
+port start/stop queue
+~~~~~~~~~~~~~~~~~~~~~
 
 
-*   dst_port_value: TCP/UDP destination port.
+Start/stop a rx/tx queue on a specific port:
 
 
-*   src_port_value: TCP/UDP source port.
+port (port_id) (rxq|txq) (queue_id) (start|stop)
 
 
-*   protocol_value: L4 protocol.
+Only take effect when port is started.
 
 
-*   mask_value: participates in the match or not by bit for field above, 1b means participate
+port config - speed
+~~~~~~~~~~~~~~~~~~~
 
 
-*   flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP).
+Set the speed and duplex mode for all ports or a specific port:
 
 
-*   prio_value: the priority of this filter.
+port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto)
 
 
-*   queue_id: The receive queue associated with this 5-tuple filter.
+port config - queues/descriptors
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-*   index: the index of this 5-tuple filter
+Set number of queues/descriptors for rxq, txq, rxd and txd:
 
 
-Example:
+port config all (rxq|txq|rxd|txd) (value)
 
 
-.. code-block:: console
+This is equivalent to the --rxq, --txq, --rxd and --txd command-line options.
 
 
-    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
+port config - max-pkt-len
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-remove_5tuple_filter
-~~~~~~~~~~~~~~~~~~~~
+Set the maximum packet length:
 
 
-Remove a 5-tuple filter
+port config all max-pkt-len (value)
 
 
-remove_5tuple_filter (port_id) index (idx)
+This is equivalent to the --max-pkt-len command-line option.
 
 
-get_5tuple_filter
-~~~~~~~~~~~~~~~~~
+port config - CRC Strip
+~~~~~~~~~~~~~~~~~~~~~~~
 
 
-Get and display a 5-tuple filter
+Set hardware CRC stripping on or off for all ports:
 
 
-get_5tuple_filter (port_id) index (idx)
+port config all crc-strip (on|off)
 
 
-Example:
+CRC stripping is off by default.
 
 
-.. code-block:: console
+The on option is equivalent to the --crc-strip command-line option.
 
 
-    testpmd> get_5tuple_filter 1 index 0
+port config - RX Checksum
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-    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
+Set hardware RX checksum offload to on or off for all ports:
 
 
-add_syn_filter
-~~~~~~~~~~~~~~
+port config all rx-cksum (on|off)
 
 
-Add SYN filter, which can forward TCP packets whose *SYN* flag is set into a separate queue.
+Checksum offload is off by default.
 
 
-add_syn_filter (port_id) priority (high|low) queue (queue_id)
+The on option is equivalent to the --enable-rx-cksum command-line option.
 
 
-The available information parameters are:
+port config - VLAN
+~~~~~~~~~~~~~~~~~~
 
 
-*   port_id: the port which the SYN filter assigned on.
+Set hardware VLAN on or off for all ports:
 
 
-*   high: this SYN filter has higher priority than other filters.
+port config all hw-vlan (on|off)
 
 
-*   low: this SYN filter has lower priority than other filters.
+Hardware VLAN is on by default.
 
 
-*   queue_id: The receive queue associated with this SYN filter
+The off option is equivalent to the --disable-hw-vlan command-line option.
 
 
-Example:
+port config - VLAN filter
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-.. code-block:: console
+Set hardware VLAN filter on or off for all ports:
 
 
-    testpmd> add_syn_filter 0 priority high queue 3,
+port config all hw-vlan-filter (on|off)
 
 
-remove_syn_filter
-~~~~~~~~~~~~~~~~~
+Hardware VLAN filter is on by default.
 
 
-Remove SYN filter
+The off option is equivalent to the --disable-hw-vlan-filter command-line option.
 
 
-remove_syn_filter (port_id)
+port config - VLAN strip
+~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-get_syn_filter
-~~~~~~~~~~~~~~
+Set hardware VLAN strip on or off for all ports:
 
 
-Get and display SYN filter
+port config all hw-vlan-strip (on|off)
 
 
-get_syn_filter (port_id)
+Hardware VLAN strip is on by default.
 
 
-Example:
+The off option is equivalent to the --disable-hw-vlan-strip command-line option.
 
 
-.. code-block:: console
+port config - VLAN extend
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-    testpmd> get_syn_filter 0
+Set hardware VLAN extend on or off for all ports:
 
 
-    syn filter: on, priority: high, queue: 3
+port config all hw-vlan-extend (on|off)
 
 
-add_flex_filter
-~~~~~~~~~~~~~~~
+Hardware VLAN extend is off by default.
 
 
-Add a Flex filter,
-which recognizes any arbitrary pattern within the first 128 bytes of the packet
-and routes packets into one of the receive queues.
+The off option is equivalent to the --disable-hw-vlan-extend command-line option.
 
 
-add_flex_filter (port_id) len (len_value) bytes (bytes_string) mask (mask_value)
-priority (prio_value) queue (queue_id) index (idx)
+port config - Drop Packets
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-The available information parameters are:
+Set packet drop for packets with no descriptors on or off for all ports:
 
 
-*   port_id: the port which the Flex filter assigned on.
+port config all drop-en (on|off)
 
 
-*   len_value: filter length in byte, no greater than 128.
+Packet dropping for packets with no descriptors is off by default.
 
 
-*   bytes_string: a sting in format of octal, means the value the flex filter need to match.
+The on option is equivalent to the --enable-drop-en command-line option.
 
 
-*   mask_value: a sting in format of octal, bit 1 means corresponding byte in DWORD participates in the match.
+port config - RSS
+~~~~~~~~~~~~~~~~~
 
 
-*   prio_value: the priority of this filter.
+Set the RSS (Receive Side Scaling) mode on or off:
 
 
-*   queue_id: The receive queue associated with this Flex filter.
+port config all rss (all|ip|tcp|udp|sctp|ether|none)
 
 
-*   index: the index of this Flex filter
+RSS is on by default.
 
 
-Example:
+The off option is equivalent to the --disable-rss command-line option.
 
 
-.. code-block:: console
+port config - RSS Reta
+~~~~~~~~~~~~~~~~~~~~~~
 
 
-   testpmd> add_flex_filter 0 len 16 bytes 0x00000000000000000000000008060000 mask 000C priority 3 queue 3 index 0
+Set the RSS (Receive Side Scaling) redirection table:
 
 
-Assign a packet whose 13th and 14th bytes are 0x0806 to queue 3.
+port config all rss reta (hash,queue)[,(hash,queue)]
 
 
-remove_flex_filter
-~~~~~~~~~~~~~~~~~~
+port config - DCB
+~~~~~~~~~~~~~~~~~
 
 
-Remove a Flex filter
+Set the DCB mode for an individual port:
 
 
-remove_flex_filter (port_id) index (idx)
+port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off)
 
 
-get_flex_filter
-~~~~~~~~~~~~~~~
+The traffic class should be 4 or 8.
 
 
-Get and display a Flex filter
+port config - Burst
+~~~~~~~~~~~~~~~~~~~
 
 
-get_flex_filter (port_id) index (idx)
+Set the number of packets per burst:
 
 
-Example:
+port config all burst (value)
 
 
-.. code-block:: console
+This is equivalent to the --burst command-line option.
 
 
-    testpmd> get_flex_filter 0 index 0
+port config - Threshold
+~~~~~~~~~~~~~~~~~~~~~~~
 
 
-    filter[0]:
+Set thresholds for TX/RX queues:
 
 
-        length: 16
+port config all (threshold) (value)
 
 
-        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
+Where the threshold type can be:
 
 
-        mask[]:
-    0b0000000000001100000000000000000000000000000000000000000000000000000000
-    0000000000000000000000000000000000000000000000000000000000
+*   txpt: Set the prefetch threshold register of the TX rings, 0 <= value <= 255.
 
 
-        priority: 3   queue: 3
+*   txht: Set the host threshold register of the TX rings, 0 <= value <= 255.
 
 
-set link up
-~~~~~~~~~~~
+*   txwt: Set the write-back threshold register of the TX rings, 0 <= value <= 255.
 
 
-Set link up for a port.
+*   rxpt: Set the prefetch threshold register of the RX rings, 0 <= value <= 255.
 
 
-set link-up port (port id)
+*   rxht: Set the host threshold register of the RX rings, 0 <= value <= 255.
 
 
-set link down
-~~~~~~~~~~~~~
+*   rxwt: Set the write-back threshold register of the RX rings, 0 <= value <= 255.
 
 
-Set link down for a port.
-
-set link-down port (port id)
-
-Port Functions
---------------
+*   txfreet: Set the transmit free threshold of the TX rings, 0 <= value <= txd.
 
 
-The following sections show functions for configuring ports.
+*   rxfreet: Set the transmit free threshold of the RX rings, 0 <= value <= rxd.
 
 
-.. note::
+*   txrst: Set the transmit RS bit threshold of TX rings, 0 <= value <= txd.
+    These threshold options are also available from the command-line.
 
 
-    Port configuration changes only become active when forwarding is started/restarted.
+Link Bonding Functions
+----------------------
 
 
-port start
-~~~~~~~~~~
+The Link Bonding functions make it possible to dynamically create and
+manage link bonding devices from within testpmd interactive prompt.
 
 
-Start all ports or a specific port:
+create bonded device
+~~~~~~~~~~~~~~~~~~~~
 
 
-port start (port_id|all)
+Create a new bonding device:
 
 
-port stop
-~~~~~~~~~
+create bonded device (mode) (socket)
 
 
-Stop all ports or a specific port:
+For example, to create a bonded device in mode 1 on socket 0.
 
 
-port stop (port_id|all)
+.. code-block:: console
 
 
-port close
-~~~~~~~~~~
+    testpmd> create bonded 1 0
+    created new bonded device (port X)
 
 
-Close all ports or a specific port:
+add bonding slave
+~~~~~~~~~~~~~~~~~
 
 
-port close (port_id|all)
+Adds Ethernet device to a Link Bonding device:
 
 
-port config - speed
-~~~~~~~~~~~~~~~~~~~
+add bonding slave (slave id) (port id)
 
 
-Set the speed and duplex mode for all ports or a specific port:
+For example, to add Ethernet device (port 6) to a Link Bonding device (port 10).
 
 
-port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto)
+.. code-block:: console
 
 
-port config - queues/descriptors
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    testpmd> add bonding slave 6 10
 
 
-Set number of queues/descriptors for rxq, txq, rxd and txd:
 
 
-port config all (rxq|txq|rxd|txd) (value)
+remove bonding slave
+~~~~~~~~~~~~~~~~~~~~
 
 
-This is equivalent to the --rxq, --txq, --rxd and --txd command-line options.
+Removes an Ethernet slave device from a Link Bonding device:
 
 
-port config - max-pkt-len
-~~~~~~~~~~~~~~~~~~~~~~~~~
+remove bonding slave (slave id) (port id)
 
 
-Set the maximum packet length:
+For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10).
 
 
-port config all max-pkt-len (value)
+.. code-block:: console
 
 
-This is equivalent to the --max-pkt-len command-line option.
+    testpmd> remove bonding slave 6 10
 
 
-port config - CRC Strip
-~~~~~~~~~~~~~~~~~~~~~~~
+set bonding mode
+~~~~~~~~~~~~~~~~
 
 
-Set hardware CRC stripping on or off for all ports:
+Set the Link Bonding mode of a Link Bonding device:
 
 
-port config all crc-strip (on|off)
+set bonding mode (value) (port id)
 
 
-CRC stripping is off by default.
+For example, to set the bonding mode of a Link Bonding device (port 10) to broadcast (mode 3).
 
 
-The on option is equivalent to the --crc-strip command-line option.
+.. code-block:: console
 
 
-port config - RX Checksum
-~~~~~~~~~~~~~~~~~~~~~~~~~
+    testpmd> set bonding mode 3 10
 
 
-Set hardware RX checksum offload to on or off for all ports:
+set bonding primary
+~~~~~~~~~~~~~~~~~~~
 
 
-port config all rx-cksum (on|off)
+Set an Ethernet slave device as the primary device on a Link Bonding device:
 
 
-Checksum offload is off by default.
+set bonding primary (slave id) (port id)
 
 
-The on option is equivalent to the --enable-rx-cksum command-line option.
+For example, to set the Ethernet slave device (port 6) as the primary port of a Link Bonding device (port 10).
 
 
-port config - VLAN
-~~~~~~~~~~~~~~~~~~
+.. code-block:: console
 
 
-Set hardware VLAN on or off for all ports:
+    testpmd> set bonding primary 6 10
 
 
-port config all hw-vlan (on|off)
+set bonding mac
+~~~~~~~~~~~~~~~
 
 
-Hardware VLAN is on by default.
+Set the MAC address of a Link Bonding device:
 
 
-The off option is equivalent to the --disable-hw-vlan command-line option.
+set bonding mac (port id) (mac)
 
 
-port config - Drop Packets
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+For example, to set the MAC address of a Link Bonding device (port 10) to 00:00:00:00:00:01
 
 
-Set packet drop for packets with no descriptors on or off for all ports:
+.. code-block:: console
 
 
-port config all drop-en (on|off)
+    testpmd> set bonding mac 10 00:00:00:00:00:01
 
 
-Packet dropping for packets with no descriptors is off by default.
+set bonding xmit_balance_policy
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-The on option is equivalent to the --enable-drop-en command-line option.
+Set the transmission policy for a Link Bonding device when it is in Balance XOR mode:
 
 
-port config - RSS
-~~~~~~~~~~~~~~~~~
+set bonding xmit_balance_policy (port_id) (l2|l23|l34)
 
 
-Set the RSS (Receive Side Scaling) mode on or off:
+For example, set a Link Bonding device (port 10) to use a balance policy of layer 3+4 (IP addresses & UDP ports )
 
 
-port config all rss (ip|udp|none)
+.. code-block:: console
 
 
-RSS is on by default.
+    testpmd> set bonding xmit_balance_policy 10 l34
 
 
-The off option is equivalent to the --disable-rss command-line option.
 
 
-port config - RSS Reta
+set bonding mon_period
 ~~~~~~~~~~~~~~~~~~~~~~
 
 ~~~~~~~~~~~~~~~~~~~~~~
 
-Set the RSS (Receive Side Scaling) redirection table:
+Set the link status monitoring polling period in milliseconds for a bonding device.
 
 
-port config all rss reta (hash,queue)[,(hash,queue)]
+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
+link status ISR will be queried every polling interval to check if their link status has changed.
 
 
-port config - DCB
-~~~~~~~~~~~~~~~~~
+set bonding mon_period (port_id) (value)
 
 
-Set the DCB mode for an individual port:
+For example, to set the link status monitoring polling period of bonded device (port 5) to 150ms
 
 
-port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off)
+.. code-block:: console
 
 
-The traffic class should be 4 or 8.
+    testpmd> set bonding mon_period 5 150
 
 
-port config - Burst
-~~~~~~~~~~~~~~~~~~~
 
 
-Set the number of packets per burst:
+show bonding config
+~~~~~~~~~~~~~~~~~~~
 
 
-port config all burst (value)
+Show the current configuration of a Link Bonding device:
 
 
-This is equivalent to the --burst command-line option.
+show bonding config (port id)
 
 
-port config - Threshold
-~~~~~~~~~~~~~~~~~~~~~~~
+For example,
+to show the configuration a Link Bonding device (port 9) with 3 slave devices (1, 3, 4)
+in balance mode with a transmission policy of layer 2+3.
 
 
-Set thresholds for TX/RX queues:
+.. code-block:: console
 
 
-port config all (threshold) (value)
+    testpmd> show bonding config 9
+        Bonding mode: 2
+        Balance Xmit Policy: BALANCE_XMIT_POLICY_LAYER23
+        Slaves (3): [1 3 4]
+        Active Slaves (3): [1 3 4]
+        Primary: [3]
 
 
-Where the threshold type can be:
+Register Functions
+------------------
 
 
-*   txpt: Set the prefetch threshold register of the TX rings, 0 <= value <= 255.
+The Register functions can be used to read from and write to registers on the network card referenced by a port number.
+This is mainly useful for debugging purposes.
+Reference should be made to the appropriate datasheet for the network card for details on the register addresses
+and fields that can be accessed.
 
 
-*   txht: Set the host threshold register of the TX rings, 0 <= value <= 255.
+read reg
+~~~~~~~~
 
 
-*   txwt: Set the write-back threshold register of the TX rings, 0 <= value <= 255.
+Display the value of a port register:
 
 
-*   rxpt: Set the prefetch threshold register of the RX rings, 0 <= value <= 255.
+read reg (port_id) (address)
 
 
-*   rxht: Set the host threshold register of the RX rings, 0 <= value <= 255.
+For example, to examine the Flow Director control register (FDIRCTL, 0x0000EE000) on an IntelĀ® 82599 10 GbE Controller:
 
 
-*   rxwt: Set the write-back threshold register of the RX rings, 0 <= value <= 255.
+.. code-block:: console
 
 
-*   txfreet: Set the transmit free threshold of the TX rings, 0 <= value <= txd.
+    testpmd> read reg 0 0xEE00
+    port 0 PCI register at offset 0xEE00: 0x4A060029 (1241907241)
 
 
-*   rxfreet: Set the transmit free threshold of the RX rings, 0 <= value <= rxd.
+read regfield
+~~~~~~~~~~~~~
 
 
-*   txrst: Set the transmit RS bit threshold of TX rings, 0 <= value <= txd.
-    These threshold options are also available from the command-line.
+Display a port register bit field:
 
 
-Flow Director Functions
------------------------
+read regfield (port_id) (address) (bit_x) (bit_y)
 
 
-The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
+For example, reading the lowest two bits from the register in the example above:
 
 
-Two types of filtering are supported which are referred to as Perfect Match and Signature filters:
+.. code-block:: console
 
 
-*   Perfect match filters.
-    The hardware checks a match between the masked fields of the received packets and the programmed filters.
+    testpmd> read regfield 0 0xEE00 0 1
+    port 0 PCI register at offset 0xEE00: bits[0, 1]=0x1 (1)
 
 
-*   Signature filters.
-    The hardware checks a match between a hash-based signature of the masked fields of the received packet.
+read regbit
+~~~~~~~~~~~
 
 
-The Flow Director filters can match the following fields in a packet:
+Display a single port register bit:
 
 
-*   Source IP and destination IP addresses.
+read regbit (port_id) (address) (bit_x)
 
 
-*   Source port and destination port numbers (for UDP and TCP packets).
+For example, reading the lowest bit from the register in the example above:
 
 
-*   IPv4/IPv6 and UDP/ TCP/SCTP protocol match.
+.. code-block:: console
 
 
-*   VLAN header.
+    testpmd> read regbit 0 0xEE00 0
+    port 0 PCI register at offset 0xEE00: bit 0=1
 
 
-*   Flexible 2-byte tuple match anywhere in the first 64 bytes of the packet.
+write reg
+~~~~~~~~~
 
 
-The Flow Director can also mask out parts of all of these fields so that filters are only applied to certain fields
-or parts of the fields.
-For example it is possible to mask out sub-nets of IP addresses or to ignore VLAN headers.
+Set the value of a port register:
 
 
-In the following sections, several common parameters are used in the Flow Director filters.
-These are explained below:
+write reg (port_id) (address) (value)
 
 
-*   src: A pair of source address values. The source IP, in IPv4 or IPv6 format, and the source port:
+For example, to clear a register:
 
 
-    src 192.168.0.1 1024
+.. code-block:: console
 
 
-    src 2001:DB8:85A3:0:0:8A2E:370:7000 1024
+    testpmd> write reg 0 0xEE00 0x0
+    port 0 PCI register at offset 0xEE00: 0x00000000 (0)
 
 
-*   dst: A pair of destination address values. The destination IP, in IPv4 or IPv6 format, and the destination port.
+write regfield
+~~~~~~~~~~~~~~
 
 
-*   flexbytes: A 2-byte tuple to be matched within the first 64 bytes of a packet.
+Set bit field of a port register:
 
 
-The offset where the match occurs is set by the --pkt-filter-flexbytes-offset command-line parameter
-and is counted from the first byte of the destination Ethernet MAC address.
-The default offset is 0xC bytes, which is the "Type" word in the MAC header.
-Typically, the flexbyte value is set to 0x0800 to match the IPv4 MAC type or 0x86DD to match IPv6.
-These values change when a VLAN tag is added.
+write regfield (port_id) (address) (bit_x) (bit_y) (value)
 
 
-*   vlan: The VLAN header to match in the packet.
+For example, writing to the register cleared in the example above:
 
 
-*   queue: The index of the RX queue to route matched packets to.
+.. code-block:: console
 
 
-*   soft: The 16-bit value in the MBUF flow director ID field for RX packets matching the filter.
+    testpmd> write regfield 0 0xEE00 0 1 2
+    port 0 PCI register at offset 0xEE00: 0x00000002 (2)
 
 
-add_signature_filter
-~~~~~~~~~~~~~~~~~~~~
+write regbit
+~~~~~~~~~~~~
 
 
-Add a signature filter:
+Set single bit value of a port register:
 
 
-# Command is displayed on several lines for clarity.
+write regbit (port_id) (address) (bit_x) (value)
 
 
-add_signature_filter (port_id) (ip|udp|tcp|sctp)
+For example, to set the high bit in the register from the example above:
 
 
-    src (src_ip_address) (src_port)
+.. code-block:: console
 
 
-    dst (dst_ip_address) (dst_port)
+    testpmd> write regbit 0 0xEE00 31 1
+    port 0 PCI register at offset 0xEE00: 0x8000000A (2147483658)
 
 
-    flexbytes (flexbytes_values)
+Filter Functions
+----------------
 
 
-    vlan (vlan_id) queue (queue_id)
+This section details the available filter functions that are available.
 
 
-upd_signature_filter
+ethertype_filter
 ~~~~~~~~~~~~~~~~~~~~
 
 ~~~~~~~~~~~~~~~~~~~~
 
-Update a signature filter:
+Add or delete a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue.
 
 
-# Command is displayed on several lines for clarity.
+ethertype_filter (port_id) (add|del) (mac_addr|mac_ignr) (mac_address) ethertype (ether_type) (drop|fwd) queue (queue_id)
 
 
-upd_signature_filter (port_id) (ip|udp|tcp|sctp)
-
-    src (src_ip_address) (src_port)
-
-    dst (dst_ip_address) (dst_port)
-
-    flexbytes (flexbytes_values)
-
-    vlan (vlan_id) queue (queue_id)
-
-rm_signature_filter
-~~~~~~~~~~~~~~~~~~~
+The available information parameters are:
 
 
-Remove a signature filter:
+*   port_id:  the port which the Ethertype filter assigned on.
 
 
-# Command is displayed on several lines for clarity.
+*   mac_addr: compare destination mac address.
 
 
-rm_signature_filter (port_id) (ip|udp|tcp|sctp)
+*   mac_ignr: ignore destination mac address match.
 
 
-    src (src_ip_address) (src_port)
+*   mac_address: destination mac address to match.
 
 
-    dst (dst_ip_address) (dst_port)
+*   ether_type: the EtherType value want to match,
+    for example 0x0806 for ARP packet. 0x0800 (IPv4) and 0x86DD (IPv6) are invalid.
 
 
-    flexbytes (flexbytes_values)
+*   queue_id : The receive queue associated with this EtherType filter. It is meaningless when deleting or dropping.
 
 
-    vlan (vlan_id)
+Example, to add/remove an ethertype filter rule:
 
 
-add_perfect_filter
-~~~~~~~~~~~~~~~~~~
+.. code-block:: console
 
 
-Add a perfect filter:
+    testpmd> ethertype_filter 0 add mac_ignr ethertype 0x0806 fwd queue 3
+    testpmd> ethertype_filter 0 del mac_ignr ethertype 0x0806 fwd queue 3
 
 
-# Command is displayed on several lines for clarity.
+2tuple_filter
+~~~~~~~~~~~~~~~~~
 
 
-add_perfect_filter (port_id) (ip|udp|tcp|sctp)
+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.
 
 
-    src (src_ip_address) (src_port)
+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)
 
 
-    dst (dst_ip_address) (dst_port)
+The available information parameters are:
 
 
-    flexbytes (flexbytes_values)
+*   port_id: the port which the 2-tuple filter assigned on.
 
 
-    vlan (vlan_id) queue (queue_id) soft (soft_id)
+*   dst_port_value: destination port in L4.
 
 
-upd_perfect_filter
-~~~~~~~~~~~~~~~~~~
+*   protocol_value: IP L4 protocol.
 
 
-Update a perfect filter:
+*   mask_value: participates in the match or not by bit for field above, 1b means participate.
 
 
-# Command is displayed on several lines for clarity.
+*   tcp_flags_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP).
 
 
-upd_perfect_filter (port_id) (ip|udp|tcp|sctp)
+*   prio_value: priority of this filter.
 
 
-    src (src_ip_address) (src_port)
+*   queue_id: The receive queue associated with this 2-tuple filter.
 
 
-    dst (dst_ip_address) (dst_port)
+Example, to add/remove an 2tuple filter rule:
 
 
-    flexbytes (flexbytes_values)
+.. code-block:: console
 
 
-    vlan (vlan_id) queue (queue_id)
+    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
 
 
-rm_perfect_filter
+5tuple_filter
 ~~~~~~~~~~~~~~~~~
 
 ~~~~~~~~~~~~~~~~~
 
-Remove a perfect filter:
-
-rm_perfect_filter (port_id) (ip|udp|tcp|sctp)
-
-    src (src_ip_address) (src_port)
+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.
 
 
-    dst (dst_ip_address) (dst_port)
+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)
 
 
-    flexbytes (flexbytes_values)
+The available information parameters are:
 
 
-    vlan (vlan_id) soft (soft_id)
+*   port_id: the port which the 5-tuple filter assigned on.
 
 
-set_masks_filter
-~~~~~~~~~~~~~~~~
+*   dst_address: destination IP address.
 
 
-Set IPv4 filter masks:
+*   src_address: source IP address.
 
 
-# Command is displayed on several lines for clarity.
+*   dst_port_value: TCP/UDP destination port.
 
 
-set_masks_filter (port_id) only_ip_flow (0|1)
+*   src_port_value: TCP/UDP source port.
 
 
-    src_mask (ip_src_mask) (src_port_mask)
+*   protocol_value: L4 protocol.
 
 
-    dst_mask (ip_dst_mask) (dst_port_mask)
+*   mask_value: participates in the match or not by bit for field above, 1b means participate
 
 
-    flexbytes (0|1) vlan_id (0|1) vlan_prio (0|1)
+*   tcp_flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP).
 
 
-set_ipv6_masks_filter
-~~~~~~~~~~~~~~~~~~~~~
+*   prio_value: the priority of this filter.
 
 
-Set IPv6 filter masks:
+*   queue_id: The receive queue associated with this 5-tuple filter.
 
 
-# Command is displayed on several lines for clarity.
+Example, to add/remove an 5tuple filter rule:
 
 
-set_ipv6_masks_filter (port_id) only_ip_flow (0|1)
+.. code-block:: console
 
 
-    src_mask (ip_src_mask) (src_port_mask)
+    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
 
 
-    dst_mask (ip_dst_mask) (dst_port_mask)
+syn_filter
+~~~~~~~~~~~~~~
 
 
-    flexbytes (0|1) vlan_id (0|1) vlan_prio (0|1)
+By SYN filter, TCP packets whose *SYN* flag is set can be forwarded to a separate queue.
 
 
-    compare_dst (0|1)
+syn_filter (port_id) (add|del) priority (high|low) queue (queue_id)
 
 
-Link Bonding Functions
-----------------------
+The available information parameters are:
 
 
-The Link Bonding functions make it possible to dynamically create and
-manage link bonding devices from within testpmd interactive prompt.
+*   port_id: the port which the SYN filter assigned on.
 
 
-create bonded device
-~~~~~~~~~~~~~~~~~~~~
+*   high: this SYN filter has higher priority than other filters.
 
 
-Create a new bonding device:
+*   low: this SYN filter has lower priority than other filters.
 
 
-create bonded device (mode) (socket)
+*   queue_id: The receive queue associated with this SYN filter
 
 
-For example, to create a bonded device in mode 1 on socket 0.
+Example:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> create bonded 1 0
-    created new bonded device (port X)
+    testpmd> syn_filter 0 add priority high queue 3
 
 
-add bonding slave
-~~~~~~~~~~~~~~~~~
+flex_filter
+~~~~~~~~~~~
 
 
-Adds Ethernet device to a Link Bonding device:
+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 bonding slave (slave id) (port id)
+flex_filter (port_id) (add|del) len (len_value) bytes (bytes_value)
+mask (mask_value) priority (prio_value) queue (queue_id)
 
 
-For example, to add Ethernet device (port 6) to a Link Bonding device (port 10).
+The available information parameters are:
 
 
-.. code-block:: console
+*   port_id: the port which the Flex filter is assigned on.
 
 
-    testpmd> add bonding slave 6 10
+*   len_value: filter length in bytes, no greater than 128.
 
 
+*   bytes_value: a string in hexadecimal, means the value the flex filter needs to match.
 
 
-remove bonding slave
-~~~~~~~~~~~~~~~~~~~~
+*   mask_value: a string in hexadecimal, bit 1 means corresponding byte participates in the match.
 
 
-Removes an Ethernet slave device from a Link Bonding device:
+*   prio_value: the priority of this filter.
 
 
-remove bonding slave (slave id) (port id)
+*   queue_id: the receive queue associated with this Flex filter.
 
 
-For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10).
+Example:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> remove bonding slave 6 10
-
-set bonding mode
-~~~~~~~~~~~~~~~~
+   testpmd> flex_filter 0 add len 16 bytes 0x00000000000000000000000008060000
+        mask 000C priority 3 queue 3
 
 
-Set the Link Bonding mode of a Link Bonding device:
+   testpmd> flex_filter 0 del len 16 bytes 0x00000000000000000000000008060000
+        mask 000C priority 3 queue 3
 
 
-set bonding mode (value) (port id)
-
-For example, to set the bonding mode of a Link Bonding device (port 10) to broadcast (mode 3).
+flow_director_filter
+~~~~~~~~~~~~~~~~~~~~
 
 
-.. code-block:: console
+The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
 
 
-    testpmd> set bonding mode 3 10
+Two types of filtering are supported which are referred to as Perfect Match and Signature filters, the match mode
+is set by the --pkt-filter-mode command-line parameter:
 
 
-set bonding primary
-~~~~~~~~~~~~~~~~~~~
+*   Perfect match filters.
+    The hardware checks a match between the masked fields of the received packets and the programmed filters.
 
 
-Set an Ethernet slave device as the primary device on a Link Bonding device:
+*   Signature filters.
+    The hardware checks a match between a hash-based signature of the masked fields of the received packet.
 
 
-set bonding primary (slave id) (port id)
+The Flow Director filters can match the different fields for different type of packet: flow type, specific input set
+per flow type and the flexible payload. The Flow Director can also mask out parts of all of these fields so that filters
+are only applied to certain fields or parts of the fields.
 
 
-For example, to set the Ethernet slave device (port 6) as the primary port of a Link Bonding device (port 10).
+Different NICs may have different capabilities, command show port fdir (port_id) can be used to acquire the information.
 
 
-.. code-block:: console
+# Commands to add flow director filters of different flow types.
 
 
-    testpmd> set bonding primary 6 10
+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)
 
 
-set bonding mac
-~~~~~~~~~~~~~~~
+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)
 
 
-Set the MAC address of a Link Bonding device:
+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)
 
 
-set bonding mac (port id) (mac)
+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 set the MAC address of a Link Bonding device (port 10) to 00:00:00:00:00:01
+For example, to add an ipv4-udp flow type filter:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> set bonding mac 10 00:00:00:00:00:01
+    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
 
 
-set bonding xmit_balance_policy
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set the transmission policy for a Link Bonding device when it is in Balance XOR mode:
-
-set bonding xmit_balance_policy (port_id) (l2|l23|l34)
-
-For example, set a Link Bonding device (port 10) to use a balance policy of layer 3+4 (IP addresses & UDP ports )
+For example, add an ipv4-other flow type filter:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> set bonding xmit_balance_policy 10 l34
-
-
-set bonding mon_period
-~~~~~~~~~~~~~~~~~~~~~~
+    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
 
 
-Set the link status monitoring polling period in milliseconds for a bonding devicie.
+flush_flow_director
+~~~~~~~~~~~~~~~~~~~
 
 
-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
-link status ISR will be queried every polling interval to check if their link status has changed.
+flush all flow director filters on a device:
 
 
-set bonding mon_period (port_id) (value)
+flush_flow_director (port_id)
 
 
-For example, to set the link status monitoring polling period of bonded device (port 5) to 150ms
+Example, to flush all flow director filter on port 0:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> set bonding mon_period 5 150
+   testpmd> flush_flow_director 0
 
 
+flow_director_mask
+~~~~~~~~~~~~~~~~~~
 
 
-show bonding config
-~~~~~~~~~~~~~~~~~~~
-
-Show the current configuration of a Link Bonding device:
+set flow director's masks on match input set
 
 
-show bonding config (port id)
+flow_director_mask (port_id) vlan (vlan_value) src_mask (ipv4_src) (ipv6_src) (src_port) dst_mask (ipv4_dst) (ipv6_dst) (dst_port)
 
 
-For example,
-to show the configuration a Link Bonding device (port 9) with 3 slave devices (1, 3, 4)
-in balance mode with a transmission policy of layer 2+3.
+Example, to set flow director mask on port 0:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> show bonding config 9
-        Bonding mode: 2
-        Balance Xmit Policy: BALANCE_XMIT_POLICY_LAYER23
-        Slaves (3): [1 3 4]
-        Active Slaves (3): [1 3 4]
-        Primary: [3]
+   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
 
 
-Register Functions
-------------------
 
 
-The Register functions can be used to read from and write to registers on the network card referenced by a port number.
-This is mainly useful for debugging purposes.
-Reference should be made to the appropriate datasheet for the network card for details on the register addresses
-and fields that can be accessed.
+flow_director_flex_mask
+~~~~~~~~~~~~~~~~~~~~~~~
 
 
-read reg
-~~~~~~~~
+set masks of flow director's flexible payload based on certain flow type:
 
 
-Display the value of a port register:
+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)
 
 
-read reg (port_id) (address)
-
-For example, to examine the Flow Director control register (FDIRCTL, 0x0000EE000) on an IntelĀ® 82599 10 GbE Controller:
+Example, to set flow director's flex mask for all flow type on port 0:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> read reg 0 0xEE00
-    port 0 PCI register at offset 0xEE00: 0x4A060029 (1241907241)
+   testpmd> flow_director_flex_mask 0 flow all (0xff,0xff,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
 
 
-read regfield
-~~~~~~~~~~~~~
 
 
-Display a port register bit field:
+flow_director_flex_payload
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-read regfield (port_id) (address) (bit_x) (bit_y)
+Configure flexible payload selection.
 
 
-For example, reading the lowest two bits from the register in the example above:
+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.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> read regfield 0 0xEE00 0 1
-    port 0 PCI register at offset 0xEE00: bits[0, 1]=0x1 (1)
+   testpmd> flow_director_flex_payload 0 l4 (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
 
 
-read regbit
-~~~~~~~~~~~
+get_sym_hash_ena_per_port
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-Display a single port register bit:
+Get symmetric hash enable configuration per port.
 
 
-read regbit (port_id) (address) (bit_x)
+get_sym_hash_ena_per_port (port_id)
 
 
-For example, reading the lowest bit from the register in the example above:
+For example, to get symmetric hash enable configuration of port 1.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> read regbit 0 0xEE00 0
-    port 0 PCI register at offset 0xEE00: bit 0=1
+    testpmd> get_sym_hash_ena_per_port 1
 
 
-write reg
-~~~~~~~~~
+set_sym_hash_ena_per_port
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
-Set the value of a port register:
+Set symmetric hash enable configuration per port to enable or disable.
 
 
-write reg (port_id) (address) (value)
+set_sym_hash_ena_per_port (port_id) (enable|disable)
 
 
-For example, to clear a register:
+For example, to set symmetric hash enable configuration of port 1 to enable.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> write reg 0 0xEE00 0x0
-    port 0 PCI register at offset 0xEE00: 0x00000000 (0)
+    testpmd> set_sym_hash_ena_per_port 1 enable
 
 
-write regfield
-~~~~~~~~~~~~~~
+get_hash_global_config
+~~~~~~~~~~~~~~~~~~~~~~
 
 
-Set bit field of a port register:
+Get the global configurations of hash filters.
 
 
-write regfield (port_id) (address) (bit_x) (bit_y) (value)
+get_hash_global_config (port_id)
 
 
-For example, writing to the register cleared in the example above:
+For example, to get the global configurations of hash filters of port 1.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> write regfield 0 0xEE00 0 1 2
-    port 0 PCI register at offset 0xEE00: 0x00000002 (2)
+    testpmd> get_hash_global_config 1
 
 
-write regbit
-~~~~~~~~~~~~
+set_hash_global_config
+~~~~~~~~~~~~~~~~~~~~~~
 
 
-Set single bit value of a port register:
+Set the global configurations of hash filters.
 
 
-write regbit (port_id) (address) (bit_x) (value)
+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 set the high bit in the register from the example above:
+For example, to enable simple_xor for flow type of ipv6 on port 2.
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    testpmd> write regbit 0 0xEE00 31 1
-    port 0 PCI register at offset 0xEE00: 0x8000000A (2147483658)
+    testpmd> set_hash_global_config 2 simple_xor ipv6 enable