xref: /dpdk/doc/guides/testpmd_app_ug/run_app.rst (revision 5334c3feb137ca4eeb4c0f150aae602016b6a5ea)
15630257fSFerruh Yigit..  SPDX-License-Identifier: BSD-3-Clause
25630257fSFerruh Yigit    Copyright(c) 2010-2014 Intel Corporation.
3ac718398SBernard Iremonger
4ac718398SBernard IremongerRunning the Application
5ac718398SBernard Iremonger=======================
6ac718398SBernard Iremonger
7ac718398SBernard IremongerEAL Command-line Options
8ac718398SBernard Iremonger------------------------
9ac718398SBernard Iremonger
10c41c100bSDekel PeledPlease refer to :doc:`EAL parameters (Linux) <../linux_gsg/linux_eal_parameters>`
11c41c100bSDekel Peledor :doc:`EAL parameters (FreeBSD) <../freebsd_gsg/freebsd_eal_parameters>` for
12c41c100bSDekel Peleda list of available EAL command-line options.
13075b182bSEric Zhang
14ac718398SBernard Iremonger
15ac718398SBernard IremongerTestpmd Command-line Options
16ac718398SBernard Iremonger----------------------------
17ac718398SBernard Iremonger
18ac718398SBernard IremongerThe following are the command-line options for the testpmd applications.
19e76d7a76SJohn McNamaraThey must be separated from the EAL options, shown in the previous section, with a ``--`` separator:
20ac718398SBernard Iremonger
21ac718398SBernard Iremonger.. code-block:: console
22ac718398SBernard Iremonger
23e2a94f9aSCiara Power    sudo ./dpdk-testpmd -l 0-3 -n 4 -- -i --portmask=0x1 --nb-cores=2
24ac718398SBernard Iremonger
25e76d7a76SJohn McNamaraThe command line options are:
26e76d7a76SJohn McNamara
27e76d7a76SJohn McNamara*   ``-i, --interactive``
28ac718398SBernard Iremonger
29ac718398SBernard Iremonger    Run testpmd in interactive mode.
30ac718398SBernard Iremonger    In this mode, the testpmd starts with a prompt that can be used to start and stop forwarding,
31ac718398SBernard Iremonger    configure the application and display stats on the current packet processing session.
32e76d7a76SJohn McNamara    See :ref:`testpmd_runtime` for more details.
33ac718398SBernard Iremonger
34ac718398SBernard Iremonger    In non-interactive mode,
35ac718398SBernard Iremonger    the application starts with the configuration specified on the command-line and
36ac718398SBernard Iremonger    immediately enters forwarding mode.
37ac718398SBernard Iremonger
38e76d7a76SJohn McNamara*   ``-h, --help``
39ac718398SBernard Iremonger
40ac718398SBernard Iremonger    Display a help message and quit.
41ac718398SBernard Iremonger
42e76d7a76SJohn McNamara*   ``-a, --auto-start``
43ac718398SBernard Iremonger
44e76d7a76SJohn McNamara    Start forwarding on initialization.
45ac718398SBernard Iremonger
4699cabef0SPablo de Lara*   ``--tx-first``
4799cabef0SPablo de Lara
4899cabef0SPablo de Lara    Start forwarding, after sending a burst of packets first.
4999cabef0SPablo de Lara
5099cabef0SPablo de Lara.. Note::
5199cabef0SPablo de Lara
5299cabef0SPablo de Lara   This flag should be only used in non-interactive mode.
5399cabef0SPablo de Lara
54cfea1f30SPablo de Lara*   ``--stats-period PERIOD``
55cfea1f30SPablo de Lara
56cfea1f30SPablo de Lara    Display statistics every PERIOD seconds, if interactive mode is disabled.
57cfea1f30SPablo de Lara    The default value is 0, which means that the statistics will not be displayed.
58cfea1f30SPablo de Lara
5963b72657SIvan Ilchenko*   ``--display-xstats xstat_name1[,...]``
6063b72657SIvan Ilchenko
6163b72657SIvan Ilchenko    Display comma-separated list of extended statistics every PERIOD seconds
6263b72657SIvan Ilchenko    as specified in ``--stats-period`` or when used with interactive commands
6363b72657SIvan Ilchenko    that show Rx/Tx statistics (i.e. 'show port stats').
6463b72657SIvan Ilchenko
65e76d7a76SJohn McNamara*   ``--nb-cores=N``
66ac718398SBernard Iremonger
67ac718398SBernard Iremonger    Set the number of forwarding cores,
68e2a94f9aSCiara Power    where 1 <= N <= "number of cores" or ``RTE_MAX_LCORE`` from the configuration file.
69ac718398SBernard Iremonger    The default value is 1.
70ac718398SBernard Iremonger
71e76d7a76SJohn McNamara*   ``--nb-ports=N``
72ac718398SBernard Iremonger
73ac718398SBernard Iremonger    Set the number of forwarding ports,
74e2a94f9aSCiara Power    where 1 <= N <= "number of ports" on the board or ``RTE_MAX_ETHPORTS`` from the configuration file.
75ac718398SBernard Iremonger    The default value is the number of ports on the board.
76ac718398SBernard Iremonger
77e76d7a76SJohn McNamara*   ``--coremask=0xXX``
78ac718398SBernard Iremonger
79ac718398SBernard Iremonger    Set the hexadecimal bitmask of the cores running the packet forwarding test.
80cb056611SStephen Hemminger    The main lcore is reserved for command line parsing only and cannot be masked on for packet forwarding.
81ac718398SBernard Iremonger
82e76d7a76SJohn McNamara*   ``--portmask=0xXX``
83ac718398SBernard Iremonger
84ac718398SBernard Iremonger    Set the hexadecimal bitmask of the ports used by the packet forwarding test.
85ac718398SBernard Iremonger
862df00d56SHariprasad Govindharajan*   ``--portlist=X``
872df00d56SHariprasad Govindharajan
882df00d56SHariprasad Govindharajan      Set the forwarding ports based on the user input used by the packet forwarding test.
892df00d56SHariprasad Govindharajan      '-' denotes a range of ports to set including the two specified port IDs
902df00d56SHariprasad Govindharajan      ',' separates multiple port values.
912df00d56SHariprasad Govindharajan      Possible examples like --portlist=0,1 or --portlist=0-2 or --portlist=0,1-2 etc
922df00d56SHariprasad Govindharajan
93e76d7a76SJohn McNamara*   ``--numa``
94ac718398SBernard Iremonger
95999b2ee0SBruce Richardson    Enable NUMA-aware allocation of RX/TX rings and of RX memory buffers
96999b2ee0SBruce Richardson    (mbufs). [Default setting]
97999b2ee0SBruce Richardson
98999b2ee0SBruce Richardson*   ``--no-numa``
99999b2ee0SBruce Richardson
100999b2ee0SBruce Richardson    Disable NUMA-aware allocation of RX/TX rings and of RX memory buffers (mbufs).
101ac718398SBernard Iremonger
102e76d7a76SJohn McNamara*   ``--port-numa-config=(port,socket)[,(port,socket)]``
103ac718398SBernard Iremonger
104ac718398SBernard Iremonger    Specify the socket on which the memory pool to be used by the port will be allocated.
105ac718398SBernard Iremonger
106e76d7a76SJohn McNamara*   ``--ring-numa-config=(port,flag,socket)[,(port,flag,socket)]``
107ac718398SBernard Iremonger
108ac718398SBernard Iremonger    Specify the socket on which the TX/RX rings for the port will be allocated.
109ac718398SBernard Iremonger    Where flag is 1 for RX, 2 for TX, and 3 for RX and TX.
110ac718398SBernard Iremonger
111e76d7a76SJohn McNamara*   ``--socket-num=N``
112ac718398SBernard Iremonger
113ac718398SBernard Iremonger    Set the socket from which all memory is allocated in NUMA mode,
114ac718398SBernard Iremonger    where 0 <= N < number of sockets on the board.
115ac718398SBernard Iremonger
11626cbb419SViacheslav Ovsiienko*   ``--mbuf-size=N[,N1[,...Nn]``
117ac718398SBernard Iremonger
11826cbb419SViacheslav Ovsiienko    Set the data size of the mbufs used to N bytes, where N < 65536.
11926cbb419SViacheslav Ovsiienko    The default value is 2048. If multiple mbuf-size values are specified the
12026cbb419SViacheslav Ovsiienko    extra memory pools will be created for allocating mbufs to receive packets
1219c30a6f3SHenry Nadeau    with buffer splitting features.
122ac718398SBernard Iremonger
123e76d7a76SJohn McNamara*   ``--total-num-mbufs=N``
124ac718398SBernard Iremonger
125ac718398SBernard Iremonger    Set the number of mbufs to be allocated in the mbuf pools, where N > 1024.
126ac718398SBernard Iremonger
127e76d7a76SJohn McNamara*   ``--max-pkt-len=N``
128ac718398SBernard Iremonger
129ac718398SBernard Iremonger    Set the maximum packet size to N bytes, where N >= 64. The default value is 1518.
130ac718398SBernard Iremonger
1314a729092SDekel Peled*   ``--max-lro-pkt-size=N``
1324a729092SDekel Peled
1334a729092SDekel Peled    Set the maximum LRO aggregated packet size to N bytes, where N >= 64.
1344a729092SDekel Peled
135e76d7a76SJohn McNamara*   ``--eth-peers-configfile=name``
136ac718398SBernard Iremonger
137ac718398SBernard Iremonger    Use a configuration file containing the Ethernet addresses of the peer ports.
138e76d7a76SJohn McNamara    The configuration file should contain the Ethernet addresses on separate lines::
139ac718398SBernard Iremonger
140ac718398SBernard Iremonger       XX:XX:XX:XX:XX:01
141ac718398SBernard Iremonger       XX:XX:XX:XX:XX:02
142ac718398SBernard Iremonger       ...
143ac718398SBernard Iremonger
144e76d7a76SJohn McNamara*   ``--eth-peer=N,XX:XX:XX:XX:XX:XX``
145ac718398SBernard Iremonger
146e76d7a76SJohn McNamara    Set the MAC address ``XX:XX:XX:XX:XX:XX`` of the peer port N,
147e2a94f9aSCiara Power    where 0 <= N < ``RTE_MAX_ETHPORTS``.
148ac718398SBernard Iremonger
149bf5b2126SStephen Hemminger*   ``--tx-ip=SRC,DST``
150bf5b2126SStephen Hemminger
151bf5b2126SStephen Hemminger    Set the source and destination IP address used when doing transmit only test.
1527cc1bd46SStephen Hemminger    The defaults address values are source 198.18.0.1 and
1537cc1bd46SStephen Hemminger    destination 198.18.0.2. These are special purpose addresses
1547cc1bd46SStephen Hemminger    reserved for benchmarking (RFC 5735).
155bf5b2126SStephen Hemminger
156bf5b2126SStephen Hemminger*   ``--tx-udp=SRC[,DST]``
157bf5b2126SStephen Hemminger
158bf5b2126SStephen Hemminger    Set the source and destination UDP port number for transmit test only test.
159bf5b2126SStephen Hemminger    The default port is the port 9 which is defined for the discard protocol
160bf5b2126SStephen Hemminger    (RFC 863).
161bf5b2126SStephen Hemminger
16279dd163fSJeff Guo*   ``--disable-crc-strip``
163ac718398SBernard Iremonger
16479dd163fSJeff Guo    Disable hardware CRC stripping.
165ac718398SBernard Iremonger
1664c3ea508SOlivier Matz*   ``--enable-lro``
1674c3ea508SOlivier Matz
1684c3ea508SOlivier Matz    Enable large receive offload.
1694c3ea508SOlivier Matz
170e76d7a76SJohn McNamara*   ``--enable-rx-cksum``
171ac718398SBernard Iremonger
172ac718398SBernard Iremonger    Enable hardware RX checksum offload.
173ac718398SBernard Iremonger
17404997938SMaciej Czekaj*   ``--enable-scatter``
17504997938SMaciej Czekaj
17604997938SMaciej Czekaj    Enable scatter (multi-segment) RX.
17704997938SMaciej Czekaj
1788b9bd0efSMoti Haimovsky*   ``--enable-hw-vlan``
179ac718398SBernard Iremonger
1808b9bd0efSMoti Haimovsky    Enable hardware VLAN.
181ac718398SBernard Iremonger
1828b9bd0efSMoti Haimovsky*   ``--enable-hw-vlan-filter``
183f2552cd5SOuyang Changchun
1848b9bd0efSMoti Haimovsky    Enable hardware VLAN filter.
185f2552cd5SOuyang Changchun
1868b9bd0efSMoti Haimovsky*   ``--enable-hw-vlan-strip``
187f2552cd5SOuyang Changchun
1888b9bd0efSMoti Haimovsky    Enable hardware VLAN strip.
189f2552cd5SOuyang Changchun
1908b9bd0efSMoti Haimovsky*   ``--enable-hw-vlan-extend``
191f2552cd5SOuyang Changchun
1928b9bd0efSMoti Haimovsky    Enable hardware VLAN extend.
193f2552cd5SOuyang Changchun
194b8577876SVivek Sharma*   ``--enable-hw-qinq-strip``
195b8577876SVivek Sharma
196b8577876SVivek Sharma    Enable hardware QINQ strip.
197b8577876SVivek Sharma
198e76d7a76SJohn McNamara*   ``--enable-drop-en``
199ac718398SBernard Iremonger
200ac718398SBernard Iremonger    Enable per-queue packet drop for packets with no descriptors.
201ac718398SBernard Iremonger
202e76d7a76SJohn McNamara*   ``--disable-rss``
203ac718398SBernard Iremonger
204ac718398SBernard Iremonger    Disable RSS (Receive Side Scaling).
205ac718398SBernard Iremonger
206e76d7a76SJohn McNamara*   ``--port-topology=mode``
207ac718398SBernard Iremonger
20848670ed6SRami Rosen    Set port topology, where mode is ``paired`` (the default), ``chained`` or ``loop``.
209e76d7a76SJohn McNamara
210e76d7a76SJohn McNamara    In ``paired`` mode, the forwarding is between pairs of ports, for example: (0,1), (2,3), (4,5).
211e76d7a76SJohn McNamara
212e76d7a76SJohn McNamara    In ``chained`` mode, the forwarding is to the next available port in the port mask, for example: (0,1), (1,2), (2,0).
213e76d7a76SJohn McNamara
214ac718398SBernard Iremonger    The ordering of the ports can be changed using the portlist testpmd runtime function.
215ac718398SBernard Iremonger
21648670ed6SRami Rosen    In ``loop`` mode, ingress traffic is simply transmitted back on the same interface.
21748670ed6SRami Rosen
218e76d7a76SJohn McNamara*   ``--forward-mode=mode``
219ac718398SBernard Iremonger
220e76d7a76SJohn McNamara    Set the forwarding mode where ``mode`` is one of the following::
221ac718398SBernard Iremonger
222e76d7a76SJohn McNamara       io (the default)
223e76d7a76SJohn McNamara       mac
224153ccd05SYong Wang       macswap
225e76d7a76SJohn McNamara       flowgen
226e76d7a76SJohn McNamara       rxonly
227e76d7a76SJohn McNamara       txonly
228e76d7a76SJohn McNamara       csum
229e76d7a76SJohn McNamara       icmpecho
230e76d7a76SJohn McNamara       ieee1588
2315b590fbeSJasvinder Singh       tm
2323c156061SJens Freimann       noisy
2332564abdaSShiri Kuzin       5tswap
23459840375SXueming Li       shared-rxq
2355fe42bc6SFeifei Wang       recycle_mbufs
236e76d7a76SJohn McNamara
237e76d7a76SJohn McNamara*   ``--rss-ip``
238ac718398SBernard Iremonger
239ac718398SBernard Iremonger    Set RSS functions for IPv4/IPv6 only.
240ac718398SBernard Iremonger
241e76d7a76SJohn McNamara*   ``--rss-udp``
242ac718398SBernard Iremonger
243ac718398SBernard Iremonger    Set RSS functions for IPv4/IPv6 and UDP.
244ac718398SBernard Iremonger
245e76d7a76SJohn McNamara*   ``--rxq=N``
246ac718398SBernard Iremonger
247ac718398SBernard Iremonger    Set the number of RX queues per port to N, where 1 <= N <= 65535.
248ac718398SBernard Iremonger    The default value is 1.
249ac718398SBernard Iremonger
250e76d7a76SJohn McNamara*   ``--rxd=N``
251ac718398SBernard Iremonger
252ac718398SBernard Iremonger    Set the number of descriptors in the RX rings to N, where N > 0.
253ac718398SBernard Iremonger    The default value is 128.
254ac718398SBernard Iremonger
255e76d7a76SJohn McNamara*   ``--txq=N``
256ac718398SBernard Iremonger
257ac718398SBernard Iremonger    Set the number of TX queues per port to N, where 1 <= N <= 65535.
258ac718398SBernard Iremonger    The default value is 1.
259ac718398SBernard Iremonger
260e76d7a76SJohn McNamara*   ``--txd=N``
261ac718398SBernard Iremonger
262ac718398SBernard Iremonger    Set the number of descriptors in the TX rings to N, where N > 0.
263ac718398SBernard Iremonger    The default value is 512.
264ac718398SBernard Iremonger
2651c69df45SOri Kam*   ``--hairpinq=N``
2661c69df45SOri Kam
2671c69df45SOri Kam    Set the number of hairpin queues per port to N, where 1 <= N <= 65535.
2681c69df45SOri Kam    The default value is 0. The number of hairpin queues are added to the
2691c69df45SOri Kam    number of TX queues and to the number of RX queues. then the first
2701c69df45SOri Kam    RX hairpin is binded to the first TX hairpin, the second RX hairpin is
2711c69df45SOri Kam    binded to the second TX hairpin and so on. The index of the first
2721c69df45SOri Kam    RX hairpin queue is the number of RX queues as configured using --rxq.
2731c69df45SOri Kam    The index of the first TX hairpin queue is the number of TX queues
2741c69df45SOri Kam    as configured using --txq.
2751c69df45SOri Kam
276e76d7a76SJohn McNamara*   ``--burst=N``
277ac718398SBernard Iremonger
278ac718398SBernard Iremonger    Set the number of packets per burst to N, where 1 <= N <= 512.
2798599ed31SRemy Horton    The default value is 32.
2808599ed31SRemy Horton    If set to 0, driver default is used if defined. Else, if driver
2818599ed31SRemy Horton    default is not defined, default of 32 is used.
282ac718398SBernard Iremonger
2836c02043eSIgor Russkikh*   ``--flowgen-clones=N``
2846c02043eSIgor Russkikh
2856c02043eSIgor Russkikh    Set the number of each packet clones to be sent in `flowgen` mode.
2866c02043eSIgor Russkikh    Sending clones reduces host CPU load on creating packets and may help
2876c02043eSIgor Russkikh    in testing extreme speeds or maxing out Tx packet performance.
2886c02043eSIgor Russkikh    N should be not zero, but less than 'burst' parameter.
2896c02043eSIgor Russkikh
290861e7684SZhihong Wang*   ``--flowgen-flows=N``
291861e7684SZhihong Wang
292861e7684SZhihong Wang    Set the number of flows to be generated in `flowgen` mode, where
293861e7684SZhihong Wang    1 <= N <= INT32_MAX.
294861e7684SZhihong Wang
295e76d7a76SJohn McNamara*   ``--mbcache=N``
296ac718398SBernard Iremonger
297ac718398SBernard Iremonger    Set the cache of mbuf memory pools to N, where 0 <= N <= 512.
298ac718398SBernard Iremonger    The default value is 16.
299ac718398SBernard Iremonger
300e76d7a76SJohn McNamara*   ``--rxpt=N``
301ac718398SBernard Iremonger
302ac718398SBernard Iremonger    Set the prefetch threshold register of RX rings to N, where N >= 0.
303ac718398SBernard Iremonger    The default value is 8.
304ac718398SBernard Iremonger
305e76d7a76SJohn McNamara*   ``--rxht=N``
306ac718398SBernard Iremonger
307ac718398SBernard Iremonger    Set the host threshold register of RX rings to N, where N >= 0.
308ac718398SBernard Iremonger    The default value is 8.
309ac718398SBernard Iremonger
310e76d7a76SJohn McNamara*   ``--rxfreet=N``
311ac718398SBernard Iremonger
312ac718398SBernard Iremonger    Set the free threshold of RX descriptors to N, where 0 <= N < value of --rxd.
313ac718398SBernard Iremonger    The default value is 0.
314ac718398SBernard Iremonger
315e76d7a76SJohn McNamara*   ``--rxwt=N``
316ac718398SBernard Iremonger
317ac718398SBernard Iremonger    Set the write-back threshold register of RX rings to N, where N >= 0.
318ac718398SBernard Iremonger    The default value is 4.
319ac718398SBernard Iremonger
320e76d7a76SJohn McNamara*   ``--txpt=N``
321ac718398SBernard Iremonger
322ac718398SBernard Iremonger    Set the prefetch threshold register of TX rings to N, where N >= 0.
323ac718398SBernard Iremonger    The default value is 36.
324ac718398SBernard Iremonger
325e76d7a76SJohn McNamara*   ``--txht=N``
326ac718398SBernard Iremonger
327ac718398SBernard Iremonger    Set the host threshold register of TX rings to N, where N >= 0.
328ac718398SBernard Iremonger    The default value is 0.
329ac718398SBernard Iremonger
330e76d7a76SJohn McNamara*   ``--txwt=N``
331ac718398SBernard Iremonger
332ac718398SBernard Iremonger    Set the write-back threshold register of TX rings to N, where N >= 0.
333ac718398SBernard Iremonger    The default value is 0.
334ac718398SBernard Iremonger
335e76d7a76SJohn McNamara*   ``--txfreet=N``
336ac718398SBernard Iremonger
337e76d7a76SJohn McNamara    Set the transmit free threshold of TX rings to N, where 0 <= N <= value of ``--txd``.
338ac718398SBernard Iremonger    The default value is 0.
339ac718398SBernard Iremonger
340e76d7a76SJohn McNamara*   ``--txrst=N``
341ac718398SBernard Iremonger
342e76d7a76SJohn McNamara    Set the transmit RS bit threshold of TX rings to N, where 0 <= N <= value of ``--txd``.
343ac718398SBernard Iremonger    The default value is 0.
344ac718398SBernard Iremonger
345e76d7a76SJohn McNamara*   ``--no-flush-rx``
346ac718398SBernard Iremonger
347e76d7a76SJohn McNamara    Don't flush the RX streams before starting forwarding. Used mainly with the PCAP PMD.
348ac718398SBernard Iremonger
34991c78e09SViacheslav Ovsiienko*   ``--rxoffs=X[,Y]``
35091c78e09SViacheslav Ovsiienko
35191c78e09SViacheslav Ovsiienko    Set the offsets of packet segments on receiving if split
35291c78e09SViacheslav Ovsiienko    feature is engaged. Affects only the queues configured
35391c78e09SViacheslav Ovsiienko    with split offloads (currently BUFFER_SPLIT is supported only).
35491c78e09SViacheslav Ovsiienko
3550f2096d7SViacheslav Ovsiienko*   ``--rxpkts=X[,Y]``
3560f2096d7SViacheslav Ovsiienko
3570f2096d7SViacheslav Ovsiienko    Set the length of segments to scatter packets on receiving if split
3580f2096d7SViacheslav Ovsiienko    feature is engaged. Affects only the queues configured
3590f2096d7SViacheslav Ovsiienko    with split offloads (currently BUFFER_SPLIT is supported only).
3600f2096d7SViacheslav Ovsiienko    Optionally the multiple memory pools can be specified with --mbuf-size
3610f2096d7SViacheslav Ovsiienko    command line parameter and the mbufs to receive will be allocated
3620f2096d7SViacheslav Ovsiienko    sequentially from these extra memory pools.
3630f2096d7SViacheslav Ovsiienko
364e76d7a76SJohn McNamara*   ``--txpkts=X[,Y]``
365ac718398SBernard Iremonger
3662ebacaa7SMaciej Czekaj    Set TX segment sizes or total packet length. Valid for ``tx-only``
3672ebacaa7SMaciej Czekaj    and ``flowgen`` forwarding modes.
368ac718398SBernard Iremonger
369a4bf5421SHanumanth Pothula* ``--multi-rx-mempool``
370a4bf5421SHanumanth Pothula
371a4bf5421SHanumanth Pothula    Enable multiple mbuf pools per Rx queue.
372a4bf5421SHanumanth Pothula
37382010ef5SYongseok Koh*   ``--txonly-multi-flow``
37482010ef5SYongseok Koh
37582010ef5SYongseok Koh    Generate multiple flows in txonly mode.
37682010ef5SYongseok Koh
377f4d178c1SXueming Li*   ``--rxq-share=[X]``
378f4d178c1SXueming Li
379f4d178c1SXueming Li    Create queues in shared Rx queue mode if device supports.
380f4d178c1SXueming Li    Shared Rx queues are grouped per X ports. X defaults to UINT32_MAX,
38159840375SXueming Li    implies all ports join share group 1. Forwarding engine "shared-rxq"
38259840375SXueming Li    should be used for shared Rx queues. This engine does Rx only and
38359840375SXueming Li    update stream statistics accordingly.
384f4d178c1SXueming Li
385b7b78a08SAjit Khaparde*   ``--eth-link-speed``
386b7b78a08SAjit Khaparde
387b7b78a08SAjit Khaparde    Set a forced link speed to the ethernet port::
388b7b78a08SAjit Khaparde
389b7b78a08SAjit Khaparde       10 - 10Mbps (not supported)
390b7b78a08SAjit Khaparde       100 - 100Mbps (not supported)
391b7b78a08SAjit Khaparde       1000 - 1Gbps
392d54c7f15SJulien Aube       2500 - 2.5Gbps
393d54c7f15SJulien Aube       5000 - 5Gbps
394b7b78a08SAjit Khaparde       10000 - 10Gbps
395b7b78a08SAjit Khaparde       25000 - 25Gbps
396b7b78a08SAjit Khaparde       40000 - 40Gbps
397b7b78a08SAjit Khaparde       50000 - 50Gbps
398b7b78a08SAjit Khaparde       100000 - 100Gbps
399b7b78a08SAjit Khaparde       200000 - 200Gbps
400a131d9ecSThomas Monjalon       400000 - 400Gbps
401b7b78a08SAjit Khaparde       ...
402b7b78a08SAjit Khaparde
403e76d7a76SJohn McNamara*   ``--disable-link-check``
404ac718398SBernard Iremonger
405ac718398SBernard Iremonger    Disable check on link status when starting/stopping ports.
406b8628a0eSGaetan Rivet
4076937d210SStephen Hemminger*   ``--disable-device-start``
4086937d210SStephen Hemminger
4096937d210SStephen Hemminger    Do not automatically start all ports. This allows testing
4106937d210SStephen Hemminger    configuration of rx and tx queues before device is started
4116937d210SStephen Hemminger    for the first time.
4126937d210SStephen Hemminger
413b8628a0eSGaetan Rivet*   ``--no-lsc-interrupt``
414b8628a0eSGaetan Rivet
415b8628a0eSGaetan Rivet    Disable LSC interrupts for all ports, even those supporting it.
416b8628a0eSGaetan Rivet
417b8628a0eSGaetan Rivet*   ``--no-rmv-interrupt``
418b8628a0eSGaetan Rivet
419b8628a0eSGaetan Rivet    Disable RMV interrupts for all ports, even those supporting it.
420e25e6c70SRemy Horton
421e25e6c70SRemy Horton*   ``--bitrate-stats=N``
422e25e6c70SRemy Horton
423e25e6c70SRemy Horton    Set the logical core N to perform bitrate calculation.
4243af72783SGaetan Rivet
4258cd8f0a9SStephen Hemminger*   ``--latencystats=N``
4268cd8f0a9SStephen Hemminger
4278cd8f0a9SStephen Hemminger    Set the logical core N to perform latency and jitter calculations.
4288cd8f0a9SStephen Hemminger
429eb0d471aSKalesh AP*   ``--print-event <unknown|intr_lsc|queue_state|intr_reset|vf_mbox|macsec|intr_rmv|dev_probed|dev_released|flow_aged|err_recovering|recovery_success|recovery_failed|all>``
4303af72783SGaetan Rivet
431b6b63dfdSGaetan Rivet    Enable printing the occurrence of the designated event. Using all will
432b6b63dfdSGaetan Rivet    enable all of them.
4333af72783SGaetan Rivet
434eb0d471aSKalesh AP*   ``--mask-event <unknown|intr_lsc|queue_state|intr_reset|vf_mbox|macsec|intr_rmv|dev_probed|dev_released|flow_aged|err_recovering|recovery_success|recovery_failed|all>``
4353af72783SGaetan Rivet
436b6b63dfdSGaetan Rivet    Disable printing the occurrence of the designated event. Using all will
437b6b63dfdSGaetan Rivet    disable all of them.
4387ee3e944SVasily Philipov
4397ee3e944SVasily Philipov*   ``--flow-isolate-all``
4407ee3e944SVasily Philipov
4417ee3e944SVasily Philipov    Providing this parameter requests flow API isolated mode on all ports at
4427ee3e944SVasily Philipov    initialization time. It ensures all traffic is received through the
4437ee3e944SVasily Philipov    configured flow rules only (see flow command).
4447ee3e944SVasily Philipov
4457ee3e944SVasily Philipov    Ports that do not support this mode are automatically discarded.
446fd8c20aaSShahaf Shuler
447543df472SChengwen Feng*   ``--disable-flow-flush``
448543df472SChengwen Feng
449543df472SChengwen Feng    Disable port flow flush when stopping port.
450543df472SChengwen Feng    This allows testing keep flow rules or shared flow objects across restart.
451543df472SChengwen Feng
452fd8c20aaSShahaf Shuler*   ``--tx-offloads=0xXXXXXXXX``
453fd8c20aaSShahaf Shuler
454fd8c20aaSShahaf Shuler    Set the hexadecimal bitmask of TX queue offloads.
455fd8c20aaSShahaf Shuler    The default value is 0.
456fb73e096SJeff Guo
457fb1a5a0fSVivek Sharma*   ``--rx-offloads=0xXXXXXXXX``
458fb1a5a0fSVivek Sharma
459fb1a5a0fSVivek Sharma    Set the hexadecimal bitmask of RX queue offloads.
460fb1a5a0fSVivek Sharma    The default value is 0.
461fb1a5a0fSVivek Sharma
462fb73e096SJeff Guo*   ``--hot-plug``
463fb73e096SJeff Guo
46447ae571eSStephen Hemminger    Enable device event monitor mechanism for hotplug.
46539e5e20fSXueming Li
46639e5e20fSXueming Li*   ``--vxlan-gpe-port=N``
46739e5e20fSXueming Li
46839e5e20fSXueming Li    Set the UDP port number of tunnel VXLAN-GPE to N.
46939e5e20fSXueming Li    The default value is 4790.
470e505d84cSAnatoly Burakov
4712f60c649SOphir Munk*   ``--geneve-parsed-port=N``
4722f60c649SOphir Munk
4732f60c649SOphir Munk    Set the UDP port number that is used for parsing the GENEVE protocol to N.
4742f60c649SOphir Munk    HW may be configured with another tunnel Geneve port.
4752f60c649SOphir Munk    The default value is 6081.
4762f60c649SOphir Munk
477e505d84cSAnatoly Burakov*   ``--mlockall``
478e505d84cSAnatoly Burakov
479e505d84cSAnatoly Burakov    Enable locking all memory.
480e505d84cSAnatoly Burakov
481e505d84cSAnatoly Burakov*   ``--no-mlockall``
482e505d84cSAnatoly Burakov
483e505d84cSAnatoly Burakov    Disable locking all memory.
484c7f5dba7SAnatoly Burakov
485c7f5dba7SAnatoly Burakov*   ``--mp-alloc <native|anon|xmem|xmemhuge>``
486c7f5dba7SAnatoly Burakov
487c7f5dba7SAnatoly Burakov    Select mempool allocation mode:
488c7f5dba7SAnatoly Burakov
489c7f5dba7SAnatoly Burakov    * native: create and populate mempool using native DPDK memory
490c7f5dba7SAnatoly Burakov    * anon: create mempool using native DPDK memory, but populate using
491c7f5dba7SAnatoly Burakov      anonymous memory
492c7f5dba7SAnatoly Burakov    * xmem: create and populate mempool using externally and anonymously
493c7f5dba7SAnatoly Burakov      allocated area
494c7f5dba7SAnatoly Burakov    * xmemhuge: create and populate mempool using externally and anonymously
495c7f5dba7SAnatoly Burakov      allocated hugepage area
4963c156061SJens Freimann
4971d343c19SMike Pattrick*   ``--noisy-forward-mode=mode``
4981d343c19SMike Pattrick
4991d343c19SMike Pattrick    Set the noisy vnf forwarding mode where ``mode`` is one of the following::
5001d343c19SMike Pattrick
5011d343c19SMike Pattrick       io (the default)
5021d343c19SMike Pattrick       mac
5031d343c19SMike Pattrick       macswap
5041d343c19SMike Pattrick       5tswap
5051d343c19SMike Pattrick
5063c156061SJens Freimann*   ``--noisy-tx-sw-buffer-size``
5073c156061SJens Freimann
5083c156061SJens Freimann    Set the number of maximum elements  of the FIFO queue to be created
5093c156061SJens Freimann    for buffering packets. Only available with the noisy forwarding mode.
5103c156061SJens Freimann    The default value is 0.
5113c156061SJens Freimann
5123c156061SJens Freimann*   ``--noisy-tx-sw-buffer-flushtime=N``
5133c156061SJens Freimann
5143c156061SJens Freimann    Set the time before packets in the FIFO queue is flushed.
5153c156061SJens Freimann    Only available with the noisy forwarding mode. The default value is 0.
5163c156061SJens Freimann
5173c156061SJens Freimann*   ``--noisy-lkup-memory=N``
5183c156061SJens Freimann
519d629b7b5SJohn McNamara    Set the size of the noisy neighbor simulation memory buffer in MB to N.
5203c156061SJens Freimann    Only available with the noisy forwarding mode. The default value is 0.
5213c156061SJens Freimann
5223c156061SJens Freimann
5233c156061SJens Freimann*   ``--noisy-lkup-num-reads=N``
5243c156061SJens Freimann
525d629b7b5SJohn McNamara    Set the number of reads to be done in noisy neighbor simulation memory buffer to N.
5263c156061SJens Freimann    Only available with the noisy forwarding mode. The default value is 0.
5273c156061SJens Freimann
5283c156061SJens Freimann*   ``--noisy-lkup-num-writes=N``
5293c156061SJens Freimann
530d629b7b5SJohn McNamara    Set the number of writes to be done in noisy neighbor simulation memory buffer to N.
5313c156061SJens Freimann    Only available with the noisy forwarding mode. The default value is 0.
5323c156061SJens Freimann
5333c156061SJens Freimann*   ``--noisy-lkup-num-reads-writes=N``
5343c156061SJens Freimann
535d629b7b5SJohn McNamara    Set the number of r/w accesses to be done in noisy neighbor simulation memory buffer to N.
5363c156061SJens Freimann    Only available with the noisy forwarding mode. The default value is 0.
53759fcf854SShahaf Shuler
53859fcf854SShahaf Shuler*   ``--no-iova-contig``
53959fcf854SShahaf Shuler
54059fcf854SShahaf Shuler    Enable to create mempool which is not IOVA contiguous. Valid only with --mp-alloc=anon.
54159fcf854SShahaf Shuler    The default value is 0.
542f9295aa2SXiaoyu Min
543f9295aa2SXiaoyu Min*   ``--rx-mq-mode``
544f9295aa2SXiaoyu Min
545f9295aa2SXiaoyu Min    Set the hexadecimal bitmask of RX multi queue mode which can be enabled.
546f9295aa2SXiaoyu Min    The default value is 0x7::
547f9295aa2SXiaoyu Min
548295968d1SFerruh Yigit       RTE_ETH_MQ_RX_RSS_FLAG | RTE_ETH_MQ_RX_DCB_FLAG | RTE_ETH_MQ_RX_VMDQ_FLAG
549bc700b67SDharmik Thakkar
550bc700b67SDharmik Thakkar*   ``--record-core-cycles``
551bc700b67SDharmik Thakkar
552bc700b67SDharmik Thakkar    Enable measurement of CPU cycles per packet.
5530e4b1963SDharmik Thakkar
5540e4b1963SDharmik Thakkar*   ``--record-burst-stats``
5550e4b1963SDharmik Thakkar
5560e4b1963SDharmik Thakkar    Enable display of RX and TX burst stats.
55701817b10SBing Zhao
55823095155SDariusz Sosnowski*   ``--hairpin-mode=0xXXXX``
55901817b10SBing Zhao
56023095155SDariusz Sosnowski    Set the hairpin port configuration with bitmask, only valid when hairpin queues number is set::
561ea2066b1SAjit Khaparde
56223095155SDariusz Sosnowski	bit 18 - hairpin TX queues will use RTE memory
56323095155SDariusz Sosnowski	bit 16 - hairpin TX queues will use locked device memory
56423095155SDariusz Sosnowski	bit 13 - hairpin RX queues will use RTE memory
56523095155SDariusz Sosnowski	bit 12 - hairpin RX queues will use locked device memory
56623095155SDariusz Sosnowski	bit 9 - force memory settings of hairpin TX queue
56723095155SDariusz Sosnowski	bit 8 - force memory settings of hairpin RX queue
56801817b10SBing Zhao	bit 4 - explicit Tx flow rule
56901817b10SBing Zhao	bit 1 - two hairpin ports paired
57001817b10SBing Zhao	bit 0 - two hairpin ports loop
571ea2066b1SAjit Khaparde
57201817b10SBing Zhao    The default value is 0. Hairpin will use single port mode and implicit Tx flow mode.
573a550baf2SMin Hu (Connor)
574*5334c3feSGregory Etelson*   ``--hairpin-map=Rx port id:Rx queue:Tx port id:Tx queue:queues number``
575*5334c3feSGregory Etelson
576*5334c3feSGregory Etelson    Set explicit hairpin configuration.
577a550baf2SMin Hu (Connor)
578a550baf2SMin Hu (Connor)Testpmd Multi-Process Command-line Options
579a550baf2SMin Hu (Connor)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
580a550baf2SMin Hu (Connor)
581a550baf2SMin Hu (Connor)The following are the command-line options for testpmd multi-process support:
582a550baf2SMin Hu (Connor)
583a550baf2SMin Hu (Connor)*   primary process:
584a550baf2SMin Hu (Connor)
585a550baf2SMin Hu (Connor).. code-block:: console
586a550baf2SMin Hu (Connor)
587a550baf2SMin Hu (Connor)    sudo ./dpdk-testpmd -a xxx --proc-type=auto -l 0-1 -- -i --rxq=4 --txq=4 \
588a550baf2SMin Hu (Connor)        --num-procs=2 --proc-id=0
589a550baf2SMin Hu (Connor)
590a550baf2SMin Hu (Connor)*   secondary process:
591a550baf2SMin Hu (Connor)
592a550baf2SMin Hu (Connor).. code-block:: console
593a550baf2SMin Hu (Connor)
594a550baf2SMin Hu (Connor)    sudo ./dpdk-testpmd -a xxx --proc-type=auto -l 2-3 -- -i --rxq=4 --txq=4 \
595a550baf2SMin Hu (Connor)        --num-procs=2 --proc-id=1
596a550baf2SMin Hu (Connor)
597a550baf2SMin Hu (Connor)The command line options are:
598a550baf2SMin Hu (Connor)
599a550baf2SMin Hu (Connor)*   ``--num-procs=N``
600a550baf2SMin Hu (Connor)
601a550baf2SMin Hu (Connor)    The number of processes which will be used.
602a550baf2SMin Hu (Connor)
603a550baf2SMin Hu (Connor)*   ``--proc-id=ID``
604a550baf2SMin Hu (Connor)
605a550baf2SMin Hu (Connor)    The ID of the current process (ID < num-procs). ID should be different in
606a550baf2SMin Hu (Connor)    primary process and secondary process, which starts from '0'.
607a550baf2SMin Hu (Connor)
608a550baf2SMin Hu (Connor)Calculation rule for queue:
609a550baf2SMin Hu (Connor)All queues are allocated to different processes based on ``proc_num`` and
610a550baf2SMin Hu (Connor)``proc_id``.
611a550baf2SMin Hu (Connor)Calculation rule for the testpmd to allocate queues to each process:
612a550baf2SMin Hu (Connor)*   start(queue start id) = proc_id * nb_q / num_procs;
613a550baf2SMin Hu (Connor)
614a550baf2SMin Hu (Connor)*   end(queue end id) = start + nb_q / num_procs;
615a550baf2SMin Hu (Connor)
616a550baf2SMin Hu (Connor)For example, if testpmd is configured to have 4 Tx and Rx queues,
617a550baf2SMin Hu (Connor)queues 0 and 1 will be used by the primary process and
618a550baf2SMin Hu (Connor)queues 2 and 3 will be used by the secondary process.
619a550baf2SMin Hu (Connor)
620a550baf2SMin Hu (Connor)The number of queues should be a multiple of the number of processes. If not,
621a550baf2SMin Hu (Connor)redundant queues will exist after queues are allocated to processes. If RSS
622a550baf2SMin Hu (Connor)is enabled, packet loss occurs when traffic is sent to all processes at the same
623a550baf2SMin Hu (Connor)time. Some traffic goes to redundant queues and cannot be forwarded.
624a550baf2SMin Hu (Connor)
625a550baf2SMin Hu (Connor)All the dev ops is supported in primary process. While secondary process is
626a550baf2SMin Hu (Connor)not permitted to allocate or release shared memory, so some ops are not supported
627a550baf2SMin Hu (Connor)as follows:
628a550baf2SMin Hu (Connor)
629a550baf2SMin Hu (Connor)- ``dev_configure``
630a550baf2SMin Hu (Connor)- ``dev_start``
631a550baf2SMin Hu (Connor)- ``dev_stop``
632e9351eaaSQiming Yang- ``dev_reset``
633a550baf2SMin Hu (Connor)- ``rx_queue_setup``
634a550baf2SMin Hu (Connor)- ``tx_queue_setup``
635a550baf2SMin Hu (Connor)- ``rx_queue_release``
636a550baf2SMin Hu (Connor)- ``tx_queue_release``
637a550baf2SMin Hu (Connor)
638a550baf2SMin Hu (Connor)So, any command from testpmd which calls those APIs will not be supported in
639a550baf2SMin Hu (Connor)secondary process, like:
640a550baf2SMin Hu (Connor)
641a550baf2SMin Hu (Connor).. code-block:: console
642a550baf2SMin Hu (Connor)
643a550baf2SMin Hu (Connor)    port config all rxq|txq|rxd|txd <value>
644a550baf2SMin Hu (Connor)    port config <port_id> rx_offload xxx on/off
645a550baf2SMin Hu (Connor)    port config <port_id> tx_offload xxx on/off
646a550baf2SMin Hu (Connor)
647a550baf2SMin Hu (Connor)etc.
648a550baf2SMin Hu (Connor)
649a550baf2SMin Hu (Connor)When secondary is running, port in primary is not permitted to be stopped.
650a550baf2SMin Hu (Connor)Reconfigure operation is only valid in primary.
651a550baf2SMin Hu (Connor)
652a550baf2SMin Hu (Connor)Stats is supported, stats will not change when one quits and starts, as they
653a550baf2SMin Hu (Connor)share the same buffer to store the stats. Flow rules are maintained in process
654a550baf2SMin Hu (Connor)level: primary and secondary has its own flow list (but one flow list in HW).
655a550baf2SMin Hu (Connor)The two can see all the queues, so setting the flow rules for the other is OK.
656a550baf2SMin Hu (Connor)But in the testpmd primary process receiving or transmitting packets from the
657a550baf2SMin Hu (Connor)queue allocated for secondary process is not permitted, and same for secondary
658a550baf2SMin Hu (Connor)process.
659a550baf2SMin Hu (Connor)
660a550baf2SMin Hu (Connor)Flow API and RSS are supported.
661