.. 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
********************* 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
~~~~~~~~~~~~~~~~~~
tx_vlan set
~~~~~~~~~~~
-Set hardware insertion of VLAN ID in packets sent on a port:
+Set hardware insertion of VLAN IDs in packets sent on a port:
-tx_vlan set (vlan_id) (port_id)
+tx_vlan set (port_id) vlan_id[, vlan_id_outer]
+
+.. code-block:: console
+
+ Set a single VLAN ID (5) insertion on port 0.
+
+ tx_vlan set 0 5
+
+ Set double VLAN ID (inner: 2, outer: 3) insertion on port 1.
+
+ tx_vlan set 1 2 3
tx_vlan set pvid
~~~~~~~~~~~~~~~~
-Set port based hardware insertion of VLAN ID in pacekts sent on a port:
+Set port based hardware insertion of VLAN ID in packets sent on a port:
tx_vlan set pvid (port_id) (vlan_id) (on|off)
- ip|udp|tcp|sctp always concern the inner layer.
-- outer-ip concerns the outer IP layer in case the packet is recognized
+- 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.
* 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:
set port - mirror rule
~~~~~~~~~~~~~~~~~~~~~~
-Set port or vlan type mirror rule for a port.
+Set pool or vlan type mirror rule for a port:
-set port (port_id) mirror-rule (rule_id) (pool-mirror|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)
+set port (port_id) mirror-rule (rule_id) (pool-mirror-up|pool-mirror-down|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)
+
+Set link mirror rule for a port:
+
+set port (port_id) mirror-rule (rule_id) (uplink-mirror|downlink-mirror) dst-pool (pool_id) (on|off)
For example to enable mirror traffic with vlan 0,1 to pool 0:
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.
+
+For example, to move a pci device using ixgbe under DPDK management:
+
+.. code-block:: console
+
+ ./tools/dpdk_nic_bind.py --status
+
+ Network devices using DPDK-compatible driver
+ ============================================
+ <none>
+
+ Network devices using kernel driver
+ ===================================
+ 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused=
+
+ ./tools/dpdk_nic_bind.py -b igb_uio 0000:0a:00.0
+ ./tools/dpdk_nic_bind.py --status
+
+ Network devices using DPDK-compatible driver
+ ============================================
+ 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=
+
+To attach a port created by virtual device, above steps are not needed.
port attach (identifier)
-For example, to attach a port whose pci address is 0000:02:00.0.
+For example, to attach a port whose pci address is 0000:0a:00.0.
.. code-block:: console
- testpmd> port attach 0000:02:00.0
+ testpmd> port attach 0000:0a:00.0
Attaching a new port...
- ... snip ...
+ EAL: PCI device 0000:0a:00.0 on NUMA socket -1
+ EAL: probe driver: 8086:10fb rte_ixgbe_pmd
+ EAL: PCI memory mapped at 0x7f83bfa00000
+ EAL: PCI memory mapped at 0x7f83bfa80000
+ PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 18, SFP+: 5
+ PMD: eth_ixgbe_dev_init(): port 0 vendorID=0x8086 deviceID=0x10fb
Port 0 is attached. Now total ports is 1
Done
+ testpmd>
For example, to attach a port created by pcap PMD.
.. code-block:: console
- testpmd> port attach eth_pcap0,iface=eth0
+ testpmd> port attach eth_pcap0
Attaching a new port...
- ... snip ...
+ PMD: Initializing pmd_pcap for eth_pcap0
+ PMD: Creating pcap-backed ethdev on numa socket 0
Port 0 is attached. Now total ports is 1
Done
+ testpmd>
-In this case, identifier is "eth_pcap0,iface=eth0".
+In this case, identifier is "eth_pcap0".
This identifier format is the same as "--vdev" format of DPDK applications.
+For example, to re-attach a bonded port which has been previously detached,
+the mode and slave parameters must be given.
+
+.. code-block:: console
+
+ testpmd> port attach eth_bond_testpmd_0,mode=0,slave=1
+ Attaching a new port...
+ EAL: Initializing pmd_bond for eth_bond_testpmd_0
+ EAL: Create bonded device eth_bond_testpmd_0 on port 0 in mode 0 on socket 0.
+ Port 0 is attached. Now total ports is 1
+ Done
+
+
port detach
~~~~~~~~~~~
Detach a specific port.
Before detaching a port, the port should be closed.
-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.
port detach (port_id)
-For example, to detach a port 0.
+For example, to detach a pci device port 0.
.. code-block:: console
+ testpmd> port close 0
+ Closing ports...
+ Done
testpmd> port detach 0
Detaching a port...
- ... snip ...
+ EAL: PCI device 0000:0a:00.0 on NUMA socket -1
+ EAL: remove driver: 8086:10fb rte_ixgbe_pmd
+ EAL: PCI memory unmapped at 0x7f83bfa00000
+ EAL: PCI memory unmapped at 0x7f83bfa80000
Done
+ testpmd>
+
+For example, to detach a virtual device port 0.
+
+.. code-block:: console
+
+ testpmd> port close 0
+ Closing ports...
+ Done
+ testpmd> port detach 0
+ Detaching a port...
+ PMD: Closing pcap ethdev on numa socket 0
+ Port 'eth_pcap0' is detached. Now total ports is 0
+ Done
+ testpmd>
+
+To remove a pci device completely from the system, first detach the port from testpmd.
+Then the device should be moved under kernel management.
+Finally the device can be removed using kernel pci hotplug functionality.
+
+For example, to move a pci device under kernel management:
+
+.. code-block:: console
+
+ ./tools/dpdk_nic_bind.py -b ixgbe 0000:0a:00.0
+ ./tools/dpdk_nic_bind.py --status
+
+ Network devices using DPDK-compatible driver
+ ============================================
+ <none>
+
+ Network devices using kernel driver
+ ===================================
+ 0000:0a:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth2 drv=ixgbe unused=igb_uio
+
+To remove a port created by a virtual device, above steps are not needed.
port start
~~~~~~~~~~
Set the RSS (Receive Side Scaling) mode on or off:
-port config all rss (ip|udp|none)
+port config all rss (all|ip|tcp|udp|sctp|ether|none)
RSS is on by default.
set bonding mon_period
~~~~~~~~~~~~~~~~~~~~~~
-Set the link status monitoring polling period in milliseconds for a bonding devicie.
+Set the link status monitoring polling period in milliseconds for a bonding device.
This adds support for PMD slave devices which do not support link status interrupts.
When the mon_period is set to a value greater than 0 then all PMD's which do not support
.. code-block:: console
- testpmd> ethertype_filter 0 add mac_ignr ethertype 0x0806 fwd queue 3
- testpmd> ethertype_filter 0 del mac_ignr ethertype 0x0806 fwd queue 3
+ testpmd> ethertype_filter 0 add mac_ignr 00:11:22:33:44:55 ethertype 0x0806 fwd queue 3
+ testpmd> ethertype_filter 0 del mac_ignr 00:11:22:33:44:55 ethertype 0x0806 fwd queue 3
2tuple_filter
~~~~~~~~~~~~~~~~~
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)
+flow_director_filter (port_id) (add|del|update) flow l2_payload
+ether (ethertype) flexbytes (flexbytes_value) (drop|fwd) queue (queue_id) fd_id (fd_id_value)
+
For example, to add an ipv4-udp flow type filter:
.. code-block:: console
set masks of flow director's flexible payload based on certain flow type:
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|all) (mask)
+ipv6-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|l2_payload|all) (mask)
Example, to set flow director's flex mask for all flow type on port 0:
.. code-block:: console
testpmd> flow_director_flex_payload 0 l4 (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
+
+get_sym_hash_ena_per_port
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Get symmetric hash enable configuration per port.
+
+get_sym_hash_ena_per_port (port_id)
+
+For example, to get symmetric hash enable configuration of port 1.
+
+.. code-block:: console
+
+ testpmd> get_sym_hash_ena_per_port 1
+
+set_sym_hash_ena_per_port
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Set symmetric hash enable configuration per port to enable or disable.
+
+set_sym_hash_ena_per_port (port_id) (enable|disable)
+
+For example, to set symmetric hash enable configuration of port 1 to enable.
+
+.. code-block:: console
+
+ testpmd> set_sym_hash_ena_per_port 1 enable
+
+get_hash_global_config
+~~~~~~~~~~~~~~~~~~~~~~
+
+Get the global configurations of hash filters.
+
+get_hash_global_config (port_id)
+
+For example, to get the global configurations of hash filters of port 1.
+
+.. code-block:: console
+
+ testpmd> get_hash_global_config 1
+
+set_hash_global_config
+~~~~~~~~~~~~~~~~~~~~~~
+
+Set the global configurations of hash filters.
+
+set_hash_global_config (port_id) (toeplitz|simple_xor|default)
+(ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload)
+(enable|disable)
+
+For example, to enable simple_xor for flow type of ipv6 on port 2.
+
+.. code-block:: console
+
+ testpmd> set_hash_global_config 2 simple_xor ipv6 enable