On Mon, 2014-01-27 at 07:59 +0400, Max Filippov wrote: > OpenCores 10/100 Mbps MAC does not support speeds above 100 Mbps, but does > not disable advertisement when PHY supports them. This results in > non-functioning network when the MAC is connected to a gigabit PHY connected > to a gigabit switch. > > The fix is to disable gigabit speed advertisement on attached PHY > unconditionally. > > Signed-off-by: Max Filippov <jcmvbkbc@xxxxxxxxx> > --- > drivers/net/ethernet/ethoc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c > index 4de8cfd..0aa1a05 100644 > --- a/drivers/net/ethernet/ethoc.c > +++ b/drivers/net/ethernet/ethoc.c > @@ -712,6 +712,8 @@ static int ethoc_open(struct net_device *dev) > netif_start_queue(dev); > } > > + priv->phy->advertising &= ~(ADVERTISED_1000baseT_Full | > + ADVERTISED_1000baseT_Half); > phy_start(priv->phy); > napi_enable(&priv->napi); > This is not sufficient to disable gigabit speeds; the supported mask should also be limited. And it should be done even before the net device is registered. Rather than poking into the phy_device structure directly from this driver, I think you should add a function in phylib for this purpose. Ben. -- Ben Hutchings If at first you don't succeed, you're doing about average.
Attachment:
signature.asc
Description: This is a digitally signed message part