X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Ftestpmd_app_ug%2Ftestpmd_funcs.rst;h=1d040cbb228db2b0a5d9ffde724edc46ea4eae65;hb=75ba29fd143c117e781a884d47484cd6e0546bad;hp=c0d0033b743e0f100485449f0344bfea96b85495;hpb=ac718398f477cea795e6e6f8695b3e110a158b92;p=dpdk.git diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst old mode 100755 new mode 100644 index c0d0033b74..1d040cbb22 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -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 flowdir : Flow Director filter help. help registers : Reading and setting port registers. help filters : Filters configuration help. help all : All of the above sections. @@ -103,7 +102,7 @@ stop quit ~~~~ -Quit to prompt in Linux or reboot on Baremetal: +Quit to prompt: quit @@ -139,24 +138,51 @@ 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 +~~~~~~~~~~~~~~~~~~ + +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 ~~~~~~~~~~~~~~~~~~ -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: @@ -413,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 ~~~~~~~~~~ @@ -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) -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 ~~~~~~~~~~~ -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 ~~~~~~~~~~~~~~~~ -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) @@ -477,27 +531,78 @@ Disable hardware insertion of a VLAN header in packets sent on a port: 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 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:: - 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 ~~~~~~~ @@ -635,6 +740,14 @@ Set VF receive/transmit from a port: 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) ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -652,12 +765,30 @@ The available receive modes are: * 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 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: @@ -718,875 +849,828 @@ Show the bypass configuration for a bypass enabled NIC using the lowest port on show bypass config (port_id) -add_ethertype_filter -~~~~~~~~~~~~~~~~~~~~ - -Add a L2 Ethertype filter, which identify packets by their L2 Ethertype mainly assign them to a receive queue. - -add_ethertype_filter (port_id) ethertype (eth_value) priority (enable|disable) (pri_value) queue (queue_id) index (idx) - -The available information parameters are: +set link up +~~~~~~~~~~~ -* port_id: the port which the Ethertype filter assigned on. +Set link up 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-up port (port id) -* enable: user priority participates in the match. +set link down +~~~~~~~~~~~~~ -* disable: user priority doesn't participate in the match. +Set link down for a port. -* pri_value: user priority value that want to match. +set link-down port (port id) -* queue_id : The receive queue associated with this EtherType filter +Port Functions +-------------- -* index: the index of this EtherType filter +The following sections show functions for configuring ports. -Example: +.. note:: -.. code-block:: console + Port configuration changes only become active when forwarding is started/restarted. - testpmd> add_ethertype_filter 0 ethertype 0x0806 priority disable 0 queue 3 index 0 - Assign ARP packet to receive queue 3 +port attach +~~~~~~~~~~~ -remove_ethertype_filter -~~~~~~~~~~~~~~~~~~~~~~~ +Attach a port specified by pci address or virtual device args. -Remove a L2 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. +On the other hand, to attach a port created by virtual device, above steps are not needed. -remove_ethertype_filter (port_id) index (idx) +port attach (identifier) -get_ethertype_filter -~~~~~~~~~~~~~~~~~~~~ +For example, to attach a port whose pci address is 0000:02:00.0. -Get and display a L2 Ethertype filter +.. code-block:: console -get_ethertype_filter (port_id) index (idx) + testpmd> port attach 0000:02:00.0 + Attaching a new port... + ... snip ... + Port 0 is attached. Now total ports is 1 + Done -Example: +For example, to attach a port created by pcap PMD. .. code-block:: console - testpmd> get_ethertype_filter 0 index 0 + testpmd> port attach eth_pcap0,iface=eth0 + Attaching a new port... + ... snip ... + Port 0 is attached. Now total ports is 1 + Done - filter[0]: - ethertype: 0x0806 - priority: disable, 0 - queue: 3 +In this case, identifier is "eth_pcap0,iface=eth0". +This identifier format is the same as "--vdev" format of DPDK applications. -add_2tuple_filter -~~~~~~~~~~~~~~~~~ +port detach +~~~~~~~~~~~ -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. +Detach a specific port. -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) +Before detaching a port, the port should be closed. +Also 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. +On the other hand, to remove a port created by a virtual device, above steps are not needed. -The available information parameters are: +port detach (port_id) -* port_id: the port which the 2-tuple filter assigned on. +For example, to detach a port 0. -* pro_value: IP L4 protocol +.. code-block:: console -* pro_mask: protocol participates in the match or not, 1 means participate + testpmd> port detach 0 + Detaching a port... + ... snip ... + Done -* port_value: destination port in L4. +port start +~~~~~~~~~~ -* port_mask: destination port participates in the match or not, 1 means participate. +Start all ports or a specific port: -* flg_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP). +port start (port_id|all) -* prio_value: the priority of this filter. +port stop +~~~~~~~~~ -* queue_id: The receive queue associated with this 2-tuple filter +Stop all ports or a specific port: -* index: the index of this 2-tuple filter +port stop (port_id|all) -Example: +port close +~~~~~~~~~~ -.. code-block:: console +Close all ports or a specific port: - testpmd> add_2tuple_filter 0 protocol 0x06 1 dst_port 32 1 flags 0x02 priority 3 queue 3 index 0 +port close (port_id|all) -remove_2tuple_filter -~~~~~~~~~~~~~~~~~~~~ +port start/stop queue +~~~~~~~~~~~~~~~~~~~~~ -Remove a 2-tuple filter +Start/stop a rx/tx queue on a specific port: -remove_2tuple_filter (port_id) index (idx) +port (port_id) (rxq|txq) (queue_id) (start|stop) -get_2tuple_filter -~~~~~~~~~~~~~~~~~ +Only take effect when port is started. -Get and display a 2-tuple filter +port config - speed +~~~~~~~~~~~~~~~~~~~ -get_2tuple_filter (port_id) index (idx) +Set the speed and duplex mode for all ports or a specific port: -Example: +port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto) -.. code-block:: console +port config - queues/descriptors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - testpmd> get_2tuple_filter 0 index 0 +Set number of queues/descriptors for rxq, txq, rxd and txd: - filter[0]: - Destination Port: 0x0020 mask: 1 - protocol: 0x06 mask:1 tcp_flags: 0x02 - priority: 3 queue: 3 +port config all (rxq|txq|rxd|txd) (value) -add_5tuple_filter -~~~~~~~~~~~~~~~~~ +This is equivalent to the --rxq, --txq, --rxd and --txd command-line options. -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. +port config - max-pkt-len +~~~~~~~~~~~~~~~~~~~~~~~~~ -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) +Set the maximum packet length: -The available information parameters are: +port config all max-pkt-len (value) -* port_id: the port which the 5-tuple filter assigned on. +This is equivalent to the --max-pkt-len command-line option. -* dst_address: destination IP address. +port config - CRC Strip +~~~~~~~~~~~~~~~~~~~~~~~ -* src_address: source IP address. +Set hardware CRC stripping on or off for all ports: -* dst_port_value: TCP/UDP destination port. +port config all crc-strip (on|off) -* src_port_value: TCP/UDP source port. +CRC stripping is off by default. -* protocol_value: L4 protocol. +The on option is equivalent to the --crc-strip command-line option. -* mask_value: participates in the match or not by bit for field above, 1b means participate +port config - RX Checksum +~~~~~~~~~~~~~~~~~~~~~~~~~ -* flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP). +Set hardware RX checksum offload to on or off for all ports: -* prio_value: the priority of this filter. +port config all rx-cksum (on|off) -* queue_id: The receive queue associated with this 5-tuple filter. +Checksum offload is off by default. -* index: the index of this 5-tuple filter +The on option is equivalent to the --enable-rx-cksum command-line option. -Example: +port config - VLAN +~~~~~~~~~~~~~~~~~~ -.. code-block:: console +Set hardware VLAN on or off for all ports: - 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 all hw-vlan (on|off) -remove_5tuple_filter -~~~~~~~~~~~~~~~~~~~~ +Hardware VLAN is on by default. -Remove a 5-tuple filter +The off option is equivalent to the --disable-hw-vlan command-line option. -remove_5tuple_filter (port_id) index (idx) +port config - VLAN filter +~~~~~~~~~~~~~~~~~~~~~~~~~ -get_5tuple_filter -~~~~~~~~~~~~~~~~~ +Set hardware VLAN filter on or off for all ports: -Get and display a 5-tuple filter +port config all hw-vlan-filter (on|off) -get_5tuple_filter (port_id) index (idx) +Hardware VLAN filter is on by default. -Example: +The off option is equivalent to the --disable-hw-vlan-filter command-line option. -.. code-block:: console +port config - VLAN strip +~~~~~~~~~~~~~~~~~~~~~~~~ - testpmd> get_5tuple_filter 1 index 0 +Set hardware VLAN strip on or off for all ports: - 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 +port config all hw-vlan-strip (on|off) -add_syn_filter -~~~~~~~~~~~~~~ +Hardware VLAN strip is on by default. -Add SYN filter, which can forward TCP packets whose *SYN* flag is set into a separate queue. +The off option is equivalent to the --disable-hw-vlan-strip command-line option. -add_syn_filter (port_id) priority (high|low) queue (queue_id) +port config - VLAN extend +~~~~~~~~~~~~~~~~~~~~~~~~~ -The available information parameters are: +Set hardware VLAN extend on or off for all ports: -* port_id: the port which the SYN filter assigned on. +port config all hw-vlan-extend (on|off) -* high: this SYN filter has higher priority than other filters. +Hardware VLAN extend is off by default. -* low: this SYN filter has lower priority than other filters. +The off option is equivalent to the --disable-hw-vlan-extend command-line option. -* queue_id: The receive queue associated with this SYN filter +port config - Drop Packets +~~~~~~~~~~~~~~~~~~~~~~~~~~ -Example: +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> add_syn_filter 0 priority high queue 3, +Packet dropping for packets with no descriptors is off by default. + +The on option is equivalent to the --enable-drop-en command-line option. -remove_syn_filter +port config - RSS ~~~~~~~~~~~~~~~~~ -Remove SYN filter +Set the RSS (Receive Side Scaling) mode on or off: -remove_syn_filter (port_id) +port config all rss (all|ip|tcp|udp|sctp|ether|none) -get_syn_filter -~~~~~~~~~~~~~~ +RSS is on by default. -Get and display SYN filter +The off option is equivalent to the --disable-rss command-line option. -get_syn_filter (port_id) +port config - RSS Reta +~~~~~~~~~~~~~~~~~~~~~~ -Example: +Set the RSS (Receive Side Scaling) redirection table: -.. code-block:: console +port config all rss reta (hash,queue)[,(hash,queue)] - testpmd> get_syn_filter 0 +port config - DCB +~~~~~~~~~~~~~~~~~ - syn filter: on, priority: high, queue: 3 +Set the DCB mode for an individual port: -add_flex_filter -~~~~~~~~~~~~~~~ +port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off) -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 traffic class should be 4 or 8. -add_flex_filter (port_id) len (len_value) bytes (bytes_string) mask (mask_value) -priority (prio_value) queue (queue_id) index (idx) +port config - Burst +~~~~~~~~~~~~~~~~~~~ -The available information parameters are: +Set the number of packets per burst: -* port_id: the port which the Flex filter assigned on. +port config all burst (value) -* len_value: filter length in byte, no greater than 128. +This is equivalent to the --burst command-line option. -* bytes_string: a sting in format of octal, means the value the flex filter need to match. +port config - Threshold +~~~~~~~~~~~~~~~~~~~~~~~ -* mask_value: a sting in format of octal, bit 1 means corresponding byte in DWORD participates in the match. +Set thresholds for TX/RX queues: -* prio_value: the priority of this filter. +port config all (threshold) (value) -* queue_id: The receive queue associated with this Flex filter. +Where the threshold type can be: -* index: the index of this Flex filter +* txpt: Set the prefetch threshold register of the TX rings, 0 <= value <= 255. -Example: +* txht: Set the host threshold register of the TX rings, 0 <= value <= 255. -.. code-block:: console +* txwt: Set the write-back threshold register of the TX rings, 0 <= value <= 255. - testpmd> add_flex_filter 0 len 16 bytes 0x00000000000000000000000008060000 mask 000C priority 3 queue 3 index 0 +* rxpt: Set the prefetch threshold register of the RX rings, 0 <= value <= 255. -Assign a packet whose 13th and 14th bytes are 0x0806 to queue 3. +* rxht: Set the host threshold register of the RX rings, 0 <= value <= 255. -remove_flex_filter -~~~~~~~~~~~~~~~~~~ +* rxwt: Set the write-back threshold register of the RX rings, 0 <= value <= 255. -Remove a Flex filter +* txfreet: Set the transmit free threshold of the TX rings, 0 <= value <= txd. -remove_flex_filter (port_id) index (idx) +* rxfreet: Set the transmit free threshold of the RX rings, 0 <= value <= rxd. -get_flex_filter -~~~~~~~~~~~~~~~ +* txrst: Set the transmit RS bit threshold of TX rings, 0 <= value <= txd. + These threshold options are also available from the command-line. -Get and display a Flex filter +Link Bonding Functions +---------------------- -get_flex_filter (port_id) index (idx) +The Link Bonding functions make it possible to dynamically create and +manage link bonding devices from within testpmd interactive prompt. -Example: +create bonded device +~~~~~~~~~~~~~~~~~~~~ -.. code-block:: console +Create a new bonding device: - testpmd> get_flex_filter 0 index 0 - - filter[0]: - - length: 16 +create bonded device (mode) (socket) - 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 +For example, to create a bonded device in mode 1 on socket 0. - mask[]: - 0b0000000000001100000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000 +.. code-block:: console - priority: 3 queue: 3 + testpmd> create bonded 1 0 + created new bonded device (port X) -set link up -~~~~~~~~~~~ +add bonding slave +~~~~~~~~~~~~~~~~~ -Set link up for a port. +Adds Ethernet device to a Link Bonding device: -set link-up port (port id) +add bonding slave (slave id) (port id) -set link down -~~~~~~~~~~~~~ +For example, to add Ethernet device (port 6) to a Link Bonding device (port 10). -Set link down for a port. +.. code-block:: console -set link-down port (port id) + testpmd> add bonding slave 6 10 -Port Functions --------------- -The following sections show functions for configuring ports. +remove bonding slave +~~~~~~~~~~~~~~~~~~~~ -.. note:: +Removes an Ethernet slave device from a Link Bonding device: - Port configuration changes only become active when forwarding is started/restarted. +remove bonding slave (slave id) (port id) -port start -~~~~~~~~~~ +For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10). -Start all ports or a specific port: +.. code-block:: console -port start (port_id|all) + testpmd> remove bonding slave 6 10 -port stop -~~~~~~~~~ +set bonding mode +~~~~~~~~~~~~~~~~ -Stop all ports or a specific port: +Set the Link Bonding mode of a Link Bonding device: -port stop (port_id|all) +set bonding mode (value) (port id) -port close -~~~~~~~~~~ +For example, to set the bonding mode of a Link Bonding device (port 10) to broadcast (mode 3). -Close all ports or a specific port: +.. code-block:: console -port close (port_id|all) + testpmd> set bonding mode 3 10 -port config - speed +set bonding primary ~~~~~~~~~~~~~~~~~~~ -Set the speed and duplex mode for all ports or a specific port: - -port config (port_id|all) speed (10|100|1000|10000|auto) duplex (half|full|auto) - -port config - queues/descriptors -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Set number of queues/descriptors for rxq, txq, rxd and txd: - -port config all (rxq|txq|rxd|txd) (value) - -This is equivalent to the --rxq, --txq, --rxd and --txd command-line options. - -port config - max-pkt-len -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Set the maximum packet length: - -port config all max-pkt-len (value) - -This is equivalent to the --max-pkt-len command-line option. - -port config - CRC Strip -~~~~~~~~~~~~~~~~~~~~~~~ - -Set hardware CRC stripping on or off for all ports: - -port config all crc-strip (on|off) - -CRC stripping is off by default. - -The on option is equivalent to the --crc-strip command-line option. - -port config - RX Checksum -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Set hardware RX checksum offload to on or off for all ports: - -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) +The available information parameters are: - src (src_ip_address) (src_port) +* port_id: the port which the Ethertype filter assigned on. - dst (dst_ip_address) (dst_port) +* mac_addr: compare destination mac address. - flexbytes (flexbytes_values) +* mac_ignr: ignore destination mac address match. - vlan (vlan_id) queue (queue_id) +* mac_address: destination mac address to match. -rm_signature_filter -~~~~~~~~~~~~~~~~~~~ +* ether_type: the EtherType value want to match, + for example 0x0806 for ARP packet. 0x0800 (IPv4) and 0x86DD (IPv6) are invalid. -Remove a signature filter: +* queue_id : The receive queue associated with this EtherType filter. It is meaningless when deleting or dropping. -# Command is displayed on several lines for clarity. +Example, to add/remove an ethertype filter rule: -rm_signature_filter (port_id) (ip|udp|tcp|sctp) +.. code-block:: console - src (src_ip_address) (src_port) + testpmd> ethertype_filter 0 add mac_ignr ethertype 0x0806 fwd queue 3 + testpmd> ethertype_filter 0 del mac_ignr ethertype 0x0806 fwd queue 3 - dst (dst_ip_address) (dst_port) +2tuple_filter +~~~~~~~~~~~~~~~~~ - flexbytes (flexbytes_values) +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. - vlan (vlan_id) +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) -add_perfect_filter -~~~~~~~~~~~~~~~~~~ +The available information parameters are: -Add a perfect filter: +* port_id: the port which the 2-tuple filter assigned on. -# Command is displayed on several lines for clarity. +* dst_port_value: destination port in L4. -add_perfect_filter (port_id) (ip|udp|tcp|sctp) +* protocol_value: IP L4 protocol. - src (src_ip_address) (src_port) +* mask_value: participates in the match or not by bit for field above, 1b means participate. - dst (dst_ip_address) (dst_port) +* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP). - flexbytes (flexbytes_values) +* prio_value: priority of this filter. - vlan (vlan_id) queue (queue_id) soft (soft_id) +* queue_id: The receive queue associated with this 2-tuple filter. -upd_perfect_filter -~~~~~~~~~~~~~~~~~~ +Example, to add/remove an 2tuple filter rule: -Update a perfect filter: +.. code-block:: console -# Command is displayed on several lines for clarity. + 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 -upd_perfect_filter (port_id) (ip|udp|tcp|sctp) +5tuple_filter +~~~~~~~~~~~~~~~~~ - 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) queue (queue_id) +* port_id: the port which the 5-tuple filter assigned on. -rm_perfect_filter -~~~~~~~~~~~~~~~~~ +* dst_address: destination IP address. -Remove a perfect filter: +* src_address: source IP address. -rm_perfect_filter (port_id) (ip|udp|tcp|sctp) +* dst_port_value: TCP/UDP destination port. - src (src_ip_address) (src_port) +* src_port_value: TCP/UDP source port. - dst (dst_ip_address) (dst_port) +* protocol_value: L4 protocol. - flexbytes (flexbytes_values) +* mask_value: participates in the match or not by bit for field above, 1b means participate - vlan (vlan_id) soft (soft_id) +* tcp_flags_value: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP). -set_masks_filter -~~~~~~~~~~~~~~~~ +* prio_value: the priority of this filter. -Set IPv4 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_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. -set_ipv6_masks_filter -~~~~~~~~~~~~~~~~~~~~~ +syn_filter (port_id) (add|del) priority (high|low) queue (queue_id) -Set IPv6 filter masks: +The available information parameters are: -# Command is displayed on several lines for clarity. +* port_id: the port which the SYN filter assigned on. -set_ipv6_masks_filter (port_id) only_ip_flow (0|1) +* high: this SYN filter has higher priority than other filters. - src_mask (ip_src_mask) (src_port_mask) +* low: this SYN filter has lower priority than other filters. - dst_mask (ip_dst_mask) (dst_port_mask) +* queue_id: The receive queue associated with this SYN filter - flexbytes (0|1) vlan_id (0|1) vlan_prio (0|1) +Example: - compare_dst (0|1) +.. code-block:: console -Link Bonding Functions ----------------------- + testpmd> syn_filter 0 add priority high queue 3 -The Link Bonding functions make it possible to dynamically create and -manage link bonding devices from within testpmd interactive prompt. +flex_filter +~~~~~~~~~~~ -create bonded 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. -Create a new bonding device: +flex_filter (port_id) (add|del) len (len_value) bytes (bytes_value) +mask (mask_value) priority (prio_value) queue (queue_id) -create bonded device (mode) (socket) +The available information parameters are: -For example, to create a bonded device in mode 1 on socket 0. +* port_id: the port which the Flex filter is assigned on. -.. code-block:: console +* len_value: filter length in bytes, no greater than 128. - testpmd> create bonded 1 0 - created new bonded device (port X) +* bytes_value: a string in hexadecimal, means the value the flex filter needs to match. -add bonding slave -~~~~~~~~~~~~~~~~~ +* mask_value: a string in hexadecimal, bit 1 means corresponding byte participates in the match. -Adds Ethernet device to a Link Bonding device: +* prio_value: the priority of this filter. -add bonding slave (slave id) (port id) +* queue_id: the receive queue associated with this Flex filter. -For example, to add Ethernet device (port 6) to a Link Bonding device (port 10). +Example: .. code-block:: console - testpmd> add bonding slave 6 10 + testpmd> flex_filter 0 add len 16 bytes 0x00000000000000000000000008060000 + mask 000C priority 3 queue 3 + testpmd> flex_filter 0 del len 16 bytes 0x00000000000000000000000008060000 + mask 000C priority 3 queue 3 -remove bonding slave +flow_director_filter ~~~~~~~~~~~~~~~~~~~~ -Removes an Ethernet slave device from a Link Bonding device: - -remove bonding slave (slave id) (port id) - -For example, to remove Ethernet slave device (port 6) to a Link Bonding device (port 10). - -.. 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> remove bonding slave 6 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 mode -~~~~~~~~~~~~~~~~ +* Perfect match filters. + The hardware checks a match between the masked fields of the received packets and the programmed filters. -Set the Link Bonding mode of 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 mode (value) (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 bonding mode of a Link Bonding device (port 10) to broadcast (mode 3). +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 mode 3 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 primary -~~~~~~~~~~~~~~~~~~~ +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 an Ethernet slave device as the primary device on 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 primary (slave id) (port id) +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 Ethernet slave device (port 6) as the primary port of a Link Bonding device (port 10). +For example, to add an ipv4-udp flow type filter: .. code-block:: console - testpmd> set bonding primary 6 10 + 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 mac -~~~~~~~~~~~~~~~ - -Set the MAC address of a Link Bonding device: - -set bonding mac (port id) (mac) - -For example, to set the MAC address of a Link Bonding device (port 10) to 00:00:00:00:00:01 +For example, add an ipv4-other flow type filter: .. code-block:: console - testpmd> set bonding mac 10 00:00:00:00:00:01 + 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 bonding xmit_balance_policy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +flush_flow_director +~~~~~~~~~~~~~~~~~~~ -Set the transmission policy for a Link Bonding device when it is in Balance XOR mode: +flush all flow director filters on a device: -set bonding xmit_balance_policy (port_id) (l2|l23|l34) +flush_flow_director (port_id) -For example, set a Link Bonding device (port 10) to use a balance policy of layer 3+4 (IP addresses & UDP ports ) +Example, to flush all flow director filter on port 0: .. code-block:: console - testpmd> set bonding xmit_balance_policy 10 l34 + testpmd> flush_flow_director 0 -show bonding config -~~~~~~~~~~~~~~~~~~~ +flow_director_mask +~~~~~~~~~~~~~~~~~~ -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 - 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] - -Register Functions ------------------- + 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 -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. -read reg -~~~~~~~~ +flow_director_flex_mask +~~~~~~~~~~~~~~~~~~~~~~~ -Display the value of a port register: +set masks of flow director's flexible payload based on certain flow type: -read reg (port_id) (address) +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) -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 - 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 - 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 - 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 - 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 - 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 - 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