flow_block
struct sja1105_flow_block flow_block;
list_for_each_entry(rule, &priv->flow_block.rules, list)
priv->flow_block.l2_policer_used[rule->tc_pol.sharindx] = true;
list_add(&rule->list, &priv->flow_block.rules);
if (!priv->flow_block.l2_policer_used[i])
priv->flow_block.l2_policer_used[old_sharindx] = false;
INIT_LIST_HEAD(&priv->flow_block.rules);
priv->flow_block.l2_policer_used[port] = true;
list_for_each_safe(pos, n, &priv->flow_block.rules) {
priv->flow_block.l2_policer_used[rule->bcast_pol.sharindx] = true;
list_add(&rule->list, &priv->flow_block.rules);
list_for_each_entry(rule, &priv->flow_block.rules, list) {
list_for_each_entry(rule, &priv->flow_block.rules, list) {
list_for_each_entry(rule, &priv->flow_block.rules, list) {
list_for_each_entry(rule, &priv->flow_block.rules, list) {
list_for_each_entry(rule, &priv->flow_block.rules, list) {
list_add(&rule->list, &priv->flow_block.rules);
list_add(&rule->list, &priv->flow_block.rules);
mr_tcam->flow_block,
struct mlxsw_sp_flow_block *flow_block;
mr_tcam->flow_block = mlxsw_sp_flow_block_create(mlxsw_sp, NULL);
if (!mr_tcam->flow_block)
mlxsw_sp_flow_block_destroy(mr_tcam->flow_block);
mlxsw_sp_flow_block_destroy(mr_tcam->flow_block);
mr_tcam->flow_block,
static int mlxsw_sp_flow_block_mall_cb(struct mlxsw_sp_flow_block *flow_block,
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_flow_block_mlxsw_sp(flow_block);
return mlxsw_sp_mall_replace(mlxsw_sp, flow_block, f);
mlxsw_sp_mall_destroy(flow_block, f);
static int mlxsw_sp_flow_block_flower_cb(struct mlxsw_sp_flow_block *flow_block,
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_flow_block_mlxsw_sp(flow_block);
return mlxsw_sp_flower_replace(mlxsw_sp, flow_block, f);
mlxsw_sp_flower_destroy(mlxsw_sp, flow_block, f);
return mlxsw_sp_flower_stats(mlxsw_sp, flow_block, f);
return mlxsw_sp_flower_tmplt_create(mlxsw_sp, flow_block, f);
mlxsw_sp_flower_tmplt_destroy(mlxsw_sp, flow_block, f);
struct mlxsw_sp_flow_block *flow_block = cb_priv;
if (mlxsw_sp_flow_block_disabled(flow_block))
return mlxsw_sp_flow_block_mall_cb(flow_block, type_data);
return mlxsw_sp_flow_block_flower_cb(flow_block, type_data);
struct mlxsw_sp_flow_block *flow_block = cb_priv;
mlxsw_sp_flow_block_destroy(flow_block);
struct mlxsw_sp_flow_block *flow_block;
flow_block = mlxsw_sp_flow_block_create(mlxsw_sp, f->net);
if (!flow_block)
mlxsw_sp, flow_block,
mlxsw_sp_flow_block_destroy(flow_block);
flow_block = flow_block_cb_priv(block_cb);
err = mlxsw_sp_flow_block_bind(mlxsw_sp, flow_block,
mlxsw_sp_port->ing_flow_block = flow_block;
mlxsw_sp_port->eg_flow_block = flow_block;
struct mlxsw_sp_flow_block *flow_block;
flow_block = flow_block_cb_priv(block_cb);
err = mlxsw_sp_flow_block_unbind(mlxsw_sp, flow_block,
struct flow_block *block;
struct net_device *otherdev, struct flow_block *block)
struct flow_block *block;
struct flow_block_cb *flow_block_cb_lookup(struct flow_block *block,
static inline void flow_block_init(struct flow_block *flow_block)
INIT_LIST_HEAD(&flow_block->cb_list);
struct flow_block *block = &flow_table->flow_block;
struct flow_block *block = &flow_table->flow_block;
struct flow_block flow_block;
struct flow_block flow_block;
struct flow_block flow_block;
struct flow_block_cb *flow_block_cb_lookup(struct flow_block *block,
static void flow_block_indr_init(struct flow_block_cb *flow_block,
flow_block->indr.binder_type = bo->binder_type;
flow_block->indr.data = data;
flow_block->indr.cb_priv = cb_priv;
flow_block->indr.dev = dev;
flow_block->indr.sch = sch;
flow_block->indr.cleanup = cleanup;
flow_block_init(&flowtable->flow_block);
&offload->flowtable->flow_block.cb_list);
list_splice(&bo->cb_list, &flowtable->flow_block.cb_list);
bo->block = &flowtable->flow_block;
bo->cb_list_head = &flowtable->flow_block.cb_list;
&offload->flowtable->flow_block.cb_list);
&offload->flowtable->flow_block.cb_list);
flow_block_init(&basechain->flow_block);
&basechain->flow_block.cb_list);
list_splice(&bo->cb_list, &basechain->flow_block.cb_list);
bo->block = &basechain->flow_block;
bo->cb_list_head = &basechain->flow_block.cb_list;
struct flow_block *block;
block = &ct_ft->nf_ft.flow_block;
flow_block_init(&block->flow_block);
list_splice(&bo->cb_list, &block->flow_block.cb_list);
list_for_each_entry(block_cb, &block->flow_block.cb_list, list) {
struct flow_block *flow_block,
bo->block = flow_block;
bo->cb_list_head = &flow_block->cb_list;
&block->flow_block, tcf_block_shared(block),
&block->flow_block, tcf_block_shared(block),