Lines Matching refs:block

15 	struct mlxsw_sp_flow_block *block;
17 block = kzalloc(sizeof(*block), GFP_KERNEL);
18 if (!block)
20 INIT_LIST_HEAD(&block->binding_list);
21 INIT_LIST_HEAD(&block->mall.list);
22 block->mlxsw_sp = mlxsw_sp;
23 block->net = net;
24 return block;
27 void mlxsw_sp_flow_block_destroy(struct mlxsw_sp_flow_block *block)
29 WARN_ON(!list_empty(&block->binding_list));
30 kfree(block);
34 mlxsw_sp_flow_block_lookup(struct mlxsw_sp_flow_block *block,
39 list_for_each_entry(binding, &block->binding_list, list)
47 mlxsw_sp_flow_block_ruleset_bound(const struct mlxsw_sp_flow_block *block)
49 return block->ruleset_zero;
53 struct mlxsw_sp_flow_block *block,
61 if (WARN_ON(mlxsw_sp_flow_block_lookup(block, mlxsw_sp_port, ingress)))
64 if (ingress && block->ingress_blocker_rule_count) {
69 if (!ingress && block->egress_blocker_rule_count) {
74 err = mlxsw_sp_mall_port_bind(block, mlxsw_sp_port, extack);
86 if (mlxsw_sp_flow_block_ruleset_bound(block)) {
87 err = mlxsw_sp_acl_ruleset_bind(mlxsw_sp, block, binding);
93 block->ingress_binding_count++;
95 block->egress_binding_count++;
96 list_add(&binding->list, &block->binding_list);
102 mlxsw_sp_mall_port_unbind(block, mlxsw_sp_port);
108 struct mlxsw_sp_flow_block *block,
114 binding = mlxsw_sp_flow_block_lookup(block, mlxsw_sp_port, ingress);
121 block->ingress_binding_count--;
123 block->egress_binding_count--;
125 if (mlxsw_sp_flow_block_ruleset_bound(block))
126 mlxsw_sp_acl_ruleset_unbind(mlxsw_sp, block, binding);
130 mlxsw_sp_mall_port_unbind(block, mlxsw_sp_port);
211 block_cb = flow_block_cb_lookup(f->block, mlxsw_sp_flow_block_cb,
261 block_cb = flow_block_cb_lookup(f->block, mlxsw_sp_flow_block_cb,