mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-05 16:46:41 +07:00
mlxsw: spectrum_acl: Allow to get group_id value for a ruleset
For goto_chain action we need to know group_id of a ruleset to jump to. Provide infrastructure in order to get it. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e457d86ada
commit
0ade3b6457
@ -417,6 +417,7 @@ struct mlxsw_sp_acl_profile_ops {
|
||||
int (*ruleset_bind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
|
||||
struct net_device *dev, bool ingress);
|
||||
void (*ruleset_unbind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv);
|
||||
u16 (*ruleset_group_id)(void *ruleset_priv);
|
||||
size_t rule_priv_size;
|
||||
int (*rule_add)(struct mlxsw_sp *mlxsw_sp,
|
||||
void *ruleset_priv, void *rule_priv,
|
||||
@ -445,6 +446,7 @@ mlxsw_sp_acl_ruleset_get(struct mlxsw_sp *mlxsw_sp, struct net_device *dev,
|
||||
enum mlxsw_sp_acl_profile profile);
|
||||
void mlxsw_sp_acl_ruleset_put(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_acl_ruleset *ruleset);
|
||||
u16 mlxsw_sp_acl_ruleset_group_id(struct mlxsw_sp_acl_ruleset *ruleset);
|
||||
|
||||
struct mlxsw_sp_acl_rule_info *
|
||||
mlxsw_sp_acl_rulei_create(struct mlxsw_sp_acl *acl);
|
||||
|
@ -267,6 +267,13 @@ void mlxsw_sp_acl_ruleset_put(struct mlxsw_sp *mlxsw_sp,
|
||||
mlxsw_sp_acl_ruleset_ref_dec(mlxsw_sp, ruleset);
|
||||
}
|
||||
|
||||
u16 mlxsw_sp_acl_ruleset_group_id(struct mlxsw_sp_acl_ruleset *ruleset)
|
||||
{
|
||||
const struct mlxsw_sp_acl_profile_ops *ops = ruleset->ht_key.ops;
|
||||
|
||||
return ops->ruleset_group_id(ruleset->priv);
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_acl_rulei_counter_alloc(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_acl_rule_info *rulei)
|
||||
|
@ -295,6 +295,12 @@ mlxsw_sp_acl_tcam_group_unbind(struct mlxsw_sp *mlxsw_sp,
|
||||
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ppbt), ppbt_pl);
|
||||
}
|
||||
|
||||
static u16
|
||||
mlxsw_sp_acl_tcam_group_id(struct mlxsw_sp_acl_tcam_group *group)
|
||||
{
|
||||
return group->id;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
mlxsw_sp_acl_tcam_region_prio(struct mlxsw_sp_acl_tcam_region *region)
|
||||
{
|
||||
@ -1063,6 +1069,14 @@ mlxsw_sp_acl_tcam_flower_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
|
||||
mlxsw_sp_acl_tcam_group_unbind(mlxsw_sp, &ruleset->group);
|
||||
}
|
||||
|
||||
static u16
|
||||
mlxsw_sp_acl_tcam_flower_ruleset_group_id(void *ruleset_priv)
|
||||
{
|
||||
struct mlxsw_sp_acl_tcam_flower_ruleset *ruleset = ruleset_priv;
|
||||
|
||||
return mlxsw_sp_acl_tcam_group_id(&ruleset->group);
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_acl_tcam_flower_rule_add(struct mlxsw_sp *mlxsw_sp,
|
||||
void *ruleset_priv, void *rule_priv,
|
||||
@ -1099,6 +1113,7 @@ static const struct mlxsw_sp_acl_profile_ops mlxsw_sp_acl_tcam_flower_ops = {
|
||||
.ruleset_del = mlxsw_sp_acl_tcam_flower_ruleset_del,
|
||||
.ruleset_bind = mlxsw_sp_acl_tcam_flower_ruleset_bind,
|
||||
.ruleset_unbind = mlxsw_sp_acl_tcam_flower_ruleset_unbind,
|
||||
.ruleset_group_id = mlxsw_sp_acl_tcam_flower_ruleset_group_id,
|
||||
.rule_priv_size = sizeof(struct mlxsw_sp_acl_tcam_flower_rule),
|
||||
.rule_add = mlxsw_sp_acl_tcam_flower_rule_add,
|
||||
.rule_del = mlxsw_sp_acl_tcam_flower_rule_del,
|
||||
|
Loading…
Reference in New Issue
Block a user