diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index a81338b501fbed3759832ddd19dd224e08be7d17..6e1018448eea9b00a21215d3b284933ffab836a1 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -675,6 +675,9 @@ static int rtl8169_set_speed_xmii(struct net_device *dev,
 
 		if (duplex == DUPLEX_HALF)
 			auto_nego &= ~(PHY_Cap_10_Full | PHY_Cap_100_Full);
+
+		if (duplex == DUPLEX_FULL)
+			auto_nego &= ~(PHY_Cap_10_Half | PHY_Cap_100_Half);
 	}
 
 	tp->phy_auto_nego_reg = auto_nego;