From: Ido Schimmel <idosch@nvidia.com>
To: Nikolay Aleksandrov <razor@blackwall.org>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
edumazet@google.com, mlxsw@nvidia.com, roopa@nvidia.com,
kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net
Subject: Re: [Bridge] [PATCH net-next 09/13] bridge: mcast: Add MDB get support
Date: Tue, 17 Oct 2023 14:03:47 +0300 [thread overview]
Message-ID: <ZS5qE3ou0iceLsp2@shredder> (raw)
In-Reply-To: <141f0fc1-f024-d437-dae2-e074523c9bf8@blackwall.org>
On Tue, Oct 17, 2023 at 12:24:44PM +0300, Nikolay Aleksandrov wrote:
> On 10/16/23 16:12, Ido Schimmel wrote:
> > Implement support for MDB get operation by looking up a matching MDB
> > entry, allocating the skb according to the entry's size and then filling
> > in the response. The operation is performed under the bridge multicast
> > lock to ensure that the entry does not change between the time the reply
> > size is determined and when the reply is filled in.
> >
> > Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> > ---
> > net/bridge/br_device.c | 1 +
> > net/bridge/br_mdb.c | 154 ++++++++++++++++++++++++++++++++++++++++
> > net/bridge/br_private.h | 9 +++
> > 3 files changed, 164 insertions(+)
> >
> [snip]
> > +int br_mdb_get(struct net_device *dev, struct nlattr *tb[], u32 portid, u32 seq,
> > + struct netlink_ext_ack *extack)
> > +{
> > + struct net_bridge *br = netdev_priv(dev);
> > + struct net_bridge_mdb_entry *mp;
> > + struct sk_buff *skb;
> > + struct br_ip group;
> > + int err;
> > +
> > + err = br_mdb_get_parse(dev, tb, &group, extack);
> > + if (err)
> > + return err;
> > +
> > + spin_lock_bh(&br->multicast_lock);
>
> Since this is only reading, could we use rcu to avoid blocking mcast
> processing?
I tried to explain this choice in the commit message. Do you think it's
a non-issue?
>
> > +
> > + mp = br_mdb_ip_get(br, &group);
> > + if (!mp) {
> > + NL_SET_ERR_MSG_MOD(extack, "MDB entry not found");
> > + err = -ENOENT;
> > + goto unlock;
> > + }
> > +
> > + skb = br_mdb_get_reply_alloc(mp);
> > + if (!skb) {
> > + err = -ENOMEM;
> > + goto unlock;
> > + }
> > +
> > + err = br_mdb_get_reply_fill(skb, mp, portid, seq);
> > + if (err) {
> > + NL_SET_ERR_MSG_MOD(extack, "Failed to fill MDB get reply");
> > + goto free;
> > + }
> > +
> > + spin_unlock_bh(&br->multicast_lock);
> > +
> > + return rtnl_unicast(skb, dev_net(dev), portid);
> > +
> > +free:
> > + kfree_skb(skb);
> > +unlock:
> > + spin_unlock_bh(&br->multicast_lock);
> > + return err;
> > +}
>
WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@nvidia.com>
To: Nikolay Aleksandrov <razor@blackwall.org>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
davem@davemloft.net, kuba@kernel.org, edumazet@google.com,
pabeni@redhat.com, roopa@nvidia.com, mlxsw@nvidia.com
Subject: Re: [PATCH net-next 09/13] bridge: mcast: Add MDB get support
Date: Tue, 17 Oct 2023 14:03:47 +0300 [thread overview]
Message-ID: <ZS5qE3ou0iceLsp2@shredder> (raw)
In-Reply-To: <141f0fc1-f024-d437-dae2-e074523c9bf8@blackwall.org>
On Tue, Oct 17, 2023 at 12:24:44PM +0300, Nikolay Aleksandrov wrote:
> On 10/16/23 16:12, Ido Schimmel wrote:
> > Implement support for MDB get operation by looking up a matching MDB
> > entry, allocating the skb according to the entry's size and then filling
> > in the response. The operation is performed under the bridge multicast
> > lock to ensure that the entry does not change between the time the reply
> > size is determined and when the reply is filled in.
> >
> > Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> > ---
> > net/bridge/br_device.c | 1 +
> > net/bridge/br_mdb.c | 154 ++++++++++++++++++++++++++++++++++++++++
> > net/bridge/br_private.h | 9 +++
> > 3 files changed, 164 insertions(+)
> >
> [snip]
> > +int br_mdb_get(struct net_device *dev, struct nlattr *tb[], u32 portid, u32 seq,
> > + struct netlink_ext_ack *extack)
> > +{
> > + struct net_bridge *br = netdev_priv(dev);
> > + struct net_bridge_mdb_entry *mp;
> > + struct sk_buff *skb;
> > + struct br_ip group;
> > + int err;
> > +
> > + err = br_mdb_get_parse(dev, tb, &group, extack);
> > + if (err)
> > + return err;
> > +
> > + spin_lock_bh(&br->multicast_lock);
>
> Since this is only reading, could we use rcu to avoid blocking mcast
> processing?
I tried to explain this choice in the commit message. Do you think it's
a non-issue?
>
> > +
> > + mp = br_mdb_ip_get(br, &group);
> > + if (!mp) {
> > + NL_SET_ERR_MSG_MOD(extack, "MDB entry not found");
> > + err = -ENOENT;
> > + goto unlock;
> > + }
> > +
> > + skb = br_mdb_get_reply_alloc(mp);
> > + if (!skb) {
> > + err = -ENOMEM;
> > + goto unlock;
> > + }
> > +
> > + err = br_mdb_get_reply_fill(skb, mp, portid, seq);
> > + if (err) {
> > + NL_SET_ERR_MSG_MOD(extack, "Failed to fill MDB get reply");
> > + goto free;
> > + }
> > +
> > + spin_unlock_bh(&br->multicast_lock);
> > +
> > + return rtnl_unicast(skb, dev_net(dev), portid);
> > +
> > +free:
> > + kfree_skb(skb);
> > +unlock:
> > + spin_unlock_bh(&br->multicast_lock);
> > + return err;
> > +}
>
next prev parent reply other threads:[~2023-10-17 11:03 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-16 13:12 [Bridge] [PATCH net-next 00/13] Add MDB get support Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-16 13:12 ` [Bridge] [PATCH net-next 01/13] bridge: mcast: Dump MDB entries even when snooping is disabled Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:04 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:04 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 02/13] bridge: mcast: Account for missing attributes Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:05 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:05 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 03/13] bridge: mcast: Factor out a helper for PG entry size calculation Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:05 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:05 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 04/13] bridge: mcast: Rename MDB entry get function Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:06 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:06 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 05/13] vxlan: mdb: Adjust function arguments Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:06 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:06 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 06/13] vxlan: mdb: Factor out a helper for remote entry size calculation Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:06 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:06 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 07/13] bridge: add MDB get uAPI attributes Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:08 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:08 ` Nikolay Aleksandrov
2023-10-17 10:58 ` [Bridge] " Ido Schimmel
2023-10-17 10:58 ` Ido Schimmel
2023-10-16 13:12 ` [Bridge] [PATCH net-next 08/13] net: Add MDB get device operation Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:08 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:08 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 09/13] bridge: mcast: Add MDB get support Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:24 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:24 ` Nikolay Aleksandrov
2023-10-17 11:03 ` Ido Schimmel [this message]
2023-10-17 11:03 ` Ido Schimmel
2023-10-17 12:53 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 12:53 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 10/13] vxlan: mdb: " Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:28 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:28 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 11/13] rtnetlink: " Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:29 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:29 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 12/13] selftests: bridge_mdb: Use MDB get instead of dump Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:29 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:29 ` Nikolay Aleksandrov
2023-10-16 13:12 ` [Bridge] [PATCH net-next 13/13] selftests: vxlan_mdb: " Ido Schimmel
2023-10-16 13:12 ` Ido Schimmel
2023-10-17 9:30 ` [Bridge] " Nikolay Aleksandrov
2023-10-17 9:30 ` Nikolay Aleksandrov
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=ZS5qE3ou0iceLsp2@shredder \
--to=idosch@nvidia.com \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=mlxsw@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
--cc=roopa@nvidia.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.