From: Simon Horman <horms@kernel.org>
To: Pedro Tammela <pctammela@mojatatu.com>
Cc: netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, jhs@mojatatu.com,
xiyou.wangcong@gmail.com, jiri@resnulli.us,
marcelo.leitner@gmail.com, vladbu@nvidia.com
Subject: Re: [PATCH net-next v3 4/5] net/sched: act_api: conditional notification of events
Date: Thu, 7 Dec 2023 20:56:50 +0000 [thread overview]
Message-ID: <20231207205650.GH50400@kernel.org> (raw)
In-Reply-To: <20231206164416.543503-5-pctammela@mojatatu.com>
On Wed, Dec 06, 2023 at 01:44:15PM -0300, Pedro Tammela wrote:
> As of today tc-action events are unconditionally built and sent to
> RTNLGRP_TC. As with the introduction of rtnl_notify_needed we can check
> before-hand if they are really needed.
>
> Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Hi Pedro,
a nice optimisation :)
...
> +static int tcf_reoffload_del_notify(struct net *net, struct tc_action *action)
> +{
> + const struct tc_action_ops *ops = action->ops;
> + struct sk_buff *skb = NULL;
> + int ret;
> +
> + if (!rtnl_notify_needed(net, 0, RTNLGRP_TC))
> + goto skip_msg;
Is there a reason (performance?) to use a goto here
rather than putting the tcf_reoffload_del_notify_msg() call inside
an if condition?
Completely untested!
if (!rtnl_notify_needed(net, 0, RTNLGRP_TC)) {
skb = NULL;
} else {
skb = tcf_reoffload_del_notify_msg(net, action);
if (IS_ERR(skb))
return PTR_ERR(skb);
}
Or perhaps a helper, as this pattern seems to also appear in tcf_add_notify()
> +
> + skb = tcf_reoffload_del_notify_msg(net, action);
> + if (IS_ERR(skb))
> + return PTR_ERR(skb);
> +
> +skip_msg:
> ret = tcf_idr_release_unsafe(action);
> if (ret == ACT_P_DELETED) {
> module_put(ops->owner);
> - ret = rtnetlink_send(skb, net, 0, RTNLGRP_TC, 0);
> + ret = rtnetlink_maybe_send(skb, net, 0, RTNLGRP_TC, 0);
> } else {
> kfree_skb(skb);
> }
...
> +static int tcf_add_notify(struct net *net, struct nlmsghdr *n,
> + struct tc_action *actions[], u32 portid,
> + size_t attr_size, struct netlink_ext_ack *extack)
> +{
> + struct sk_buff *skb = NULL;
> +
> + if (!rtnl_notify_needed(net, n->nlmsg_flags, RTNLGRP_TC))
> + goto skip_msg;
> +
> + skb = tcf_add_notify_msg(net, n, actions, portid, attr_size, extack);
> + if (IS_ERR(skb))
> + return PTR_ERR(skb);
> +
> +skip_msg:
> + return rtnetlink_maybe_send(skb, net, portid, RTNLGRP_TC,
> + n->nlmsg_flags & NLM_F_ECHO);
> }
>
> static int tcf_action_add(struct net *net, struct nlattr *nla,
> --
> 2.40.1
>
next prev parent reply other threads:[~2023-12-07 20:56 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 16:44 [PATCH net-next v3 0/5] net/sched: conditional notification of events for cls and act Pedro Tammela
2023-12-06 16:44 ` [PATCH net-next v3 1/5] rtnl: add helper to check if rtnl group has listeners Pedro Tammela
2023-12-07 20:59 ` Simon Horman
2023-12-06 16:44 ` [PATCH net-next v3 2/5] rtnl: add helper to check if a notification is needed Pedro Tammela
2023-12-07 21:00 ` Simon Horman
2023-12-06 16:44 ` [PATCH net-next v3 3/5] rtnl: add helper to send if skb is not null Pedro Tammela
2023-12-07 21:00 ` Simon Horman
2023-12-06 16:44 ` [PATCH net-next v3 4/5] net/sched: act_api: conditional notification of events Pedro Tammela
2023-12-07 20:56 ` Simon Horman [this message]
2023-12-08 14:21 ` Pedro Tammela
2023-12-08 10:09 ` Jiri Pirko
2023-12-06 16:44 ` [PATCH net-next v3 5/5] net/sched: cls_api: " Pedro Tammela
2023-12-07 20:59 ` Simon Horman
2023-12-08 17:48 ` Pedro Tammela
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=20231207205650.GH50400@kernel.org \
--to=horms@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=marcelo.leitner@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pctammela@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.