};
};
-enum mlx5_ind_tbl_type {
- MLX5_IND_TBL_TYPE_IBV,
- MLX5_IND_TBL_TYPE_DEVX,
-};
-
/* Indirection table. */
struct mlx5_ind_table_obj {
LIST_ENTRY(mlx5_ind_table_obj) next; /* Pointer to the next element. */
rte_atomic32_t refcnt; /* Reference counter. */
- enum mlx5_ind_tbl_type type;
RTE_STD_C11
union {
void *ind_table; /**< Indirection table. */
int (*rxq_event_get)(struct mlx5_rxq_obj *rxq_obj);
int (*rxq_obj_modify)(struct mlx5_rxq_obj *rxq_obj, bool is_start);
void (*rxq_obj_release)(struct mlx5_rxq_obj *rxq_obj);
- struct mlx5_ind_table_obj *(*ind_table_obj_new)(struct rte_eth_dev *dev,
- const uint16_t *queues,
- uint32_t queues_n);
- void (*ind_table_obj_destroy)(struct mlx5_ind_table_obj *ind_tbl);
- uint32_t (*hrxq_new)(struct rte_eth_dev *dev, const uint8_t *rss_key,
- uint32_t rss_key_len, uint64_t hash_fields,
- const uint16_t *queues, uint32_t queues_n,
- int tunnel __rte_unused);
+ int (*ind_table_new)(struct rte_eth_dev *dev, const unsigned int log_n,
+ struct mlx5_ind_table_obj *ind_tbl);
+ void (*ind_table_destroy)(struct mlx5_ind_table_obj *ind_tbl);
+ int (*hrxq_new)(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq,
+ int tunnel __rte_unused);
void (*hrxq_destroy)(struct mlx5_hrxq *hrxq);
+ int (*drop_action_create)(struct rte_eth_dev *dev);
+ void (*drop_action_destroy)(struct rte_eth_dev *dev);
};
struct mlx5_priv {
void *rss_desc; /* Intermediate rss description resources. */
int flow_idx; /* Intermediate device flow index. */
int flow_nested_idx; /* Intermediate device flow index, nested. */
- struct mlx5_obj_ops *obj_ops; /* HW objects operations. */
+ struct mlx5_obj_ops obj_ops; /* HW objects operations. */
LIST_HEAD(rxq, mlx5_rxq_ctrl) rxqsctrl; /* DPDK Rx queues. */
LIST_HEAD(rxqobj, mlx5_rxq_obj) rxqsobj; /* Verbs/DevX Rx queues. */
uint32_t hrxqs; /* Verbs Hash Rx queues. */