f-stack/dpdk/drivers/net/mlx5/hws/mlx5dr_table.h

45 lines
1.1 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) 2022 NVIDIA Corporation & Affiliates
*/
#ifndef MLX5DR_TABLE_H_
#define MLX5DR_TABLE_H_
#define MLX5DR_ROOT_LEVEL 0
struct mlx5dr_table {
struct mlx5dr_context *ctx;
struct mlx5dr_devx_obj *ft;
enum mlx5dr_table_type type;
uint32_t fw_ft_type;
uint32_t level;
LIST_HEAD(matcher_head, mlx5dr_matcher) head;
LIST_ENTRY(mlx5dr_table) next;
};
static inline
uint32_t mlx5dr_table_get_res_fw_ft_type(enum mlx5dr_table_type tbl_type,
bool is_mirror)
{
if (tbl_type == MLX5DR_TABLE_TYPE_NIC_RX)
return FS_FT_NIC_RX;
else if (tbl_type == MLX5DR_TABLE_TYPE_NIC_TX)
return FS_FT_NIC_TX;
else if (tbl_type == MLX5DR_TABLE_TYPE_FDB)
return is_mirror ? FS_FT_FDB_TX : FS_FT_FDB_RX;
assert(0);
return 0;
}
static inline bool mlx5dr_table_is_root(struct mlx5dr_table *tbl)
{
return (tbl->level == MLX5DR_ROOT_LEVEL);
}
struct mlx5dr_devx_obj *mlx5dr_table_create_default_ft(struct mlx5dr_table *tbl);
void mlx5dr_table_destroy_default_ft(struct mlx5dr_table *tbl,
struct mlx5dr_devx_obj *ft_obj);
#endif /* MLX5DR_TABLE_H_ */