diff options
author | xiong <xiong@qca.qualcomm.com> | 2013-01-19 13:14:59 +0800 |
---|---|---|
committer | Luis R. Rodriguez <mcgrof@do-not-panic.com> | 2013-01-24 07:56:06 -0800 |
commit | 1bf586b3f72f9679dc3afcb7b317d509b41ff6b0 (patch) | |
tree | 7f1fbdf9e8e7a4cd2b956f94fe383e59fb609102 | |
parent | 8d5c4814cfbc7357716f82b791a2e2b535937382 (diff) | |
download | alx-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.c | 23 |
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); |