From: Lars Povlsen <lars.povlsen@microchip.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Steen Hegelund <steen.hegelund@microchip.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Masahiro Yamada <masahiroy@kernel.org>,
Lars Povlsen <lars.povlsen@microchip.com>,
"Bjarni Jonasson" <bjarni.jonasson@microchip.com>,
Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Microsemi List <microsemi@lists.bootlin.com>,
<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH 2/3] net: sparx5: Add Sparx5 switchdev driver
Date: Tue, 1 Dec 2020 12:11:14 +0100 [thread overview]
Message-ID: <87h7p5pyr1.fsf@microchip.com> (raw)
In-Reply-To: <20201128192410.GG2191767@lunn.ch>
Andrew Lunn writes:
>> +static void sparx5_attr_stp_state_set(struct sparx5_port *port,
>> + struct switchdev_trans *trans,
>> + u8 state)
>> +{
>> + struct sparx5 *sparx5 = port->sparx5;
>> +
>> + if (!test_bit(port->portno, sparx5->bridge_mask)) {
>> + netdev_err(port->ndev,
>> + "Controlling non-bridged port %d?\n", port->portno);
>> + return;
>> + }
>> +
>> + switch (state) {
>> + case BR_STATE_FORWARDING:
>> + set_bit(port->portno, sparx5->bridge_fwd_mask);
>> + break;
>> + default:
>> + clear_bit(port->portno, sparx5->bridge_fwd_mask);
>> + break;
>> + }
>
> That is pretty odd. What about listening, learning, blocking?
>
This only handles simple forward/block. We'll add the learning state as
well.
>> +static int sparx5_port_bridge_join(struct sparx5_port *port,
>> + struct net_device *bridge)
>> +{
>> + struct sparx5 *sparx5 = port->sparx5;
>> +
>> + if (bitmap_empty(sparx5->bridge_mask, SPX5_PORTS))
>> + /* First bridged port */
>> + sparx5->hw_bridge_dev = bridge;
>> + else
>> + if (sparx5->hw_bridge_dev != bridge)
>> + /* This is adding the port to a second bridge, this is
>> + * unsupported
>> + */
>> + return -ENODEV;
>> +
>> + set_bit(port->portno, sparx5->bridge_mask);
>> +
>> + /* Port enters in bridge mode therefor don't need to copy to CPU
>> + * frames for multicast in case the bridge is not requesting them
>> + */
>> + __dev_mc_unsync(port->ndev, sparx5_mc_unsync);
>> +
>> + return 0;
>> +}
>
> This looks suspiciously empty? Don't you need to tell the hardware
> which ports this port is bridges to? Normally you see some code which
> walks all the ports and finds those in the same bridge, and sets a bit
> which allows these ports to talk to each other. Is that code somewhere
> else?
>
This is applied when the STP state is handled - sparx5_update_fwd().
This is pretty much as in the ocelot driver, which can a somewhat
similar switch - and driver - architecture.
> Andrew
Thank you for your comments,
---Lars
--
Lars Povlsen,
Microchip
next prev parent reply other threads:[~2020-12-01 11:12 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-27 13:33 [RFC PATCH 0/3] net: Adding the Sparx5 Switch Driver Steen Hegelund
2020-11-27 13:33 ` [RFC PATCH 1/3] dt-bindings: net: sparx5: Add sparx5-switch bindings Steen Hegelund
2020-11-27 13:33 ` Steen Hegelund
2020-11-27 17:00 ` Andrew Lunn
2020-11-27 17:00 ` Andrew Lunn
2020-11-30 13:09 ` Steen Hegelund
2020-11-30 13:09 ` Steen Hegelund
2020-11-30 14:05 ` Andrew Lunn
2020-11-30 14:05 ` Andrew Lunn
2020-11-30 15:33 ` Steen Hegelund
2020-11-30 15:33 ` Steen Hegelund
2020-11-27 13:33 ` [RFC PATCH 2/3] net: sparx5: Add Sparx5 switchdev driver Steen Hegelund
2020-11-27 17:15 ` Andrew Lunn
2020-11-30 13:13 ` Steen Hegelund
2020-12-07 13:33 ` Jiri Pirko
2020-11-28 18:45 ` Andrew Lunn
2020-11-30 13:17 ` Steen Hegelund
2020-11-28 19:03 ` Andrew Lunn
2020-11-30 13:28 ` Steen Hegelund
2020-11-30 15:34 ` Andrew Lunn
2020-11-28 19:06 ` Andrew Lunn
2020-11-28 19:37 ` Russell King - ARM Linux admin
2020-11-28 20:07 ` Alexandre Belloni
2020-11-28 20:21 ` Andrew Lunn
2020-11-28 22:28 ` Russell King - ARM Linux admin
2020-11-29 10:52 ` Russell King - ARM Linux admin
2020-11-29 11:28 ` Russell King - ARM Linux admin
2020-11-30 14:39 ` Steen Hegelund
2020-11-30 14:54 ` Russell King - ARM Linux admin
2020-11-29 11:30 ` Russell King - ARM Linux admin
2020-11-30 14:30 ` Steen Hegelund
2020-11-30 14:50 ` Russell King - ARM Linux admin
2020-11-30 14:15 ` Steen Hegelund
2020-11-30 14:52 ` Russell King - ARM Linux admin
2020-11-30 14:10 ` Steen Hegelund
2020-11-28 19:24 ` Andrew Lunn
2020-12-01 11:11 ` Lars Povlsen [this message]
2020-11-29 17:16 ` Andrew Lunn
2020-11-30 13:33 ` Steen Hegelund
2020-11-29 17:26 ` Andrew Lunn
2020-11-30 13:31 ` Steen Hegelund
2020-11-29 17:35 ` Andrew Lunn
2020-11-30 14:42 ` Steen Hegelund
2020-11-27 13:33 ` [RFC PATCH 3/3] arm64: dts: sparx5: Add the Sparx5 switch node Steen Hegelund
2020-11-27 13:33 ` Steen Hegelund
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=87h7p5pyr1.fsf@microchip.com \
--to=lars.povlsen@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andrew@lunn.ch \
--cc=bjarni.jonasson@microchip.com \
--cc=davem@davemloft.net \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=microsemi@lists.bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=steen.hegelund@microchip.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.