Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6cd1974 authored by Jesper Nilsson's avatar Jesper Nilsson
Browse files

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
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -768,10 +768,24 @@ e100_negotiate(struct net_device* dev)

	e100_set_mdio_reg(dev, np->mii_if.phy_id, MII_ADVERTISE, data);

	/* Renegotiate with link partner */
	if (autoneg_normal) {
	data = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_BMCR);
	if (autoneg_normal) {
		/* 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);
}