2021-03-15 14:52:31

by Álvaro Fernández Rojas

[permalink] [raw]
Subject: [PATCH net-next 0/2] net: dsa: b53: support legacy tags

Legacy Broadcom tags are needed for older switches.

Álvaro Fernández Rojas (2):
net: dsa: tag_brcm: add support for legacy tags
net: dsa: b53: support legacy tags

drivers/net/dsa/b53/Kconfig | 1 +
drivers/net/dsa/b53/b53_common.c | 9 ++-
include/net/dsa.h | 2 +
net/dsa/Kconfig | 7 +++
net/dsa/tag_brcm.c | 96 ++++++++++++++++++++++++++++++++
5 files changed, 113 insertions(+), 2 deletions(-)

--
2.20.1


2021-03-15 14:54:37

by Álvaro Fernández Rojas

[permalink] [raw]
Subject: [PATCH net-next 2/2] net: dsa: b53: support legacy tags

These tags are used on BCM5325, BCM5365 and BCM63xx switches.

Signed-off-by: Álvaro Fernández Rojas <[email protected]>
---
drivers/net/dsa/b53/Kconfig | 1 +
drivers/net/dsa/b53/b53_common.c | 9 +++++++--
2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig
index f9891a81c808..90b525160b71 100644
--- a/drivers/net/dsa/b53/Kconfig
+++ b/drivers/net/dsa/b53/Kconfig
@@ -3,6 +3,7 @@ menuconfig B53
tristate "Broadcom BCM53xx managed switch support"
depends on NET_DSA
select NET_DSA_TAG_BRCM
+ select NET_DSA_TAG_BRCM_LEGACY
select NET_DSA_TAG_BRCM_PREPEND
help
This driver adds support for Broadcom managed switch chips. It supports
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index a162499bcafc..a583948cdf4f 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -2034,6 +2034,7 @@ static bool b53_can_enable_brcm_tags(struct dsa_switch *ds, int port,

switch (tag_protocol) {
case DSA_TAG_PROTO_BRCM:
+ case DSA_TAG_PROTO_BRCM_LEGACY:
case DSA_TAG_PROTO_BRCM_PREPEND:
dev_warn(ds->dev,
"Port %d is stacked to Broadcom tag switch\n", port);
@@ -2055,12 +2056,16 @@ enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds, int port,
/* Older models (5325, 5365) support a different tag format that we do
* not support in net/dsa/tag_brcm.c yet.
*/
- if (is5325(dev) || is5365(dev) ||
- !b53_can_enable_brcm_tags(ds, port, mprot)) {
+ if (!b53_can_enable_brcm_tags(ds, port, mprot)) {
dev->tag_protocol = DSA_TAG_PROTO_NONE;
goto out;
}

+ if (is5325(dev) || is5365(dev) || is63xx(dev)) {
+ dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY;
+ goto out;
+ }
+
/* Broadcom BCM58xx chips have a flow accelerator on Port 8
* which requires us to use the prepended Broadcom tag type
*/
--
2.20.1

2021-03-15 17:26:51

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH net-next 2/2] net: dsa: b53: support legacy tags



On 3/15/2021 7:27 AM, Álvaro Fernández Rojas wrote:
> These tags are used on BCM5325, BCM5365 and BCM63xx switches.
>
> Signed-off-by: Álvaro Fernández Rojas <[email protected]>
> ---
> drivers/net/dsa/b53/Kconfig | 1 +
> drivers/net/dsa/b53/b53_common.c | 9 +++++++--
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig
> index f9891a81c808..90b525160b71 100644
> --- a/drivers/net/dsa/b53/Kconfig
> +++ b/drivers/net/dsa/b53/Kconfig
> @@ -3,6 +3,7 @@ menuconfig B53
> tristate "Broadcom BCM53xx managed switch support"
> depends on NET_DSA
> select NET_DSA_TAG_BRCM
> + select NET_DSA_TAG_BRCM_LEGACY
> select NET_DSA_TAG_BRCM_PREPEND
> help
> This driver adds support for Broadcom managed switch chips. It supports
> diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
> index a162499bcafc..a583948cdf4f 100644
> --- a/drivers/net/dsa/b53/b53_common.c
> +++ b/drivers/net/dsa/b53/b53_common.c
> @@ -2034,6 +2034,7 @@ static bool b53_can_enable_brcm_tags(struct dsa_switch *ds, int port,
>
> switch (tag_protocol) {
> case DSA_TAG_PROTO_BRCM:
> + case DSA_TAG_PROTO_BRCM_LEGACY:
> case DSA_TAG_PROTO_BRCM_PREPEND:

I am not sure about that one, so for now we can probably be
conservative. You can definitively not "stack" two or more switches that
are configured with DSA_TAG_PROTO_BRCM because the first switch
receiving the Broadcom tag will terminate it locally and not pass it up.
The legacy Broadcom tag however is different and has a "Scr Dev ID"
field which is intended to support cascading. Whether that works with
only DSA_TAG_PROTO_BRCM_LEGACY or across DSA_PROTO_BRCM_LEGACY +
DSA_TAG_PROTO_BRCM may be something you will have to determine.

Acked-by: Florian Fainelli <[email protected]>
--
Florian