.. SPDX-License-Identifier: GPL-2.0

====================
mlx5 devlink support
====================

This document describes the devlink features implemented by the ``mlx5``
device driver.

Parameters
==========

.. list-table:: Generic parameters implemented

   * - Name
     - Mode
     - Validation
   * - ``enable_roce``
     - driverinit
     - Type: Boolean

       If the device supports RoCE disablement, RoCE enablement state controls
       device support for RoCE capability. Otherwise, the control occurs in the
       driver stack. When RoCE is disabled at the driver level, only raw
       ethernet QPs are supported.
   * - ``io_eq_size``
     - driverinit
     - The range is between 64 and 4096.
   * - ``event_eq_size``
     - driverinit
     - The range is between 64 and 4096.
   * - ``max_macs``
     - driverinit
     - The range is between 1 and 2^31. Only power of 2 values are supported.

The ``mlx5`` driver also implements the following driver-specific
parameters.

.. list-table:: Driver-specific parameters implemented
   :widths: 5 5 5 85

   * - Name
     - Type
     - Mode
     - Description
   * - ``flow_steering_mode``
     - string
     - runtime
     - Controls the flow steering mode of the driver

       * ``dmfs`` Device managed flow steering. In DMFS mode, the HW
         steering entities are created and managed through firmware.
       * ``smfs`` Software managed flow steering. In SMFS mode, the HW
         steering entities are created and manage through the driver without
         firmware intervention.

       SMFS mode is faster and provides better rule insertion rate compared to
       default DMFS mode.
   * - ``fdb_large_groups``
     - u32
     - driverinit
     - Control the number of large groups (size > 1) in the FDB table.

       * The default value is 15, and the range is between 1 and 1024.
   * - ``esw_multiport``
     - Boolean
     - runtime
     - Control MultiPort E-Switch shared fdb mode.

       An experimental mode where a single E-Switch is used and all the vports
       and physical ports on the NIC are connected to it.

       An example is to send traffic from a VF that is created on PF0 to an
       uplink that is natively associated with the uplink of PF1

       Note: Future devices, ConnectX-8 and onward, will eventually have this
       as the default to allow forwarding between all NIC ports in a single
       E-switch environment and the dual E-switch mode will likely get
       deprecated.

       Default: disabled
   * - ``esw_port_metadata``
     - Boolean
     - runtime
     - When applicable, disabling eswitch metadata can increase packet rate up
       to 20% depending on the use case and packet sizes.

       Eswitch port metadata state controls whether to internally tag packets
       with metadata. Metadata tagging must be enabled for multi-port RoCE,
       failover between representors and stacked devices. By default metadata is
       enabled on the supported devices in E-switch. Metadata is applicable only
       for E-switch in switchdev mode and users may disable it when NONE of the
       below use cases will be in use:
       1. HCA is in Dual/multi-port RoCE mode.
       2. VF/SF representor bonding (Usually used for Live migration)
       3. Stacked devices

       When metadata is disabled, the above use cases will fail to initialize if
       users try to enable them.

       Note: Setting this parameter does not take effect immediately. Setting
       must happen in legacy mode and eswitch port metadata takes effect after
       enabling switchdev mode.
   * - ``hairpin_num_queues``
     - u32
     - driverinit
     - We refer to a TC NIC rule that involves forwarding as "hairpin".
       Hairpin queues are mlx5 hardware specific implementation for hardware
       forwarding of such packets.

       Control the number of hairpin queues.
   * - ``hairpin_queue_size``
     - u32
     - driverinit
     - Control the size (in packets) of the hairpin queues.

The ``mlx5`` driver supports reloading via ``DEVLINK_CMD_RELOAD``

Info versions
=============

The ``mlx5`` driver reports the following versions

.. list-table:: devlink info versions implemented
   :widths: 5 5 90

   * - Name
     - Type
     - Description
   * - ``fw.psid``
     - fixed
     - Used to represent the board id of the device.
   * - ``fw.version``
     - stored, running
     - Three digit major.minor.subminor firmware version number.

Health reporters
================

tx reporter
-----------
The tx reporter is responsible for reporting and recovering of the following three error scenarios:

- tx timeout
    Report on kernel tx timeout detection.
    Recover by searching lost interrupts.
- tx error completion
    Report on error tx completion.
    Recover by flushing the tx queue and reset it.
- tx PTP port timestamping CQ unhealthy
    Report too many CQEs never delivered on port ts CQ.
    Recover by flushing and re-creating all PTP channels.

