diff --git a/drivers/qe/uec_phy.c b/drivers/qe/uec_phy.c
index c549b6bb99cc39b47e3d12fb1b77885c879ef496..cf9921b37f302a937aa9df2ece32128d29474722 100644
--- a/drivers/qe/uec_phy.c
+++ b/drivers/qe/uec_phy.c
@@ -574,6 +574,7 @@ void marvell_phy_interface_mode (struct eth_device *dev,
 {
 	uec_private_t *uec = (uec_private_t *) dev->priv;
 	struct uec_mii_info *mii_info;
+	u16 status;
 
 	if (!uec->mii_info) {
 		printf ("%s: the PHY not intialized\n", __FUNCTION__);
@@ -609,6 +610,13 @@ void marvell_phy_interface_mode (struct eth_device *dev,
 		phy_write (mii_info, 0x00, 0x8100);
 		udelay (1000000);
 	}
+
+	/* handle 88e1111 rev.B2 erratum 5.6 */
+	if (mii_info->autoneg) {
+		status = phy_read (mii_info, PHY_BMCR);
+		phy_write (mii_info, PHY_BMCR, status | PHY_BMCR_AUTON);
+	}
+	/* now the B2 will correctly report autoneg completion status */
 }
 
 void change_phy_interface_mode (struct eth_device *dev, enet_interface_e mode)