aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxiong <xiong@qca.qualcomm.com>2013-01-19 13:14:59 +0800
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>2013-01-24 07:56:06 -0800
commit1bf586b3f72f9679dc3afcb7b317d509b41ff6b0 (patch)
tree7f1fbdf9e8e7a4cd2b956f94fe383e59fb609102
parent8d5c4814cfbc7357716f82b791a2e2b535937382 (diff)
downloadalx-1bf586b3f72f9679dc3afcb7b317d509b41ff6b0.tar.gz
alx: fix wrong speed setting for WoL
WoL speed is wrongly set to 100M, revise it to 10M as 1st priority for powersaving. Signed-off-by: xiong <xiong@qca.qualcomm.com> Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
-rw-r--r--src/alx_hw.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/alx_hw.c b/src/alx_hw.c
index 7a220c6..ee6e72c 100644
--- a/src/alx_hw.c
+++ b/src/alx_hw.c
@@ -765,11 +765,8 @@ int alx_pre_suspend(struct alx_hw *hw, u16 speed)
if (speed >= SPEED_1000)
FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_1000);
phy |= ALX_PHY_CTRL_DSPRST_OUT;
- if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY)
- err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP);
- if (!err)
- err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG,
- ALX_MIIEXT_S3DIG10, ALX_MIIEXT_S3DIG10_SL);
+ err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG,
+ ALX_MIIEXT_S3DIG10, ALX_MIIEXT_S3DIG10_SL);
config_reg:
if (!err) {
@@ -1306,17 +1303,19 @@ int alx_select_powersaving_speed(struct alx_hw *hw, u16 *speed)
*speed = spd;
goto out;
}
- if (lpa & LPA_100FULL)
- *speed = SPEED_100 + FULL_DUPLEX;
- else if (lpa & LPA_100HALF)
- *speed = SPEED_100 + HALF_DUPLEX;
- else if (lpa & LPA_10FULL)
+ if (lpa & LPA_10FULL)
*speed = SPEED_10 + FULL_DUPLEX;
- else
+ else if (lpa & LPA_10HALF)
*speed = SPEED_10 + HALF_DUPLEX;
+ else if (lpa & LPA_100FULL)
+ *speed = SPEED_100 + FULL_DUPLEX;
+ else
+ *speed = SPEED_100 + HALF_DUPLEX;
if (*speed != spd) {
-
+ err = alx_write_phy_reg(hw, ALX_MII_IER, 0);
+ if (err)
+ goto out;
err = alx_setup_speed_duplex(hw,
ALX_SPEED_TO_ETHADV(*speed) | ADVERTISED_Autoneg,
ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX);