patch 'net/axgbe: fix MDIO access for non-zero ports and CL45 PHYs' has been queued to stable release 21.11.8
Kevin Traynor
ktraynor at redhat.com
Fri Aug 23 18:17:25 CEST 2024
Hi,
FYI, your patch has been queued to stable release 21.11.8
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 08/28/24. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8eeb4d4534686c1ac2fde62b2db83db1060cb11b
Thanks.
Kevin
---
>From 8eeb4d4534686c1ac2fde62b2db83db1060cb11b Mon Sep 17 00:00:00 2001
From: Venkat Kumar Ande <venkatkumar.ande at amd.com>
Date: Tue, 4 Jun 2024 17:41:33 +0530
Subject: [PATCH] net/axgbe: fix MDIO access for non-zero ports and CL45 PHYs
[ upstream commit d06394d2641e3fdc0538a23354d9ff7c5aa9b277 ]
The XGBE supports performing MDIO operations using an MDIO command
request. The driver mistakenly uses the mdio port address as the
MDIO command request device address instead of the MDIO command
request port address. Additionally, the driver does not properly check
for and create a clause 45 MDIO command
Without the fix PHY device is not detected and can't be usable.
Check the supplied MDIO register to determine if the request is a clause
45 operation (MII_ADDR_C45). For a clause 45 operation, extract device
address and register number from the supplied MDIO register and use them
to set the MDIO command request device address and register number
fields. For a clause 22 operation, the MDIO request device address is
set to zero and the MDIO command request register number is set to the
supplied MDIO register. In either case, the supplied MDIO port address
is used as the MDIO command request port address.
Fixes: 4ac7516b8b39 ("net/axgbe: add phy init and related APIs")
Signed-off-by: Venkat Kumar Ande <venkatkumar.ande at amd.com>
Acked-by: Selwin Sebastian <selwin.sebastian at amd.com>
---
drivers/net/axgbe/axgbe_common.h | 2 --
drivers/net/axgbe/axgbe_dev.c | 22 ++++++++++++++++------
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_common.h
index df0aa21a9b..9618d7e33b 100644
--- a/drivers/net/axgbe/axgbe_common.h
+++ b/drivers/net/axgbe/axgbe_common.h
@@ -408,6 +408,4 @@
#define MAC_MDIOSCAR_RA_INDEX 0
#define MAC_MDIOSCAR_RA_WIDTH 16
-#define MAC_MDIOSCAR_REG_INDEX 0
-#define MAC_MDIOSCAR_REG_WIDTH 21
#define MAC_MDIOSCCDR_BUSY_INDEX 22
#define MAC_MDIOSCCDR_BUSY_WIDTH 1
diff --git a/drivers/net/axgbe/axgbe_dev.c b/drivers/net/axgbe/axgbe_dev.c
index 6a7fddffca..3389954aa6 100644
--- a/drivers/net/axgbe/axgbe_dev.c
+++ b/drivers/net/axgbe/axgbe_dev.c
@@ -64,4 +64,18 @@ static int mdio_complete(struct axgbe_port *pdata)
}
+static unsigned int axgbe_create_mdio_sca(int port, int reg)
+{
+ unsigned int mdio_sca, da;
+
+ da = (reg & MII_ADDR_C45) ? reg >> 16 : 0;
+
+ mdio_sca = 0;
+ AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, RA, reg);
+ AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, PA, port);
+ AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, da);
+
+ return mdio_sca;
+}
+
static int axgbe_write_ext_mii_regs(struct axgbe_port *pdata, int addr,
int reg, u16 val)
@@ -70,7 +84,5 @@ static int axgbe_write_ext_mii_regs(struct axgbe_port *pdata, int addr,
uint64_t timeout;
- mdio_sca = 0;
- AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg);
- AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr);
+ mdio_sca = axgbe_create_mdio_sca(addr, reg);
AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca);
@@ -98,7 +110,5 @@ static int axgbe_read_ext_mii_regs(struct axgbe_port *pdata, int addr,
uint64_t timeout;
- mdio_sca = 0;
- AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg);
- AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr);
+ mdio_sca = axgbe_create_mdio_sca(addr, reg);
AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca);
--
2.46.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2024-08-23 17:18:10.518391893 +0100
+++ 0017-net-axgbe-fix-MDIO-access-for-non-zero-ports-and-CL4.patch 2024-08-23 17:18:09.637429815 +0100
@@ -1 +1 @@
-From d06394d2641e3fdc0538a23354d9ff7c5aa9b277 Mon Sep 17 00:00:00 2001
+From 8eeb4d4534686c1ac2fde62b2db83db1060cb11b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d06394d2641e3fdc0538a23354d9ff7c5aa9b277 ]
+
@@ -24 +25,0 @@
-Cc: stable at dpdk.org
@@ -34 +35 @@
-index a5d11c5832..51532fb34a 100644
+index df0aa21a9b..9618d7e33b 100644
More information about the stable
mailing list