__rte_experimentalintrte_pmd_mlx5_get_dyn_flag_names(char*names[],unsignedintn)
Returns the dynamic flags name, that are supported.
Parametersnames Array that is used to return the supported dynamic flags names.
n The number of elements in the names array.
Returns
The number of dynamic flags that were copied if not negative. Otherwise:
• ENOMEM - not enough entries in the array
• EINVAL - invalid array entry
__rte_experimentalintrte_pmd_mlx5_sync_flow(uint16_tport_id,uint32_tdomains)
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.
Parametersport_id The port identifier of the Ethernet device.
domains Refer to '/usr/include/infiniband/mlx5dv.h'. Bitmask of domains in which the synchronization
will be done. RTE_PMD_MLX5_DOMAIN_BIT_* macros are used to specify the domains. An ADD or OR
operation could be used to synchronize flows in more than one domain per call.
Returns
• (0) if successful.
• Negative value if an error.
__rte_experimentalintrte_pmd_mlx5_external_rx_queue_id_map(uint16_tport_id,uint16_tdpdk_idx,uint32_thw_idx)
Update mapping between rte_flow queue index (16 bits) and HW queue index (32 bits) for RxQs which is
created outside the PMD.
Parametersport_id The port identifier of the Ethernet device.
dpdk_idx Queue index in rte_flow.
hw_idx Queue index in hardware.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EEXIST - a mapping with the same rte_flow index already exists.
• EINVAL - invalid rte_flow index, out of range.
• ENODEV - there is no Ethernet device for this port id.
• ENOTSUP - the port doesn't support external RxQ.
__rte_experimentalintrte_pmd_mlx5_external_rx_queue_id_unmap(uint16_tport_id,uint16_tdpdk_idx)
Remove mapping between rte_flow queue index (16 bits) and HW queue index (32 bits) for RxQs which is
created outside the PMD.
Parametersport_id The port identifier of the Ethernet device.
dpdk_idx Queue index in rte_flow.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EINVAL - invalid index, out of range, still referenced or doesn't exist.
• ENODEV - there is no Ethernet device for this port id.
• ENOTSUP - the port doesn't support external RxQ.
__rte_experimentalintrte_pmd_mlx5_external_tx_queue_id_map(uint16_tport_id,uint16_tdpdk_idx,uint32_thw_idx)
Update mapping between rte_flow Tx queue index (16 bits) and HW queue index (32 bits) for TxQs which is
created outside the PMD.
Parametersport_id The port identifier of the Ethernet device.
dpdk_idx Queue index in rte_flow.
hw_idx Queue index in hardware.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EEXIST - a mapping with the same rte_flow index already exists.
• EINVAL - invalid rte_flow index, out of range.
• ENODEV - there is no Ethernet device for this port id.
• ENOTSUP - the port doesn't support external TxQ.
__rte_experimentalintrte_pmd_mlx5_external_tx_queue_id_unmap(uint16_tport_id,uint16_tdpdk_idx)
Remove mapping between rte_flow Tx queue index (16 bits) and HW queue index (32 bits) for TxQs which is
created outside the PMD.
Parametersport_id The port identifier of the Ethernet device.
dpdk_idx Queue index in rte_flow.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EINVAL - invalid index, out of range, still referenced or doesn't exist.
• ENODEV - there is no Ethernet device for this port id.
• ENOTSUP - the port doesn't support external TxQ.
__rte_experimentalintrte_pmd_mlx5_host_shaper_config(intport_id,uint8_trate,uint32_tflags)
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.
Parametersport_id The port identifier of the Ethernet device.
rate Unit is 100Mbps, setting the rate to 0 disables the shaper.
flags Host shaper flags (see RTE_PMD_MLX5_HOST_SHAPER_FLAG_*).
Returns
0 : operation success. Otherwise:
• ENOENT - no ibdev interface.
• EBUSY - the register access unit is busy.
• EIO - the register access command meets IO error.
__rte_experimentalintrte_pmd_mlx5_external_sq_enable(uint16_tport_id,uint32_tsq_num)
Enable traffic for external SQ.
Parametersport_id The port identifier of the Ethernet device.
sq_num SQ HW number.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EINVAL - invalid sq_number or port type.
• ENODEV - there is no Ethernet device for this port id.
__rte_experimentalintrte_pmd_mlx5_flow_engine_set_mode(enumrte_pmd_mlx5_flow_engine_modemode,uint32_tflags)WarningEXPERIMENTAL: this API may change without prior notice
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:
• traffic not handled by the active flow engine configuration
• no active flow engine
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
Parametersmode The desired mode (see rte_pmd_mlx5_flow_engine_mode).
flags Mode specific flags (see RTE_PMD_MLX5_FLOW_ENGINE_FLAG_*).
Returns
Positive value on success, -rte_errno value on error:
• (> 0) Number of switched devices.
• (-EINVAL) if error happen and rollback internally.
• (-EPERM) if operation failed and can't recover.
__rte_experimentalvoid*rte_pmd_mlx5_create_geneve_tlv_parser(uint16_tport_id,conststructrte_pmd_mlx5_geneve_tlvtlv_list[],uint8_tnb_options)
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.
Parametersport_id The port identifier of the Ethernet device.
tlv_list A list of GENEVE TLV options to create parser for them.
nb_options The number of options in TLV list.
Returns
A pointer to TLV handle on success, NULL otherwise and rte_errno is set. Possible values for
rte_errno:
• ENOMEM - not enough memory to create GENEVE TLV parser.
• EEXIST - this port already has GENEVE TLV parser or another port under same physical device has
already prepared a different parser.
• EINVAL - invalid GENEVE TLV requested.
• ENODEV - there is no Ethernet device for this port id.
• ENOTSUP - the port doesn't support GENEVE TLV parsing.
__rte_experimentalintrte_pmd_mlx5_destroy_geneve_tlv_parser(void*handle)
Destroy GENEVE TLV parser for the selected port. This function must be called after last use of GENEVE
option and before port closing.
Parametershandle Handle for the GENEVE TLV parser object to be destroyed.
Returns
0 on success, a negative errno value otherwise and rte_errno is set. Possible values for rte_errno:
• EINVAL - invalid handle.
• ENOENT - there is no valid GENEVE TLV parser in this handle.
• EBUSY - one of options is in used by template table.
__rte_experimentalintrte_pmd_mlx5_rxq_dump_contexts(uint16_tport_id,uint16_tqueue_id,constchar*filename)
Dump Rx Queue Context for a given port/queue
Parametersport_id Port ID
queue_id Queue ID
filename Name of file to dump the Rx Queue Context
Returns
0 for success, non-zero value depending on failure type
__rte_experimentalintrte_pmd_mlx5_txq_dump_contexts(uint16_tport_id,uint16_tqueue_id,constchar*filename)
Dump Tx Queue Context for a given port/queue
Parametersport_id Port ID
queue_id Queue ID
filename Name of file to dump the Tx Queue Context
Returns
0 for success, non-zero value depending on failure type