netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: dsa: brcm: add legacy FCS tag
@ 2025-05-30 15:56 Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: legacy: reorganize functions Álvaro Fernández Rojas
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Álvaro Fernández Rojas @ 2025-05-30 15:56 UTC (permalink / raw)
  To: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	kuba, pabeni, horms, netdev, linux-kernel, dgcbueu
  Cc: Álvaro Fernández Rojas

The existing brcm legacy tag only works with BCM63xx switches.
These patches add a new legacy tag for BCM5325 and BCM5365 switches, which
require including the FCS and length.

Álvaro Fernández Rojas (3):
  net: dsa: tag_brcm: legacy: reorganize functions
  net: dsa: tag_brcm: add support for legacy FCS tags
  net: dsa: b53: support legacy FCS tags

 drivers/net/dsa/b53/Kconfig      |   1 +
 drivers/net/dsa/b53/b53_common.c |   7 +-
 include/net/dsa.h                |   2 +
 net/dsa/Kconfig                  |   8 +++
 net/dsa/tag_brcm.c               | 117 ++++++++++++++++++++++++-------
 5 files changed, 109 insertions(+), 26 deletions(-)

-- 
2.39.5


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] net: dsa: tag_brcm: legacy: reorganize functions
  2025-05-30 15:56 [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
@ 2025-05-30 15:56 ` Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: add support for legacy FCS tags Álvaro Fernández Rojas
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Álvaro Fernández Rojas @ 2025-05-30 15:56 UTC (permalink / raw)
  To: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	kuba, pabeni, horms, netdev, linux-kernel, dgcbueu
  Cc: Álvaro Fernández Rojas

Move brcm_leg_tag_rcv() definition to top.
This function is going to be shared between two different tags.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 net/dsa/tag_brcm.c | 64 +++++++++++++++++++++++-----------------------
 1 file changed, 32 insertions(+), 32 deletions(-)

diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c
index fe75821623a4f..9f4b0bcd95cde 100644
--- a/net/dsa/tag_brcm.c
+++ b/net/dsa/tag_brcm.c
@@ -213,6 +213,38 @@ MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_NAME);
 #endif
 
 #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
+static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
+					struct net_device *dev)
+{
+	int len = BRCM_LEG_TAG_LEN;
+	int source_port;
+	u8 *brcm_tag;
+
+	if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN)))
+		return NULL;
+
+	brcm_tag = dsa_etype_header_pos_rx(skb);
+
+	source_port = brcm_tag[5] & BRCM_LEG_PORT_ID;
+
+	skb->dev = dsa_conduit_find_user(dev, 0, source_port);
+	if (!skb->dev)
+		return NULL;
+
+	/* VLAN tag is added by BCM63xx internal switch */
+	if (netdev_uses_dsa(skb->dev))
+		len += VLAN_HLEN;
+
+	/* Remove Broadcom tag and update checksum */
+	skb_pull_rcsum(skb, len);
+
+	dsa_default_offload_fwd_mark(skb);
+
+	dsa_strip_etype_header(skb, len);
+
+	return skb;
+}
+
 static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
 					 struct net_device *dev)
 {
@@ -250,38 +282,6 @@ static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
 	return skb;
 }
 
-static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
-					struct net_device *dev)
-{
-	int len = BRCM_LEG_TAG_LEN;
-	int source_port;
-	u8 *brcm_tag;
-
-	if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN)))
-		return NULL;
-
-	brcm_tag = dsa_etype_header_pos_rx(skb);
-
-	source_port = brcm_tag[5] & BRCM_LEG_PORT_ID;
-
-	skb->dev = dsa_conduit_find_user(dev, 0, source_port);
-	if (!skb->dev)
-		return NULL;
-
-	/* VLAN tag is added by BCM63xx internal switch */
-	if (netdev_uses_dsa(skb->dev))
-		len += VLAN_HLEN;
-
-	/* Remove Broadcom tag and update checksum */
-	skb_pull_rcsum(skb, len);
-
-	dsa_default_offload_fwd_mark(skb);
-
-	dsa_strip_etype_header(skb, len);
-
-	return skb;
-}
-
 static const struct dsa_device_ops brcm_legacy_netdev_ops = {
 	.name = BRCM_LEGACY_NAME,
 	.proto = DSA_TAG_PROTO_BRCM_LEGACY,
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH] net: dsa: tag_brcm: add support for legacy FCS tags
  2025-05-30 15:56 [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: legacy: reorganize functions Álvaro Fernández Rojas
@ 2025-05-30 15:56 ` Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: b53: support " Álvaro Fernández Rojas
  2025-05-30 15:58 ` [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
  3 siblings, 0 replies; 7+ messages in thread
From: Álvaro Fernández Rojas @ 2025-05-30 15:56 UTC (permalink / raw)
  To: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	kuba, pabeni, horms, netdev, linux-kernel, dgcbueu
  Cc: Álvaro Fernández Rojas

Add support for legacy Broadcom FCS tags, which are similar to
DSA_TAG_PROTO_BRCM_LEGACY.
BCM5325 and BCM5365 switches require including the original FCS value and
length, as opposed to BCM63xx switches.
Adding the original FCS value and length to DSA_TAG_PROTO_BRCM_LEGACY would
impact performance of BCM63xx switches, so it's better to create a new tag.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 include/net/dsa.h  |  2 ++
 net/dsa/Kconfig    |  8 ++++++
 net/dsa/tag_brcm.c | 71 +++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index 55e2d97f247eb..d73ea08800660 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -54,11 +54,13 @@ struct tc_action;
 #define DSA_TAG_PROTO_RZN1_A5PSW_VALUE		26
 #define DSA_TAG_PROTO_LAN937X_VALUE		27
 #define DSA_TAG_PROTO_VSC73XX_8021Q_VALUE	28
+#define DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE	29
 
 enum dsa_tag_protocol {
 	DSA_TAG_PROTO_NONE		= DSA_TAG_PROTO_NONE_VALUE,
 	DSA_TAG_PROTO_BRCM		= DSA_TAG_PROTO_BRCM_VALUE,
 	DSA_TAG_PROTO_BRCM_LEGACY	= DSA_TAG_PROTO_BRCM_LEGACY_VALUE,
+	DSA_TAG_PROTO_BRCM_LEGACY_FCS	= DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE,
 	DSA_TAG_PROTO_BRCM_PREPEND	= DSA_TAG_PROTO_BRCM_PREPEND_VALUE,
 	DSA_TAG_PROTO_DSA		= DSA_TAG_PROTO_DSA_VALUE,
 	DSA_TAG_PROTO_EDSA		= DSA_TAG_PROTO_EDSA_VALUE,
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
index 2dfe9063613fe..e6696e8212cf3 100644
--- a/net/dsa/Kconfig
+++ b/net/dsa/Kconfig
@@ -49,6 +49,14 @@ config NET_DSA_TAG_BRCM_LEGACY
 	  Broadcom legacy switches which place the tag after the MAC source
 	  address.
 
+config NET_DSA_TAG_BRCM_LEGACY_FCS
+	tristate "Tag driver for Broadcom legacy switches using in-frame headers, FCS and length"
+	select NET_DSA_TAG_BRCM_COMMON
+	help
+	  Say Y if you want to enable support for tagging frames for the
+	  Broadcom legacy switches which place the tag after the MAC source
+	  address and require the original FCS and length.
+
 config NET_DSA_TAG_BRCM_PREPEND
 	tristate "Tag driver for Broadcom switches using prepended headers"
 	select NET_DSA_TAG_BRCM_COMMON
diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c
index 9f4b0bcd95cde..7bf4bde2d8672 100644
--- a/net/dsa/tag_brcm.c
+++ b/net/dsa/tag_brcm.c
@@ -15,6 +15,7 @@
 
 #define BRCM_NAME		"brcm"
 #define BRCM_LEGACY_NAME	"brcm-legacy"
+#define BRCM_LEGACY_FCS_NAME	"brcm-legacy-fcs"
 #define BRCM_PREPEND_NAME	"brcm-prepend"
 
 /* Legacy Broadcom tag (6 bytes) */
@@ -32,6 +33,10 @@
 #define BRCM_LEG_MULTICAST	(1 << 5)
 #define BRCM_LEG_EGRESS		(2 << 5)
 #define BRCM_LEG_INGRESS	(3 << 5)
+#define BRCM_LEG_LEN_HI(x)	(((x) >> 8) & 0x7)
+
+/* 4th byte in the tag */
+#define BRCM_LEG_LEN_LO(x)	((x) & 0xff)
 
 /* 6th byte in the tag */
 #define BRCM_LEG_PORT_ID	(0xf)
@@ -212,7 +217,8 @@ DSA_TAG_DRIVER(brcm_netdev_ops);
 MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_NAME);
 #endif
 
-#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) || \
+	IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
 static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
 					struct net_device *dev)
 {
@@ -244,7 +250,9 @@ static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
 
 	return skb;
 }
+#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY || CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS */
 
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
 static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
 					 struct net_device *dev)
 {
@@ -294,6 +302,64 @@ DSA_TAG_DRIVER(brcm_legacy_netdev_ops);
 MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY, BRCM_LEGACY_NAME);
 #endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY */
 
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
+static struct sk_buff *brcm_leg_fcs_tag_xmit(struct sk_buff *skb,
+					     struct net_device *dev)
+{
+	struct dsa_port *dp = dsa_user_to_port(dev);
+	unsigned int fcs_len;
+	u32 fcs_val;
+	u8 *brcm_tag;
+
+	/* The Ethernet switch we are interfaced with needs packets to be at
+	 * least 64 bytes (including FCS) otherwise they will be discarded when
+	 * they enter the switch port logic. When Broadcom tags are enabled, we
+	 * need to make sure that packets are at least 70 bytes
+	 * (including FCS and tag) because the length verification is done after
+	 * the Broadcom tag is stripped off the ingress packet.
+	 *
+	 * Let dsa_user_xmit() free the SKB
+	 */
+	if (__skb_put_padto(skb, ETH_ZLEN + BRCM_LEG_TAG_LEN, false))
+		return NULL;
+
+	fcs_len = skb->len;
+	fcs_val = swab32(crc32(~0, skb->data, fcs_len) ^ ~0);
+
+	skb_push(skb, BRCM_LEG_TAG_LEN);
+
+	dsa_alloc_etype_header(skb, BRCM_LEG_TAG_LEN);
+
+	brcm_tag = skb->data + 2 * ETH_ALEN;
+
+	/* Broadcom tag type */
+	brcm_tag[0] = BRCM_LEG_TYPE_HI;
+	brcm_tag[1] = BRCM_LEG_TYPE_LO;
+
+	/* Broadcom tag value */
+	brcm_tag[2] = BRCM_LEG_EGRESS | BRCM_LEG_LEN_HI(fcs_len);
+	brcm_tag[3] = BRCM_LEG_LEN_LO(fcs_len);
+	brcm_tag[4] = 0;
+	brcm_tag[5] = dp->index & BRCM_LEG_PORT_ID;
+
+	/* Original FCS value */
+	skb_put_data(skb, &fcs_val, ETH_FCS_LEN);
+
+	return skb;
+}
+
+static const struct dsa_device_ops brcm_legacy_fcs_netdev_ops = {
+	.name = BRCM_LEGACY_FCS_NAME,
+	.proto = DSA_TAG_PROTO_BRCM_LEGACY_FCS,
+	.xmit = brcm_leg_fcs_tag_xmit,
+	.rcv = brcm_leg_tag_rcv,
+	.needed_headroom = BRCM_LEG_TAG_LEN,
+};
+
+DSA_TAG_DRIVER(brcm_legacy_fcs_netdev_ops);
+MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY_FCS, BRCM_LEGACY_FCS_NAME);
+#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS */
+
 #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND)
 static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb,
 					     struct net_device *dev)
@@ -328,6 +394,9 @@ static struct dsa_tag_driver *dsa_tag_driver_array[] =	{
 #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
 	&DSA_TAG_DRIVER_NAME(brcm_legacy_netdev_ops),
 #endif
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
+	&DSA_TAG_DRIVER_NAME(brcm_legacy_fcs_netdev_ops),
+#endif
 #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND)
 	&DSA_TAG_DRIVER_NAME(brcm_prepend_netdev_ops),
 #endif
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH] net: dsa: b53: support legacy FCS tags
  2025-05-30 15:56 [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: legacy: reorganize functions Álvaro Fernández Rojas
  2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: add support for legacy FCS tags Álvaro Fernández Rojas
@ 2025-05-30 15:56 ` Álvaro Fernández Rojas
  2025-05-30 19:14   ` kernel test robot
  2025-05-30 15:58 ` [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
  3 siblings, 1 reply; 7+ messages in thread
From: Álvaro Fernández Rojas @ 2025-05-30 15:56 UTC (permalink / raw)
  To: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	kuba, pabeni, horms, netdev, linux-kernel, dgcbueu
  Cc: Álvaro Fernández Rojas

Commit 46c5176c586c ("net: dsa: b53: support legacy tags") introduced
support for legacy tags, but it turns out that BCM5325 and BCM5365
switches require the original FCS value and length, so they have to be
treated differently.

Fixes: 46c5176c586c ("net: dsa: b53: support legacy tags")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/net/dsa/b53/Kconfig      | 1 +
 drivers/net/dsa/b53/b53_common.c | 7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig
index ebaa4a80d5444..915008e8eff53 100644
--- a/drivers/net/dsa/b53/Kconfig
+++ b/drivers/net/dsa/b53/Kconfig
@@ -5,6 +5,7 @@ menuconfig B53
 	select NET_DSA_TAG_NONE
 	select NET_DSA_TAG_BRCM
 	select NET_DSA_TAG_BRCM_LEGACY
+	select NET_DSA_TAG_BRCM_LEGACY_FCS
 	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 132683ed3abe6..28a20bf0c669e 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -2262,8 +2262,11 @@ enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds, int port,
 		goto out;
 	}
 
-	/* Older models require a different 6 byte tag */
-	if (is5325(dev) || is5365(dev) || is63xx(dev)) {
+	/* Older models require different 6 byte tags */
+	if (is5325(dev) || is5365(dev)) {
+		dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY_FCS;
+		goto out;
+	} else if (is63xx(dev)) {
 		dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY;
 		goto out;
 	}
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] net: dsa: brcm: add legacy FCS tag
  2025-05-30 15:56 [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
                   ` (2 preceding siblings ...)
  2025-05-30 15:56 ` [PATCH] net: dsa: b53: support " Álvaro Fernández Rojas
@ 2025-05-30 15:58 ` Álvaro Fernández Rojas
  2025-05-31  1:33   ` Jakub Kicinski
  3 siblings, 1 reply; 7+ messages in thread
From: Álvaro Fernández Rojas @ 2025-05-30 15:58 UTC (permalink / raw)
  To: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	kuba, pabeni, horms, netdev, linux-kernel, dgcbueu

El vie, 30 may 2025 a las 17:56, Álvaro Fernández Rojas
(<noltari@gmail.com>) escribió:
>
> The existing brcm legacy tag only works with BCM63xx switches.
> These patches add a new legacy tag for BCM5325 and BCM5365 switches, which
> require including the FCS and length.
>
> Álvaro Fernández Rojas (3):
>   net: dsa: tag_brcm: legacy: reorganize functions
>   net: dsa: tag_brcm: add support for legacy FCS tags
>   net: dsa: b53: support legacy FCS tags
>
>  drivers/net/dsa/b53/Kconfig      |   1 +
>  drivers/net/dsa/b53/b53_common.c |   7 +-
>  include/net/dsa.h                |   2 +
>  net/dsa/Kconfig                  |   8 +++
>  net/dsa/tag_brcm.c               | 117 ++++++++++++++++++++++++-------
>  5 files changed, 109 insertions(+), 26 deletions(-)
>
> --
> 2.39.5
>

Sorry, but I've just realized that I generated the patches with "-N"...

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] net: dsa: b53: support legacy FCS tags
  2025-05-30 15:56 ` [PATCH] net: dsa: b53: support " Álvaro Fernández Rojas
@ 2025-05-30 19:14   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2025-05-30 19:14 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, jonas.gorski, florian.fainelli,
	andrew, olteanv, davem, edumazet, kuba, pabeni, horms, netdev,
	linux-kernel, dgcbueu
  Cc: oe-kbuild-all, Álvaro Fernández Rojas

Hi Álvaro,

kernel test robot noticed the following build errors:

[auto build test ERROR on net-next/main]
[also build test ERROR on net/main linus/master v6.15 next-20250530]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/lvaro-Fern-ndez-Rojas/net-dsa-b53-support-legacy-FCS-tags/20250530-235844
base:   net-next/main
patch link:    https://lore.kernel.org/r/20250530155618.273567-4-noltari%40gmail.com
patch subject: [PATCH] net: dsa: b53: support legacy FCS tags
config: sparc-randconfig-001-20250531 (https://download.01.org/0day-ci/archive/20250531/202505310308.8veTfz2G-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505310308.8veTfz2G-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505310308.8veTfz2G-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/net/dsa/b53/b53_common.c: In function 'b53_get_tag_protocol':
>> drivers/net/dsa/b53/b53_common.c:2267:23: error: 'DSA_TAG_PROTO_BRCM_LEGACY_FCS' undeclared (first use in this function); did you mean 'DSA_TAG_PROTO_BRCM_LEGACY'?
      dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY_FCS;
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          DSA_TAG_PROTO_BRCM_LEGACY
   drivers/net/dsa/b53/b53_common.c:2267:23: note: each undeclared identifier is reported only once for each function it appears in


vim +2267 drivers/net/dsa/b53/b53_common.c

  2254	
  2255	enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds, int port,
  2256						   enum dsa_tag_protocol mprot)
  2257	{
  2258		struct b53_device *dev = ds->priv;
  2259	
  2260		if (!b53_can_enable_brcm_tags(ds, port, mprot)) {
  2261			dev->tag_protocol = DSA_TAG_PROTO_NONE;
  2262			goto out;
  2263		}
  2264	
  2265		/* Older models require different 6 byte tags */
  2266		if (is5325(dev) || is5365(dev)) {
> 2267			dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY_FCS;
  2268			goto out;
  2269		} else if (is63xx(dev)) {
  2270			dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY;
  2271			goto out;
  2272		}
  2273	
  2274		/* Broadcom BCM58xx chips have a flow accelerator on Port 8
  2275		 * which requires us to use the prepended Broadcom tag type
  2276		 */
  2277		if (dev->chip_id == BCM58XX_DEVICE_ID && port == B53_CPU_PORT) {
  2278			dev->tag_protocol = DSA_TAG_PROTO_BRCM_PREPEND;
  2279			goto out;
  2280		}
  2281	
  2282		dev->tag_protocol = DSA_TAG_PROTO_BRCM;
  2283	out:
  2284		return dev->tag_protocol;
  2285	}
  2286	EXPORT_SYMBOL(b53_get_tag_protocol);
  2287	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] net: dsa: brcm: add legacy FCS tag
  2025-05-30 15:58 ` [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
@ 2025-05-31  1:33   ` Jakub Kicinski
  0 siblings, 0 replies; 7+ messages in thread
From: Jakub Kicinski @ 2025-05-31  1:33 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: jonas.gorski, florian.fainelli, andrew, olteanv, davem, edumazet,
	pabeni, horms, netdev, linux-kernel, dgcbueu

On Fri, 30 May 2025 17:58:36 +0200 Álvaro Fernández Rojas wrote:
> Sorry, but I've just realized that I generated the patches with "-N"...

FWIW networking tree is closed during the merge window (for another
week), so we can't process this anyway.. If you wanna repost please 
do so as an RFC.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-05-31  1:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-30 15:56 [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: legacy: reorganize functions Álvaro Fernández Rojas
2025-05-30 15:56 ` [PATCH] net: dsa: tag_brcm: add support for legacy FCS tags Álvaro Fernández Rojas
2025-05-30 15:56 ` [PATCH] net: dsa: b53: support " Álvaro Fernández Rojas
2025-05-30 19:14   ` kernel test robot
2025-05-30 15:58 ` [PATCH] net: dsa: brcm: add legacy FCS tag Álvaro Fernández Rojas
2025-05-31  1:33   ` Jakub Kicinski

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).