On Fri, Mar 25, 2016 at 04:29:52PM +0200, Corcodel Marian wrote: > This patch add support for half duplex on MDI chips. > > Signed-off-by: Corcodel Marian <a...@marian1000.go.ro> > --- > drivers/net/ethernet/realtek/r8169.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/realtek/r8169.c > b/drivers/net/ethernet/realtek/r8169.c > index 77c5efb..7f6fb1f 100644 > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c > @@ -1713,8 +1713,13 @@ static int rtl8169_set_speed_xmii(struct net_device > *dev, > else > goto out; > > - if (duplex == DUPLEX_FULL) > + if (duplex == DUPLEX_FULL) { > bmcr |= BMCR_FULLDPLX; > + } else if (duplex == DUPLEX_HALF) { > + bmcr |= ~BMCR_FULLDPLX; > + } else { > + goto out; > + }
Hi Corcodel What PHY is actually being used? One that is supported by drivers/net/phy/realtek.c? It looks like the bugs you are finding are all handling stuff which is generic, and well tested code in drivers/net/phy/phy_device.c would do for you, with less bugs. Maybe you want to consider throwing away the PHY code in r8169 and just implement an standard mdio bus, use phylib and the realtek.c phy driver? Andrew