This patch renames: * struct tcf_block_cb to flow_block_cb. * struct tc_block_offload to flow_block_offload. And it exposes the flow_block_cb API through net/flow_offload.h. This renames the existing codebase to adapt it to this name. Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> --- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 22 ++-- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 54 ++++---- drivers/net/ethernet/netronome/nfp/abm/cls.c | 2 +- drivers/net/ethernet/netronome/nfp/abm/main.h | 2 +- .../net/ethernet/netronome/nfp/flower/offload.c | 18 +-- include/net/flow_offload.h | 48 +++++++ include/net/pkt_cls.h | 40 +----- net/core/flow_offload.c | 77 ++++++++++++ net/dsa/slave.c | 2 +- net/sched/cls_api.c | 140 +++++---------------- 10 files changed, 207 insertions(+), 198 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 897ca33496ad..e84d17fa5dce 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -708,10 +708,10 @@ static void mlx5e_rep_indr_tc_block_unbind(void *cb_priv) static int mlx5e_rep_indr_setup_tc_block(struct net_device *netdev, struct mlx5e_rep_priv *rpriv, - struct tc_block_offload *f) + struct flow_block_offload *f) { struct mlx5e_rep_indr_block_priv *indr_priv; - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; if (f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS) return -EOPNOTSUPP; @@ -731,15 +731,15 @@ mlx5e_rep_indr_setup_tc_block(struct net_device *netdev, list_add(&indr_priv->list, &rpriv->uplink_priv.tc_indr_block_priv_list); - block_cb = tcf_block_cb_alloc(f->block_index, - mlx5e_rep_indr_setup_block_cb, - indr_priv, indr_priv, - mlx5e_rep_indr_tc_block_unbind); + block_cb = flow_block_cb_alloc(f->block_index, + mlx5e_rep_indr_setup_block_cb, + indr_priv, indr_priv, + mlx5e_rep_indr_tc_block_unbind); if (!block_cb) { list_del(&indr_priv->list); kfree(indr_priv); } - tcf_block_cb_add(block_cb, f); + flow_block_cb_add(block_cb, f); return 0; case TC_BLOCK_UNBIND: @@ -747,13 +747,13 @@ mlx5e_rep_indr_setup_tc_block(struct net_device *netdev, if (!indr_priv) return -ENOENT; - block_cb = tcf_block_cb_lookup(f->block_index, - mlx5e_rep_indr_setup_block_cb, - indr_priv); + block_cb = flow_block_cb_lookup(f->block_index, + mlx5e_rep_indr_setup_block_cb, + indr_priv); if (!block_cb) return -ENOENT; - tcf_block_cb_remove(block_cb, f); + flow_block_cb_remove(block_cb, f); return 0; default: return -EOPNOTSUPP; diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index c5d483b01261..735d6cc56fb3 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -1523,22 +1523,22 @@ static void mlxsw_sp_tc_block_flower_release(void *cb_priv) static int mlxsw_sp_setup_tc_block_flower_bind(struct mlxsw_sp_port *mlxsw_sp_port, - struct tc_block_offload *f, bool ingress) + struct flow_block_offload *f, bool ingress) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; struct net *net = dev_net(mlxsw_sp_port->dev); struct mlxsw_sp_acl_block *acl_block; - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; int err; - block_cb = tcf_block_cb_lookup(f->block_index, - mlxsw_sp_setup_tc_block_cb_flower, - mlxsw_sp); + block_cb = flow_block_cb_lookup(f->block_index, + mlxsw_sp_setup_tc_block_cb_flower, + mlxsw_sp); if (!block_cb) { acl_block = mlxsw_sp_acl_block_create(mlxsw_sp, net); if (!acl_block) return -ENOMEM; - block_cb = tcf_block_cb_alloc(f->block_index, + block_cb = flow_block_cb_alloc(f->block_index, mlxsw_sp_setup_tc_block_cb_flower, mlxsw_sp, acl_block, mlxsw_sp_tc_block_flower_release); @@ -1548,9 +1548,9 @@ mlxsw_sp_setup_tc_block_flower_bind(struct mlxsw_sp_port *mlxsw_sp_port, goto err_cb_register; } } else { - acl_block = tcf_block_cb_priv(block_cb); + acl_block = flow_block_cb_priv(block_cb); } - tcf_block_cb_incref(block_cb); + flow_block_cb_incref(block_cb); err = mlxsw_sp_acl_block_bind(mlxsw_sp, acl_block, mlxsw_sp_port, ingress); if (err) @@ -1561,26 +1561,27 @@ mlxsw_sp_setup_tc_block_flower_bind(struct mlxsw_sp_port *mlxsw_sp_port, else mlxsw_sp_port->eg_acl_block = acl_block; - tcf_block_cb_add(block_cb, f); + flow_block_cb_add(block_cb, f); return 0; err_block_bind: - if (!tcf_block_cb_decref(block_cb)) - tcf_block_cb_free(block_cb); + if (!flow_block_cb_decref(block_cb)) + flow_block_cb_free(block_cb); err_cb_register: return err; } static void mlxsw_sp_setup_tc_block_flower_unbind(struct mlxsw_sp_port *mlxsw_sp_port, - struct tc_block_offload *f, bool ingress) + struct flow_block_offload *f, + bool ingress) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; struct mlxsw_sp_acl_block *acl_block; - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; int err; - block_cb = tcf_block_cb_lookup(f->block_index, + block_cb = flow_block_cb_lookup(f->block_index, mlxsw_sp_setup_tc_block_cb_flower, mlxsw_sp); if (!block_cb) @@ -1591,17 +1592,17 @@ mlxsw_sp_setup_tc_block_flower_unbind(struct mlxsw_sp_port *mlxsw_sp_port, else mlxsw_sp_port->eg_acl_block = NULL; - acl_block = tcf_block_cb_priv(block_cb); + acl_block = flow_block_cb_priv(block_cb); err = mlxsw_sp_acl_block_unbind(mlxsw_sp, acl_block, mlxsw_sp_port, ingress); - if (!err && !tcf_block_cb_decref(block_cb)) - tcf_block_cb_remove(block_cb, f); + if (!err && !flow_block_cb_decref(block_cb)) + flow_block_cb_remove(block_cb, f); } static int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port, - struct tc_block_offload *f) + struct flow_block_offload *f) { - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; tc_setup_cb_t *cb; bool ingress; int err; @@ -1618,27 +1619,28 @@ static int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port, switch (f->command) { case TC_BLOCK_BIND: - block_cb = tcf_block_cb_alloc(f->block_index, cb, mlxsw_sp_port, - mlxsw_sp_port, NULL); + block_cb = flow_block_cb_alloc(f->block_index, cb, + mlxsw_sp_port, mlxsw_sp_port, + NULL); if (!block_cb) return -ENOMEM; err = mlxsw_sp_setup_tc_block_flower_bind(mlxsw_sp_port, f, ingress); if (err) { - tcf_block_cb_free(block_cb); + flow_block_cb_free(block_cb); return err; } - tcf_block_cb_add(block_cb, f); + flow_block_cb_add(block_cb, f); return 0; case TC_BLOCK_UNBIND: mlxsw_sp_setup_tc_block_flower_unbind(mlxsw_sp_port, f, ingress); - block_cb = tcf_block_cb_lookup(f->block_index, cb, - mlxsw_sp_port); + block_cb = flow_block_cb_lookup(f->block_index, cb, + mlxsw_sp_port); if (!block_cb) return -ENOENT; - tcf_block_cb_remove(block_cb, f); + flow_block_cb_remove(block_cb, f); return 0; default: return -EOPNOTSUPP; diff --git a/drivers/net/ethernet/netronome/nfp/abm/cls.c b/drivers/net/ethernet/netronome/nfp/abm/cls.c index 371b800df878..66d46bc616b3 100644 --- a/drivers/net/ethernet/netronome/nfp/abm/cls.c +++ b/drivers/net/ethernet/netronome/nfp/abm/cls.c @@ -263,7 +263,7 @@ static int nfp_abm_setup_tc_block_cb(enum tc_setup_type type, } int nfp_abm_setup_cls_block(struct net_device *netdev, struct nfp_repr *repr, - struct tc_block_offload *f) + struct flow_block_offload *f) { return tcf_setup_block_offload(f, nfp_abm_setup_tc_block_cb, repr, repr, true); diff --git a/drivers/net/ethernet/netronome/nfp/abm/main.h b/drivers/net/ethernet/netronome/nfp/abm/main.h index 49749c60885e..48746c9c6224 100644 --- a/drivers/net/ethernet/netronome/nfp/abm/main.h +++ b/drivers/net/ethernet/netronome/nfp/abm/main.h @@ -247,7 +247,7 @@ int nfp_abm_setup_tc_mq(struct net_device *netdev, struct nfp_abm_link *alink, int nfp_abm_setup_tc_gred(struct net_device *netdev, struct nfp_abm_link *alink, struct tc_gred_qopt_offload *opt); int nfp_abm_setup_cls_block(struct net_device *netdev, struct nfp_repr *repr, - struct tc_block_offload *opt); + struct flow_block_offload *opt); int nfp_abm_ctrl_read_params(struct nfp_abm_link *alink); int nfp_abm_ctrl_find_addrs(struct nfp_abm *abm); diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c index 4bdfb48c4a3a..a91138ec7175 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/offload.c +++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c @@ -1256,11 +1256,11 @@ static void nfp_flower_setup_indr_tc_release(void *cb_priv) static int nfp_flower_setup_indr_tc_block(struct net_device *netdev, struct nfp_app *app, - struct tc_block_offload *f) + struct flow_block_offload *f) { struct nfp_flower_indr_block_cb_priv *cb_priv; struct nfp_flower_priv *priv = app->priv; - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; if (f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS && !(f->binder_type == TCF_BLOCK_BINDER_TYPE_CLSACT_EGRESS && @@ -1277,29 +1277,29 @@ nfp_flower_setup_indr_tc_block(struct net_device *netdev, struct nfp_app *app, cb_priv->app = app; list_add(&cb_priv->list, &priv->indr_block_cb_priv); - block_cb = tcf_block_cb_alloc(f->block_index, - nfp_flower_setup_indr_block_cb, - cb_priv, cb_priv, - nfp_flower_setup_indr_tc_release); + block_cb = flow_block_cb_alloc(f->block_index, + nfp_flower_setup_indr_block_cb, + cb_priv, cb_priv, + nfp_flower_setup_indr_tc_release); if (!block_cb) { list_del(&cb_priv->list); kfree(cb_priv); } - tcf_block_cb_add(block_cb, f); + flow_block_cb_add(block_cb, f); return 0; case TC_BLOCK_UNBIND: cb_priv = nfp_flower_indr_block_cb_priv_lookup(app, netdev); if (!cb_priv) return -ENOENT; - block_cb = tcf_block_cb_lookup(f->block_index, + block_cb = flow_block_cb_lookup(f->block_index, nfp_flower_setup_indr_block_cb, cb_priv); if (!block_cb) return -ENOENT; - tcf_block_cb_remove(block_cb, f); + flow_block_cb_remove(block_cb, f); return 0; default: return -EOPNOTSUPP; diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h index d035183c8d03..3136992b11fe 100644 --- a/include/net/flow_offload.h +++ b/include/net/flow_offload.h @@ -200,4 +200,52 @@ static inline void flow_stats_update(struct flow_stats *flow_stats, flow_stats->lastused = max_t(u64, flow_stats->lastused, lastused); } +#include <net/sch_generic.h> /* for tc_setup_cb_t. */ + +enum flow_block_command { + TC_BLOCK_BIND, + TC_BLOCK_UNBIND, +}; + +enum flow_block_binder_type { + TCF_BLOCK_BINDER_TYPE_UNSPEC, + TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS, + TCF_BLOCK_BINDER_TYPE_CLSACT_EGRESS, +}; + +struct flow_block_offload { + enum flow_block_command command; + enum flow_block_binder_type binder_type; + struct list_head cb_list; + u32 block_index; + struct netlink_ext_ack *extack; +}; + +struct flow_block_cb { + struct list_head global_list; + struct list_head list; + tc_setup_cb_t *cb; + void (*release)(void *cb_priv); + void *cb_ident; + void *cb_priv; + u32 block_index; + unsigned int refcnt; +}; + +struct flow_block_cb *flow_block_cb_alloc(u32 block_index, tc_setup_cb_t *cb, + void *cb_ident, void *cb_priv, + void (*release)(void *cb_priv)); +void flow_block_cb_free(struct flow_block_cb *block_cb); +void *flow_block_cb_priv(struct flow_block_cb *block_cb); +struct flow_block_cb *flow_block_cb_lookup(u32 block_index, tc_setup_cb_t *cb, + void *cb_ident); +void flow_block_cb_incref(struct flow_block_cb *block_cb); +unsigned int flow_block_cb_decref(struct flow_block_cb *block_cb); +void flow_block_cb_add(struct flow_block_cb *block_cb, + struct flow_block_offload *offload); +void flow_block_cb_remove(struct flow_block_cb *block_cb, + struct flow_block_offload *offload); + +extern struct list_head flow_block_cb_list; + #endif /* _NET_FLOW_OFFLOAD_H */ diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 097659b61a93..1d952bd30c38 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -25,14 +25,8 @@ struct tcf_walker { int register_tcf_proto_ops(struct tcf_proto_ops *ops); int unregister_tcf_proto_ops(struct tcf_proto_ops *ops); -enum tcf_block_binder_type { - TCF_BLOCK_BINDER_TYPE_UNSPEC, - TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS, - TCF_BLOCK_BINDER_TYPE_CLSACT_EGRESS, -}; - struct tcf_block_ext_info { - enum tcf_block_binder_type binder_type; + enum flow_block_binder_type binder_type; tcf_chain_head_change_t *chain_head_change; void *chain_head_change_priv; u32 block_index; @@ -71,23 +65,6 @@ static inline struct Qdisc *tcf_block_q(struct tcf_block *block) return block->q; } -struct tcf_block_cb *tcf_block_cb_alloc(u32 block_index, tc_setup_cb_t *cb, - void *cb_ident, void *cb_priv, - void (*release)(void *cb_priv)); -void tcf_block_cb_free(struct tcf_block_cb *block_cb); - -struct tc_block_offload; -void tcf_block_cb_add(struct tcf_block_cb *block_cb, - struct tc_block_offload *offload); -void tcf_block_cb_remove(struct tcf_block_cb *block_cb, - struct tc_block_offload *offload); - -void *tcf_block_cb_priv(struct tcf_block_cb *block_cb); -struct tcf_block_cb *tcf_block_cb_lookup(u32 block_index, tc_setup_cb_t *cb, - void *cb_ident); -void tcf_block_cb_incref(struct tcf_block_cb *block_cb); -unsigned int tcf_block_cb_decref(struct tcf_block_cb *block_cb); - int __tc_indr_block_cb_register(struct net_device *dev, void *cb_priv, tc_indr_block_bind_cb_t *cb, void *cb_ident); int tc_indr_block_cb_register(struct net_device *dev, void *cb_priv, @@ -633,20 +610,9 @@ int tc_setup_cb_call(struct tcf_block *block, enum tc_setup_type type, void *type_data, bool err_stop); unsigned int tcf_exts_num_actions(struct tcf_exts *exts); -enum tc_block_command { - TC_BLOCK_BIND, - TC_BLOCK_UNBIND, -}; - -struct tc_block_offload { - enum tc_block_command command; - enum tcf_block_binder_type binder_type; - struct list_head cb_list; - u32 block_index; - struct netlink_ext_ack *extack; -}; +struct flow_block_offload; -int tcf_setup_block_offload(struct tc_block_offload *f, tc_setup_cb_t *cb, +int tcf_setup_block_offload(struct flow_block_offload *f, tc_setup_cb_t *cb, void *cb_ident, void *cb_priv, bool ingress_only); struct tc_cls_common_offload { diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c index c3a00eac4804..63fa0b470227 100644 --- a/net/core/flow_offload.c +++ b/net/core/flow_offload.c @@ -151,3 +151,80 @@ void flow_rule_match_enc_opts(const struct flow_rule *rule, FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_OPTS, out); } EXPORT_SYMBOL(flow_rule_match_enc_opts); + +void *flow_block_cb_priv(struct flow_block_cb *block_cb) +{ + return block_cb->cb_priv; +} +EXPORT_SYMBOL(flow_block_cb_priv); + +LIST_HEAD(flow_block_cb_list); +EXPORT_SYMBOL(flow_block_cb_list); + +struct flow_block_cb *flow_block_cb_lookup(u32 block_index, tc_setup_cb_t *cb, + void *cb_ident) +{ struct flow_block_cb *block_cb; + + list_for_each_entry(block_cb, &flow_block_cb_list, list) + if (block_cb->block_index == block_index && + block_cb->cb == cb && + block_cb->cb_ident == cb_ident) + return block_cb; + return NULL; +} +EXPORT_SYMBOL(flow_block_cb_lookup); + +void flow_block_cb_incref(struct flow_block_cb *block_cb) +{ + block_cb->refcnt++; +} +EXPORT_SYMBOL(flow_block_cb_incref); + +unsigned int flow_block_cb_decref(struct flow_block_cb *block_cb) +{ + return --block_cb->refcnt; +} +EXPORT_SYMBOL(flow_block_cb_decref); + +struct flow_block_cb *flow_block_cb_alloc(u32 block_index, tc_setup_cb_t *cb, + void *cb_ident, void *cb_priv, + void (*release)(void *cb_priv)) +{ + struct flow_block_cb *block_cb; + + block_cb = kzalloc(sizeof(*block_cb), GFP_KERNEL); + if (!block_cb) + return NULL; + + block_cb->cb = cb; + block_cb->cb_ident = cb_ident; + block_cb->release = release; + block_cb->cb_priv = cb_priv; + block_cb->block_index = block_index; + + return block_cb; +} +EXPORT_SYMBOL(flow_block_cb_alloc); + +void flow_block_cb_free(struct flow_block_cb *block_cb) +{ + if (block_cb->release) + block_cb->release(block_cb->cb_priv); + + kfree(block_cb); +} +EXPORT_SYMBOL(flow_block_cb_free); + +void flow_block_cb_add(struct flow_block_cb *block_cb, + struct flow_block_offload *offload) +{ + list_add(&block_cb->global_list, &offload->cb_list); +} +EXPORT_SYMBOL(flow_block_cb_add); + +void flow_block_cb_remove(struct flow_block_cb *block_cb, + struct flow_block_offload *offload) +{ + list_move(&block_cb->global_list, &offload->cb_list); +} +EXPORT_SYMBOL(flow_block_cb_remove); diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 9df447c68493..68a548744399 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -900,7 +900,7 @@ static int dsa_slave_setup_tc_block_cb_eg(enum tc_setup_type type, } static int dsa_slave_setup_tc_block(struct net_device *dev, - struct tc_block_offload *f) + struct flow_block_offload *f) { struct tcf_block_cb *block_cb; tc_setup_cb_t *cb; diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index a54c8aa608d8..391a977f0332 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -31,6 +31,7 @@ #include <net/netlink.h> #include <net/pkt_sched.h> #include <net/pkt_cls.h> +#include <net/flow_offload.h> #include <net/tc_act/tc_pedit.h> #include <net/tc_act/tc_mirred.h> #include <net/tc_act/tc_vlan.h> @@ -712,96 +713,10 @@ static bool tcf_block_offload_in_use(struct tcf_block *block) return block->offloadcnt; } -struct tcf_block_cb { - struct list_head global_list; - struct list_head list; - tc_setup_cb_t *cb; - void (*release)(void *cb_priv); - void *cb_ident; - void *cb_priv; - u32 block_index; - unsigned int refcnt; -}; - -void *tcf_block_cb_priv(struct tcf_block_cb *block_cb) -{ - return block_cb->cb_priv; -} -EXPORT_SYMBOL(tcf_block_cb_priv); - -static LIST_HEAD(tcf_block_cb_list); - -struct tcf_block_cb *tcf_block_cb_lookup(u32 block_index, tc_setup_cb_t *cb, - void *cb_ident) -{ struct tcf_block_cb *block_cb; - - list_for_each_entry(block_cb, &tcf_block_cb_list, list) - if (block_cb->block_index == block_index && - block_cb->cb == cb && - block_cb->cb_ident == cb_ident) - return block_cb; - return NULL; -} -EXPORT_SYMBOL(tcf_block_cb_lookup); - -void tcf_block_cb_incref(struct tcf_block_cb *block_cb) -{ - block_cb->refcnt++; -} -EXPORT_SYMBOL(tcf_block_cb_incref); - -unsigned int tcf_block_cb_decref(struct tcf_block_cb *block_cb) -{ - return --block_cb->refcnt; -} -EXPORT_SYMBOL(tcf_block_cb_decref); - -struct tcf_block_cb *tcf_block_cb_alloc(u32 block_index, tc_setup_cb_t *cb, - void *cb_ident, void *cb_priv, - void (*release)(void *cb_priv)) -{ - struct tcf_block_cb *block_cb; - - block_cb = kzalloc(sizeof(*block_cb), GFP_KERNEL); - if (!block_cb) - return NULL; - - block_cb->cb = cb; - block_cb->cb_ident = cb_ident; - block_cb->release = release; - block_cb->cb_priv = cb_priv; - block_cb->block_index = block_index; - - return block_cb; -} -EXPORT_SYMBOL(tcf_block_cb_alloc); - -void tcf_block_cb_free(struct tcf_block_cb *block_cb) -{ - if (block_cb->release) - block_cb->release(block_cb->cb_priv); - - kfree(block_cb); -} -EXPORT_SYMBOL(tcf_block_cb_free); - -void tcf_block_cb_add(struct tcf_block_cb *block_cb, - struct tc_block_offload *offload) -{ - list_add(&block_cb->global_list, &offload->cb_list); -} -EXPORT_SYMBOL(tcf_block_cb_add); - -void tcf_block_cb_remove(struct tcf_block_cb *block_cb, - struct tc_block_offload *offload) -{ - list_move(&block_cb->global_list, &offload->cb_list); -} -EXPORT_SYMBOL(tcf_block_cb_remove); - -static int tcf_block_bind(struct tcf_block *block, struct tc_block_offload *bo) +static int tcf_block_bind(struct tcf_block *block, + struct flow_block_offload *bo) { - struct tcf_block_cb *block_cb, *failed_cb; + struct flow_block_cb *block_cb, *failed_cb; int err, i = 0; list_for_each_entry(block_cb, &bo->cb_list, global_list) { @@ -816,7 +731,7 @@ static int tcf_block_bind(struct tcf_block *block, struct tc_block_offload *bo) list_add(&block_cb->list, &block->cb_list); i++; } - list_splice(&bo->cb_list, &tcf_block_cb_list); + list_splice(&bo->cb_list, &flow_block_cb_list); return 0; @@ -836,9 +751,9 @@ static int tcf_block_bind(struct tcf_block *block, struct tc_block_offload *bo) } static void tcf_block_unbind(struct tcf_block *block, - struct tc_block_offload *bo) + struct flow_block_offload *bo) { - struct tcf_block_cb *block_cb, *next; + struct flow_block_cb *block_cb, *next; list_for_each_entry_safe(block_cb, next, &bo->cb_list, global_list) { list_del(&block_cb->global_list); @@ -847,11 +762,12 @@ static void tcf_block_unbind(struct tcf_block *block, tcf_block_offload_in_use(block), NULL); list_del(&block_cb->list); - tcf_block_cb_free(block_cb); + flow_block_cb_free(block_cb); } } -static int tcf_block_setup(struct tcf_block *block, struct tc_block_offload *bo) +static int tcf_block_setup(struct tcf_block *block, + struct flow_block_offload *bo) { int err; @@ -871,10 +787,10 @@ static int tcf_block_setup(struct tcf_block *block, struct tc_block_offload *bo) return err; } -int tcf_setup_block_offload(struct tc_block_offload *f, tc_setup_cb_t *cb, +int tcf_setup_block_offload(struct flow_block_offload *f, tc_setup_cb_t *cb, void *cb_ident, void *cb_priv, bool ingress_only) { - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; if (ingress_only && f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS) @@ -882,19 +798,19 @@ int tcf_setup_block_offload(struct tc_block_offload *f, tc_setup_cb_t *cb, switch (f->command) { case TC_BLOCK_BIND: - block_cb = tcf_block_cb_alloc(f->block_index, cb, cb_ident, - cb_priv, NULL); + block_cb = flow_block_cb_alloc(f->block_index, cb, cb_ident, + cb_priv, NULL); if (!block_cb) return -ENOMEM; - tcf_block_cb_add(block_cb, f); + flow_block_cb_add(block_cb, f); return 0; case TC_BLOCK_UNBIND: - block_cb = tcf_block_cb_lookup(f->block_index, cb, cb_ident); + block_cb = flow_block_cb_lookup(f->block_index, cb, cb_ident); if (!block_cb) return -ENOENT; - tcf_block_cb_remove(block_cb, f); + flow_block_cb_remove(block_cb, f); return 0; default: return -EOPNOTSUPP; @@ -1011,9 +927,9 @@ static void tc_indr_block_cb_del(struct tc_indr_block_cb *indr_block_cb) static void tc_indr_block_ing_cmd(struct tc_indr_block_dev *indr_dev, struct tc_indr_block_cb *indr_block_cb, - enum tc_block_command command) + enum flow_block_command command) { - struct tc_block_offload bo = { + struct flow_block_offload bo = { .command = command, .binder_type = TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS, .block_index = indr_dev->block->index, @@ -1098,12 +1014,12 @@ EXPORT_SYMBOL_GPL(tc_indr_block_cb_unregister); static void tc_indr_block_call(struct tcf_block *block, struct net_device *dev, struct tcf_block_ext_info *ei, - enum tc_block_command command, + enum flow_block_command command, struct netlink_ext_ack *extack) { struct tc_indr_block_cb *indr_block_cb; struct tc_indr_block_dev *indr_dev; - struct tc_block_offload bo = { + struct flow_block_offload bo = { .command = command, .binder_type = ei->binder_type, .block_index = block->index, @@ -1127,10 +1043,10 @@ static void tc_indr_block_call(struct tcf_block *block, struct net_device *dev, static int tcf_block_offload_cmd(struct tcf_block *block, struct net_device *dev, struct tcf_block_ext_info *ei, - enum tc_block_command command, + enum flow_block_command command, struct netlink_ext_ack *extack) { - struct tc_block_offload bo = {}; + struct flow_block_offload bo = {}; int err; bo.command = command; @@ -1586,13 +1502,13 @@ static void tcf_block_release(struct Qdisc *q, struct tcf_block *block, struct tcf_block_owner_item { struct list_head list; struct Qdisc *q; - enum tcf_block_binder_type binder_type; + enum flow_block_binder_type binder_type; }; static void tcf_block_owner_netif_keep_dst(struct tcf_block *block, struct Qdisc *q, - enum tcf_block_binder_type binder_type) + enum flow_block_binder_type binder_type) { if (block->keep_dst && binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS && @@ -1613,7 +1529,7 @@ EXPORT_SYMBOL(tcf_block_netif_keep_dst); static int tcf_block_owner_add(struct tcf_block *block, struct Qdisc *q, - enum tcf_block_binder_type binder_type) + enum flow_block_binder_type binder_type) { struct tcf_block_owner_item *item; @@ -1628,7 +1544,7 @@ static int tcf_block_owner_add(struct tcf_block *block, static void tcf_block_owner_del(struct tcf_block *block, struct Qdisc *q, - enum tcf_block_binder_type binder_type) + enum flow_block_binder_type binder_type) { struct tcf_block_owner_item *item; @@ -3258,7 +3174,7 @@ EXPORT_SYMBOL(tcf_exts_dump_stats); int tc_setup_cb_call(struct tcf_block *block, enum tc_setup_type type, void *type_data, bool err_stop) { - struct tcf_block_cb *block_cb; + struct flow_block_cb *block_cb; int ok_count = 0; int err; -- 2.11.0