Module Name: src
Committed By: msaitoh
Date: Tue Jan 8 08:10:10 UTC 2019
Modified Files:
src/sys/dev/pci: if_bnx.c
Log Message:
Fix a bug that bnx_miibus_read_reg() returns wrong value when
BNX_PHY_INT_MODE_AUTO_POLLING_FLAG is set. This bug doesn't cause a real
problem because BNX_PHY_INT_MODE_AUTO_POLLING_FLAG is not set.
To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 src/sys/dev/pci/if_bnx.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_bnx.c
diff -u src/sys/dev/pci/if_bnx.c:1.66 src/sys/dev/pci/if_bnx.c:1.67
--- src/sys/dev/pci/if_bnx.c:1.66 Tue Jan 8 06:55:50 2019
+++ src/sys/dev/pci/if_bnx.c Tue Jan 8 08:10:10 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bnx.c,v 1.66 2019/01/08 06:55:50 msaitoh Exp $ */
+/* $NetBSD: if_bnx.c,v 1.67 2019/01/08 08:10:10 msaitoh Exp $ */
/* $OpenBSD: if_bnx.c,v 1.85 2009/11/09 14:32:41 dlg Exp $ */
/*-
@@ -35,7 +35,7 @@
#if 0
__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.3 2006/04/13 14:12:26 ru Exp $");
#endif
-__KERNEL_RCSID(0, "$NetBSD: if_bnx.c,v 1.66 2019/01/08 06:55:50 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bnx.c,v 1.67 2019/01/08 08:10:10 msaitoh Exp $");
/*
* The following controllers are supported by this driver:
@@ -1019,7 +1019,7 @@ int
bnx_miibus_read_reg(device_t dev, int phy, int reg)
{
struct bnx_softc *sc = device_private(dev);
- uint32_t val;
+ uint32_t val, data;
int i;
/* Make sure we are accessing the correct PHY address. */
@@ -1040,35 +1040,35 @@ bnx_miibus_read_reg(device_t dev, int ph
}
if (sc->bnx_phy_flags & BNX_PHY_INT_MODE_AUTO_POLLING_FLAG) {
- val = REG_RD(sc, BNX_EMAC_MDIO_MODE);
- val &= ~BNX_EMAC_MDIO_MODE_AUTO_POLL;
+ data = REG_RD(sc, BNX_EMAC_MDIO_MODE);
+ data &= ~BNX_EMAC_MDIO_MODE_AUTO_POLL;
- REG_WR(sc, BNX_EMAC_MDIO_MODE, val);
+ REG_WR(sc, BNX_EMAC_MDIO_MODE, data);
REG_RD(sc, BNX_EMAC_MDIO_MODE);
DELAY(40);
}
- val = BNX_MIPHY(phy) | BNX_MIREG(reg) |
+ data = BNX_MIPHY(phy) | BNX_MIREG(reg) |
BNX_EMAC_MDIO_COMM_COMMAND_READ | BNX_EMAC_MDIO_COMM_DISEXT |
BNX_EMAC_MDIO_COMM_START_BUSY;
- REG_WR(sc, BNX_EMAC_MDIO_COMM, val);
+ REG_WR(sc, BNX_EMAC_MDIO_COMM, data);
for (i = 0; i < BNX_PHY_TIMEOUT; i++) {
DELAY(10);
- val = REG_RD(sc, BNX_EMAC_MDIO_COMM);
- if (!(val & BNX_EMAC_MDIO_COMM_START_BUSY)) {
+ data = REG_RD(sc, BNX_EMAC_MDIO_COMM);
+ if (!(data & BNX_EMAC_MDIO_COMM_START_BUSY)) {
DELAY(5);
- val = REG_RD(sc, BNX_EMAC_MDIO_COMM);
- val &= BNX_EMAC_MDIO_COMM_DATA;
+ data = REG_RD(sc, BNX_EMAC_MDIO_COMM);
+ data &= BNX_EMAC_MDIO_COMM_DATA;
break;
}
}
- if (val & BNX_EMAC_MDIO_COMM_START_BUSY) {
+ if (data & BNX_EMAC_MDIO_COMM_START_BUSY) {
BNX_PRINTF(sc, "%s(%d): Error: PHY read timeout! phy = %d, "
"reg = 0x%04X\n", __FILE__, __LINE__, phy, reg);
val = 0x0;
@@ -1080,10 +1080,10 @@ bnx_miibus_read_reg(device_t dev, int ph
(uint16_t) reg & 0xffff, (uint16_t) val & 0xffff);
if (sc->bnx_phy_flags & BNX_PHY_INT_MODE_AUTO_POLLING_FLAG) {
- val = REG_RD(sc, BNX_EMAC_MDIO_MODE);
- val |= BNX_EMAC_MDIO_MODE_AUTO_POLL;
+ data = REG_RD(sc, BNX_EMAC_MDIO_MODE);
+ data |= BNX_EMAC_MDIO_MODE_AUTO_POLL;
- REG_WR(sc, BNX_EMAC_MDIO_MODE, val);
+ REG_WR(sc, BNX_EMAC_MDIO_MODE, data);
REG_RD(sc, BNX_EMAC_MDIO_MODE);
DELAY(40);