DPDK  25.11.2
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_flow.h>
13 #include <rte_per_lcore.h>
14 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #define RTE_PMD_MLX5_FINE_GRANULARITY_INLINE "mlx5_fine_granularity_inline"
28 
43 __rte_experimental
44 int rte_pmd_mlx5_get_dyn_flag_names(char *names[], unsigned int n);
45 
46 #define RTE_PMD_MLX5_DOMAIN_BIT_NIC_RX (1 << 0)
47 #define RTE_PMD_MLX5_DOMAIN_BIT_NIC_TX (1 << 1)
48 #define RTE_PMD_MLX5_DOMAIN_BIT_FDB (1 << 2)
68 __rte_experimental
69 int rte_pmd_mlx5_sync_flow(uint16_t port_id, uint32_t domains);
70 
74 #define RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
75 
79 #define MLX5_EXTERNAL_TX_QUEUE_ID_MIN (UINT16_MAX - 1000 + 1)
80 
84 #define RTE_PMD_MLX5_LINEAR_HASH_TAG_INDEX 255
85 
105 __rte_experimental
106 int rte_pmd_mlx5_external_rx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx,
107  uint32_t hw_idx);
108 
125 __rte_experimental
126 int rte_pmd_mlx5_external_rx_queue_id_unmap(uint16_t port_id,
127  uint16_t dpdk_idx);
128 
148 __rte_experimental
149 int rte_pmd_mlx5_external_tx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx,
150  uint32_t hw_idx);
151 
168 __rte_experimental
169 int rte_pmd_mlx5_external_tx_queue_id_unmap(uint16_t port_id,
170  uint16_t dpdk_idx);
171 
179 #define RTE_PMD_MLX5_HOST_SHAPER_FLAG_AVAIL_THRESH_TRIGGERED 0
180 
199 __rte_experimental
200 int rte_pmd_mlx5_host_shaper_config(int port_id, uint8_t rate, uint32_t flags);
201 
216 __rte_experimental
217 int rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num);
218 
219 /* MLX5 flow engine mode definition for live migration. */
220 enum rte_pmd_mlx5_flow_engine_mode {
221  RTE_PMD_MLX5_FLOW_ENGINE_MODE_ACTIVE, /* active means high priority, effective in HW. */
222  RTE_PMD_MLX5_FLOW_ENGINE_MODE_STANDBY, /* standby mode with lower priority flow rules. */
223 };
224 
229 #define RTE_PMD_MLX5_FLOW_ENGINE_FLAG_STANDBY_DUP_INGRESS RTE_BIT32(0)
230 
282 __rte_experimental
283 int rte_pmd_mlx5_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags);
284 
298  uint8_t option_type;
303  uint8_t option_len;
316  uint8_t offset;
322  uint8_t sample_len;
328 };
329 
362 __rte_experimental
363 void *
365  const struct rte_pmd_mlx5_geneve_tlv tlv_list[],
366  uint8_t nb_options);
367 
383 __rte_experimental
384 int
386 
401 __rte_experimental
402 int
403 rte_pmd_mlx5_rxq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
404 
419 __rte_experimental
420 int
421 rte_pmd_mlx5_txq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
422 
433 };
434 
438  uint16_t dpdk_queue_id;
440  uint32_t hw_queue_id;
460  const char *queue_info;
461 };
462 
467  union {
479  };
480 };
481 
483 typedef void (*rte_pmd_mlx5_driver_event_callback_t)(uint16_t port_id,
484  const struct rte_pmd_mlx5_driver_event_cb_info *info,
485  const void *opaque);
486 
487 
503 __rte_experimental
504 int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num);
505 
549 __rte_experimental
550 int
552 
570 __rte_experimental
571 int
573 
608 __rte_experimental
609 void
611 
626 __rte_experimental
627 int
629 
630 struct rte_pmd_mlx5_rss_devx {
631  void *obj;
632  void *destroy_handle;
633  uint32_t id;
634 };
635 
661 __rte_experimental
662 int
663 rte_pmd_mlx5_rss_tir_register(uint16_t port_id,
664  const struct rte_flow_action_rss *rss,
665  struct rte_pmd_mlx5_rss_devx *devx);
666 
678 __rte_experimental
679 int
680 rte_pmd_mlx5_rss_tir_unregister(uint16_t port_id, void *handle);
681 
682 
683 #ifdef __cplusplus
684 }
685 #endif
686 
687 #endif /* RTE_PMD_PRIVATE_MLX5_H_ */
__rte_experimental int rte_pmd_mlx5_rss_tir_register(uint16_t port_id, const struct rte_flow_action_rss *rss, struct rte_pmd_mlx5_rss_devx *devx)
uint32_t rte_be32_t
__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_unmap(uint16_t port_id, uint16_t dpdk_idx)
rte_be32_t * match_data_mask
Definition: rte_pmd_mlx5.h:327
__rte_experimental int rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
__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 void rte_pmd_mlx5_disable_steering(void)
__rte_experimental int rte_pmd_mlx5_enable_steering(void)
__rte_experimental int rte_pmd_mlx5_driver_event_cb_unregister(rte_pmd_mlx5_driver_event_callback_t cb)
rte_pmd_mlx5_driver_event_cb_type
Definition: rte_pmd_mlx5.h:424
enum rte_pmd_mlx5_driver_event_cb_type event
Definition: rte_pmd_mlx5.h:466
__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_external_tx_queue_id_unmap(uint16_t port_id, uint16_t dpdk_idx)
__rte_experimental int rte_pmd_mlx5_rss_tir_unregister(uint16_t port_id, void *handle)
__rte_experimental int rte_pmd_mlx5_destroy_geneve_tlv_parser(void *handle)
__rte_experimental int rte_pmd_mlx5_sync_flow(uint16_t port_id, uint32_t domains)
__rte_experimental int rte_pmd_mlx5_get_dyn_flag_names(char *names[], unsigned int n)
__rte_experimental int rte_pmd_mlx5_txq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename)
struct rte_pmd_mlx5_driver_event_cb_queue_info queue
Definition: rte_pmd_mlx5.h:478
__rte_experimental int rte_pmd_mlx5_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags)
uint16_t rte_be16_t
__rte_experimental int rte_pmd_mlx5_external_rx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx, uint32_t hw_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:483
__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_driver_event_cb_register(rte_pmd_mlx5_driver_event_callback_t cb, void *opaque)