瀏覽代碼

net: ethernet: xilinx_emaclite: set protocol selector bits when writing ANAR

This patch sets the protocol selector bits (4:0) of the PHY's MII_ADVERTISE
register (ANAR) when writing ADVERTISE_ALL. The protocol selector bits are
indicating IEEE 803.3u support and are fixed / read-only on some PHYs. Not
setting them correctly on others (like TI DP83630) makes the PHY fall back
to 10M HDX mode which should be avoided.

Tested for TI DP83630 PHY on Microblaze platform.

Signed-off-by: Jens Renner <renner@efe-gmbh.de>
Tested-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jens Renner \(EFE\) 12 年之前
父節點
當前提交
3a5395b3d5
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      drivers/net/ethernet/xilinx/xilinx_emaclite.c

+ 2 - 1
drivers/net/ethernet/xilinx/xilinx_emaclite.c

@@ -946,7 +946,8 @@ static int xemaclite_open(struct net_device *dev)
 		phy_write(lp->phy_dev, MII_CTRL1000, 0);
 		phy_write(lp->phy_dev, MII_CTRL1000, 0);
 
 
 		/* Advertise only 10 and 100mbps full/half duplex speeds */
 		/* Advertise only 10 and 100mbps full/half duplex speeds */
-		phy_write(lp->phy_dev, MII_ADVERTISE, ADVERTISE_ALL);
+		phy_write(lp->phy_dev, MII_ADVERTISE, ADVERTISE_ALL |
+			  ADVERTISE_CSMA);
 
 
 		/* Restart auto negotiation */
 		/* Restart auto negotiation */
 		bmcr = phy_read(lp->phy_dev, MII_BMCR);
 		bmcr = phy_read(lp->phy_dev, MII_BMCR);