[openwrt/openwrt] bmips: disable B53 MMAP phy read/write ops

LEDE Commits lede-commits at lists.infradead.org
Tue Mar 21 12:55:09 PDT 2023


noltari pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/82dc16fde0337b573c543f023f3fe1d3657e17e4

commit 82dc16fde0337b573c543f023f3fe1d3657e17e4
Author: Álvaro Fernández Rojas <noltari at gmail.com>
AuthorDate: Tue Mar 21 19:36:16 2023 +0100

    bmips: disable B53 MMAP phy read/write ops
    
    Without this change, internal and external B53 switches couldn't coexist as
    reported in https://github.com/openwrt/openwrt/issues/10313.
    In order to fix this we need to force the B53 MMAP DSA switch driver to use
    bcm6368-mdio-mux for accessing the PHY registers instead of its own phy_read()
    and phy_write() functions.
    
    Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
---
 .../drivers/net/ethernet/broadcom/bcm6368-enetsw.c |  2 +-
 ...t-dsa-b53-mmap-disable-phy-read-write-ops.patch | 46 ++++++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c b/target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c
index 64736ebf61..f43e484a9b 100644
--- a/target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c
+++ b/target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c
@@ -22,7 +22,7 @@
 #include <linux/reset.h>
 
 /* MTU */
-#define ENETSW_TAG_SIZE			6
+#define ENETSW_TAG_SIZE			(6 + VLAN_HLEN)
 #define ENETSW_MTU_OVERHEAD		(VLAN_ETH_HLEN + VLAN_HLEN + \
 					 ENETSW_TAG_SIZE)
 #define ENETSW_FRAG_SIZE(x)		(SKB_DATA_ALIGN(NET_SKB_PAD + x + \
diff --git a/target/linux/bmips/patches-5.15/510-net-dsa-b53-mmap-disable-phy-read-write-ops.patch b/target/linux/bmips/patches-5.15/510-net-dsa-b53-mmap-disable-phy-read-write-ops.patch
new file mode 100644
index 0000000000..3b1ee6cfa2
--- /dev/null
+++ b/target/linux/bmips/patches-5.15/510-net-dsa-b53-mmap-disable-phy-read-write-ops.patch
@@ -0,0 +1,46 @@
+From 03e31e5197a041857299c70bbbc461131156d434 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari at gmail.com>
+Date: Tue, 21 Mar 2023 19:11:58 +0100
+Subject: [PATCH] net: dsa: b53: mmap: disable phy read/write ops
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+B53 MMAP switches have a MDIO Mux bus controller which should be used instead
+of phy_read() and phy_write() ops.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
+---
+ drivers/net/dsa/b53/b53_mmap.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/net/dsa/b53/b53_mmap.c
++++ b/drivers/net/dsa/b53/b53_mmap.c
+@@ -279,6 +279,7 @@ static int b53_mmap_probe(struct platfor
+ 	struct b53_platform_data *pdata = pdev->dev.platform_data;
+ 	struct b53_mmap_priv *priv;
+ 	struct b53_device *dev;
++	struct dsa_switch_ops *dso;
+ 	int ret;
+ 
+ 	if (!pdata && np) {
+@@ -298,10 +299,19 @@ static int b53_mmap_probe(struct platfor
+ 
+ 	priv->regs = pdata->regs;
+ 
++	dso = devm_kzalloc(&pdev->dev, sizeof(*dso), GFP_KERNEL);
++	if (!dso)
++		return -ENOMEM;
++
+ 	dev = b53_switch_alloc(&pdev->dev, &b53_mmap_ops, priv);
+ 	if (!dev)
+ 		return -ENOMEM;
+ 
++	memcpy(dso, dev->ds->ops, sizeof(*dso));
++	dso->phy_read = NULL;
++	dso->phy_write = NULL;
++	dev->ds->ops = dso;
++
+ 	dev->pdata = pdata;
+ 
+ 	platform_set_drvdata(pdev, dev);




More information about the lede-commits mailing list