X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Ftestpmd_app_ug%2Ftestpmd_funcs.rst;h=a808b6a308f2ce2ba1901a25db5b314da17dfba4;hb=b762221ac24f;hp=4e56e075f1ef95d20a4249c4d1e6e89b5360744c;hpb=65388f4c4cda8ec26a0e04371f51b4b81ffaf4d9;p=dpdk.git diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 4e56e075f1..a808b6a308 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -237,7 +237,7 @@ Display the RSS hash functions and RSS hash key of a port:: clear port ~~~~~~~~~~ -Clear the port statistics for a given port or for all ports:: +Clear the port statistics and forward engine statistics for a given port or for all ports:: testpmd> clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all) @@ -372,6 +372,12 @@ Example for the io forwarding engine, with some packet drops on the tx side:: TX-packets: 548595568 TX-dropped: 128 TX-total: 548595696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. note:: + + Enabling CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES appends "CPU cycles/packet" stats, like: + + CPU cycles/packet=xx.dd (total cycles=xxxx / total RX packets=xxxx) at xxx MHz clock + clear fwd ~~~~~~~~~ @@ -539,6 +545,12 @@ Dumps the layout of all memory zones:: testpmd> dump_memzone +dump socket memory +~~~~~~~~~~~~~~~~~~ + +Dumps the memory usage of all sockets:: + + testpmd> dump_socket_mem dump struct size ~~~~~~~~~~~~~~~~ @@ -2147,7 +2159,7 @@ port config - speed Set the speed and duplex mode for all ports or a specific port:: - testpmd> port config (port_id|all) speed (10|100|1000|10000|25000|40000|50000|100000|auto) \ + testpmd> port config (port_id|all) speed (10|100|1000|10000|25000|40000|50000|100000|200000|auto) \ duplex (half|full|auto) port config - queues/descriptors @@ -2193,12 +2205,14 @@ port config - RSS Set the RSS (Receive Side Scaling) mode on or off:: - testpmd> port config all rss (all|default|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxlan-gpe|none) + testpmd> port config all rss (all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none) RSS is on by default. -The ``all`` option is equivalent to ip|tcp|udp|sctp|ether. +The ``all`` option is equivalent to eth|vlan|ip|tcp|udp|sctp|ether|l2tpv3|esp|ah|pfcp. + The ``default`` option enables all supported RSS types reported by device info. + The ``none`` option is equivalent to the ``--disable-rss`` command-line option. port config - RSS Reta @@ -2317,6 +2331,16 @@ testpmd will add this value to any Tx packet sent from this port:: testpmd> port config (port_id) tx_metadata (value) +port config dynf +~~~~~~~~~~~~~~~~ + +Set/clear dynamic flag per port. +testpmd will register this flag in the mbuf (same registration +for both Tx and Rx). Then set/clear this flag for each Tx +packet sent from this port. The set bit only works for Tx packet:: + + testpmd> port config (port_id) dynf (name) (set|clear) + port config mtu ~~~~~~~~~~~~~~~ @@ -3594,6 +3618,14 @@ following sections. flow isolate {port_id} {boolean} +- Dump internal representation information of all flows in hardware:: + + flow dump {port_id} {output_file} + +- List and destroy aged flow rules:: + + flow aged {port_id} [destroy] + Validating flow rules ~~~~~~~~~~~~~~~~~~~~~ @@ -3973,6 +4005,15 @@ This section lists supported pattern items and their attributes, if any. - ``session_id {unsigned}``: L2TPv3 over IP session identifier. +- ``ah``: match AH header. + + - ``spi {unsigned}``: security parameters index. + +- ``pfcp``: match PFCP header. + + - ``s_field {unsigned}``: S field. + - ``seid {unsigned}``: session endpoint identifier. + Actions list ^^^^^^^^^^^^ @@ -4456,6 +4497,80 @@ Disabling isolated mode:: Ingress traffic on port 0 is not restricted anymore to the defined flow rules testpmd> +Dumping HW internal information +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``flow dump`` dumps the hardware's internal representation information of +all flows. It is bound to ``rte_flow_dev_dump()``:: + + flow dump {port_id} {output_file} + +If successful, it will show:: + + Flow dump finished + +Otherwise, it will complain error occurred:: + + Caught error type [...] ([...]): [...] + +Listing and destroying aged flow rules +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``flow aged`` simply lists aged flow rules be get from api ``rte_flow_get_aged_flows``, +and ``destroy`` parameter can be used to destroy those flow rules in PMD. + + flow aged {port_id} [destroy] + +Listing current aged flow rules:: + + testpmd> flow aged 0 + Port 0 total aged flows: 0 + testpmd> flow create 0 ingress pattern eth / ipv4 src is 2.2.2.14 / end + actions age timeout 5 / queue index 0 / end + Flow rule #0 created + testpmd> flow create 0 ingress pattern eth / ipv4 src is 2.2.2.15 / end + actions age timeout 4 / queue index 0 / end + Flow rule #1 created + testpmd> flow create 0 ingress pattern eth / ipv4 src is 2.2.2.16 / end + actions age timeout 2 / queue index 0 / end + Flow rule #2 created + testpmd> flow create 0 ingress pattern eth / ipv4 src is 2.2.2.17 / end + actions age timeout 3 / queue index 0 / end + Flow rule #3 created + + +Aged Rules are simply list as command ``flow list {port_id}``, but strip the detail rule +information, all the aged flows are sorted by the longest timeout time. For example, if +those rules be configured in the same time, ID 2 will be the first aged out rule, the next +will be ID 3, ID 1, ID 0:: + + testpmd> flow aged 0 + Port 0 total aged flows: 4 + ID Group Prio Attr + 2 0 0 i-- + 3 0 0 i-- + 1 0 0 i-- + 0 0 0 i-- + +If attach ``destroy`` parameter, the command will destroy all the list aged flow rules. + + testpmd> flow aged 0 destroy + Port 0 total aged flows: 4 + ID Group Prio Attr + 2 0 0 i-- + 3 0 0 i-- + 1 0 0 i-- + 0 0 0 i-- + + Flow rule #2 destroyed + Flow rule #3 destroyed + Flow rule #1 destroyed + Flow rule #0 destroyed + 4 flows be destroyed + testpmd> flow aged 0 + Port 0 total aged flows: 0 + + Sample QinQ flow rules ~~~~~~~~~~~~~~~~~~~~~~ @@ -4778,6 +4893,49 @@ Decapsulating VxLAN:: testpmd> flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 / end actions raw_decap / queue index 0 / end +Sample ESP rules +~~~~~~~~~~~~~~~~ + +ESP rules can be created by the following commands:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / esp spi is 1 / end actions + queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / esp spi is 1 / end + actions queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / esp spi is 1 / end actions + queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / esp spi is 1 / end + actions queue index 3 / end + +Sample AH rules +~~~~~~~~~~~~~~~~ + +AH rules can be created by the following commands:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / ah spi is 1 / end actions + queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / ah spi is 1 / end + actions queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / ah spi is 1 / end actions + queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / ah spi is 1 / end + actions queue index 3 / end + +Sample PFCP rules +~~~~~~~~~~~~~~~~~ + +PFCP rules can be created by the following commands(s_field need to be 1 +if seid is set):: + + testpmd> flow create 0 ingress pattern eth / ipv4 / pfcp s_field is 0 / end + actions queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv4 / pfcp s_field is 1 + seid is 1 / end actions queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / pfcp s_field is 0 / end + actions queue index 3 / end + testpmd> flow create 0 ingress pattern eth / ipv6 / pfcp s_field is 1 + seid is 1 / end actions queue index 3 / end + BPF Functions --------------