netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Vladimir Oltean <vladimir.oltean@nxp.com>, netdev@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	Ansuel Smith <ansuelsmth@gmail.com>,
	Tobias Waldekranz <tobias@waldekranz.com>,
	DENG Qingfang <dqfext@gmail.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	UNGLinuxDriver@microchip.com, Jiri Pirko <jiri@resnulli.us>,
	Ivan Vecera <ivecera@redhat.com>,
	Horatiu Vultur <horatiu.vultur@microchip.com>
Subject: Re: [PATCH v4 net-next 07/11] net: switchdev: remove lag_mod_cb from switchdev_handle_fdb_event_to_device
Date: Mon, 21 Feb 2022 19:50:09 -0800	[thread overview]
Message-ID: <f3cf1c96-f1ec-7403-ae5c-c52667a232f0@gmail.com> (raw)
In-Reply-To: <20220221212337.2034956-8-vladimir.oltean@nxp.com>



On 2/21/2022 1:23 PM, Vladimir Oltean wrote:
> When the switchdev_handle_fdb_event_to_device() event replication helper
> was created, my original thought was that FDB events on LAG interfaces
> should most likely be special-cased, not just replicated towards all
> switchdev ports beneath that LAG. So this replication helper currently
> does not recurse through switchdev lower interfaces of LAG bridge ports,
> but rather calls the lag_mod_cb() if that was provided.
> 
> No switchdev driver uses this helper for FDB events on LAG interfaces
> yet, so that was an assumption which was yet to be tested. It is
> certainly usable for that purpose, as my RFC series shows:
> 
> https://patchwork.kernel.org/project/netdevbpf/cover/20220210125201.2859463-1-vladimir.oltean@nxp.com/
> 
> however this approach is slightly convoluted because:
> 
> - the switchdev driver gets a "dev" that isn't its own net device, but
>    rather the LAG net device. It must call switchdev_lower_dev_find(dev)
>    in order to get a handle of any of its own net devices (the ones that
>    pass check_cb).
> 
> - in order for FDB entries on LAG ports to be correctly refcounted per
>    the number of switchdev ports beneath that LAG, we haven't escaped the
>    need to iterate through the LAG's lower interfaces. Except that is now
>    the responsibility of the switchdev driver, because the replication
>    helper just stopped half-way.
> 
> So, even though yes, FDB events on LAG bridge ports must be
> special-cased, in the end it's simpler to let switchdev_handle_fdb_*
> just iterate through the LAG port's switchdev lowers, and let the
> switchdev driver figure out that those physical ports are under a LAG.
> 
> The switchdev_handle_fdb_event_to_device() helper takes a
> "foreign_dev_check" callback so it can figure out whether @dev can
> autonomously forward to @foreign_dev. DSA fills this method properly:
> if the LAG is offloaded by another port in the same tree as @dev, then
> it isn't foreign. If it is a software LAG, it is foreign - forwarding
> happens in software.
> 
> Whether an interface is foreign or not decides whether the replication
> helper will go through the LAG's switchdev lowers or not. Since the
> lan966x doesn't properly fill this out, FDB events on software LAG
> uppers will get called. By changing lan966x_foreign_dev_check(), we can
> suppress them.
> 
> Whereas DSA will now start receiving FDB events for its offloaded LAG
> uppers, so we need to return -EOPNOTSUPP, since we currently don't do
> the right thing for them.
> 
> Cc: Horatiu Vultur <horatiu.vultur@microchip.com>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

  reply	other threads:[~2022-02-22  3:50 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-21 21:23 [PATCH v4 net-next 00/11] FDB entries on DSA LAG interfaces Vladimir Oltean
2022-02-21 21:23 ` [PATCH v4 net-next 01/11] net: dsa: rename references to "lag" as "lag_dev" Vladimir Oltean
2022-02-22  3:24   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 02/11] net: dsa: mv88e6xxx: " Vladimir Oltean
2022-02-22  3:25   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 03/11] net: dsa: qca8k: " Vladimir Oltean
2022-02-22  3:26   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 04/11] net: dsa: make LAG IDs one-based Vladimir Oltean
2022-02-22  3:43   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 05/11] net: dsa: mv88e6xxx: use dsa_switch_for_each_port in mv88e6xxx_lag_sync_masks Vladimir Oltean
2022-02-22  3:27   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 06/11] net: dsa: create a dsa_lag structure Vladimir Oltean
2022-02-22  3:47   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 07/11] net: switchdev: remove lag_mod_cb from switchdev_handle_fdb_event_to_device Vladimir Oltean
2022-02-22  3:50   ` Florian Fainelli [this message]
2022-02-21 21:23 ` [PATCH v4 net-next 08/11] net: dsa: remove "ds" and "port" from struct dsa_switchdev_event_work Vladimir Oltean
2022-02-22  3:50   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 09/11] net: dsa: call SWITCHDEV_FDB_OFFLOADED for the orig_dev Vladimir Oltean
2022-02-22  3:51   ` Florian Fainelli
2022-02-21 21:23 ` [PATCH v4 net-next 10/11] net: dsa: support FDB events on offloaded LAG interfaces Vladimir Oltean
2022-02-21 21:23 ` [PATCH v4 net-next 11/11] net: dsa: felix: support FDB entries " Vladimir Oltean

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=f3cf1c96-f1ec-7403-ae5c-c52667a232f0@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=ansuelsmth@gmail.com \
    --cc=claudiu.manoil@nxp.com \
    --cc=davem@davemloft.net \
    --cc=dqfext@gmail.com \
    --cc=horatiu.vultur@microchip.com \
    --cc=ivecera@redhat.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=tobias@waldekranz.com \
    --cc=vivien.didelot@gmail.com \
    --cc=vladimir.oltean@nxp.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).