sis900: don't restart auto-negotiation each time after link resume.
Subsystems (3)
PATCH 1/1 sis900: don't restart auto-negotiation each time after link resume.
Signed-off-by Denis Kirjanov <[email protected]>
--- drivers/net/ethernet/sis/sis900.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-)
drivers/net/ethernet/sis/sis900.c +11 -17
@@ -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 )){
Signature · 1 line
1.8.0.2
From: Denis Kirjanov <[email protected]>
Date: Fri, 16 Aug 2013 11:20:07 +0400
Quoted 1 line
Signed-off-by Denis Kirjanov <[email protected]>
Applied, thanks.