[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