rte_pmd_mlx5.h
- Provided by: dpdk-doc (Version: 25.11-2)
- Source: dpdk
- Report a bug
#include <stdint.h>
#include <rte_byteorder.h>
#include <rte_compat.h>
#include <rte_per_lcore.h>
struct rte_pmd_mlx5_geneve_tlv
struct rte_pmd_mlx5_driver_event_cb_queue_info
struct rte_pmd_mlx5_driver_event_cb_info
#define RTE_PMD_MLX5_DOMAIN_BIT_NIC_RX (1 << 0)
#define RTE_PMD_MLX5_DOMAIN_BIT_NIC_TX (1 << 1)
#define RTE_PMD_MLX5_DOMAIN_BIT_FDB (1 << 2)
#define RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
#define MLX5_EXTERNAL_TX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
#define RTE_PMD_MLX5_LINEAR_HASH_TAG_INDEX 255
#define RTE_PMD_MLX5_HOST_SHAPER_FLAG_AVAIL_THRESH_TRIGGERED 0
#define RTE_PMD_MLX5_FLOW_ENGINE_FLAG_STANDBY_DUP_INGRESS
RTE_BIT32(0)
typedef void(* rte_pmd_mlx5_driver_event_callback_t)
(uint16_t port_id, const struct rte_pmd_mlx5_driver_event_cb_info
*info, const void *opaque)
enum rte_pmd_mlx5_driver_event_cb_type {
RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_CREATE,
RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_DESTROY,
RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_CREATE,
RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_DESTROY }
__rte_experimental int rte_pmd_mlx5_get_dyn_flag_names
(char *names[], unsigned int n)
__rte_experimental int rte_pmd_mlx5_sync_flow (uint16_t port_id,
uint32_t domains)
__rte_experimental int rte_pmd_mlx5_external_rx_queue_id_map (uint16_t
port_id, uint16_t dpdk_idx, uint32_t hw_idx)
__rte_experimental int rte_pmd_mlx5_external_rx_queue_id_unmap
(uint16_t port_id, uint16_t dpdk_idx)
__rte_experimental int rte_pmd_mlx5_external_tx_queue_id_map (uint16_t
port_id, uint16_t dpdk_idx, uint32_t hw_idx)
__rte_experimental int rte_pmd_mlx5_external_tx_queue_id_unmap
(uint16_t port_id, uint16_t dpdk_idx)
__rte_experimental int rte_pmd_mlx5_host_shaper_config (int port_id,
uint8_t rate, uint32_t flags)
__rte_experimental int rte_pmd_mlx5_external_sq_enable (uint16_t
port_id, uint32_t sq_num)
__rte_experimental int rte_pmd_mlx5_flow_engine_set_mode (enum
rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags)
__rte_experimental void * rte_pmd_mlx5_create_geneve_tlv_parser
(uint16_t port_id, const struct rte_pmd_mlx5_geneve_tlv tlv_list[],
uint8_t nb_options)
__rte_experimental int rte_pmd_mlx5_destroy_geneve_tlv_parser (void
*handle)
__rte_experimental int rte_pmd_mlx5_rxq_dump_contexts (uint16_t
port_id, uint16_t queue_id, const char *filename)
__rte_experimental int rte_pmd_mlx5_txq_dump_contexts (uint16_t
port_id, uint16_t queue_id, const char *filename)
__rte_experimental int rte_pmd_mlx5_external_sq_disable (uint16_t
port_id, uint32_t sq_num)
__rte_experimental int rte_pmd_mlx5_driver_event_cb_register
(rte_pmd_mlx5_driver_event_callback_t cb, void *opaque)
__rte_experimental int rte_pmd_mlx5_driver_event_cb_unregister
(rte_pmd_mlx5_driver_event_callback_t cb)
__rte_experimental void rte_pmd_mlx5_disable_steering (void)
__rte_experimental int rte_pmd_mlx5_enable_steering (void)
MLX5 public header.
This interface provides the ability to support private PMD dynamic flags.
Definition in file rte_pmd_mlx5.h.
NIC RX domain bit mask.
Definition at line 45 of file rte_pmd_mlx5.h.
NIC TX domain bit mask.
Definition at line 46 of file rte_pmd_mlx5.h.
FDB (TX + RX) domain bit mask.
Definition at line 47 of file rte_pmd_mlx5.h.
External Rx queue rte_flow index minimal value.
Definition at line 73 of file rte_pmd_mlx5.h.
External Tx queue rte_flow index minimal value.
Definition at line 78 of file rte_pmd_mlx5.h.
Tag level to set the linear hash index.
Definition at line 83 of file rte_pmd_mlx5.h.
The rate of the host port shaper will be updated directly at the next available descriptor threshold event to the rate that comes with this flag set; set rate 0 to disable this rate update. Unset this flag to update the rate of the host port shaper directly in the API call; use rate 0 to disable the current shaper.
Definition at line 178 of file rte_pmd_mlx5.h.
When set on the flow engine of a standby process, ingress flow rules will be effective in active and standby processes, so the ingress traffic may be duplicated.
Definition at line 228 of file rte_pmd_mlx5.h.
Prototype of the callback called on mlx5 driver events.
Definition at line 482 of file rte_pmd_mlx5.h.
Type of mlx5 driver event for which custom callback is called.
Enumerator
Definition at line 423 of file rte_pmd_mlx5.h.
Returns the dynamic flags name, that are supported.
Parameters
Returns
Synchronize the flows to make them take effort on hardware. It only supports DR flows now. For DV and Verbs flows, there is no need to call this function, and a success will return directly in case of Verbs.
Parameters
Returns
Update mapping between rte_flow queue index (16 bits) and HW queue index (32 bits) for RxQs which is created outside the PMD.
Parameters
Returns
Remove mapping between rte_flow queue index (16 bits) and HW queue index (32 bits) for RxQs which is created outside the PMD.
Parameters
Returns
Update mapping between rte_flow Tx queue index (16 bits) and HW queue index (32 bits) for TxQs which is created outside the PMD.
Parameters
Returns
Remove mapping between rte_flow Tx queue index (16 bits) and HW queue index (32 bits) for TxQs which is created outside the PMD.
Parameters
Returns
Configure a HW shaper to limit Tx rate for a host port. The configuration will affect all the ethdev ports belonging to the same rte_device.
Parameters
Returns
Enable traffic for external SQ.
Parameters
Returns
Warning
Set the flow engine mode of the process to active or standby, affecting network traffic handling.
If one device does not support this operation or fails, the whole operation is failed and rolled back.
It is forbidden to have multiple flow engines with the same mode unless only one of them is configured to handle the traffic.
The application's flow engine is active by default. The configuration from the active flow engine is effective immediately while the configuration from the standby flow engine is queued by hardware. When configuring the device from a standby flow engine, it has no effect except for below situations:
When flow engine of a process is changed from a standby to an active mode, all preceding configurations that are queued by hardware should become effective immediately. Before mode transition, all the traffic handling configurations set by the active flow engine should be flushed first.
In summary, the operations are expected to happen in this order in "old" and "new" applications: device: already configured by the old application new: start as active new: probe the same device new: set as standby new: configure the device device: has configurations from old and new applications old: clear its device configuration device: has only 1 configuration from new application new: set as active device: downtime for connecting all to the new application old: shutdown
Parameters
Returns
Creates GENEVE TLV parser for the selected port. This function must be called before first use of GENEVE option.
This API is port oriented, but the configuration is done once for all ports under the same physical device. Each port should call this API before using GENEVE OPT item, but it must use the same options in the same order inside the list.
Each physical device has 7 DWs for GENEVE TLV options. Each nonzero element in 'match_data_mask' array consumes one DW, and choosing matchable mode for class consumes additional one. Calling this API for second port under same physical device doesn't consume more DW, it uses same configuration.
Parameters
Returns
Destroy GENEVE TLV parser for the selected port. This function must be called after last use of GENEVE option and before port closing.
Parameters
Returns
Dump Rx Queue Context for a given port/queue
Parameters
Returns
Dump Tx Queue Context for a given port/queue
Parameters
Returns
Disable traffic for external SQ. Should be invoked by application before destroying the external SQ.
Parameters
Returns
Register mlx5 driver event callback.
mlx5 PMD configures HW through interfaces exposed by rdma-core and mlx5 kernel driver. Any HW object created this way may be used by other libraries or applications. This function allows application to register a custom callback which will be called whenever mlx5 PMD performs some operation (driver event) on a managed HW objects. rte_pmd_mlx5_driver_event_cb_type defines exposed driver events.
This function can be called multiple times with different callbacks. mlx5 PMD will register all of them and all of them will be called for triggered driver events.
This function can be called:
If this function is called when mlx5 ports (at least one) exist, then provided callback will be immediately called for all applicable driver events, for all existing mlx5 ports.
This function is lock-free and it is assumed that it won't be called concurrently with other functions from ethdev API used to configure any of the mlx5 ports. It is the responsibility of the application to enforce this.
Registered callbacks might be called during control path configuration triggered by DPDK API. It is the user's responsibility to prevent calling more configurations by the DPDK API from the callback itself.
mlx5 PMD registers a destructor (through RTE_FINI) which will unregister all known callbacks.
Parameters
Returns
Unregister driver event callback.
Unregisters a mlx5 driver event callback which was previously registered through rte_pmd_mlx5_driver_event_cb_unregister.
This function is lock-free and it is assumed that it won't be called concurrently with other functions from ethdev API used to configure any of the mlx5 ports. It is the responsibility of the application to enforce this.
Parameters
Returns
Disable flow steering for all mlx5 ports.
In mlx5 PMD, HW flow rules are generally used in 2 ways:
In mlx5 PMD language, configuring flow rules is known as configuring flow steering.
If an application wants to use any other library compatible with NVIDIA hardware to configure flow steering or delegate flow steering to another process, the application can call this function to disable flow steering globally for all mlx5 ports.
Information required to configure flow steering in such a way that externally created flow rules would forward/match traffic to DPDK-managed Rx/Tx queues can be extracted through rte_pmd_mlx5_driver_event_cb_register API.
This function can be called:
If this function is called when mlx5 ports (at least one) exist, then steering will be disabled for all existing mlx5 port. This will invalidate ALL handles to objects return from flow API for these ports (for example handles to flow rules, indirect actions, template tables).
This function is lock-free and it is assumed that it won't be called concurrently with other functions from ethdev API used to configure any of the mlx5 ports. It is the responsibility of the application to enforce this.
Enable flow steering for mlx5 ports.
This function reverses the effects of rte_pmd_mlx5_disable_steering.
It can be called if and only if there are no mlx5 ports known by DPDK, so in case if rte_pmd_mlx5_disable_steering was previously called the application has to remove mlx5 devices, call this function and re-probe the mlx5 devices.
Returns
Generated automatically by Doxygen for DPDK from the source code.