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)
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
~~~~~~~~~
testpmd> dump_memzone
+dump socket memory
+~~~~~~~~~~~~~~~~~~
+
+Dumps the memory usage of all sockets::
+
+ testpmd> dump_socket_mem
dump struct size
~~~~~~~~~~~~~~~~
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
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
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
~~~~~~~~~~~~~~~
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
~~~~~~~~~~~~~~~~~~~~~
- ``proto_id {unsigned}``: PPP protocol identifier.
+- ``l2tpv3oip``: match L2TPv3 over IP header.
+
+ - ``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
^^^^^^^^^^^^
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
~~~~~~~~~~~~~~~~~~~~~~
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
--------------