[SRU][F:linux-bluefield][PATCH v1 4/5] net/sched: flower: Support hardware miss to tc action
Bartlomiej Zolnierkiewicz
bartlomiej.zolnierkiewicz at canonical.com
Tue Mar 28 16:52:11 UTC 2023
On Thu, Mar 23, 2023 at 8:18 PM William Tu <witu at nvidia.com> wrote:
>
> From: Paul Blakey <paulb at nvidia.com>
>
> BugLink: https://bugs.launchpad.net/bugs/2012571
>
> To support hardware miss to tc action in actions on the flower
> classifier, implement the required getting of filter actions,
> and setup filter exts (actions) miss by giving it the filter's
> handle and actions.
>
> Signed-off-by: Paul Blakey <paulb at nvidia.com>
> (Cherry picked from upstream commit 606c7c43d08c4daf954ec8d58ae6dd39292fb457)
> Reviewed-by: Jiri Pirko <jiri at nvidia.com>
> Reviewed-by: Simon Horman <simon.horman at corigine.com>
> Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner at gmail.com>
> Signed-off-by: Jakub Kicinski <kuba at kernel.org>
> Signed-off-by: Paul Blakey <paulb at nvidia.com>
Similar issues as with patch #3/5.
Best Regards,
Bartlomiej
> ---
> net/sched/cls_flower.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
> index 0f5ce744bd51..99dfc01dee9c 100644
> --- a/net/sched/cls_flower.c
> +++ b/net/sched/cls_flower.c
> @@ -530,6 +530,15 @@ static struct cls_fl_filter *__fl_get(struct cls_fl_head *head, u32 handle)
> return f;
> }
>
> +static struct tcf_exts *fl_get_exts(const struct tcf_proto *tp, u32 handle)
> +{
> + struct cls_fl_head *head = rcu_dereference_bh(tp->root);
> + struct cls_fl_filter *f;
> +
> + f = idr_find(&head->handle_idr, handle);
> + return f ? &f->exts : NULL;
> +}
> +
> static int __fl_delete(struct tcf_proto *tp, struct cls_fl_filter *f,
> bool *last, bool rtnl_held,
> struct netlink_ext_ack *extack)
> @@ -1674,7 +1683,8 @@ static int fl_change(struct net *net, struct sk_buff *in_skb,
> }
> fnew->handle = handle;
>
> - err = tcf_exts_init(&fnew->exts, net, TCA_FLOWER_ACT, 0);
> + err = tcf_exts_init_ex(&fnew->exts, net, TCA_FLOWER_ACT, 0, tp, handle,
> + !tc_skip_hw(fnew->flags));
> if (err < 0)
> goto errout_idr;
>
> @@ -2635,6 +2645,7 @@ static struct tcf_proto_ops cls_fl_ops __read_mostly = {
> .tmplt_create = fl_tmplt_create,
> .tmplt_destroy = fl_tmplt_destroy,
> .tmplt_dump = fl_tmplt_dump,
> + .get_exts = fl_get_exts,
> .owner = THIS_MODULE,
> .flags = TCF_PROTO_OPS_DOIT_UNLOCKED,
> };
More information about the kernel-team
mailing list