Lines Matching refs:rulei
65 struct mlxsw_sp_acl_rule_info *rulei; member
312 struct mlxsw_sp_acl_rule_info *rulei; in mlxsw_sp_acl_rulei_create() local
315 rulei = kzalloc(sizeof(*rulei), GFP_KERNEL); in mlxsw_sp_acl_rulei_create()
316 if (!rulei) in mlxsw_sp_acl_rulei_create()
320 rulei->act_block = afa_block; in mlxsw_sp_acl_rulei_create()
321 return rulei; in mlxsw_sp_acl_rulei_create()
324 rulei->act_block = mlxsw_afa_block_create(acl->mlxsw_sp->afa); in mlxsw_sp_acl_rulei_create()
325 if (IS_ERR(rulei->act_block)) { in mlxsw_sp_acl_rulei_create()
326 err = PTR_ERR(rulei->act_block); in mlxsw_sp_acl_rulei_create()
329 rulei->action_created = 1; in mlxsw_sp_acl_rulei_create()
330 return rulei; in mlxsw_sp_acl_rulei_create()
333 kfree(rulei); in mlxsw_sp_acl_rulei_create()
337 void mlxsw_sp_acl_rulei_destroy(struct mlxsw_sp_acl_rule_info *rulei) in mlxsw_sp_acl_rulei_destroy() argument
339 if (rulei->action_created) in mlxsw_sp_acl_rulei_destroy()
340 mlxsw_afa_block_destroy(rulei->act_block); in mlxsw_sp_acl_rulei_destroy()
341 kfree(rulei); in mlxsw_sp_acl_rulei_destroy()
344 int mlxsw_sp_acl_rulei_commit(struct mlxsw_sp_acl_rule_info *rulei) in mlxsw_sp_acl_rulei_commit() argument
346 return mlxsw_afa_block_commit(rulei->act_block); in mlxsw_sp_acl_rulei_commit()
349 void mlxsw_sp_acl_rulei_priority(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_priority() argument
352 rulei->priority = priority; in mlxsw_sp_acl_rulei_priority()
355 void mlxsw_sp_acl_rulei_keymask_u32(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_keymask_u32() argument
359 mlxsw_afk_values_add_u32(&rulei->values, element, in mlxsw_sp_acl_rulei_keymask_u32()
363 void mlxsw_sp_acl_rulei_keymask_buf(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_keymask_buf() argument
368 mlxsw_afk_values_add_buf(&rulei->values, element, in mlxsw_sp_acl_rulei_keymask_buf()
372 int mlxsw_sp_acl_rulei_act_continue(struct mlxsw_sp_acl_rule_info *rulei) in mlxsw_sp_acl_rulei_act_continue() argument
374 return mlxsw_afa_block_continue(rulei->act_block); in mlxsw_sp_acl_rulei_act_continue()
377 int mlxsw_sp_acl_rulei_act_jump(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_jump() argument
380 return mlxsw_afa_block_jump(rulei->act_block, group_id); in mlxsw_sp_acl_rulei_act_jump()
383 int mlxsw_sp_acl_rulei_act_terminate(struct mlxsw_sp_acl_rule_info *rulei) in mlxsw_sp_acl_rulei_act_terminate() argument
385 return mlxsw_afa_block_terminate(rulei->act_block); in mlxsw_sp_acl_rulei_act_terminate()
388 int mlxsw_sp_acl_rulei_act_drop(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_drop() argument
393 return mlxsw_afa_block_append_drop(rulei->act_block, ingress, in mlxsw_sp_acl_rulei_act_drop()
397 int mlxsw_sp_acl_rulei_act_trap(struct mlxsw_sp_acl_rule_info *rulei) in mlxsw_sp_acl_rulei_act_trap() argument
399 return mlxsw_afa_block_append_trap(rulei->act_block, in mlxsw_sp_acl_rulei_act_trap()
404 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_fwd() argument
431 return mlxsw_afa_block_append_fwd(rulei->act_block, in mlxsw_sp_acl_rulei_act_fwd()
436 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_mirror() argument
452 return mlxsw_afa_block_append_mirror(rulei->act_block, in mlxsw_sp_acl_rulei_act_mirror()
460 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_vlan() argument
481 return mlxsw_afa_block_append_vlan_modify(rulei->act_block, in mlxsw_sp_acl_rulei_act_vlan()
492 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_priority() argument
504 return mlxsw_afa_block_append_qos_switch_prio(rulei->act_block, prio, in mlxsw_sp_acl_rulei_act_priority()
572 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_mangle_field() argument
578 return mlxsw_afa_block_append_qos_dsfield(rulei->act_block, in mlxsw_sp_acl_rulei_act_mangle_field()
581 return mlxsw_afa_block_append_qos_dscp(rulei->act_block, in mlxsw_sp_acl_rulei_act_mangle_field()
584 return mlxsw_afa_block_append_qos_ecn(rulei->act_block, in mlxsw_sp_acl_rulei_act_mangle_field()
592 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp1_acl_rulei_act_mangle_field() argument
598 err = mlxsw_sp_acl_rulei_act_mangle_field(mlxsw_sp, rulei, mact, val, extack); in mlxsw_sp1_acl_rulei_act_mangle_field()
607 mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd(struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd() argument
611 if (!rulei->ipv6_valid) { in mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd()
612 rulei->ipv6.prev_val = val; in mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd()
613 rulei->ipv6_valid = true; in mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd()
614 rulei->ipv6.prev_field = field; in mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd()
623 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp2_acl_rulei_act_mangle_field() argument
629 err = mlxsw_sp_acl_rulei_act_mangle_field(mlxsw_sp, rulei, mact, val, extack); in mlxsw_sp2_acl_rulei_act_mangle_field()
635 return mlxsw_afa_block_append_l4port(rulei->act_block, false, val, extack); in mlxsw_sp2_acl_rulei_act_mangle_field()
637 return mlxsw_afa_block_append_l4port(rulei->act_block, true, val, extack); in mlxsw_sp2_acl_rulei_act_mangle_field()
640 return mlxsw_afa_block_append_ip(rulei->act_block, false, in mlxsw_sp2_acl_rulei_act_mangle_field()
643 return mlxsw_afa_block_append_ip(rulei->act_block, true, in mlxsw_sp2_acl_rulei_act_mangle_field()
650 return mlxsw_sp2_acl_rulei_act_mangle_field_ip_odd(rulei, in mlxsw_sp2_acl_rulei_act_mangle_field()
654 if (rulei->ipv6_valid && in mlxsw_sp2_acl_rulei_act_mangle_field()
655 rulei->ipv6.prev_field == MLXSW_SP_ACL_MANGLE_FIELD_IP6_SIP_1) { in mlxsw_sp2_acl_rulei_act_mangle_field()
656 rulei->ipv6_valid = false; in mlxsw_sp2_acl_rulei_act_mangle_field()
657 return mlxsw_afa_block_append_ip(rulei->act_block, in mlxsw_sp2_acl_rulei_act_mangle_field()
659 rulei->ipv6.prev_val, in mlxsw_sp2_acl_rulei_act_mangle_field()
664 if (rulei->ipv6_valid && in mlxsw_sp2_acl_rulei_act_mangle_field()
665 rulei->ipv6.prev_field == MLXSW_SP_ACL_MANGLE_FIELD_IP6_SIP_3) { in mlxsw_sp2_acl_rulei_act_mangle_field()
666 rulei->ipv6_valid = false; in mlxsw_sp2_acl_rulei_act_mangle_field()
667 return mlxsw_afa_block_append_ip(rulei->act_block, in mlxsw_sp2_acl_rulei_act_mangle_field()
669 rulei->ipv6.prev_val, in mlxsw_sp2_acl_rulei_act_mangle_field()
674 if (rulei->ipv6_valid && in mlxsw_sp2_acl_rulei_act_mangle_field()
675 rulei->ipv6.prev_field == MLXSW_SP_ACL_MANGLE_FIELD_IP6_DIP_1) { in mlxsw_sp2_acl_rulei_act_mangle_field()
676 rulei->ipv6_valid = false; in mlxsw_sp2_acl_rulei_act_mangle_field()
677 return mlxsw_afa_block_append_ip(rulei->act_block, in mlxsw_sp2_acl_rulei_act_mangle_field()
679 rulei->ipv6.prev_val, in mlxsw_sp2_acl_rulei_act_mangle_field()
684 if (rulei->ipv6_valid && in mlxsw_sp2_acl_rulei_act_mangle_field()
685 rulei->ipv6.prev_field == MLXSW_SP_ACL_MANGLE_FIELD_IP6_DIP_3) { in mlxsw_sp2_acl_rulei_act_mangle_field()
686 rulei->ipv6_valid = false; in mlxsw_sp2_acl_rulei_act_mangle_field()
687 return mlxsw_afa_block_append_ip(rulei->act_block, in mlxsw_sp2_acl_rulei_act_mangle_field()
689 rulei->ipv6.prev_val, in mlxsw_sp2_acl_rulei_act_mangle_field()
702 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_mangle() argument
718 rulei, mact, in mlxsw_sp_acl_rulei_act_mangle()
728 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_police() argument
734 err = mlxsw_afa_block_append_police(rulei->act_block, index, in mlxsw_sp_acl_rulei_act_police()
736 &rulei->policer_index, extack); in mlxsw_sp_acl_rulei_act_police()
740 rulei->policer_index_valid = true; in mlxsw_sp_acl_rulei_act_police()
746 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_count() argument
751 err = mlxsw_afa_block_append_counter(rulei->act_block, in mlxsw_sp_acl_rulei_act_count()
752 &rulei->counter_index, extack); in mlxsw_sp_acl_rulei_act_count()
755 rulei->counter_valid = true; in mlxsw_sp_acl_rulei_act_count()
760 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_fid_set() argument
763 return mlxsw_afa_block_append_fid_set(rulei->act_block, fid, extack); in mlxsw_sp_acl_rulei_act_fid_set()
767 struct mlxsw_sp_acl_rule_info *rulei, in mlxsw_sp_acl_rulei_act_sample() argument
784 return mlxsw_afa_block_append_sampler(rulei->act_block, in mlxsw_sp_acl_rulei_act_sample()
812 rule->rulei = mlxsw_sp_acl_rulei_create(mlxsw_sp->acl, afa_block); in mlxsw_sp_acl_rule_create()
813 if (IS_ERR(rule->rulei)) { in mlxsw_sp_acl_rule_create()
814 err = PTR_ERR(rule->rulei); in mlxsw_sp_acl_rule_create()
832 mlxsw_sp_acl_rulei_destroy(rule->rulei); in mlxsw_sp_acl_rule_destroy()
845 err = ops->rule_add(mlxsw_sp, ruleset->priv, rule->priv, rule->rulei); in mlxsw_sp_acl_rule_add()
869 block->ingress_blocker_rule_count += rule->rulei->ingress_bind_blocker; in mlxsw_sp_acl_rule_add()
870 block->egress_blocker_rule_count += rule->rulei->egress_bind_blocker; in mlxsw_sp_acl_rule_add()
888 block->egress_blocker_rule_count -= rule->rulei->egress_bind_blocker; in mlxsw_sp_acl_rule_del()
889 block->ingress_blocker_rule_count -= rule->rulei->ingress_bind_blocker; in mlxsw_sp_acl_rule_del()
908 struct mlxsw_sp_acl_rule_info *rulei; in mlxsw_sp_acl_rule_action_replace() local
910 rulei = mlxsw_sp_acl_rule_rulei(rule); in mlxsw_sp_acl_rule_action_replace()
911 rulei->act_block = afa_block; in mlxsw_sp_acl_rule_action_replace()
913 return ops->rule_action_replace(mlxsw_sp, rule->priv, rule->rulei); in mlxsw_sp_acl_rule_action_replace()
928 return rule->rulei; in mlxsw_sp_acl_rule_rulei()
996 struct mlxsw_sp_acl_rule_info *rulei; in mlxsw_sp_acl_rule_get_stats() local
1002 rulei = mlxsw_sp_acl_rule_rulei(rule); in mlxsw_sp_acl_rule_get_stats()
1003 if (rulei->counter_valid) { in mlxsw_sp_acl_rule_get_stats()
1004 err = mlxsw_sp_flow_counter_get(mlxsw_sp, rulei->counter_index, in mlxsw_sp_acl_rule_get_stats()
1011 if (rulei->policer_index_valid) { in mlxsw_sp_acl_rule_get_stats()
1013 rulei->policer_index, in mlxsw_sp_acl_rule_get_stats()