Commit 89fbd26c authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller

r8169: fix firmware not resetting tp->ocp_base

Typically the firmware takes care that tp->ocp_base is reset to its
default value. That's not the case (at least) for RTL8117.
As a result subsequent PHY access reads/writes the wrong page and
the link is broken. Fix this be resetting tp->ocp_base explicitly.

Fixes: 229c1e0d ("r8169: load firmware for RTL8168fp/RTL8117")
Reported-by: default avatarAaron Ma <mapengyu@gmail.com>
Tested-by: default avatarAaron Ma <mapengyu@gmail.com>
Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8b40eb73
...@@ -2114,8 +2114,11 @@ static void rtl_release_firmware(struct rtl8169_private *tp) ...@@ -2114,8 +2114,11 @@ static void rtl_release_firmware(struct rtl8169_private *tp)
void r8169_apply_firmware(struct rtl8169_private *tp) void r8169_apply_firmware(struct rtl8169_private *tp)
{ {
/* TODO: release firmware if rtl_fw_write_firmware signals failure. */ /* TODO: release firmware if rtl_fw_write_firmware signals failure. */
if (tp->rtl_fw) if (tp->rtl_fw) {
rtl_fw_write_firmware(tp, tp->rtl_fw); rtl_fw_write_firmware(tp, tp->rtl_fw);
/* At least one firmware doesn't reset tp->ocp_base. */
tp->ocp_base = OCP_STD_PHY_BASE;
}
} }
static void rtl8168_config_eee_mac(struct rtl8169_private *tp) static void rtl8168_config_eee_mac(struct rtl8169_private *tp)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment