NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/42314: IC Plus IP100x PHY support



The following reply was made to PR kern/42314; it has been noted by GNATS.

From: Andrius V <vezhlys%gmail.com@localhost>
To: SAITOH Masanobu <msaitoh%execsw.org@localhost>
Cc: gnats-bugs%netbsd.org@localhost, msaitoh%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, 
	netbsd-bugs%netbsd.org@localhost, tharada%oucrc.org@localhost
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Wed, 20 Nov 2019 21:45:23 +0200

 Tested, this patch works well. Changing media type works in all cases
 now. Thanks.
 
 On Wed, Nov 20, 2019 at 5:14 PM SAITOH Masanobu <msaitoh%execsw.org@localhost> wrote:
 >
 > On 2019/11/20 15:25, Andrius V wrote:
 > > Hi,
 > >
 > > With the latest code ifconfig selects media correctly and I don't see
 > > watchdog timeout messages but dhcpcd still fails to get IP address
 > > properly though (assigns 169.254.161.13/16) and network is not working
 > > because of that. Same happens with 1000baseT-FDX and 1000baseT now
 > > (for 1000baseT it is a regression since previous commit). Reselecting
 > > auto or lower media types (100baseT, 10baseT) works correctly and dhcp
 > > reassigns proper the IP address.
 >
 > Could you test the following diff?
 > - Set duplex correctly when user setting is not IFM_AUTO.
 > - When the link is up, set VGE_DIAGCTL not from user media setting but from
 >   the current active link status.
 >
 > Index: if_vge.c
 > ===================================================================
 > RCS file: /cvsroot/src/sys/dev/pci/if_vge.c,v
 > retrieving revision 1.76
 > diff -u -p -r1.76 if_vge.c
 > --- if_vge.c    19 Nov 2019 09:54:07 -0000      1.76
 > +++ if_vge.c    20 Nov 2019 15:08:28 -0000
 > @@ -1928,33 +1928,34 @@ vge_miibus_statchg(struct ifnet *ifp)
 >          * always implied, so we turn on the forced mode bit but leave
 >          * the FDX bit cleared.
 >          */
 > -
 >         dctl = CSR_READ_1(sc, VGE_DIAGCTL);
 >
 > -       switch (IFM_SUBTYPE(ife->ifm_media)) {
 > -       case IFM_AUTO:
 > +       if (IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO) {
 >                 dctl &= ~VGE_DIAGCTL_MACFORCE;
 >                 dctl &= ~VGE_DIAGCTL_FDXFORCE;
 > -               break;
 > -       case IFM_1000_T:
 > -               dctl |= VGE_DIAGCTL_MACFORCE;
 > -               dctl &= ~VGE_DIAGCTL_FDXFORCE;
 > -               dctl |= VGE_DIAGCTL_GMII;
 > -               break;
 > -       case IFM_100_TX:
 > -       case IFM_10_T:
 > +       } else {
 > +               u_int ifmword;
 > +
 > +               /* If the link is up, use the current active media. */
 > +               if ((mii->mii_media_status & IFM_ACTIVE) != 0)
 > +                       ifmword = mii->mii_media_active;
 > +               else
 > +                       ifmword = ife->ifm_media;
 > +
 >                 dctl |= VGE_DIAGCTL_MACFORCE;
 > -               dctl &= ~VGE_DIAGCTL_GMII;
 > -               if ((ife->ifm_media & IFM_FDX) != 0)
 > +               if ((ifmword & IFM_FDX) != 0)
 >                         dctl |= VGE_DIAGCTL_FDXFORCE;
 >                 else
 >                         dctl &= ~VGE_DIAGCTL_FDXFORCE;
 > -               break;
 > -       default:
 > -               printf("%s: unknown media type: %x\n",
 > -                   device_xname(sc->sc_dev),
 > -                   IFM_SUBTYPE(ife->ifm_media));
 > -               break;
 > +
 > +               if (IFM_SUBTYPE(ifmword) == IFM_1000_T) {
 > +                       /*
 > +                        * It means the user setting is not auto and it's
 > +                        * 1000baseT-FDX or 1000baseT.
 > +                        */
 > +                       dctl |= VGE_DIAGCTL_GMII;
 > +               } else
 > +                       dctl &= ~VGE_DIAGCTL_GMII;
 >         }
 >
 >         CSR_WRITE_1(sc, VGE_DIAGCTL, dctl);
 > -----------
 >
 >
 >
 > The same diff is at:
 >
 >         http://www.netbsd.org/~msaitoh/vge-20191120-0.dif
 >
 > Thanks in advance.
 >
 > --
 > -----------------------------------------------
 >                 SAITOH Masanobu (msaitoh%execsw.org@localhost
 >                                  msaitoh%netbsd.org@localhost)
 


Home | Main Index | Thread Index | Old Index