DPDK 26.03.0-rc1
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
24extern "C" {
25#endif
26
27#define RTE_PMD_MLX5_FINE_GRANULARITY_INLINE "mlx5_fine_granularity_inline"
28
43__rte_experimental
44int 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
69int 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
106int 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
127 uint16_t dpdk_idx);
128
148__rte_experimental
149int 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
170 uint16_t dpdk_idx);
171
179#define RTE_PMD_MLX5_HOST_SHAPER_FLAG_AVAIL_THRESH_TRIGGERED 0
180
199__rte_experimental
200int rte_pmd_mlx5_host_shaper_config(int port_id, uint8_t rate, uint32_t flags);
201
216__rte_experimental
217int rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num);
218
219/* MLX5 flow engine mode definition for live migration. */
220enum 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
283int 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
363void *
365 const struct rte_pmd_mlx5_geneve_tlv tlv_list[],
366 uint8_t nb_options);
367
383__rte_experimental
384int
386
401__rte_experimental
402int
403rte_pmd_mlx5_rxq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
404
419__rte_experimental
420int
421rte_pmd_mlx5_txq_dump_contexts(uint16_t port_id, uint16_t queue_id, const char *filename);
422
433};
434
440 uint32_t hw_queue_id;
460 const char *queue_info;
461};
462
467 union {
479 };
480};
481
483typedef 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
504int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num);
505
549__rte_experimental
550int
552
570__rte_experimental
571int
573
608__rte_experimental
609void
611
626__rte_experimental
627int
629
630struct rte_pmd_mlx5_rss_devx {
631 void *obj;
632 void *destroy_handle;
633 uint32_t id;
634};
635
661__rte_experimental
662int
664 const struct rte_flow_action_rss *rss,
665 struct rte_pmd_mlx5_rss_devx *devx);
666
678__rte_experimental
679int
680rte_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_ */
uint32_t rte_be32_t
uint16_t rte_be16_t
__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:483
__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:424
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_DESTROY
Definition: rte_pmd_mlx5.h:432
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_DESTROY
Definition: rte_pmd_mlx5.h:428
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_RXQ_CREATE
Definition: rte_pmd_mlx5.h:426
@ RTE_PMD_MLX5_DRIVER_EVENT_CB_TYPE_TXQ_CREATE
Definition: rte_pmd_mlx5.h:430
__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)
__rte_experimental int rte_pmd_mlx5_external_sq_disable(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 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_rss_tir_unregister(uint16_t port_id, void *handle)
__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:466
struct rte_pmd_mlx5_driver_event_cb_queue_info queue
Definition: rte_pmd_mlx5.h:478
rte_be32_t * match_data_mask
Definition: rte_pmd_mlx5.h:327