r8152: save the speed
authorhayeswang <hayeswang@realtek.com>
Mon, 13 Jun 2016 09:49:38 +0000 (17:49 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Jun 2016 05:37:48 +0000 (22:37 -0700)
The user may change the speed. Use it to replace the default one.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/r8152.c

index dcdc4fa50d311d45fc783e6b9bbde16f87213925..69d1bbfd1fa0a907532d08d35c5bcbfce80fe79b 100644 (file)
@@ -628,8 +628,11 @@ struct r8152 {
        u32 tx_qlen;
        u32 coalesce;
        u16 ocp_base;
+       u16 speed;
        u8 *intr_buff;
        u8 version;
+       u8 duplex;
+       u8 autoneg;
 };
 
 enum rtl_version {
@@ -3051,9 +3054,7 @@ static void rtl_hw_phy_work_func_t(struct work_struct *work)
 
        tp->rtl_ops.hw_phy_cfg(tp);
 
-       rtl8152_set_speed(tp, AUTONEG_ENABLE,
-                         tp->mii.supports_gmii ? SPEED_1000 : SPEED_100,
-                         DUPLEX_FULL);
+       rtl8152_set_speed(tp, tp->autoneg, tp->speed, tp->duplex);
 
        mutex_unlock(&tp->control);
 
@@ -3679,6 +3680,11 @@ static int rtl8152_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
        mutex_lock(&tp->control);
 
        ret = rtl8152_set_speed(tp, cmd->autoneg, cmd->speed, cmd->duplex);
+       if (!ret) {
+               tp->autoneg = cmd->autoneg;
+               tp->speed = cmd->speed;
+               tp->duplex = cmd->duplex;
+       }
 
        mutex_unlock(&tp->control);
 
@@ -4239,6 +4245,10 @@ static int rtl8152_probe(struct usb_interface *intf,
                break;
        }
 
+       tp->autoneg = AUTONEG_ENABLE;
+       tp->speed = tp->mii.supports_gmii ? SPEED_1000 : SPEED_100;
+       tp->duplex = DUPLEX_FULL;
+
        intf->needs_remote_wakeup = 1;
 
        tp->rtl_ops.init(tp);