From: Jamal Hadi Salim <jhs@mojatatu.com>
To: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org, deb.chatterjee@intel.com,
anjali.singhai@intel.com, namrata.limaye@intel.com,
tom@sipanda.io, mleitner@redhat.com, Mahesh.Shirshyad@amd.com,
Vipin.Jain@amd.com, tomasz.osinski@intel.com, jiri@resnulli.us,
xiyou.wangcong@gmail.com, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, vladbu@nvidia.com,
horms@kernel.org, khalidm@nvidia.com, toke@redhat.com,
daniel@iogearbox.net, victor@mojatatu.com,
pctammela@mojatatu.com, bpf@vger.kernel.org
Subject: Re: [PATCH net-next v12 03/15] net/sched: act_api: Update tc_action_ops to account for P4 actions
Date: Thu, 29 Feb 2024 13:30:12 -0500 [thread overview]
Message-ID: <CAM0EoMniTMq+mYqSg4DbOfsbOMc7BGkV7Z6PdA+j_214PLPOeQ@mail.gmail.com> (raw)
In-Reply-To: <327b473d9f6ae5e44391f75a022e4dca90a20c43.camel@redhat.com>
On Thu, Feb 29, 2024 at 11:19 AM Paolo Abeni <pabeni@redhat.com> wrote:
>
> On Sun, 2024-02-25 at 11:54 -0500, Jamal Hadi Salim wrote:
> > The initialisation of P4TC action instances require access to a struct
> > p4tc_act (which appears in later patches) to help us to retrieve
> > information like the P4 action parameters etc. In order to retrieve
> > struct p4tc_act we need the pipeline name or id and the action name or id.
> > Also recall that P4TC action IDs are P4 and are net namespace specific and
> > not global like standard tc actions.
> > The init callback from tc_action_ops parameters had no way of
> > supplying us that information. To solve this issue, we decided to create a
> > new tc_action_ops callback (init_ops), that provies us with the
> > tc_action_ops struct which then provides us with the pipeline and action
> > name.
>
> The new init ops looks a bit unfortunate. I *think* it would be better
> adding the new argument to the existing init op
>
Our initial goal was to avoid creating a much larger patch by changing
any other action's code and we observe that ->init() already has 8
params already ;-> And only dynamic actions need this extra extension.
If you still feel the change is needed, sure we can make that change.
> > In addition we add a new refcount to struct tc_action_ops called
> > dyn_ref, which accounts for how many action instances we have of a specific
> > action.
> >
> > Co-developed-by: Victor Nogueira <victor@mojatatu.com>
> > Signed-off-by: Victor Nogueira <victor@mojatatu.com>
> > Co-developed-by: Pedro Tammela <pctammela@mojatatu.com>
> > Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
> > Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
> > Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
> > Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
> > ---
> > include/net/act_api.h | 6 ++++++
> > net/sched/act_api.c | 14 +++++++++++---
> > 2 files changed, 17 insertions(+), 3 deletions(-)
> >
> > diff --git a/include/net/act_api.h b/include/net/act_api.h
> > index c839ff57c..69be5ed83 100644
> > --- a/include/net/act_api.h
> > +++ b/include/net/act_api.h
> > @@ -109,6 +109,7 @@ struct tc_action_ops {
> > char kind[ACTNAMSIZ];
> > enum tca_id id; /* identifier should match kind */
> > unsigned int net_id;
> > + refcount_t p4_ref;
> > size_t size;
> > struct module *owner;
> > int (*act)(struct sk_buff *, const struct tc_action *,
> > @@ -120,6 +121,11 @@ struct tc_action_ops {
> > struct nlattr *est, struct tc_action **act,
> > struct tcf_proto *tp,
> > u32 flags, struct netlink_ext_ack *extack);
> > + /* This should be merged with the original init action */
> > + int (*init_ops)(struct net *net, struct nlattr *nla,
> > + struct nlattr *est, struct tc_action **act,
> > + struct tcf_proto *tp, struct tc_action_ops *ops,
>
> shouldn't the 'ops' argument be 'const'?
>
As it is right now this would be hard to do because we carry around a
refcnt in that struct. We will think about it..
cheers,
jamal
> Thanks,
>
> Paolo
>
next prev parent reply other threads:[~2024-02-29 18:30 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-25 16:54 [PATCH net-next v12 00/15] Introducing P4TC (series 1) Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 01/15] net: sched: act_api: Introduce P4 actions list Jamal Hadi Salim
2024-02-29 15:05 ` Paolo Abeni
2024-02-29 18:21 ` Jamal Hadi Salim
2024-03-01 7:30 ` Paolo Abeni
2024-03-01 12:39 ` Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 02/15] net/sched: act_api: increase action kind string length Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 03/15] net/sched: act_api: Update tc_action_ops to account for P4 actions Jamal Hadi Salim
2024-02-29 16:19 ` Paolo Abeni
2024-02-29 18:30 ` Jamal Hadi Salim [this message]
2024-02-25 16:54 ` [PATCH net-next v12 04/15] net/sched: act_api: add struct p4tc_action_ops as a parameter to lookup callback Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 05/15] net: sched: act_api: Add support for preallocated P4 action instances Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 06/15] p4tc: add P4 data types Jamal Hadi Salim
2024-02-29 15:09 ` Paolo Abeni
2024-02-29 18:31 ` Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 07/15] p4tc: add template API Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 08/15] p4tc: add template pipeline create, get, update, delete Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 09/15] p4tc: add template action create, update, delete, get, flush and dump Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 10/15] p4tc: add runtime action support Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 11/15] p4tc: add template table create, update, delete, get, flush and dump Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 12/15] p4tc: add runtime table entry create and update Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 13/15] p4tc: add runtime table entry get, delete, flush and dump Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 14/15] p4tc: add set of P4TC table kfuncs Jamal Hadi Salim
2024-03-01 6:53 ` Martin KaFai Lau
2024-03-01 12:31 ` Jamal Hadi Salim
2024-03-03 1:32 ` Martin KaFai Lau
2024-03-03 17:20 ` Jamal Hadi Salim
2024-03-05 7:40 ` Martin KaFai Lau
2024-03-05 12:30 ` Jamal Hadi Salim
2024-03-06 7:58 ` Martin KaFai Lau
2024-03-06 20:22 ` Jamal Hadi Salim
2024-03-06 22:21 ` Martin KaFai Lau
2024-03-06 23:19 ` Jamal Hadi Salim
2024-02-25 16:54 ` [PATCH net-next v12 15/15] p4tc: add P4 classifier Jamal Hadi Salim
2024-02-28 17:11 ` [PATCH net-next v12 00/15] Introducing P4TC (series 1) John Fastabend
2024-02-28 18:23 ` Jamal Hadi Salim
2024-02-28 21:13 ` John Fastabend
2024-03-01 7:02 ` Martin KaFai Lau
2024-03-01 12:36 ` Jamal Hadi Salim
2024-02-29 17:13 ` Paolo Abeni
2024-02-29 18:49 ` Jamal Hadi Salim
2024-02-29 20:52 ` John Fastabend
2024-02-29 21:49 ` Singhai, Anjali
2024-02-29 22:33 ` John Fastabend
2024-02-29 22:48 ` Jamal Hadi Salim
[not found] ` <CAOuuhY8qbsYCjdUYUZv8J3jz8HGXmtxLmTDP6LKgN5uRVZwMnQ@mail.gmail.com>
2024-03-01 17:00 ` Jakub Kicinski
2024-03-01 17:39 ` Jamal Hadi Salim
2024-03-02 1:32 ` Jakub Kicinski
2024-03-02 2:20 ` Tom Herbert
2024-03-03 3:15 ` Jakub Kicinski
2024-03-03 16:31 ` Tom Herbert
2024-03-04 20:07 ` Jakub Kicinski
2024-03-04 20:58 ` eBPF to implement core functionility WAS " Tom Herbert
2024-03-04 21:19 ` Stanislav Fomichev
2024-03-04 22:01 ` Tom Herbert
2024-03-04 23:24 ` Stanislav Fomichev
2024-03-04 23:50 ` Tom Herbert
2024-03-02 2:59 ` Hardware Offload discussion WAS(Re: " Jamal Hadi Salim
2024-03-02 14:36 ` Jamal Hadi Salim
2024-03-03 3:27 ` Jakub Kicinski
2024-03-03 17:00 ` Jamal Hadi Salim
2024-03-03 18:10 ` Tom Herbert
2024-03-03 19:04 ` Jamal Hadi Salim
2024-03-04 20:18 ` Jakub Kicinski
2024-03-04 21:02 ` Jamal Hadi Salim
2024-03-04 21:23 ` Stanislav Fomichev
2024-03-04 21:44 ` Jamal Hadi Salim
2024-03-04 22:23 ` Stanislav Fomichev
2024-03-04 22:59 ` Jamal Hadi Salim
2024-03-04 23:14 ` Stanislav Fomichev
2024-03-01 18:53 ` Chris Sommers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAM0EoMniTMq+mYqSg4DbOfsbOMc7BGkV7Z6PdA+j_214PLPOeQ@mail.gmail.com \
--to=jhs@mojatatu.com \
--cc=Mahesh.Shirshyad@amd.com \
--cc=Vipin.Jain@amd.com \
--cc=anjali.singhai@intel.com \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=deb.chatterjee@intel.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jiri@resnulli.us \
--cc=khalidm@nvidia.com \
--cc=kuba@kernel.org \
--cc=mleitner@redhat.com \
--cc=namrata.limaye@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pctammela@mojatatu.com \
--cc=toke@redhat.com \
--cc=tom@sipanda.io \
--cc=tomasz.osinski@intel.com \
--cc=victor@mojatatu.com \
--cc=vladbu@nvidia.com \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).