#include <linux/refcount.h>
#include "en_tc.h"
#include "en/tc_priv.h"
#include "en/tc_ct.h"
#include "en/tc/ct_fs.h"
#include "lib/smfs.h"
#define INIT_ERR_PREFIX …
#define ct_dbg(fmt, args...) …
#define MLX5_CT_TCP_FLAGS_MASK …
struct mlx5_ct_fs_smfs_matcher { … };
struct mlx5_ct_fs_smfs_matchers { … };
struct mlx5_ct_fs_smfs { … };
struct mlx5_ct_fs_smfs_rule { … };
static inline void
mlx5_ct_fs_smfs_fill_mask(struct mlx5_ct_fs *fs, struct mlx5_flow_spec *spec, bool ipv4, bool tcp,
bool gre)
{ … }
static struct mlx5dr_matcher *
mlx5_ct_fs_smfs_matcher_create(struct mlx5_ct_fs *fs, struct mlx5dr_table *tbl, bool ipv4,
bool tcp, bool gre, u32 priority)
{ … }
static struct mlx5_ct_fs_smfs_matcher *
mlx5_ct_fs_smfs_matcher_get(struct mlx5_ct_fs *fs, bool nat, bool ipv4, bool tcp, bool gre)
{ … }
static void
mlx5_ct_fs_smfs_matcher_put(struct mlx5_ct_fs *fs, struct mlx5_ct_fs_smfs_matcher *smfs_matcher)
{ … }
static int
mlx5_ct_fs_smfs_init(struct mlx5_ct_fs *fs, struct mlx5_flow_table *ct,
struct mlx5_flow_table *ct_nat, struct mlx5_flow_table *post_ct)
{ … }
static void
mlx5_ct_fs_smfs_destroy(struct mlx5_ct_fs *fs)
{ … }
static inline bool
mlx5_tc_ct_valid_used_dissector_keys(const u64 used_keys)
{ … }
static bool
mlx5_ct_fs_smfs_ct_validate_flow_rule(struct mlx5_ct_fs *fs, struct flow_rule *flow_rule)
{ … }
static struct mlx5_ct_fs_rule *
mlx5_ct_fs_smfs_ct_rule_add(struct mlx5_ct_fs *fs, struct mlx5_flow_spec *spec,
struct mlx5_flow_attr *attr, struct flow_rule *flow_rule)
{ … }
static void
mlx5_ct_fs_smfs_ct_rule_del(struct mlx5_ct_fs *fs, struct mlx5_ct_fs_rule *fs_rule)
{ … }
static struct mlx5_ct_fs_ops fs_smfs_ops = …;
struct mlx5_ct_fs_ops *
mlx5_ct_fs_smfs_ops_get(void)
{ … }