Commit e6cd1974 authored by Jesper Nilsson's avatar Jesper Nilsson

CRISv10: Don't autonegotiate if autonegotiation is off

If autonegotiation was disabled, we still set the
BMCR_ANENABLE and BMCR_ANRESTART, which resulted in autonegotiation
never being disabled.
Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
Reported-by: default avatarJulia Lawall <julia@diku.dk>
parent a090ca2c
...@@ -768,10 +768,24 @@ e100_negotiate(struct net_device* dev) ...@@ -768,10 +768,24 @@ e100_negotiate(struct net_device* dev)
e100_set_mdio_reg(dev, np->mii_if.phy_id, MII_ADVERTISE, data); e100_set_mdio_reg(dev, np->mii_if.phy_id, MII_ADVERTISE, data);
/* Renegotiate with link partner */ data = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR);
if (autoneg_normal) { if (autoneg_normal) {
data = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR); /* Renegotiate with link partner */
data |= BMCR_ANENABLE | BMCR_ANRESTART; data |= BMCR_ANENABLE | BMCR_ANRESTART;
} else {
/* Don't negotiate speed or duplex */
data &= ~(BMCR_ANENABLE | BMCR_ANRESTART);
/* Set speed and duplex static */
if (current_speed_selection == 10)
data &= ~BMCR_SPEED100;
else
data |= BMCR_SPEED100;
if (current_duplex != full)
data &= ~BMCR_FULLDPLX;
else
data |= BMCR_FULLDPLX;
} }
e100_set_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR, data); e100_set_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR, data);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment