aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/net/realtek.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/net/realtek.c')
-rw-r--r--src/drivers/net/realtek.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/drivers/net/realtek.c b/src/drivers/net/realtek.c
index 0af3416..a43efb6 100644
--- a/src/drivers/net/realtek.c
+++ b/src/drivers/net/realtek.c
@@ -420,6 +420,16 @@ static int realtek_phy_reset ( struct realtek_nic *rtl ) {
*/
}
+ /* Some cards (e.g. RTL8211B) have a hardware errata that
+ * requires the MII_MMD_DATA register to be cleared before the
+ * link will come up.
+ */
+ if ( ( rc = mii_write ( &rtl->mii, MII_MMD_DATA, 0 ) ) != 0 ) {
+ /* Ignore failures, since the register may not be
+ * present on all PHYs.
+ */
+ }
+
/* Restart autonegotiation */
if ( ( rc = mii_restart ( &rtl->mii ) ) != 0 ) {
DBGC ( rtl, "REALTEK %p could not restart MII: %s\n",