tx reporter also support on demand diagnose callback, on which it provides
real time information of its send queues status.

User commands examples:

- Diagnose send queues status::

    $ devlink health diagnose pci/0000:82:00.0 reporter tx

.. note::
   This command has valid output only when interface is up, otherwise the command has empty output.

- Show number of tx errors indicated, number of recover flows ended successfully,
  is autorecover enabled and graceful period from last recover::

    $ devlink health show pci/0000:82:00.0 reporter tx

rx reporter
-----------
The rx reporter is responsible for reporting and recovering of the following two error scenarios:

- rx queues' initialization (population) timeout
    Population of rx queues' descriptors on ring initialization is done
    in napi context via triggering an irq. In case of a failure to get
    the minimum amount of descriptors, a timeout would occur, and
    descriptors could be recovered by polling the EQ (Event Queue).
- rx completions with errors (reported by HW on interrupt context)
    Report on rx completion error.
    Recover (if needed) by flushing the related queue and reset it.

rx reporter also supports on demand diagnose callback, on which it
provides real time information of its receive queues' status.

- Diagnose rx queues' status and corresponding completion queue::

    $ devlink health diagnose pci/0000:82:00.0 reporter rx

.. note::
   This command has valid output only when interface is up. Otherwise, the command has empty output.

- Show number of rx errors indicated, number of recover flows ended successfully,
  is autorecover enabled, and graceful period from last recover::

    $ devlink health show pci/0000:82:00.0 reporter rx

fw reporter
-----------
The fw reporter implements `diagnose` and `dump` callbacks.
It follows symptoms of fw error such as fw syndrome by triggering
fw core dump and storing it into the dump buffer.
The fw reporter diagnose command can be triggered any time by the user to check
current fw status.

User commands examples:

- Check fw heath status::

    $ devlink health diagnose pci/0000:82:00.0 reporter fw

- Read FW core dump if already stored or trigger new one::

    $ devlink health dump show pci/0000:82:00.0 reporter fw

.. note::
   This command can run only on the PF which has fw tracer ownership,
   running it on other PF or any VF will return "Operation not permitted".

fw fatal reporter
-----------------
The fw fatal reporter implements `dump` and `recover` callbacks.
It follows fatal errors indications by CR-space dump and recover flow.
The CR-space dump uses vsc interface which is valid even if the FW command
interface is not functional, which is the case in most FW fatal errors.
The recover function runs recover flow which reloads the driver and triggers fw
reset if needed.
On firmware error, the health buffer is dumped into the dmesg. The log
level is derived from the error's severity (given in health buffer).

User commands examples:

- Run fw recover flow manually::

    $ devlink health recover pci/0000:82:00.0 reporter fw_fatal

- Read FW CR-space dump if already stored or trigger new one::

    $ devlink health dump show pci/0000:82:00.1 reporter fw_fatal

.. note::
   This command can run only on PF.

vnic reporter
-------------
The vnic reporter implements only the `diagnose` callback.
It is responsible for querying the vnic diagnostic counters from fw and displaying
them in realtime.

Description of the vnic counters:

- total_error_queues
        number of queues in an error state due to
        an async error or errored command.
- send_queue_priority_update_flow
        number of QP/SQ priority/SL update events.
- cq_overrun
        number of times CQ entered an error state due to an overflow.
- async_eq_overrun
        number of times an EQ mapped to async events was overrun.
- comp_eq_overrun
        number of times an EQ mapped to completion events was
        overrun.
- quota_exceeded_command
        number of commands issued and failed due to quota exceeded.
- invalid_command
        number of commands issued and failed dues to any reason other than quota
        exceeded.
- nic_receive_steering_discard
        number of packets that completed RX flow
        steering but were discarded due to a mismatch in flow table.
- generated_pkt_steering_fail
	number of packets generated by the VNIC experiencing unexpected steering
	failure (at any point in steering flow).
- handled_pkt_steering_fail
	number of packets handled by the VNIC experiencing unexpected steering
	failure (at any point in steering flow owned by the VNIC, including the FDB
	for the eswitch owner).

User commands examples:

- Diagnose PF/VF vnic counters::

        $ devlink health diagnose pci/0000:82:00.1 reporter vnic

- Diagnose representor vnic counters (performed by supplying devlink port of the
  representor, which can be obtained via devlink port command)::

        $ devlink health diagnose pci/0000:82:00.1/65537 reporter vnic

.. note::
   This command can run over all interfaces such as PF/VF and representor ports.
