DPDK  25.11.0
rte_pmd_mlx5.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2020 Mellanox Technologies, Ltd
3  */
4 
5 #ifndef RTE_PMD_PRIVATE_MLX5_H_
6 #define RTE_PMD_PRIVATE_MLX5_H_
7 
8 #include <stdint.h>
9 
10 #include <rte_byteorder.h>
11 #include <rte_compat.h>
12 #include <rte_per_lcore.h>
13 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #define RTE_PMD_MLX5_FINE_GRANULARITY_INLINE "mlx5_fine_granularity_inline"
27 
42 __rte_experimental
43 int rte_pmd_mlx5_get_dyn_flag_names(char *names[], unsigned int n);
44 
45 #define RTE_PMD_MLX5_DOMAIN_BIT_NIC_RX (1 << 0)
46 #define RTE_PMD_MLX5_DOMAIN_BIT_NIC_TX (1 << 1)
47 #define RTE_PMD_MLX5_DOMAIN_BIT_FDB (1 << 2)
67 __rte_experimental
68 int rte_pmd_mlx5_sync_flow(uint16_t port_id, uint32_t domains);
69 
73 #define RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
74 
78 #define MLX5_EXTERNAL_TX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
79 
83 #define RTE_PMD_MLX5_LINEAR_HASH_TAG_INDEX 255
84 
104 __rte_experimental
105 int rte_pmd_mlx5_external_rx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx,
106  uint32_t hw_idx);
107 
124 __rte_experimental
126  uint16_t dpdk_idx);
127 
147 __rte_experimental
148 int rte_pmd_mlx5_external_tx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx,
149  uint32_t hw_idx);
150 
167 __rte_experimental
169  uint16_t dpdk_idx);
170 
178 #define RTE_PMD_MLX5_HOST_SHAPER_FLAG_AVAIL_THRESH_TRIGGERED 0
179 
198 __rte_experimental
199 int rte_pmd_mlx5_host_shaper_config(int port_id, uint8_t rate, uint32_t flags);
200 
215 __rte_experimental
216 int rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num);
217 
218 /* MLX5 flow engine mode definition for live migration. */
219 enum rte_pmd_mlx5_flow_engine_mode {
220  RTE_PMD_MLX5_FLOW_ENGINE_MODE_ACTIVE, /* active means high priority, effective in HW. */
221  RTE_PMD_MLX5_FLOW_ENGINE_MODE_STANDBY, /* standby mode with lower priority flow rules. */
222 };
223 
228 #define RTE_PMD_MLX5_FLOW_ENGINE_FLAG_STANDBY_DUP_INGRESS RTE_BIT32(0)
229 
281 __rte_experimental
282 int rte_pmd_mlx5_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags);
283 
297  uint8_t option_type;
302  uint8_t option_len;
315  uint8_t offset;
321  uint8_t sample_len;
327 };
328 
361 __rte_experimental
362 void *
364  const struct rte_pmd_mlx5_geneve_tlv tlv_list[],
365  uint8_t nb_options);
366 
382 __rte_experimental
383 int
385 
400 __rte_experimental
401 int
402 rte_pmd_mlx5_rxq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
403 
418 __rte_experimental
419 int
420 rte_pmd_mlx5_txq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
421 
432 };
433 
437  uint16_t dpdk_queue_id;
439  uint32_t hw_queue_id;
459  const char *queue_info;
460 };
461 
466  union {
478  };
479 };
480 
482 typedef void (*rte_pmd_mlx5_driver_event_callback_t)(uint16_t port_id,
483  const struct rte_pmd_mlx5_driver_event_cb_info *info,
484  const void *opaque);
485 
486 
502 __rte_experimental
503 int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num);
504 
548 __rte_experimental
549 int
551 
569 __rte_experimental
570 int
572 
607 __rte_experimental
608 void
610 
625 __rte_experimental
626 int
628 
629 #ifdef __cplusplus
630 }
631 #endif
632 
633 #endif /* RTE_PMD_PRIVATE_MLX5_H_ */
uint32_t rte_be32_t
uint16_t rte_be16_t
__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_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags)
__rte_experimental int rte_pmd_mlx5_external_rx_queue_id_unmap(uint16_t port_id, uint16_t dpdk_idx)
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)
Definition: rte_pmd_mlx5.h:482
__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_rx_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_destroy_geneve_tlv_parser(void *handle)
__rte_experimental int rte_pmd_mlx5_enable_steering(void)
__rte_experimental int rte_pmd_mlx5_external_tx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx, uint32_t hw_idx)
rte_pmd_mlx5_driver_event_cb_type
Definition: rte_pmd_mlx5.h:423
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_DESTROY
Definition: rte_pmd_mlx5.h:431
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_DESTROY
Definition: rte_pmd_mlx5.h:427
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_CREATE
Definition: rte_pmd_mlx5.h:425
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_CREATE
Definition: rte_pmd_mlx5.h:429
__rte_experimental int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num)
__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_sync_flow(uint16_t port_id, uint32_t domains)
__rte_experimental int rte_pmd_mlx5_driver_event_cb_unregister(rte_pmd_mlx5_driver_event_callback_t cb)
__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_enable(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_get_dyn_flag_names(char *names[], unsigned int n)
__rte_experimental void rte_pmd_mlx5_disable_steering(void)
enum rte_pmd_mlx5_driver_event_cb_type event
Definition: rte_pmd_mlx5.h:465
struct rte_pmd_mlx5_driver_event_cb_queue_info queue
Definition: rte_pmd_mlx5.h:477
rte_be32_t * match_data_mask
Definition: rte_pmd_mlx5.h:326