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

Commit 78f1ccc4 authored by Denis Kirjanov's avatar Denis Kirjanov Committed by David S. Miller
Browse files

sis900: don't restart auto-negotiation each time after link resume.

parent 2ff1cf12
Loading
Loading
Loading
Loading
+11 −17
Original line number Diff line number Diff line
@@ -1309,23 +1309,9 @@ static void sis900_timer(unsigned long data)
	struct sis900_private *sis_priv = netdev_priv(net_dev);
	struct mii_phy *mii_phy = sis_priv->mii;
	static const int next_tick = 5*HZ;
	int speed = 0, duplex = 0;
	u16 status;

	if (!sis_priv->autong_complete){
		int uninitialized_var(speed), duplex = 0;

		sis900_read_mode(net_dev, &speed, &duplex);
		if (duplex){
			sis900_set_mode(sis_priv, speed, duplex);
			sis630_set_eq(net_dev, sis_priv->chipset_rev);
			netif_carrier_on(net_dev);
		}

		sis_priv->timer.expires = jiffies + HZ;
		add_timer(&sis_priv->timer);
		return;
	}

	status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS);
	status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS);

@@ -1336,8 +1322,16 @@ static void sis900_timer(unsigned long data)
		status = sis900_default_phy(net_dev);
		mii_phy = sis_priv->mii;

		if (status & MII_STAT_LINK)
			sis900_check_mode(net_dev, mii_phy);
		if (status & MII_STAT_LINK) {
			WARN_ON(!(status & MII_STAT_AUTO_DONE));

			sis900_read_mode(net_dev, &speed, &duplex);
			if (duplex) {
				sis900_set_mode(sis_priv, speed, duplex);
				sis630_set_eq(net_dev, sis_priv->chipset_rev);
				netif_carrier_on(net_dev);
			}
		}
	} else {
	/* Link ON -> OFF */
                if (!(status & MII_STAT_LINK)){