diff options
Diffstat (limited to 'drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c')
-rw-r--r-- | drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c b/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c index b1a83fdbefb8..4134da1aa2e2 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c @@ -349,7 +349,8 @@ static void xgene_sgmac_init(struct xgene_enet_pdata *p) if (!(p->enet_id == XGENE_ENET2 && p->mdio_driver)) xgene_sgmac_reset(p); - xgene_sgmii_enable_autoneg(p); + if (p->mac_to_mac_speed == 0) + xgene_sgmii_enable_autoneg(p); xgene_sgmac_set_speed(p); xgene_sgmac_set_mac_addr(p); @@ -548,7 +549,13 @@ static void xgene_enet_link_state(struct work_struct *work) struct net_device *ndev = p->ndev; u32 link, poll_interval; - link = xgene_enet_link_status(p); + if (p->mac_to_mac_speed == 0) { + link = xgene_enet_link_status(p); + } else { + p->phy_speed = p->mac_to_mac_speed; + link = 1; + } + if (link) { if (!netif_carrier_ok(ndev)) { netif_carrier_on(ndev); |