X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Ftestpmd_app_ug%2Ftestpmd_funcs.rst;h=3f076c848395107225bdc5dbc63606ef486b7913;hb=1b20b07d86872475ecca28af1a00ad9ad45c4c07;hp=a08327b4e332f293d04a21483e36bc1b491fc7b0;hpb=ef7d28668505a04afe0f93f097f58614679c0f9f;p=dpdk.git diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index a08327b4e3..3f076c8483 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1,5 +1,5 @@ .. BSD LICENSE - Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + Copyright(c) 2010-2015 Intel Corporation. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -503,14 +503,24 @@ rx_vxlan_port rm (udp_port) (port_id) tx_vlan set ~~~~~~~~~~~ -Set hardware insertion of VLAN ID in packets sent on a port: +Set hardware insertion of VLAN IDs in packets sent on a port: -tx_vlan set (vlan_id) (port_id) +tx_vlan set (port_id) vlan_id[, vlan_id_outer] + +.. code-block:: console + + Set a single VLAN ID (5) insertion on port 0. + + tx_vlan set 0 5 + + Set double VLAN ID (inner: 2, outer: 3) insertion on port 1. + + tx_vlan set 1 2 3 tx_vlan set pvid ~~~~~~~~~~~~~~~~ -Set port based hardware insertion of VLAN ID in pacekts sent on a port: +Set port based hardware insertion of VLAN ID in packets sent on a port: tx_vlan set pvid (port_id) (vlan_id) (on|off) @@ -531,7 +541,7 @@ csum set (ip|udp|tcp|sctp|outer-ip) (hw|sw) (port_id) - 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. @@ -625,6 +635,8 @@ The available information categories are: * icmpecho: receives a burst of packets, lookup for IMCP echo requests and, if any, send back ICMP echo replies. +* ieee1588: demonstrate L2 IEEE1588 V2 PTP timestamping for RX and TX. Requires ``CONFIG_RTE_LIBRTE_IEEE1588=y``. + Note: TX timestamping is only available in the "Full Featured" TX path. To force ``testpmd`` into this mode set ``--txqflags=0``. Example: @@ -772,9 +784,13 @@ set port (port_id) vf (vf_id) rate (rate_value) queue_mask (queue_mask) set port - mirror rule ~~~~~~~~~~~~~~~~~~~~~~ -Set port or vlan type mirror rule for a port. +Set pool or vlan type mirror rule for a port: + +set port (port_id) mirror-rule (rule_id) (pool-mirror-up|pool-mirror-down|vlan-mirror) (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off) -set port (port_id) mirror-rule (rule_id) (pool-mirror|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: @@ -866,54 +882,135 @@ Attach a port specified by pci address or virtual device args. To attach a new pci device, the device should be recognized by kernel first. Then it should be moved under DPDK management. Finally the port can be attached to testpmd. -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 + ============================================ + + + 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 + ============================================ + + + 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 ~~~~~~~~~~ @@ -1214,7 +1311,7 @@ For example, set a Link Bonding device (port 10) to use a balance policy of laye set bonding mon_period ~~~~~~~~~~~~~~~~~~~~~~ -Set the link status monitoring polling period in milliseconds for a bonding devicie. +Set the link status monitoring polling period in milliseconds for a bonding device. This adds support for PMD slave devices which do not support link status interrupts. When the mon_period is set to a value greater than 0 then all PMD's which do not support @@ -1537,6 +1634,9 @@ 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) +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 @@ -1582,7 +1682,7 @@ flow_director_flex_mask 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: