• Home
  • Raw
  • Download

Lines Matching refs:acl

38 struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl)  in mlxsw_sp_acl_afk()  argument
40 return acl->afk; in mlxsw_sp_acl_afk()
90 return mlxsw_sp->acl->dummy_fid; in mlxsw_sp_acl_dummy_fid()
165 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_ruleset_create() local
183 err = ops->ruleset_add(mlxsw_sp, &acl->tcam, ruleset->priv, in mlxsw_sp_acl_ruleset_create()
189 err = rhashtable_insert_fast(&acl->ruleset_ht, &ruleset->ht_node, in mlxsw_sp_acl_ruleset_create()
209 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_ruleset_destroy() local
211 rhashtable_remove_fast(&acl->ruleset_ht, &ruleset->ht_node, in mlxsw_sp_acl_ruleset_destroy()
232 __mlxsw_sp_acl_ruleset_lookup(struct mlxsw_sp_acl *acl, in __mlxsw_sp_acl_ruleset_lookup() argument
242 return rhashtable_lookup_fast(&acl->ruleset_ht, &ht_key, in __mlxsw_sp_acl_ruleset_lookup()
252 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_ruleset_lookup() local
258 ruleset = __mlxsw_sp_acl_ruleset_lookup(acl, block, chain_index, ops); in mlxsw_sp_acl_ruleset_lookup()
271 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_ruleset_get() local
278 ruleset = __mlxsw_sp_acl_ruleset_lookup(acl, block, chain_index, ops); in mlxsw_sp_acl_ruleset_get()
309 mlxsw_sp_acl_rulei_create(struct mlxsw_sp_acl *acl, in mlxsw_sp_acl_rulei_create() argument
324 rulei->act_block = mlxsw_afa_block_create(acl->mlxsw_sp->afa); in mlxsw_sp_acl_rulei_create()
737 rule->rulei = mlxsw_sp_acl_rulei_create(mlxsw_sp->acl, afa_block); in mlxsw_sp_acl_rule_create()
790 mutex_lock(&mlxsw_sp->acl->rules_lock); in mlxsw_sp_acl_rule_add()
791 list_add_tail(&rule->list, &mlxsw_sp->acl->rules); in mlxsw_sp_acl_rule_add()
792 mutex_unlock(&mlxsw_sp->acl->rules_lock); in mlxsw_sp_acl_rule_add()
816 mutex_lock(&mlxsw_sp->acl->rules_lock); in mlxsw_sp_acl_rule_del()
818 mutex_unlock(&mlxsw_sp->acl->rules_lock); in mlxsw_sp_acl_rule_del()
872 static int mlxsw_sp_acl_rules_activity_update(struct mlxsw_sp_acl *acl) in mlxsw_sp_acl_rules_activity_update() argument
877 mutex_lock(&acl->rules_lock); in mlxsw_sp_acl_rules_activity_update()
878 list_for_each_entry(rule, &acl->rules, list) { in mlxsw_sp_acl_rules_activity_update()
879 err = mlxsw_sp_acl_rule_activity_update(acl->mlxsw_sp, in mlxsw_sp_acl_rules_activity_update()
884 mutex_unlock(&acl->rules_lock); in mlxsw_sp_acl_rules_activity_update()
888 mutex_unlock(&acl->rules_lock); in mlxsw_sp_acl_rules_activity_update()
892 static void mlxsw_sp_acl_rule_activity_work_schedule(struct mlxsw_sp_acl *acl) in mlxsw_sp_acl_rule_activity_work_schedule() argument
894 unsigned long interval = acl->rule_activity_update.interval; in mlxsw_sp_acl_rule_activity_work_schedule()
896 mlxsw_core_schedule_dw(&acl->rule_activity_update.dw, in mlxsw_sp_acl_rule_activity_work_schedule()
902 struct mlxsw_sp_acl *acl = container_of(work, struct mlxsw_sp_acl, in mlxsw_sp_acl_rule_activity_update_work() local
906 err = mlxsw_sp_acl_rules_activity_update(acl); in mlxsw_sp_acl_rule_activity_update_work()
908 dev_err(acl->mlxsw_sp->bus_info->dev, "Could not update acl activity"); in mlxsw_sp_acl_rule_activity_update_work()
910 mlxsw_sp_acl_rule_activity_work_schedule(acl); in mlxsw_sp_acl_rule_activity_update_work()
958 struct mlxsw_sp_acl *acl; in mlxsw_sp_acl_init() local
962 alloc_size = sizeof(*acl) + mlxsw_sp_acl_tcam_priv_size(mlxsw_sp); in mlxsw_sp_acl_init()
963 acl = kzalloc(alloc_size, GFP_KERNEL); in mlxsw_sp_acl_init()
964 if (!acl) in mlxsw_sp_acl_init()
966 mlxsw_sp->acl = acl; in mlxsw_sp_acl_init()
967 acl->mlxsw_sp = mlxsw_sp; in mlxsw_sp_acl_init()
968 acl->afk = mlxsw_afk_create(MLXSW_CORE_RES_GET(mlxsw_sp->core, in mlxsw_sp_acl_init()
971 if (!acl->afk) { in mlxsw_sp_acl_init()
976 err = rhashtable_init(&acl->ruleset_ht, in mlxsw_sp_acl_init()
986 acl->dummy_fid = fid; in mlxsw_sp_acl_init()
988 INIT_LIST_HEAD(&acl->rules); in mlxsw_sp_acl_init()
989 mutex_init(&acl->rules_lock); in mlxsw_sp_acl_init()
990 err = mlxsw_sp_acl_tcam_init(mlxsw_sp, &acl->tcam); in mlxsw_sp_acl_init()
995 INIT_DELAYED_WORK(&acl->rule_activity_update.dw, in mlxsw_sp_acl_init()
997 acl->rule_activity_update.interval = MLXSW_SP_ACL_RULE_ACTIVITY_UPDATE_PERIOD_MS; in mlxsw_sp_acl_init()
998 mlxsw_core_schedule_dw(&acl->rule_activity_update.dw, 0); in mlxsw_sp_acl_init()
1002 mutex_destroy(&acl->rules_lock); in mlxsw_sp_acl_init()
1005 rhashtable_destroy(&acl->ruleset_ht); in mlxsw_sp_acl_init()
1007 mlxsw_afk_destroy(acl->afk); in mlxsw_sp_acl_init()
1009 kfree(acl); in mlxsw_sp_acl_init()
1015 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_fini() local
1017 cancel_delayed_work_sync(&mlxsw_sp->acl->rule_activity_update.dw); in mlxsw_sp_acl_fini()
1018 mlxsw_sp_acl_tcam_fini(mlxsw_sp, &acl->tcam); in mlxsw_sp_acl_fini()
1019 mutex_destroy(&acl->rules_lock); in mlxsw_sp_acl_fini()
1020 WARN_ON(!list_empty(&acl->rules)); in mlxsw_sp_acl_fini()
1021 mlxsw_sp_fid_put(acl->dummy_fid); in mlxsw_sp_acl_fini()
1022 rhashtable_destroy(&acl->ruleset_ht); in mlxsw_sp_acl_fini()
1023 mlxsw_afk_destroy(acl->afk); in mlxsw_sp_acl_fini()
1024 kfree(acl); in mlxsw_sp_acl_fini()
1029 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_region_rehash_intrvl_get() local
1032 &acl->tcam); in mlxsw_sp_acl_region_rehash_intrvl_get()
1037 struct mlxsw_sp_acl *acl = mlxsw_sp->acl; in mlxsw_sp_acl_region_rehash_intrvl_set() local
1040 &acl->tcam, val); in mlxsw_sp_acl_region_rehash_intrvl_set()