Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
0002 
0003 =================================================
0004 Mellanox ConnectX(R) mlx5 core VPI Network Driver
0005 =================================================
0006 
0007 Copyright (c) 2019, Mellanox Technologies LTD.
0008 
0009 Contents
0010 ========
0011 
0012 - `Enabling the driver and kconfig options`_
0013 - `Devlink info`_
0014 - `Devlink parameters`_
0015 - `Bridge offload`_
0016 - `mlx5 subfunction`_
0017 - `mlx5 function attributes`_
0018 - `Devlink health reporters`_
0019 - `mlx5 tracepoints`_
0020 
0021 Enabling the driver and kconfig options
0022 =======================================
0023 
0024 | mlx5 core is modular and most of the major mlx5 core driver features can be selected (compiled in/out)
0025 | at build time via kernel Kconfig flags.
0026 | Basic features, ethernet net device rx/tx offloads and XDP, are available with the most basic flags
0027 | CONFIG_MLX5_CORE=y/m and CONFIG_MLX5_CORE_EN=y.
0028 | For the list of advanced features please see below.
0029 
0030 **CONFIG_MLX5_CORE=(y/m/n)** (module mlx5_core.ko)
0031 
0032 |    The driver can be enabled by choosing CONFIG_MLX5_CORE=y/m in kernel config.
0033 |    This will provide mlx5 core driver for mlx5 ulps to interface with (mlx5e, mlx5_ib).
0034 
0035 
0036 **CONFIG_MLX5_CORE_EN=(y/n)**
0037 
0038 |    Choosing this option will allow basic ethernet netdevice support with all of the standard rx/tx offloads.
0039 |    mlx5e is the mlx5 ulp driver which provides netdevice kernel interface, when chosen, mlx5e will be
0040 |    built-in into mlx5_core.ko.
0041 
0042 
0043 **CONFIG_MLX5_EN_ARFS=(y/n)**
0044 
0045 |     Enables Hardware-accelerated receive flow steering (arfs) support, and ntuple filtering.
0046 |     https://community.mellanox.com/s/article/howto-configure-arfs-on-connectx-4
0047 
0048 
0049 **CONFIG_MLX5_EN_RXNFC=(y/n)**
0050 
0051 |    Enables ethtool receive network flow classification, which allows user defined
0052 |    flow rules to direct traffic into arbitrary rx queue via ethtool set/get_rxnfc API.
0053 
0054 
0055 **CONFIG_MLX5_CORE_EN_DCB=(y/n)**:
0056 
0057 |    Enables `Data Center Bridging (DCB) Support <https://community.mellanox.com/s/article/howto-auto-config-pfc-and-ets-on-connectx-4-via-lldp-dcbx>`_.
0058 
0059 
0060 **CONFIG_MLX5_MPFS=(y/n)**
0061 
0062 |    Ethernet Multi-Physical Function Switch (MPFS) support in ConnectX NIC.
0063 |    MPFs is required for when `Multi-Host <http://www.mellanox.com/page/multihost>`_ configuration is enabled to allow passing
0064 |    user configured unicast MAC addresses to the requesting PF.
0065 
0066 
0067 **CONFIG_MLX5_ESWITCH=(y/n)**
0068 
0069 |    Ethernet SRIOV E-Switch support in ConnectX NIC. E-Switch provides internal SRIOV packet steering
0070 |    and switching for the enabled VFs and PF in two available modes:
0071 |           1) `Legacy SRIOV mode (L2 mac vlan steering based) <https://community.mellanox.com/s/article/howto-configure-sr-iov-for-connectx-4-connectx-5-with-kvm--ethernet-x>`_.
0072 |           2) `Switchdev mode (eswitch offloads) <https://www.mellanox.com/related-docs/prod_software/ASAP2_Hardware_Offloading_for_vSwitches_User_Manual_v4.4.pdf>`_.
0073 
0074 
0075 **CONFIG_MLX5_CORE_IPOIB=(y/n)**
0076 
0077 |    IPoIB offloads & acceleration support.
0078 |    Requires CONFIG_MLX5_CORE_EN to provide an accelerated interface for the rdma
0079 |    IPoIB ulp netdevice.
0080 
0081 
0082 **CONFIG_MLX5_FPGA=(y/n)**
0083 
0084 |    Build support for the Innova family of network cards by Mellanox Technologies.
0085 |    Innova network cards are comprised of a ConnectX chip and an FPGA chip on one board.
0086 |    If you select this option, the mlx5_core driver will include the Innova FPGA core and allow
0087 |    building sandbox-specific client drivers.
0088 
0089 
0090 **CONFIG_MLX5_EN_IPSEC=(y/n)**
0091 
0092 |    Enables `IPSec XFRM cryptography-offload accelaration <http://www.mellanox.com/related-docs/prod_software/Mellanox_Innova_IPsec_Ethernet_Adapter_Card_User_Manual.pdf>`_.
0093 
0094 **CONFIG_MLX5_EN_TLS=(y/n)**
0095 
0096 |   TLS cryptography-offload accelaration.
0097 
0098 
0099 **CONFIG_MLX5_INFINIBAND=(y/n/m)** (module mlx5_ib.ko)
0100 
0101 |   Provides low-level InfiniBand/RDMA and `RoCE <https://community.mellanox.com/s/article/recommended-network-configuration-examples-for-roce-deployment>`_ support.
0102 
0103 **CONFIG_MLX5_SF=(y/n)**
0104 
0105 |   Build support for subfunction.
0106 |   Subfunctons are more light weight than PCI SRIOV VFs. Choosing this option
0107 |   will enable support for creating subfunction devices.
0108 
0109 **External options** ( Choose if the corresponding mlx5 feature is required )
0110 
0111 - CONFIG_PTP_1588_CLOCK: When chosen, mlx5 ptp support will be enabled
0112 - CONFIG_VXLAN: When chosen, mlx5 vxlan support will be enabled.
0113 - CONFIG_MLXFW: When chosen, mlx5 firmware flashing support will be enabled (via devlink and ethtool).
0114 
0115 Devlink info
0116 ============
0117 
0118 The devlink info reports the running and stored firmware versions on device.
0119 It also prints the device PSID which represents the HCA board type ID.
0120 
0121 User command example::
0122 
0123    $ devlink dev info pci/0000:00:06.0
0124       pci/0000:00:06.0:
0125       driver mlx5_core
0126       versions:
0127          fixed:
0128             fw.psid MT_0000000009
0129          running:
0130             fw.version 16.26.0100
0131          stored:
0132             fw.version 16.26.0100
0133 
0134 Devlink parameters
0135 ==================
0136 
0137 flow_steering_mode: Device flow steering mode
0138 ---------------------------------------------
0139 The flow steering mode parameter controls the flow steering mode of the driver.
0140 Two modes are supported:
0141 1. 'dmfs' - Device managed flow steering.
0142 2. 'smfs  - Software/Driver managed flow steering.
0143 
0144 In DMFS mode, the HW steering entities are created and managed through the
0145 Firmware.
0146 In SMFS mode, the HW steering entities are created and managed though by
0147 the driver directly into Hardware without firmware intervention.
0148 
0149 SMFS mode is faster and provides better rule inserstion rate compared to default DMFS mode.
0150 
0151 User command examples:
0152 
0153 - Set SMFS flow steering mode::
0154 
0155     $ devlink dev param set pci/0000:06:00.0 name flow_steering_mode value "smfs" cmode runtime
0156 
0157 - Read device flow steering mode::
0158 
0159     $ devlink dev param show pci/0000:06:00.0 name flow_steering_mode
0160       pci/0000:06:00.0:
0161       name flow_steering_mode type driver-specific
0162       values:
0163          cmode runtime value smfs
0164 
0165 enable_roce: RoCE enablement state
0166 ----------------------------------
0167 RoCE enablement state controls driver support for RoCE traffic.
0168 When RoCE is disabled, there is no gid table, only raw ethernet QPs are supported and traffic on the well known UDP RoCE port is handled as raw ethernet traffic.
0169 
0170 To change RoCE enablement state a user must change the driverinit cmode value and run devlink reload.
0171 
0172 User command examples:
0173 
0174 - Disable RoCE::
0175 
0176     $ devlink dev param set pci/0000:06:00.0 name enable_roce value false cmode driverinit
0177     $ devlink dev reload pci/0000:06:00.0
0178 
0179 - Read RoCE enablement state::
0180 
0181     $ devlink dev param show pci/0000:06:00.0 name enable_roce
0182       pci/0000:06:00.0:
0183       name enable_roce type generic
0184       values:
0185          cmode driverinit value true
0186 
0187 esw_port_metadata: Eswitch port metadata state
0188 ----------------------------------------------
0189 When applicable, disabling Eswitch metadata can increase packet rate
0190 up to 20% depending on the use case and packet sizes.
0191 
0192 Eswitch port metadata state controls whether to internally tag packets with
0193 metadata. Metadata tagging must be enabled for multi-port RoCE, failover
0194 between representors and stacked devices.
0195 By default metadata is enabled on the supported devices in E-switch.
0196 Metadata is applicable only for E-switch in switchdev mode and
0197 users may disable it when NONE of the below use cases will be in use:
0198 1. HCA is in Dual/multi-port RoCE mode.
0199 2. VF/SF representor bonding (Usually used for Live migration)
0200 3. Stacked devices
0201 
0202 When metadata is disabled, the above use cases will fail to initialize if
0203 users try to enable them.
0204 
0205 - Show eswitch port metadata::
0206 
0207     $ devlink dev param show pci/0000:06:00.0 name esw_port_metadata
0208       pci/0000:06:00.0:
0209         name esw_port_metadata type driver-specific
0210           values:
0211             cmode runtime value true
0212 
0213 - Disable eswitch port metadata::
0214 
0215     $ devlink dev param set pci/0000:06:00.0 name esw_port_metadata value false cmode runtime
0216 
0217 - Change eswitch mode to switchdev mode where after choosing the metadata value::
0218 
0219     $ devlink dev eswitch set pci/0000:06:00.0 mode switchdev
0220 
0221 Bridge offload
0222 ==============
0223 The mlx5 driver implements support for offloading bridge rules when in switchdev
0224 mode. Linux bridge FDBs are automatically offloaded when mlx5 switchdev
0225 representor is attached to bridge.
0226 
0227 - Change device to switchdev mode::
0228 
0229     $ devlink dev eswitch set pci/0000:06:00.0 mode switchdev
0230 
0231 - Attach mlx5 switchdev representor 'enp8s0f0' to bridge netdev 'bridge1'::
0232 
0233     $ ip link set enp8s0f0 master bridge1
0234 
0235 VLANs
0236 -----
0237 Following bridge VLAN functions are supported by mlx5:
0238 
0239 - VLAN filtering (including multiple VLANs per port)::
0240 
0241     $ ip link set bridge1 type bridge vlan_filtering 1
0242     $ bridge vlan add dev enp8s0f0 vid 2-3
0243 
0244 - VLAN push on bridge ingress::
0245 
0246     $ bridge vlan add dev enp8s0f0 vid 3 pvid
0247 
0248 - VLAN pop on bridge egress::
0249 
0250     $ bridge vlan add dev enp8s0f0 vid 3 untagged
0251 
0252 mlx5 subfunction
0253 ================
0254 mlx5 supports subfunction management using devlink port (see :ref:`Documentation/networking/devlink/devlink-port.rst <devlink_port>`) interface.
0255 
0256 A Subfunction has its own function capabilities and its own resources. This
0257 means a subfunction has its own dedicated queues (txq, rxq, cq, eq). These
0258 queues are neither shared nor stolen from the parent PCI function.
0259 
0260 When a subfunction is RDMA capable, it has its own QP1, GID table and rdma
0261 resources neither shared nor stolen from the parent PCI function.
0262 
0263 A subfunction has a dedicated window in PCI BAR space that is not shared
0264 with ther other subfunctions or the parent PCI function. This ensures that all
0265 devices (netdev, rdma, vdpa etc.) of the subfunction accesses only assigned
0266 PCI BAR space.
0267 
0268 A Subfunction supports eswitch representation through which it supports tc
0269 offloads. The user configures eswitch to send/receive packets from/to
0270 the subfunction port.
0271 
0272 Subfunctions share PCI level resources such as PCI MSI-X IRQs with
0273 other subfunctions and/or with its parent PCI function.
0274 
0275 Example mlx5 software, system and device view::
0276 
0277        _______
0278       | admin |
0279       | user  |----------
0280       |_______|         |
0281           |             |
0282       ____|____       __|______            _________________
0283      |         |     |         |          |                 |
0284      | devlink |     | tc tool |          |    user         |
0285      | tool    |     |_________|          | applications    |
0286      |_________|         |                |_________________|
0287            |             |                   |          |
0288            |             |                   |          |         Userspace
0289  +---------|-------------|-------------------|----------|--------------------+
0290            |             |           +----------+   +----------+   Kernel
0291            |             |           |  netdev  |   | rdma dev |
0292            |             |           +----------+   +----------+
0293    (devlink port add/del |              ^               ^
0294     port function set)   |              |               |
0295            |             |              +---------------|
0296       _____|___          |              |        _______|_______
0297      |         |         |              |       | mlx5 class    |
0298      | devlink |   +------------+       |       |   drivers     |
0299      | kernel  |   | rep netdev |       |       |(mlx5_core,ib) |
0300      |_________|   +------------+       |       |_______________|
0301            |             |              |               ^
0302    (devlink ops)         |              |          (probe/remove)
0303   _________|________     |              |           ____|________
0304  | subfunction      |    |     +---------------+   | subfunction |
0305  | management driver|-----     | subfunction   |---|  driver     |
0306  | (mlx5_core)      |          | auxiliary dev |   | (mlx5_core) |
0307  |__________________|          +---------------+   |_____________|
0308            |                                            ^
0309   (sf add/del, vhca events)                             |
0310            |                                      (device add/del)
0311       _____|____                                    ____|________
0312      |          |                                  | subfunction |
0313      |  PCI NIC |---- activate/deactive events---->| host driver |
0314      |__________|                                  | (mlx5_core) |
0315                                                    |_____________|
0316 
0317 Subfunction is created using devlink port interface.
0318 
0319 - Change device to switchdev mode::
0320 
0321     $ devlink dev eswitch set pci/0000:06:00.0 mode switchdev
0322 
0323 - Add a devlink port of subfunction flaovur::
0324 
0325     $ devlink port add pci/0000:06:00.0 flavour pcisf pfnum 0 sfnum 88
0326     pci/0000:06:00.0/32768: type eth netdev eth6 flavour pcisf controller 0 pfnum 0 sfnum 88 external false splittable false
0327       function:
0328         hw_addr 00:00:00:00:00:00 state inactive opstate detached
0329 
0330 - Show a devlink port of the subfunction::
0331 
0332     $ devlink port show pci/0000:06:00.0/32768
0333     pci/0000:06:00.0/32768: type eth netdev enp6s0pf0sf88 flavour pcisf pfnum 0 sfnum 88
0334       function:
0335         hw_addr 00:00:00:00:00:00 state inactive opstate detached
0336 
0337 - Delete a devlink port of subfunction after use::
0338 
0339     $ devlink port del pci/0000:06:00.0/32768
0340 
0341 mlx5 function attributes
0342 ========================
0343 The mlx5 driver provides a mechanism to setup PCI VF/SF function attributes in
0344 a unified way for SmartNIC and non-SmartNIC.
0345 
0346 This is supported only when the eswitch mode is set to switchdev. Port function
0347 configuration of the PCI VF/SF is supported through devlink eswitch port.
0348 
0349 Port function attributes should be set before PCI VF/SF is enumerated by the
0350 driver.
0351 
0352 MAC address setup
0353 -----------------
0354 mlx5 driver provides mechanism to setup the MAC address of the PCI VF/SF.
0355 
0356 The configured MAC address of the PCI VF/SF will be used by netdevice and rdma
0357 device created for the PCI VF/SF.
0358 
0359 - Get the MAC address of the VF identified by its unique devlink port index::
0360 
0361     $ devlink port show pci/0000:06:00.0/2
0362     pci/0000:06:00.0/2: type eth netdev enp6s0pf0vf1 flavour pcivf pfnum 0 vfnum 1
0363       function:
0364         hw_addr 00:00:00:00:00:00
0365 
0366 - Set the MAC address of the VF identified by its unique devlink port index::
0367 
0368     $ devlink port function set pci/0000:06:00.0/2 hw_addr 00:11:22:33:44:55
0369 
0370     $ devlink port show pci/0000:06:00.0/2
0371     pci/0000:06:00.0/2: type eth netdev enp6s0pf0vf1 flavour pcivf pfnum 0 vfnum 1
0372       function:
0373         hw_addr 00:11:22:33:44:55
0374 
0375 - Get the MAC address of the SF identified by its unique devlink port index::
0376 
0377     $ devlink port show pci/0000:06:00.0/32768
0378     pci/0000:06:00.0/32768: type eth netdev enp6s0pf0sf88 flavour pcisf pfnum 0 sfnum 88
0379       function:
0380         hw_addr 00:00:00:00:00:00
0381 
0382 - Set the MAC address of the VF identified by its unique devlink port index::
0383 
0384     $ devlink port function set pci/0000:06:00.0/32768 hw_addr 00:00:00:00:88:88
0385 
0386     $ devlink port show pci/0000:06:00.0/32768
0387     pci/0000:06:00.0/32768: type eth netdev enp6s0pf0sf88 flavour pcivf pfnum 0 sfnum 88
0388       function:
0389         hw_addr 00:00:00:00:88:88
0390 
0391 SF state setup
0392 --------------
0393 To use the SF, the user must active the SF using the SF function state
0394 attribute.
0395 
0396 - Get the state of the SF identified by its unique devlink port index::
0397 
0398    $ devlink port show ens2f0npf0sf88
0399    pci/0000:06:00.0/32768: type eth netdev ens2f0npf0sf88 flavour pcisf controller 0 pfnum 0 sfnum 88 external false splittable false
0400      function:
0401        hw_addr 00:00:00:00:88:88 state inactive opstate detached
0402 
0403 - Activate the function and verify its state is active::
0404 
0405    $ devlink port function set ens2f0npf0sf88 state active
0406 
0407    $ devlink port show ens2f0npf0sf88
0408    pci/0000:06:00.0/32768: type eth netdev ens2f0npf0sf88 flavour pcisf controller 0 pfnum 0 sfnum 88 external false splittable false
0409      function:
0410        hw_addr 00:00:00:00:88:88 state active opstate detached
0411 
0412 Upon function activation, the PF driver instance gets the event from the device
0413 that a particular SF was activated. It's the cue to put the device on bus, probe
0414 it and instantiate the devlink instance and class specific auxiliary devices
0415 for it.
0416 
0417 - Show the auxiliary device and port of the subfunction::
0418 
0419     $ devlink dev show
0420     devlink dev show auxiliary/mlx5_core.sf.4
0421 
0422     $ devlink port show auxiliary/mlx5_core.sf.4/1
0423     auxiliary/mlx5_core.sf.4/1: type eth netdev p0sf88 flavour virtual port 0 splittable false
0424 
0425     $ rdma link show mlx5_0/1
0426     link mlx5_0/1 state ACTIVE physical_state LINK_UP netdev p0sf88
0427 
0428     $ rdma dev show
0429     8: rocep6s0f1: node_type ca fw 16.29.0550 node_guid 248a:0703:00b3:d113 sys_image_guid 248a:0703:00b3:d112
0430     13: mlx5_0: node_type ca fw 16.29.0550 node_guid 0000:00ff:fe00:8888 sys_image_guid 248a:0703:00b3:d112
0431 
0432 - Subfunction auxiliary device and class device hierarchy::
0433 
0434                  mlx5_core.sf.4
0435           (subfunction auxiliary device)
0436                        /\
0437                       /  \
0438                      /    \
0439                     /      \
0440                    /        \
0441       mlx5_core.eth.4     mlx5_core.rdma.4
0442      (sf eth aux dev)     (sf rdma aux dev)
0443          |                      |
0444          |                      |
0445       p0sf88                  mlx5_0
0446      (sf netdev)          (sf rdma device)
0447 
0448 Additionally, the SF port also gets the event when the driver attaches to the
0449 auxiliary device of the subfunction. This results in changing the operational
0450 state of the function. This provides visiblity to the user to decide when is it
0451 safe to delete the SF port for graceful termination of the subfunction.
0452 
0453 - Show the SF port operational state::
0454 
0455     $ devlink port show ens2f0npf0sf88
0456     pci/0000:06:00.0/32768: type eth netdev ens2f0npf0sf88 flavour pcisf controller 0 pfnum 0 sfnum 88 external false splittable false
0457       function:
0458         hw_addr 00:00:00:00:88:88 state active opstate attached
0459 
0460 Devlink health reporters
0461 ========================
0462 
0463 tx reporter
0464 -----------
0465 The tx reporter is responsible for reporting and recovering of the following two error scenarios:
0466 
0467 - TX timeout
0468     Report on kernel tx timeout detection.
0469     Recover by searching lost interrupts.
0470 - TX error completion
0471     Report on error tx completion.
0472     Recover by flushing the TX queue and reset it.
0473 
0474 TX reporter also support on demand diagnose callback, on which it provides
0475 real time information of its send queues status.
0476 
0477 User commands examples:
0478 
0479 - Diagnose send queues status::
0480 
0481     $ devlink health diagnose pci/0000:82:00.0 reporter tx
0482 
0483 NOTE: This command has valid output only when interface is up, otherwise the command has empty output.
0484 
0485 - Show number of tx errors indicated, number of recover flows ended successfully,
0486   is autorecover enabled and graceful period from last recover::
0487 
0488     $ devlink health show pci/0000:82:00.0 reporter tx
0489 
0490 rx reporter
0491 -----------
0492 The rx reporter is responsible for reporting and recovering of the following two error scenarios:
0493 
0494 - RX queues initialization (population) timeout
0495     RX queues descriptors population on ring initialization is done in
0496     napi context via triggering an irq, in case of a failure to get
0497     the minimum amount of descriptors, a timeout would occur and it
0498     could be recoverable by polling the EQ (Event Queue).
0499 - RX completions with errors (reported by HW on interrupt context)
0500     Report on rx completion error.
0501     Recover (if needed) by flushing the related queue and reset it.
0502 
0503 RX reporter also supports on demand diagnose callback, on which it
0504 provides real time information of its receive queues status.
0505 
0506 - Diagnose rx queues status, and corresponding completion queue::
0507 
0508     $ devlink health diagnose pci/0000:82:00.0 reporter rx
0509 
0510 NOTE: This command has valid output only when interface is up, otherwise the command has empty output.
0511 
0512 - Show number of rx errors indicated, number of recover flows ended successfully,
0513   is autorecover enabled and graceful period from last recover::
0514 
0515     $ devlink health show pci/0000:82:00.0 reporter rx
0516 
0517 fw reporter
0518 -----------
0519 The fw reporter implements diagnose and dump callbacks.
0520 It follows symptoms of fw error such as fw syndrome by triggering
0521 fw core dump and storing it into the dump buffer.
0522 The fw reporter diagnose command can be triggered any time by the user to check
0523 current fw status.
0524 
0525 User commands examples:
0526 
0527 - Check fw heath status::
0528 
0529     $ devlink health diagnose pci/0000:82:00.0 reporter fw
0530 
0531 - Read FW core dump if already stored or trigger new one::
0532 
0533     $ devlink health dump show pci/0000:82:00.0 reporter fw
0534 
0535 NOTE: This command can run only on the PF which has fw tracer ownership,
0536 running it on other PF or any VF will return "Operation not permitted".
0537 
0538 fw fatal reporter
0539 -----------------
0540 The fw fatal reporter implements dump and recover callbacks.
0541 It follows fatal errors indications by CR-space dump and recover flow.
0542 The CR-space dump uses vsc interface which is valid even if the FW command
0543 interface is not functional, which is the case in most FW fatal errors.
0544 The recover function runs recover flow which reloads the driver and triggers fw
0545 reset if needed.
0546 On firmware error, the health buffer is dumped into the dmesg. The log
0547 level is derived from the error's severity (given in health buffer).
0548 
0549 User commands examples:
0550 
0551 - Run fw recover flow manually::
0552 
0553     $ devlink health recover pci/0000:82:00.0 reporter fw_fatal
0554 
0555 - Read FW CR-space dump if already strored or trigger new one::
0556 
0557     $ devlink health dump show pci/0000:82:00.1 reporter fw_fatal
0558 
0559 NOTE: This command can run only on PF.
0560 
0561 mlx5 tracepoints
0562 ================
0563 
0564 mlx5 driver provides internal trace points for tracking and debugging using
0565 kernel tracepoints interfaces (refer to Documentation/trace/ftrace.rst).
0566 
0567 For the list of support mlx5 events check /sys/kernel/debug/tracing/events/mlx5/
0568 
0569 tc and eswitch offloads tracepoints:
0570 
0571 - mlx5e_configure_flower: trace flower filter actions and cookies offloaded to mlx5::
0572 
0573     $ echo mlx5:mlx5e_configure_flower >> /sys/kernel/debug/tracing/set_event
0574     $ cat /sys/kernel/debug/tracing/trace
0575     ...
0576     tc-6535  [019] ...1  2672.404466: mlx5e_configure_flower: cookie=0000000067874a55 actions= REDIRECT
0577 
0578 - mlx5e_delete_flower: trace flower filter actions and cookies deleted from mlx5::
0579 
0580     $ echo mlx5:mlx5e_delete_flower >> /sys/kernel/debug/tracing/set_event
0581     $ cat /sys/kernel/debug/tracing/trace
0582     ...
0583     tc-6569  [010] .N.1  2686.379075: mlx5e_delete_flower: cookie=0000000067874a55 actions= NULL
0584 
0585 - mlx5e_stats_flower: trace flower stats request::
0586 
0587     $ echo mlx5:mlx5e_stats_flower >> /sys/kernel/debug/tracing/set_event
0588     $ cat /sys/kernel/debug/tracing/trace
0589     ...
0590     tc-6546  [010] ...1  2679.704889: mlx5e_stats_flower: cookie=0000000060eb3d6a bytes=0 packets=0 lastused=4295560217
0591 
0592 - mlx5e_tc_update_neigh_used_value: trace tunnel rule neigh update value offloaded to mlx5::
0593 
0594     $ echo mlx5:mlx5e_tc_update_neigh_used_value >> /sys/kernel/debug/tracing/set_event
0595     $ cat /sys/kernel/debug/tracing/trace
0596     ...
0597     kworker/u48:4-8806  [009] ...1 55117.882428: mlx5e_tc_update_neigh_used_value: netdev: ens1f0 IPv4: 1.1.1.10 IPv6: ::ffff:1.1.1.10 neigh_used=1
0598 
0599 - mlx5e_rep_neigh_update: trace neigh update tasks scheduled due to neigh state change events::
0600 
0601     $ echo mlx5:mlx5e_rep_neigh_update >> /sys/kernel/debug/tracing/set_event
0602     $ cat /sys/kernel/debug/tracing/trace
0603     ...
0604     kworker/u48:7-2221  [009] ...1  1475.387435: mlx5e_rep_neigh_update: netdev: ens1f0 MAC: 24:8a:07:9a:17:9a IPv4: 1.1.1.10 IPv6: ::ffff:1.1.1.10 neigh_connected=1
0605 
0606 Bridge offloads tracepoints:
0607 
0608 - mlx5_esw_bridge_fdb_entry_init: trace bridge FDB entry offloaded to mlx5::
0609 
0610     $ echo mlx5:mlx5_esw_bridge_fdb_entry_init >> set_event
0611     $ cat /sys/kernel/debug/tracing/trace
0612     ...
0613     kworker/u20:9-2217    [003] ...1   318.582243: mlx5_esw_bridge_fdb_entry_init: net_device=enp8s0f0_0 addr=e4:fd:05:08:00:02 vid=0 flags=0 used=0
0614 
0615 - mlx5_esw_bridge_fdb_entry_cleanup: trace bridge FDB entry deleted from mlx5::
0616 
0617     $ echo mlx5:mlx5_esw_bridge_fdb_entry_cleanup >> set_event
0618     $ cat /sys/kernel/debug/tracing/trace
0619     ...
0620     ip-2581    [005] ...1   318.629871: mlx5_esw_bridge_fdb_entry_cleanup: net_device=enp8s0f0_1 addr=e4:fd:05:08:00:03 vid=0 flags=0 used=16
0621 
0622 - mlx5_esw_bridge_fdb_entry_refresh: trace bridge FDB entry offload refreshed in
0623   mlx5::
0624 
0625     $ echo mlx5:mlx5_esw_bridge_fdb_entry_refresh >> set_event
0626     $ cat /sys/kernel/debug/tracing/trace
0627     ...
0628     kworker/u20:8-3849    [003] ...1       466716: mlx5_esw_bridge_fdb_entry_refresh: net_device=enp8s0f0_0 addr=e4:fd:05:08:00:02 vid=3 flags=0 used=0
0629 
0630 - mlx5_esw_bridge_vlan_create: trace bridge VLAN object add on mlx5
0631   representor::
0632 
0633     $ echo mlx5:mlx5_esw_bridge_vlan_create >> set_event
0634     $ cat /sys/kernel/debug/tracing/trace
0635     ...
0636     ip-2560    [007] ...1   318.460258: mlx5_esw_bridge_vlan_create: vid=1 flags=6
0637 
0638 - mlx5_esw_bridge_vlan_cleanup: trace bridge VLAN object delete from mlx5
0639   representor::
0640 
0641     $ echo mlx5:mlx5_esw_bridge_vlan_cleanup >> set_event
0642     $ cat /sys/kernel/debug/tracing/trace
0643     ...
0644     bridge-2582    [007] ...1   318.653496: mlx5_esw_bridge_vlan_cleanup: vid=2 flags=8
0645 
0646 - mlx5_esw_bridge_vport_init: trace mlx5 vport assigned with bridge upper
0647   device::
0648 
0649     $ echo mlx5:mlx5_esw_bridge_vport_init >> set_event
0650     $ cat /sys/kernel/debug/tracing/trace
0651     ...
0652     ip-2560    [007] ...1   318.458915: mlx5_esw_bridge_vport_init: vport_num=1
0653 
0654 - mlx5_esw_bridge_vport_cleanup: trace mlx5 vport removed from bridge upper
0655   device::
0656 
0657     $ echo mlx5:mlx5_esw_bridge_vport_cleanup >> set_event
0658     $ cat /sys/kernel/debug/tracing/trace
0659     ...
0660     ip-5387    [000] ...1       573713: mlx5_esw_bridge_vport_cleanup: vport_num=1
0661 
0662 Eswitch QoS tracepoints:
0663 
0664 - mlx5_esw_vport_qos_create: trace creation of transmit scheduler arbiter for vport::
0665 
0666     $ echo mlx5:mlx5_esw_vport_qos_create >> /sys/kernel/debug/tracing/set_event
0667     $ cat /sys/kernel/debug/tracing/trace
0668     ...
0669     <...>-23496   [018] .... 73136.838831: mlx5_esw_vport_qos_create: (0000:82:00.0) vport=2 tsar_ix=4 bw_share=0, max_rate=0 group=000000007b576bb3
0670 
0671 - mlx5_esw_vport_qos_config: trace configuration of transmit scheduler arbiter for vport::
0672 
0673     $ echo mlx5:mlx5_esw_vport_qos_config >> /sys/kernel/debug/tracing/set_event
0674     $ cat /sys/kernel/debug/tracing/trace
0675     ...
0676     <...>-26548   [023] .... 75754.223823: mlx5_esw_vport_qos_config: (0000:82:00.0) vport=1 tsar_ix=3 bw_share=34, max_rate=10000 group=000000007b576bb3
0677 
0678 - mlx5_esw_vport_qos_destroy: trace deletion of transmit scheduler arbiter for vport::
0679 
0680     $ echo mlx5:mlx5_esw_vport_qos_destroy >> /sys/kernel/debug/tracing/set_event
0681     $ cat /sys/kernel/debug/tracing/trace
0682     ...
0683     <...>-27418   [004] .... 76546.680901: mlx5_esw_vport_qos_destroy: (0000:82:00.0) vport=1 tsar_ix=3
0684 
0685 - mlx5_esw_group_qos_create: trace creation of transmit scheduler arbiter for rate group::
0686 
0687     $ echo mlx5:mlx5_esw_group_qos_create >> /sys/kernel/debug/tracing/set_event
0688     $ cat /sys/kernel/debug/tracing/trace
0689     ...
0690     <...>-26578   [008] .... 75776.022112: mlx5_esw_group_qos_create: (0000:82:00.0) group=000000008dac63ea tsar_ix=5
0691 
0692 - mlx5_esw_group_qos_config: trace configuration of transmit scheduler arbiter for rate group::
0693 
0694     $ echo mlx5:mlx5_esw_group_qos_config >> /sys/kernel/debug/tracing/set_event
0695     $ cat /sys/kernel/debug/tracing/trace
0696     ...
0697     <...>-27303   [020] .... 76461.455356: mlx5_esw_group_qos_config: (0000:82:00.0) group=000000008dac63ea tsar_ix=5 bw_share=100 max_rate=20000
0698 
0699 - mlx5_esw_group_qos_destroy: trace deletion of transmit scheduler arbiter for group::
0700 
0701     $ echo mlx5:mlx5_esw_group_qos_destroy >> /sys/kernel/debug/tracing/set_event
0702     $ cat /sys/kernel/debug/tracing/trace
0703     ...
0704     <...>-27418   [006] .... 76547.187258: mlx5_esw_group_qos_destroy: (0000:82:00.0) group=000000007b576bb3 tsar_ix=1
0705 
0706 SF tracepoints:
0707 
0708 - mlx5_sf_add: trace addition of the SF port::
0709 
0710     $ echo mlx5:mlx5_sf_add >> /sys/kernel/debug/tracing/set_event
0711     $ cat /sys/kernel/debug/tracing/trace
0712     ...
0713     devlink-9363    [031] ..... 24610.188722: mlx5_sf_add: (0000:06:00.0) port_index=32768 controller=0 hw_id=0x8000 sfnum=88
0714 
0715 - mlx5_sf_free: trace freeing of the SF port::
0716 
0717     $ echo mlx5:mlx5_sf_free >> /sys/kernel/debug/tracing/set_event
0718     $ cat /sys/kernel/debug/tracing/trace
0719     ...
0720     devlink-9830    [038] ..... 26300.404749: mlx5_sf_free: (0000:06:00.0) port_index=32768 controller=0 hw_id=0x8000
0721 
0722 - mlx5_sf_hwc_alloc: trace allocating of the hardware SF context::
0723 
0724     $ echo mlx5:mlx5_sf_hwc_alloc >> /sys/kernel/debug/tracing/set_event
0725     $ cat /sys/kernel/debug/tracing/trace
0726     ...
0727     devlink-9775    [031] ..... 26296.385259: mlx5_sf_hwc_alloc: (0000:06:00.0) controller=0 hw_id=0x8000 sfnum=88
0728 
0729 - mlx5_sf_hwc_free: trace freeing of the hardware SF context::
0730 
0731     $ echo mlx5:mlx5_sf_hwc_free >> /sys/kernel/debug/tracing/set_event
0732     $ cat /sys/kernel/debug/tracing/trace
0733     ...
0734     kworker/u128:3-9093    [046] ..... 24625.365771: mlx5_sf_hwc_free: (0000:06:00.0) hw_id=0x8000
0735 
0736 - mlx5_sf_hwc_deferred_free : trace deferred freeing of the hardware SF context::
0737 
0738     $ echo mlx5:mlx5_sf_hwc_deferred_free >> /sys/kernel/debug/tracing/set_event
0739     $ cat /sys/kernel/debug/tracing/trace
0740     ...
0741     devlink-9519    [046] ..... 24624.400271: mlx5_sf_hwc_deferred_free: (0000:06:00.0) hw_id=0x8000
0742 
0743 - mlx5_sf_vhca_event: trace SF vhca event and state::
0744 
0745     $ echo mlx5:mlx5_sf_vhca_event >> /sys/kernel/debug/tracing/set_event
0746     $ cat /sys/kernel/debug/tracing/trace
0747     ...
0748     kworker/u128:3-9093    [046] ..... 24625.365525: mlx5_sf_vhca_event: (0000:06:00.0) hw_id=0x8000 sfnum=88 vhca_state=1
0749 
0750 - mlx5_sf_dev_add : trace SF device add event::
0751 
0752     $ echo mlx5:mlx5_sf_dev_add>> /sys/kernel/debug/tracing/set_event
0753     $ cat /sys/kernel/debug/tracing/trace
0754     ...
0755     kworker/u128:3-9093    [000] ..... 24616.524495: mlx5_sf_dev_add: (0000:06:00.0) sfdev=00000000fc5d96fd aux_id=4 hw_id=0x8000 sfnum=88
0756 
0757 - mlx5_sf_dev_del : trace SF device delete event::
0758 
0759     $ echo mlx5:mlx5_sf_dev_del >> /sys/kernel/debug/tracing/set_event
0760     $ cat /sys/kernel/debug/tracing/trace
0761     ...
0762     kworker/u128:3-9093    [044] ..... 24624.400749: mlx5_sf_dev_del: (0000:06:00.0) sfdev=00000000fc5d96fd aux_id=4 hw_id=0x8000 sfnum=88