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