From: Guillaume Nault <gnault@redhat•com>
To: Hangbin Liu <liuhangbin@gmail•com>
Cc: Jakub Kicinski <kuba@kernel•org>,
netdev@vger•kernel.org, "David S. Miller" <davem@davemloft•net>,
Eric Dumazet <edumazet@google•com>,
Paolo Abeni <pabeni@redhat•com>, Ido Schimmel <idosch@nvidia•com>,
Petr Machata <petrm@nvidia•com>,
Florent Fourcot <florent.fourcot@wifirst•fr>,
Nikolay Aleksandrov <razor@blackwall•org>,
Nicolas Dichtel <nicolas.dichtel@6wind•com>,
David Ahern <dsahern@kernel•org>
Subject: Re: [PATCHv3 net-next] rtnetlink: Honour NLM_F_ECHO flag in rtnl_{new, set, del}link
Date: Wed, 28 Sep 2022 11:47:57 +0200 [thread overview]
Message-ID: <20220928094757.GA3081@localhost.localdomain> (raw)
In-Reply-To: <YzOz9ePdsIMGg0s+@Laptop-X1>
On Wed, Sep 28, 2022 at 10:39:49AM +0800, Hangbin Liu wrote:
> On Tue, Sep 27, 2022 at 07:21:30AM -0700, Jakub Kicinski wrote:
> > On Tue, 27 Sep 2022 12:13:03 +0800 Hangbin Liu wrote:
> > > @@ -3382,6 +3401,12 @@ static int rtnl_newlink_create(struct sk_buff *skb, struct ifinfomsg *ifm,
> > > if (err)
> > > goto out_unregister;
> > > }
> > > +
> > > + nskb = rtmsg_ifinfo_build_skb(RTM_NEWLINK, dev, 0, 0, GFP_KERNEL, NULL,
> > > + 0, pid, nlh->nlmsg_seq);
> > > + if (nskb)
> > > + rtnl_notify(nskb, dev_net(dev), pid, RTNLGRP_LINK, nlh, GFP_KERNEL);
> > > +
> > > out:
> > > if (link_net)
> > > put_net(link_net);
> >
> > I'm surprised you're adding new notifications. Does the kernel not
> > already notify about new links? I thought rtnl_newlink_create() ->
> > rtnl_configure_link() -> __dev_notify_flags() sends a notification,
> > already.
>
> I think __dev_notify_flags() only sends notification when dev flag changed.
> On the other hand, the notification is sent via multicast, while this patch
> is intend to unicast the notification to the user space.
In rntl_configure_link(), dev->rtnl_link_state is RTNL_LINK_INITIALIZING
on device cretation, so __dev_notify_flags() is called with gchanges=~0
and notification should be always sent. It's just a matter of passing the
portid and the nlmsghdr down the call chain to make rtnl_notify() send
the unicast message together with the multicast ones.
Now for device modification, I'm not sure there's a use case for
unicast notifications. The caller already knows which values it asked
to modify, so ECHO doesn't bring much value compared to a simple ACK.
> Thanks
> Hangbin
>
next prev parent reply other threads:[~2022-09-28 9:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-27 4:13 [PATCHv3 net-next] rtnetlink: Honour NLM_F_ECHO flag in rtnl_{new, set, del}link Hangbin Liu
2022-09-27 14:21 ` Jakub Kicinski
2022-09-28 2:39 ` Hangbin Liu
2022-09-28 9:47 ` Guillaume Nault [this message]
2022-09-29 3:10 ` Hangbin Liu
2022-09-29 13:40 ` Jakub Kicinski
2022-09-29 14:32 ` Guillaume Nault
2022-09-28 3:22 ` Hangbin Liu
2022-09-28 9:55 ` Guillaume Nault
2022-09-28 14:16 ` Jakub Kicinski
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=20220928094757.GA3081@localhost.localdomain \
--to=gnault@redhat$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=dsahern@kernel$(echo .)org \
--cc=edumazet@google$(echo .)com \
--cc=florent.fourcot@wifirst$(echo .)fr \
--cc=idosch@nvidia$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=liuhangbin@gmail$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=nicolas.dichtel@6wind$(echo .)com \
--cc=pabeni@redhat$(echo .)com \
--cc=petrm@nvidia$(echo .)com \
--cc=razor@blackwall$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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