15129044dSC.J. Collier..  BSD LICENSE
25129044dSC.J. Collier    Copyright 2015 6WIND S.A.
35129044dSC.J. Collier
45129044dSC.J. Collier    Redistribution and use in source and binary forms, with or without
55129044dSC.J. Collier    modification, are permitted provided that the following conditions
65129044dSC.J. Collier    are met:
75129044dSC.J. Collier
85129044dSC.J. Collier    * Redistributions of source code must retain the above copyright
95129044dSC.J. Collier    notice, this list of conditions and the following disclaimer.
105129044dSC.J. Collier    * Redistributions in binary form must reproduce the above copyright
115129044dSC.J. Collier    notice, this list of conditions and the following disclaimer in
125129044dSC.J. Collier    the documentation and/or other materials provided with the
135129044dSC.J. Collier    distribution.
145129044dSC.J. Collier    * Neither the name of 6WIND S.A. nor the names of its
155129044dSC.J. Collier    contributors may be used to endorse or promote products derived
165129044dSC.J. Collier    from this software without specific prior written permission.
175129044dSC.J. Collier
185129044dSC.J. Collier    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195129044dSC.J. Collier    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
205129044dSC.J. Collier    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
215129044dSC.J. Collier    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
225129044dSC.J. Collier    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
235129044dSC.J. Collier    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
245129044dSC.J. Collier    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
255129044dSC.J. Collier    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
265129044dSC.J. Collier    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275129044dSC.J. Collier    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
285129044dSC.J. Collier    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295129044dSC.J. Collier
305129044dSC.J. CollierMLX5 poll mode driver
315129044dSC.J. Collier=====================
325129044dSC.J. Collier
335129044dSC.J. CollierThe MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support for
345129044dSC.J. Collier**Mellanox ConnectX-4** and **Mellanox ConnectX-4 Lx** families of
355129044dSC.J. Collier10/25/40/50/100 Gb/s adapters as well as their virtual functions (VF) in
365129044dSC.J. CollierSR-IOV context.
375129044dSC.J. Collier
385129044dSC.J. CollierInformation and documentation about these adapters can be found on the
395129044dSC.J. Collier`Mellanox website <http://www.mellanox.com>`__. Help is also provided by the
405129044dSC.J. Collier`Mellanox community <http://community.mellanox.com/welcome>`__.
415129044dSC.J. Collier
425129044dSC.J. CollierThere is also a `section dedicated to this poll mode driver
435129044dSC.J. Collier<http://www.mellanox.com/page/products_dyn?product_family=209&mtag=pmd_for_dpdk>`__.
445129044dSC.J. Collier
455129044dSC.J. Collier.. note::
465129044dSC.J. Collier
475129044dSC.J. Collier   Due to external dependencies, this driver is disabled by default. It must
485129044dSC.J. Collier   be enabled manually by setting ``CONFIG_RTE_LIBRTE_MLX5_PMD=y`` and
495129044dSC.J. Collier   recompiling DPDK.
505129044dSC.J. Collier
515129044dSC.J. CollierImplementation details
525129044dSC.J. Collier----------------------
535129044dSC.J. Collier
545129044dSC.J. CollierBesides its dependency on libibverbs (that implies libmlx5 and associated
555129044dSC.J. Collierkernel support), librte_pmd_mlx5 relies heavily on system calls for control
565129044dSC.J. Collieroperations such as querying/updating the MTU and flow control parameters.
575129044dSC.J. Collier
585129044dSC.J. CollierFor security reasons and robustness, this driver only deals with virtual
595129044dSC.J. Colliermemory addresses. The way resources allocations are handled by the kernel
605129044dSC.J. Colliercombined with hardware specifications that allow it to handle virtual memory
615129044dSC.J. Collieraddresses directly ensure that DPDK applications cannot access random
625129044dSC.J. Collierphysical memory (or memory that does not belong to the current process).
635129044dSC.J. Collier
645129044dSC.J. CollierThis capability allows the PMD to coexist with kernel network interfaces
655129044dSC.J. Collierwhich remain functional, although they stop receiving unicast packets as
665129044dSC.J. Collierlong as they share the same MAC address.
675129044dSC.J. Collier
685129044dSC.J. CollierEnabling librte_pmd_mlx5 causes DPDK applications to be linked against
695129044dSC.J. Collierlibibverbs.
705129044dSC.J. Collier
715129044dSC.J. CollierFeatures
725129044dSC.J. Collier--------
735129044dSC.J. Collier
745129044dSC.J. Collier- Multiple TX and RX queues.
755129044dSC.J. Collier- Support for scattered TX and RX frames.
765129044dSC.J. Collier- IPv4, IPv6, TCPv4, TCPv6, UDPv4 and UDPv6 RSS on any number of queues.
775129044dSC.J. Collier- Several RSS hash keys, one for each flow type.
785129044dSC.J. Collier- Configurable RETA table.
795129044dSC.J. Collier- Support for multiple MAC addresses.
805129044dSC.J. Collier- VLAN filtering.
815129044dSC.J. Collier- RX VLAN stripping.
825129044dSC.J. Collier- TX VLAN insertion.
835129044dSC.J. Collier- RX CRC stripping configuration.
845129044dSC.J. Collier- Promiscuous mode.
855129044dSC.J. Collier- Multicast promiscuous mode.
865129044dSC.J. Collier- Hardware checksum offloads.
87c300e355SChristian Ehrhardt- Flow director (RTE_FDIR_MODE_PERFECT, RTE_FDIR_MODE_PERFECT_MAC_VLAN and
88c300e355SChristian Ehrhardt  RTE_ETH_FDIR_REJECT).
895129044dSC.J. Collier- Secondary process TX is supported.
90809f0800SChristian Ehrhardt- KVM and VMware ESX SR-IOV modes are supported.
913d9b7210SChristian Ehrhardt- RSS hash result is supported.
925129044dSC.J. Collier
935129044dSC.J. CollierLimitations
945129044dSC.J. Collier-----------
955129044dSC.J. Collier
965129044dSC.J. Collier- Inner RSS for VXLAN frames is not supported yet.
975129044dSC.J. Collier- Port statistics through software counters only.
985129044dSC.J. Collier- Hardware checksum offloads for VXLAN inner header are not supported yet.
995129044dSC.J. Collier- Secondary process RX is not supported.
1005129044dSC.J. Collier
1015129044dSC.J. CollierConfiguration
1025129044dSC.J. Collier-------------
1035129044dSC.J. Collier
1045129044dSC.J. CollierCompilation options
1055129044dSC.J. Collier~~~~~~~~~~~~~~~~~~~
1065129044dSC.J. Collier
1075129044dSC.J. CollierThese options can be modified in the ``.config`` file.
1085129044dSC.J. Collier
1095129044dSC.J. Collier- ``CONFIG_RTE_LIBRTE_MLX5_PMD`` (default **n**)
1105129044dSC.J. Collier
1115129044dSC.J. Collier  Toggle compilation of librte_pmd_mlx5 itself.
1125129044dSC.J. Collier
1135129044dSC.J. Collier- ``CONFIG_RTE_LIBRTE_MLX5_DEBUG`` (default **n**)
1145129044dSC.J. Collier
1155129044dSC.J. Collier  Toggle debugging code and stricter compilation flags. Enabling this option
1165129044dSC.J. Collier  adds additional run-time checks and debugging messages at the cost of
1175129044dSC.J. Collier  lower performance.
1185129044dSC.J. Collier
1195129044dSC.J. Collier- ``CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE`` (default **8**)
1205129044dSC.J. Collier
1215129044dSC.J. Collier  Maximum number of cached memory pools (MPs) per TX queue. Each MP from
1225129044dSC.J. Collier  which buffers are to be transmitted must be associated to memory regions
1235129044dSC.J. Collier  (MRs). This is a slow operation that must be cached.
1245129044dSC.J. Collier
1255129044dSC.J. Collier  This value is always 1 for RX queues since they use a single MP.
1265129044dSC.J. Collier
1275129044dSC.J. CollierEnvironment variables
1285129044dSC.J. Collier~~~~~~~~~~~~~~~~~~~~~
1295129044dSC.J. Collier
1305129044dSC.J. Collier- ``MLX5_PMD_ENABLE_PADDING``
1315129044dSC.J. Collier
1325129044dSC.J. Collier  Enables HW packet padding in PCI bus transactions.
1335129044dSC.J. Collier
1345129044dSC.J. Collier  When packet size is cache aligned and CRC stripping is enabled, 4 fewer
1355129044dSC.J. Collier  bytes are written to the PCI bus. Enabling padding makes such packets
1365129044dSC.J. Collier  aligned again.
1375129044dSC.J. Collier
1385129044dSC.J. Collier  In cases where PCI bandwidth is the bottleneck, padding can improve
1395129044dSC.J. Collier  performance by 10%.
1405129044dSC.J. Collier
1415129044dSC.J. Collier  This is disabled by default since this can also decrease performance for
1425129044dSC.J. Collier  unaligned packet sizes.
1435129044dSC.J. Collier
1445129044dSC.J. CollierRun-time configuration
1455129044dSC.J. Collier~~~~~~~~~~~~~~~~~~~~~~
1465129044dSC.J. Collier
1475129044dSC.J. Collier- librte_pmd_mlx5 brings kernel network interfaces up during initialization
1485129044dSC.J. Collier  because it is affected by their state. Forcing them down prevents packets
1495129044dSC.J. Collier  reception.
1505129044dSC.J. Collier
1515129044dSC.J. Collier- **ethtool** operations on related kernel interfaces also affect the PMD.
1525129044dSC.J. Collier
153809f0800SChristian Ehrhardt- ``rxq_cqe_comp_en`` parameter [int]
154809f0800SChristian Ehrhardt
155809f0800SChristian Ehrhardt  A nonzero value enables the compression of CQE on RX side. This feature
156809f0800SChristian Ehrhardt  allows to save PCI bandwidth and improve performance at the cost of a
157809f0800SChristian Ehrhardt  slightly higher CPU usage.  Enabled by default.
158809f0800SChristian Ehrhardt
15941e049c7SChristian Ehrhardt  Supported on:
16041e049c7SChristian Ehrhardt
16141e049c7SChristian Ehrhardt  - x86_64 with ConnectX4 and ConnectX4 LX
16241e049c7SChristian Ehrhardt  - Power8 with ConnectX4 LX
16341e049c7SChristian Ehrhardt
164809f0800SChristian Ehrhardt- ``txq_inline`` parameter [int]
165809f0800SChristian Ehrhardt
166809f0800SChristian Ehrhardt  Amount of data to be inlined during TX operations. Improves latency.
167809f0800SChristian Ehrhardt  Can improve PPS performance when PCI back pressure is detected and may be
168809f0800SChristian Ehrhardt  useful for scenarios involving heavy traffic on many queues.
169809f0800SChristian Ehrhardt
170809f0800SChristian Ehrhardt  It is not enabled by default (set to 0) since the additional software
171809f0800SChristian Ehrhardt  logic necessary to handle this mode can lower performance when back
172809f0800SChristian Ehrhardt  pressure is not expected.
173809f0800SChristian Ehrhardt
174809f0800SChristian Ehrhardt- ``txqs_min_inline`` parameter [int]
175809f0800SChristian Ehrhardt
176809f0800SChristian Ehrhardt  Enable inline send only when the number of TX queues is greater or equal
177809f0800SChristian Ehrhardt  to this value.
178809f0800SChristian Ehrhardt
179809f0800SChristian Ehrhardt  This option should be used in combination with ``txq_inline`` above.
180809f0800SChristian Ehrhardt
181809f0800SChristian Ehrhardt- ``txq_mpw_en`` parameter [int]
182809f0800SChristian Ehrhardt
183809f0800SChristian Ehrhardt  A nonzero value enables multi-packet send. This feature allows the TX
184809f0800SChristian Ehrhardt  burst function to pack up to five packets in two descriptors in order to
185809f0800SChristian Ehrhardt  save PCI bandwidth and improve performance at the cost of a slightly
186809f0800SChristian Ehrhardt  higher CPU usage.
187809f0800SChristian Ehrhardt
188809f0800SChristian Ehrhardt  It is currently only supported on the ConnectX-4 Lx family of adapters.
189809f0800SChristian Ehrhardt  Enabled by default.
190809f0800SChristian Ehrhardt
1915129044dSC.J. CollierPrerequisites
1925129044dSC.J. Collier-------------
1935129044dSC.J. Collier
1945129044dSC.J. CollierThis driver relies on external libraries and kernel drivers for resources
1955129044dSC.J. Collierallocations and initialization. The following dependencies are not part of
1965129044dSC.J. CollierDPDK and must be installed separately:
1975129044dSC.J. Collier
1985129044dSC.J. Collier- **libibverbs**
1995129044dSC.J. Collier
2005129044dSC.J. Collier  User space Verbs framework used by librte_pmd_mlx5. This library provides
2015129044dSC.J. Collier  a generic interface between the kernel and low-level user space drivers
2025129044dSC.J. Collier  such as libmlx5.
2035129044dSC.J. Collier
2045129044dSC.J. Collier  It allows slow and privileged operations (context initialization, hardware
2055129044dSC.J. Collier  resources allocations) to be managed by the kernel and fast operations to
2065129044dSC.J. Collier  never leave user space.
2075129044dSC.J. Collier
2085129044dSC.J. Collier- **libmlx5**
2095129044dSC.J. Collier
2105129044dSC.J. Collier  Low-level user space driver library for Mellanox ConnectX-4 devices,
2115129044dSC.J. Collier  it is automatically loaded by libibverbs.
2125129044dSC.J. Collier
2135129044dSC.J. Collier  This library basically implements send/receive calls to the hardware
2145129044dSC.J. Collier  queues.
2155129044dSC.J. Collier
2165129044dSC.J. Collier- **Kernel modules** (mlnx-ofed-kernel)
2175129044dSC.J. Collier
2185129044dSC.J. Collier  They provide the kernel-side Verbs API and low level device drivers that
2195129044dSC.J. Collier  manage actual hardware initialization and resources sharing with user
2205129044dSC.J. Collier  space processes.
2215129044dSC.J. Collier
2225129044dSC.J. Collier  Unlike most other PMDs, these modules must remain loaded and bound to
2235129044dSC.J. Collier  their devices:
2245129044dSC.J. Collier
2255129044dSC.J. Collier  - mlx5_core: hardware driver managing Mellanox ConnectX-4 devices and
2265129044dSC.J. Collier    related Ethernet kernel network devices.
2275129044dSC.J. Collier  - mlx5_ib: InifiniBand device driver.
2285129044dSC.J. Collier  - ib_uverbs: user space driver for Verbs (entry point for libibverbs).
2295129044dSC.J. Collier
2305129044dSC.J. Collier- **Firmware update**
2315129044dSC.J. Collier
2325129044dSC.J. Collier  Mellanox OFED releases include firmware updates for ConnectX-4 adapters.
2335129044dSC.J. Collier
2345129044dSC.J. Collier  Because each release provides new features, these updates must be applied to
2355129044dSC.J. Collier  match the kernel modules and libraries they come with.
2365129044dSC.J. Collier
2375129044dSC.J. Collier.. note::
2385129044dSC.J. Collier
2395129044dSC.J. Collier   Both libraries are BSD and GPL licensed. Linux kernel modules are GPL
2405129044dSC.J. Collier   licensed.
2415129044dSC.J. Collier
2425129044dSC.J. CollierCurrently supported by DPDK:
2435129044dSC.J. Collier
2443d9b7210SChristian Ehrhardt- Mellanox OFED **3.4-1.0.0.0**.
2455129044dSC.J. Collier
2463d9b7210SChristian Ehrhardt- firmware version:
2475129044dSC.J. Collier
2483d9b7210SChristian Ehrhardt  - ConnectX-4: **12.17.1010**
2493d9b7210SChristian Ehrhardt  - ConnectX-4 Lx: **14.17.1010**
2505129044dSC.J. Collier
2515129044dSC.J. CollierGetting Mellanox OFED
2525129044dSC.J. Collier~~~~~~~~~~~~~~~~~~~~~
2535129044dSC.J. Collier
2545129044dSC.J. CollierWhile these libraries and kernel modules are available on OpenFabrics
2555129044dSC.J. CollierAlliance's `website <https://www.openfabrics.org/>`__ and provided by package
2565129044dSC.J. Colliermanagers on most distributions, this PMD requires Ethernet extensions that
2575129044dSC.J. Colliermay not be supported at the moment (this is a work in progress).
2585129044dSC.J. Collier
2595129044dSC.J. Collier`Mellanox OFED
2605129044dSC.J. Collier<http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux>`__
2615129044dSC.J. Collierincludes the necessary support and should be used in the meantime. For DPDK,
2625129044dSC.J. Collieronly libibverbs, libmlx5, mlnx-ofed-kernel packages and firmware updates are
2635129044dSC.J. Collierrequired from that distribution.
2645129044dSC.J. Collier
2655129044dSC.J. Collier.. note::
2665129044dSC.J. Collier
2675129044dSC.J. Collier   Several versions of Mellanox OFED are available. Installing the version
2685129044dSC.J. Collier   this DPDK release was developed and tested against is strongly
2695129044dSC.J. Collier   recommended. Please check the `prerequisites`_.
2705129044dSC.J. Collier
2715129044dSC.J. CollierNotes for testpmd
2725129044dSC.J. Collier-----------------
2735129044dSC.J. Collier
2745129044dSC.J. CollierCompared to librte_pmd_mlx4 that implements a single RSS configuration per
2755129044dSC.J. Collierport, librte_pmd_mlx5 supports per-protocol RSS configuration.
2765129044dSC.J. Collier
2775129044dSC.J. CollierSince ``testpmd`` defaults to IP RSS mode and there is currently no
2785129044dSC.J. Colliercommand-line parameter to enable additional protocols (UDP and TCP as well
2795129044dSC.J. Collieras IP), the following commands must be entered from its CLI to get the same
2805129044dSC.J. Collierbehavior as librte_pmd_mlx4:
2815129044dSC.J. Collier
2825129044dSC.J. Collier.. code-block:: console
2835129044dSC.J. Collier
2845129044dSC.J. Collier   > port stop all
2855129044dSC.J. Collier   > port config all rss all
2865129044dSC.J. Collier   > port start all
2875129044dSC.J. Collier
2885129044dSC.J. CollierUsage example
2895129044dSC.J. Collier-------------
2905129044dSC.J. Collier
2915129044dSC.J. CollierThis section demonstrates how to launch **testpmd** with Mellanox ConnectX-4
2925129044dSC.J. Collierdevices managed by librte_pmd_mlx5.
2935129044dSC.J. Collier
2945129044dSC.J. Collier#. Load the kernel modules:
2955129044dSC.J. Collier
2965129044dSC.J. Collier   .. code-block:: console
2975129044dSC.J. Collier
2985129044dSC.J. Collier      modprobe -a ib_uverbs mlx5_core mlx5_ib
2995129044dSC.J. Collier
3005129044dSC.J. Collier   Alternatively if MLNX_OFED is fully installed, the following script can
3015129044dSC.J. Collier   be run:
3025129044dSC.J. Collier
3035129044dSC.J. Collier   .. code-block:: console
3045129044dSC.J. Collier
3055129044dSC.J. Collier      /etc/init.d/openibd restart
3065129044dSC.J. Collier
3075129044dSC.J. Collier   .. note::
3085129044dSC.J. Collier
3095129044dSC.J. Collier      User space I/O kernel modules (uio and igb_uio) are not used and do
3105129044dSC.J. Collier      not have to be loaded.
3115129044dSC.J. Collier
3125129044dSC.J. Collier#. Make sure Ethernet interfaces are in working order and linked to kernel
3135129044dSC.J. Collier   verbs. Related sysfs entries should be present:
3145129044dSC.J. Collier
3155129044dSC.J. Collier   .. code-block:: console
3165129044dSC.J. Collier
3175129044dSC.J. Collier      ls -d /sys/class/net/*/device/infiniband_verbs/uverbs* | cut -d / -f 5
3185129044dSC.J. Collier
3195129044dSC.J. Collier   Example output:
3205129044dSC.J. Collier
3215129044dSC.J. Collier   .. code-block:: console
3225129044dSC.J. Collier
3235129044dSC.J. Collier      eth30
3245129044dSC.J. Collier      eth31
3255129044dSC.J. Collier      eth32
3265129044dSC.J. Collier      eth33
3275129044dSC.J. Collier
3285129044dSC.J. Collier#. Optionally, retrieve their PCI bus addresses for whitelisting:
3295129044dSC.J. Collier
3305129044dSC.J. Collier   .. code-block:: console
3315129044dSC.J. Collier
3325129044dSC.J. Collier      {
3335129044dSC.J. Collier          for intf in eth2 eth3 eth4 eth5;
3345129044dSC.J. Collier          do
3355129044dSC.J. Collier              (cd "/sys/class/net/${intf}/device/" && pwd -P);
3365129044dSC.J. Collier          done;
3375129044dSC.J. Collier      } |
3385129044dSC.J. Collier      sed -n 's,.*/\(.*\),-w \1,p'
3395129044dSC.J. Collier
3405129044dSC.J. Collier   Example output:
3415129044dSC.J. Collier
3425129044dSC.J. Collier   .. code-block:: console
3435129044dSC.J. Collier
3445129044dSC.J. Collier      -w 0000:05:00.1
3455129044dSC.J. Collier      -w 0000:06:00.0
3465129044dSC.J. Collier      -w 0000:06:00.1
3475129044dSC.J. Collier      -w 0000:05:00.0
3485129044dSC.J. Collier
3495129044dSC.J. Collier#. Request huge pages:
3505129044dSC.J. Collier
3515129044dSC.J. Collier   .. code-block:: console
3525129044dSC.J. Collier
3535129044dSC.J. Collier      echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages/nr_hugepages
3545129044dSC.J. Collier
3555129044dSC.J. Collier#. Start testpmd with basic parameters:
3565129044dSC.J. Collier
3575129044dSC.J. Collier   .. code-block:: console
3585129044dSC.J. Collier
3595129044dSC.J. Collier      testpmd -c 0xff00 -n 4 -w 05:00.0 -w 05:00.1 -w 06:00.0 -w 06:00.1 -- --rxq=2 --txq=2 -i
3605129044dSC.J. Collier
3615129044dSC.J. Collier   Example output:
3625129044dSC.J. Collier
3635129044dSC.J. Collier   .. code-block:: console
3645129044dSC.J. Collier
3655129044dSC.J. Collier      [...]
3665129044dSC.J. Collier      EAL: PCI device 0000:05:00.0 on NUMA socket 0
3675129044dSC.J. Collier      EAL:   probe driver: 15b3:1013 librte_pmd_mlx5
3685129044dSC.J. Collier      PMD: librte_pmd_mlx5: PCI information matches, using device "mlx5_0" (VF: false)
3695129044dSC.J. Collier      PMD: librte_pmd_mlx5: 1 port(s) detected
3705129044dSC.J. Collier      PMD: librte_pmd_mlx5: port 1 MAC address is e4:1d:2d:e7:0c:fe
3715129044dSC.J. Collier      EAL: PCI device 0000:05:00.1 on NUMA socket 0
3725129044dSC.J. Collier      EAL:   probe driver: 15b3:1013 librte_pmd_mlx5
3735129044dSC.J. Collier      PMD: librte_pmd_mlx5: PCI information matches, using device "mlx5_1" (VF: false)
3745129044dSC.J. Collier      PMD: librte_pmd_mlx5: 1 port(s) detected
3755129044dSC.J. Collier      PMD: librte_pmd_mlx5: port 1 MAC address is e4:1d:2d:e7:0c:ff
3765129044dSC.J. Collier      EAL: PCI device 0000:06:00.0 on NUMA socket 0
3775129044dSC.J. Collier      EAL:   probe driver: 15b3:1013 librte_pmd_mlx5
3785129044dSC.J. Collier      PMD: librte_pmd_mlx5: PCI information matches, using device "mlx5_2" (VF: false)
3795129044dSC.J. Collier      PMD: librte_pmd_mlx5: 1 port(s) detected
3805129044dSC.J. Collier      PMD: librte_pmd_mlx5: port 1 MAC address is e4:1d:2d:e7:0c:fa
3815129044dSC.J. Collier      EAL: PCI device 0000:06:00.1 on NUMA socket 0
3825129044dSC.J. Collier      EAL:   probe driver: 15b3:1013 librte_pmd_mlx5
3835129044dSC.J. Collier      PMD: librte_pmd_mlx5: PCI information matches, using device "mlx5_3" (VF: false)
3845129044dSC.J. Collier      PMD: librte_pmd_mlx5: 1 port(s) detected
3855129044dSC.J. Collier      PMD: librte_pmd_mlx5: port 1 MAC address is e4:1d:2d:e7:0c:fb
3865129044dSC.J. Collier      Interactive-mode selected
3875129044dSC.J. Collier      Configuring Port 0 (socket 0)
3885129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8cba80: TX queues number update: 0 -> 2
3895129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8cba80: RX queues number update: 0 -> 2
3905129044dSC.J. Collier      Port 0: E4:1D:2D:E7:0C:FE
3915129044dSC.J. Collier      Configuring Port 1 (socket 0)
3925129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8ccac8: TX queues number update: 0 -> 2
3935129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8ccac8: RX queues number update: 0 -> 2
3945129044dSC.J. Collier      Port 1: E4:1D:2D:E7:0C:FF
3955129044dSC.J. Collier      Configuring Port 2 (socket 0)
3965129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8cdb10: TX queues number update: 0 -> 2
3975129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8cdb10: RX queues number update: 0 -> 2
3985129044dSC.J. Collier      Port 2: E4:1D:2D:E7:0C:FA
3995129044dSC.J. Collier      Configuring Port 3 (socket 0)
4005129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8ceb58: TX queues number update: 0 -> 2
4015129044dSC.J. Collier      PMD: librte_pmd_mlx5: 0x8ceb58: RX queues number update: 0 -> 2
4025129044dSC.J. Collier      Port 3: E4:1D:2D:E7:0C:FB
4035129044dSC.J. Collier      Checking link statuses...
4045129044dSC.J. Collier      Port 0 Link Up - speed 40000 Mbps - full-duplex
4055129044dSC.J. Collier      Port 1 Link Up - speed 40000 Mbps - full-duplex
4065129044dSC.J. Collier      Port 2 Link Up - speed 10000 Mbps - full-duplex
4075129044dSC.J. Collier      Port 3 Link Up - speed 10000 Mbps - full-duplex
4085129044dSC.J. Collier      Done
4095129044dSC.J. Collier      testpmd>
410