summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a090ca2)
raw | patch | inline | side by side (parent: a090ca2)
author | Jesper Nilsson <jesper.nilsson@axis.com> | |
Mon, 31 Aug 2009 16:28:26 +0000 (18:28 +0200) | ||
committer | Jesper Nilsson <jesper.nilsson@axis.com> | |
Mon, 31 Aug 2009 16:38:17 +0000 (18:38 +0200) |
If autonegotiation was disabled, we still set the
BMCR_ANENABLE and BMCR_ANRESTART, which resulted in autonegotiation
never being disabled.
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Reported-by: Julia Lawall <julia@diku.dk>
BMCR_ANENABLE and BMCR_ANRESTART, which resulted in autonegotiation
never being disabled.
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Reported-by: Julia Lawall <julia@diku.dk>
drivers/net/cris/eth_v10.c | patch | blob | history |
index 7a18dc7e5c7faa2f9e4359dcbea097147983cb2e..d70d2039bc4655432ce1dd05d927b9a8707f6910 100644 (file)
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) {
- data = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR);
- data |= BMCR_ANENABLE | BMCR_ANRESTART;
+ /* Renegotiate with link partner */
+ 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);
}