mirror of https://github.com/F-Stack/f-stack.git
45 lines
1.1 KiB
C
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_ */
|