#ifndef _MLX5_FS_CORE_
#define _MLX5_FS_CORE_
#include <linux/refcount.h>
#include <linux/mlx5/fs.h>
#include <linux/rhashtable.h>
#include <linux/llist.h>
#include <steering/fs_dr.h>
#define FDB_TC_MAX_CHAIN …
#define FDB_FT_CHAIN …
#define FDB_TC_SLOW_PATH_CHAIN …
#define FDB_NUM_CHAINS …
#define FDB_TC_MAX_PRIO …
#define FDB_TC_LEVELS_PER_PRIO …
struct mlx5_flow_definer { … };
enum mlx5_flow_resource_owner { … };
struct mlx5_modify_hdr { … };
struct mlx5_pkt_reformat { … };
enum fs_node_type { … };
enum fs_flow_table_type { … };
enum fs_flow_table_op_mod { … };
enum fs_fte_status { … };
enum mlx5_flow_steering_mode { … };
enum mlx5_flow_steering_capabilty { … };
struct mlx5_flow_steering { … };
struct fs_node { … };
struct mlx5_flow_rule { … };
struct mlx5_flow_handle { … };
struct mlx5_flow_table { … };
struct mlx5_ft_underlay_qp { … };
#define MLX5_FTE_MATCH_PARAM_RESERVED …
#define MLX5_ST_SZ_DW_MATCH_PARAM …
struct fs_fte { … };
struct fs_prio { … };
struct mlx5_flow_namespace { … };
struct mlx5_flow_group_mask { … };
struct mlx5_flow_group { … };
struct mlx5_flow_root_namespace { … };
int mlx5_init_fc_stats(struct mlx5_core_dev *dev);
void mlx5_cleanup_fc_stats(struct mlx5_core_dev *dev);
void mlx5_fc_queue_stats_work(struct mlx5_core_dev *dev,
struct delayed_work *dwork,
unsigned long delay);
void mlx5_fc_update_sampling_interval(struct mlx5_core_dev *dev,
unsigned long interval);
const struct mlx5_flow_cmds *mlx5_fs_cmd_get_fw_cmds(void);
int mlx5_flow_namespace_set_peer(struct mlx5_flow_root_namespace *ns,
struct mlx5_flow_root_namespace *peer_ns,
u16 peer_vhca_id);
int mlx5_flow_namespace_set_mode(struct mlx5_flow_namespace *ns,
enum mlx5_flow_steering_mode mode);
int mlx5_fs_core_alloc(struct mlx5_core_dev *dev);
void mlx5_fs_core_free(struct mlx5_core_dev *dev);
int mlx5_fs_core_init(struct mlx5_core_dev *dev);
void mlx5_fs_core_cleanup(struct mlx5_core_dev *dev);
int mlx5_fs_egress_acls_init(struct mlx5_core_dev *dev, int total_vports);
void mlx5_fs_egress_acls_cleanup(struct mlx5_core_dev *dev);
int mlx5_fs_ingress_acls_init(struct mlx5_core_dev *dev, int total_vports);
void mlx5_fs_ingress_acls_cleanup(struct mlx5_core_dev *dev);
u32 mlx5_fs_get_capabilities(struct mlx5_core_dev *dev, enum mlx5_flow_namespace_type type);
struct mlx5_flow_root_namespace *find_root(struct fs_node *node);
#define fs_get_obj(v, _node) …
#define fs_list_for_each_entry(pos, root) …
#define fs_list_for_each_entry_safe(pos, tmp, root) …
#define fs_for_each_ns_or_ft_reverse(pos, prio) …
#define fs_for_each_ns_or_ft(pos, prio) …
#define fs_for_each_prio(pos, ns) …
#define fs_for_each_ns(pos, prio) …
#define fs_for_each_ft(pos, prio) …
#define fs_for_each_ft_safe(pos, tmp, prio) …
#define fs_for_each_fg(pos, ft) …
#define fs_for_each_fte(pos, fg) …
#define fs_for_each_dst(pos, fte) …
#define MLX5_CAP_FLOWTABLE_TYPE(mdev, cap, type) …
#endif