-.. _mlx5_firmware_config:
-
-Firmware configuration
-~~~~~~~~~~~~~~~~~~~~~~
-
-Firmware features can be configured as key/value pairs.
-
-The command to set a value is::
-
- mlxconfig -d <device> set <key>=<value>
-
-The command to query a value is::
-
- mlxconfig -d <device> query | grep <key>
-
-The device name for the command ``mlxconfig`` can be either the PCI address,
-or the mst device name found with::
-
- mst status
-
-Below are some firmware configurations listed.
-
-- link type::
-
- LINK_TYPE_P1
- LINK_TYPE_P2
- value: 1=Infiniband 2=Ethernet 3=VPI(auto-sense)
-
-- enable SR-IOV::
-
- SRIOV_EN=1
-
-- maximum number of SR-IOV virtual functions::
-
- NUM_OF_VFS=<max>
-
-- enable DevX (required by Direct Rules and other features)::
-
- UCTX_EN=1
-
-- aggressive CQE zipping::
-
- CQE_COMPRESSION=1
-
-- L3 VXLAN and VXLAN-GPE destination UDP port::
-
- IP_OVER_VXLAN_EN=1
- IP_OVER_VXLAN_PORT=<udp dport>
-
-- enable VXLAN-GPE tunnel flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=0
- or
- FLEX_PARSER_PROFILE_ENABLE=2
-
-- enable IP-in-IP tunnel flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=0
-
-- enable MPLS flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=1
-
-- enable ICMP(code/type/identifier/sequence number) / ICMP6(code/type) fields matching::
-
- FLEX_PARSER_PROFILE_ENABLE=2
-
-- enable Geneve flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=0
- or
- FLEX_PARSER_PROFILE_ENABLE=1
-
-- enable Geneve TLV option flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=0
-
-- enable GTP flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=3
-
-- enable eCPRI flow matching::
-
- FLEX_PARSER_PROFILE_ENABLE=4
- PROG_PARSE_GRAPH=1
-
-Linux Prerequisites
--------------------
-
-This driver relies on external libraries and kernel drivers for resources
-allocations and initialization. The following dependencies are not part of
-DPDK and must be installed separately:
-
-- **libibverbs**
-
- User space Verbs framework used by librte_net_mlx5. This library provides
- a generic interface between the kernel and low-level user space drivers
- such as libmlx5.
-
- It allows slow and privileged operations (context initialization, hardware
- resources allocations) to be managed by the kernel and fast operations to
- never leave user space.
-
-- **libmlx5**
-
- Low-level user space driver library for Mellanox
- ConnectX-4/ConnectX-5/ConnectX-6/BlueField devices, it is automatically loaded
- by libibverbs.
-
- This library basically implements send/receive calls to the hardware
- queues.
-
-- **Kernel modules**
-
- They provide the kernel-side Verbs API and low level device drivers that
- manage actual hardware initialization and resources sharing with user
- space processes.
-
- Unlike most other PMDs, these modules must remain loaded and bound to
- their devices:
-
- - mlx5_core: hardware driver managing Mellanox
- ConnectX-4/ConnectX-5/ConnectX-6/BlueField devices and related Ethernet kernel
- network devices.
- - mlx5_ib: InifiniBand device driver.
- - ib_uverbs: user space driver for Verbs (entry point for libibverbs).
-
-- **Firmware update**