NetBSD-Bugs archive

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

Re: port-i386/53494: vte doesn't work on eBox 3352DX3-AP



The following reply was made to PR port-i386/53494; it has been noted by GNATS.

From: Andrius V <vezhlys%gmail.com@localhost>
To: port-i386-maintainer%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, 
	netbsd-bugs%netbsd.org@localhost, gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: port-i386/53494: vte doesn't work on eBox 3352DX3-AP
Date: Mon, 13 Jan 2020 14:52:06 +0200

 Finally, I found some more clear clue on the failure - the main
 culprit for failed link establishment and not properly working PHY
 registers is mac reset (vte_reset code). It even distorts
 functionality to the point that OUI becomes different. Removing
 vte_reset from vte_attach changes OUI from 0xfcff2f back to 0x00d02d
 which is the same value as currently defined for RDC in
 miidevs.Commenting out all vte_reset calls keeps all PHY registers
 functional in all operations (and with some additional tweaks vte
 works quite well for me, while booted without ACPI/SMP; on ACPI still
 fails somewhere). Since Linux reset code is the same (I think they
 have a bug in waiting loop but it doesn't change functionality), I
 believe vte_reset should work though, but it should be used only on
 vte_init and vte_stop. However, I don't know yet, why this behavior is
 not elevated in Linux. Maybe, this Linux commit can be a culprit since
 NetBSD lacks this code:
 https://github.com/torvalds/linux/commit/06e92c33999fd66128c2256b0461455633c3d53c
 but I am not sure what is the counterpart of phy_start/stop in NetBSD
 to test? Is it ifmedia_init/ifmedia_set, or reattachment of PHY in
 general?
 
 It is not the only issue to make a fully work vte interface but
 vte_reset is certainly the main reason for PHY misbehavior. I think
 other issues may be easier to fix, since I already have working
 controller (at least on non ACPI/SMP boot) just need to pinpoint which
 of my changes were necessary (the latest comparison can be found in my
 github: https://github.com/vezhlys/netbsd-src/compare/master...vezhlys:vte#files_bucket).
 Any help appreciated. Thanks.
 
 Regards,
 Andrius V
 
 
 On Mon, Dec 23, 2019 at 2:50 PM Andrius V <vezhlys%gmail.com@localhost> wrote:
 >
 > The following reply was made to PR port-i386/53494; it has been noted by GNATS.
 >
 > From: Andrius V <vezhlys%gmail.com@localhost>
 > To: port-i386-maintainer%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
 >         netbsd-bugs%netbsd.org@localhost, gnats-bugs%netbsd.org@localhost
 > Cc:
 > Subject: Re: port-i386/53494: vte doesn't work on eBox 3352DX3-AP
 > Date: Mon, 23 Dec 2019 14:48:10 +0200
 >
 >  Hi,
 >
 >  There's a weird pattern which may give some clue to the issue: it
 >  seems like every second PHY register fails to be read
 >  (vte_miibus_readreg). Registers with the odd number (1,3,5, etc)
 >  return some "proper" non zero value or zero. Every even address
 >  (0,2,4, etc) return 0xFFFF though. Any idea why it may be happening?
 >
 >  On Fri, Oct 25, 2019 at 7:20 PM Andrius V <vezhlys%gmail.com@localhost> wrote:
 >  >
 >  > The following reply was made to PR port-i386/53494; it has been noted by GNATS.
 >  >
 >  > From: Andrius V <vezhlys%gmail.com@localhost>
 >  > To: port-i386-maintainer%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
 >  >         netbsd-bugs%netbsd.org@localhost, gnats-bugs%netbsd.org@localhost
 >  > Cc: Masanobu SAITOH <msaitoh%execsw.org@localhost>
 >  > Subject: Re: port-i386/53494: vte doesn't work on eBox 3352DX3-AP
 >  > Date: Fri, 25 Oct 2019 19:16:35 +0300
 >  >
 >  >  Hi,
 >  >
 >  >  I did some debugging on this issue. Seemingly the problem lies on
 >  >  ability to get MII_BMCR  and MII_RDCPHY_STATUS values (in
 >  >  rdcphy_status). They both return 0xffff value which I believe
 >  >  indicates some incorrect result. MII_BMSR has 0x782d value though.
 >  >
 >  >  In case, if I ignore BMCR checks and put mii->mii_media_active |=3D
 >  >  IFM_100_TX; by default, controller starts to work successfully (media
 >  >  is attached, IP is getting assigned and it can connect to network), so
 >  >  the hardware is OK by itself. Since the code is pretty much similar to
 >  >  many other phys, I fail to understand the reason behind this issue, I
 >  >  guess it may be some initialization issues in if_vte driver, but I
 >  >  tried to compare it to Linux r6040 driver and I didn't find anything
 >  >  radically different from NetBSD. Ideas where I can still check or what
 >  >  can be potential reasons are really welcome. Thank you.
 >  >
 >  >  ifconfig of working  vte0:
 >  >  vte0: flags=3D0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
 >  >          ec_capabilities=3D1<VLAN_MTU>
 >  >          ec_enabled=3D0
 >  >          address: xx:xx:xx:xx:xx:xx
 >  >          media: Ethernet autoselect (100baseTX)
 >  >          status: active
 >  >          inet 192.168.1.21/24 broadcast 192.168.1.255 flags 0x1<TENTATIVE>
 >  >          inet6 fe80::7257:8bd0:b0fa:afc0%vte0/64 flags 0x0 scopeid 0x1
 >  >
 >  >  Workaround diff (xxRDC defines new OUI):
 >  >
 >  >  diff --git a/sys/dev/mii/rdcphy.c b/sys/dev/mii/rdcphy.c
 >  >  index 427744a958d..20392efda70 100644
 >  >  --- a/sys/dev/mii/rdcphy.c
 >  >  +++ b/sys/dev/mii/rdcphy.c
 >  >  @@ -75,6 +75,7 @@ static const struct mii_phy_funcs rdcphy_funcs =3D {
 >  >
 >  >   static const struct mii_phydesc rdcphys[] =3D {
 >  >          MII_PHY_DESC(RDC, R6040),
 >  >  +       MII_PHY_DESC(xxRDC, R6040),
 >  >          MII_PHY_END,
 >  >   };
 >  >
 >  >  @@ -188,7 +189,6 @@ rdcphy_service(struct mii_softc *sc, struct
 >  >  mii_data *mii, int cmd)
 >  >                  }
 >  >                  break;
 >  >          }
 >  >  -
 >  >          /* Update the media status. */
 >  >          rdcphy_status(sc);
 >  >
 >  >  @@ -214,6 +214,8 @@ rdcphy_status(struct mii_softc *sc)
 >  >                  mii->mii_media_status |=3D IFM_ACTIVE;
 >  >
 >  >          PHY_READ(sc, MII_BMCR, &bmcr);
 >  >  +
 >  >  +       /*
 >  >          if ((bmcr & BMCR_ISO) !=3D 0) {
 >  >                  mii->mii_media_active |=3D IFM_NONE;
 >  >                  mii->mii_media_status =3D 0;
 >  >  @@ -222,6 +224,7 @@ rdcphy_status(struct mii_softc *sc)
 >  >
 >  >          if ((bmcr & BMCR_LOOP) !=3D 0)
 >  >                  mii->mii_media_active |=3D IFM_LOOP;
 >  >  +       */
 >  >
 >  >          if ((bmcr & BMCR_AUTOEN) !=3D 0) {
 >  >                  if ((bmsr & BMSR_ACOMP) =3D=3D 0) {
 >  >  @@ -239,7 +242,7 @@ rdcphy_status(struct mii_softc *sc)
 >  >                  mii->mii_media_active |=3D IFM_10_T;
 >  >                  break;
 >  >          default:
 >  >  -               mii->mii_media_active |=3D IFM_NONE;
 >  >  +               mii->mii_media_active |=3D IFM_100_TX;
 >  >                  return;
 >  >          }
 >  >          if ((physts & STATUS_FULL_DUPLEX) !=3D 0)
 >  >
 >  >  On Fri, Aug 3, 2018 at 12:05 AM <vezhlys%gmail.com@localhost> wrote:
 >  >  >
 >  >  > >Number:         53494
 >  >  > >Category:       port-i386
 >  >  > >Synopsis:       vte doesn't work on eBox 3352DX3-AP
 >  >  > >Confidential:   no
 >  >  > >Severity:       serious
 >  >  > >Priority:       low
 >  >  > >Responsible:    port-i386-maintainer
 >  >  > >State:          open
 >  >  > >Class:          sw-bug
 >  >  > >Submitter-Id:   net
 >  >  > >Arrival-Date:   Thu Aug 02 21:05:00 +0000 2018
 >  >  > >Originator:     Andrius V
 >  >  > >Release:        current
 >  >  > >Organization:
 >  >  > >Environment:
 >  >  > NetBSD vertexpc 8.99.22 NetBSD 8.99.22 (GENERIC) #0: Fri Jul 27 16:12:40 =
 >  >  UTC 2018  mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/i386/compile/GENERIC=
 >  >   i386
 >  >  > >Description:
 >  >  > Hello,
 >  >  >
 >  >  > I recently received eBox 3352DX3-AP system which is based on VortexDX3 CP=
 >  >  U. I am facing an issue with R6040 Ethernet controller on it. It can't set =
 >  >  a media type (even if I am trying to set supported one manually) and it doe=
 >  >  sn't have any status value, dhcpcd sets some incorrect IP and I can't acces=
 >  >  s the network. ifconfig vte0:
 >  >  > vte0: flags=3D0x8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> m=
 >  >  tu 1500
 >  >  >         ec_capabilities=3D1<VLAN_MTU>
 >  >  >         ec_enabled=3D0
 >  >  >         address: xx:xx:xx:xx:xx:xx
 >  >  >         media: Ethernet autoselect (none)
 >  >  >         inet 169.254.69.13/16 broadcast 169.254.255.255 flags 0x0
 >  >  >         inet6 fe80::7257:8bd0:b0fa:afc0%vte0/64 flags 0x0 scopeid 0x1
 >  >  >
 >  >  > General phy attaches to it (not a rdcphy) because it has different OUI an=
 >  >  d model. But even if I would register new OUI and model to rdcphy, it would=
 >  >  n't change the behavior.
 >  >  >
 >  >  > I am booting system without ACPI and SMP (it fails to boot with those bec=
 >  >  ause of other issue I still need to report). I tried controller on FreeBSD =
 >  >  and Linux as well. FreeBSD seems to have the same issue, Linux works though=
 >  >  . Please see dmesg below (there is also USB D-Link network card attached, i=
 >  >  t works):
 >  >  > NetBSD 8.99.22 (GENERIC) #0: Fri Jul 27 16:12:40 UTC 2018
 >  >  >         mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/i386/compile/GENERIC
 >  >  > total memory =3D 1983 MB
 >  >  > avail memory =3D 1930 MB
 >  >  > rnd: seeded with 128 bits
 >  >  > timecounter: Timecounters tick every 10.000 msec
 >  >  > Kernelized RAIDframe activated
 >  >  > running cgd selftest aes-xts-256 aes-xts-512 done
 >  >  > timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
 >  >  > RDC Semiconductor Co., Ltd. EMKORE                 (1.0                  =
 >  >   )
 >  >  > mainbus0 (root)
 >  >  > cpu0 at mainbus0
 >  >  > cpu0: Vortex86DX3, id 0x611
 >  >  > cpu0: package 0, core 0, smt 0
 >  >  > pci0 at mainbus0 bus 0: configuration mode 1
 >  >  > pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
 >  >  > pchb0 at pci0 dev 0 function 0: vendor 17f3 product 6023 (rev. 0x02)
 >  >  > ppb0 at pci0 dev 1 function 0: vendor 17f3 product 1031 (rev. 0x01)
 >  >  > ppb0: PCI Express capability version 1 <PCI/PCI-X to PCI-E Bridge> x1 @ 2=
 >  >  .5GT/s
 >  >  > pci1 at ppb0 bus 1
 >  >  > pci1: i/o space, memory space enabled, rd/line, wr/inv ok
 >  >  > ppb1 at pci0 dev 2 function 0: vendor 17f3 product 1031 (rev. 0x01)
 >  >  > ppb1: PCI Express capability version 1 <PCI/PCI-X to PCI-E Bridge> x1 @ 2=
 >  >  .5GT/s
 >  >  > pci2 at ppb1 bus 2
 >  >  > pci2: i/o space, memory space enabled, rd/line, wr/inv ok
 >  >  > pcib0 at pci0 dev 7 function 0: vendor 17f3 product 6035 (rev. 0x01)
 >  >  > pcib1 at pci0 dev 7 function 1: vendor 17f3 product 6035 (rev. 0x01)
 >  >  > vte0 at pci0 dev 8 function 0: vendor 17f3 product 6040 (rev. 0x00)
 >  >  > vte0: Ethernet address xx:xx:xx:xx:xx:xx
 >  >  > vte0: interrupting at irq 5
 >  >  > ukphy0 at vte0 phy 1: OUI 0xfcff2f, model 0x0005, rev. 0
 >  >  > ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
 >  >  > ohci0 at pci0 dev 10 function 0: vendor 17f3 product 6060 (rev. 0x14)
 >  >  > ohci0: interrupting at irq 14
 >  >  > ohci0: OHCI version 1.0, legacy support
 >  >  > usb0 at ohci0: USB revision 1.0
 >  >  > ehci0 at pci0 dev 10 function 1: vendor 17f3 product 6061 (rev. 0x08)
 >  >  > ehci0: interrupting at irq 7
 >  >  > ehci0: BIOS has given up ownership
 >  >  > ehci0: EHCI version 1.0
 >  >  > ehci0: 1 companion controller, 4 ports: ohci0
 >  >  > usb1 at ehci0: USB revision 2.0
 >  >  > rdcide0 at pci0 dev 12 function 0: RDC R1012 IDE controller (rev. 0x02)
 >  >  > rdcide0: bus-master DMA support present
 >  >  > rdcide0: primary channel configured to native-PCI mode
 >  >  > rdcide0: using irq 15 for native-PCI interrupt
 >  >  > atabus0 at rdcide0 channel 0
 >  >  > rdcide0: secondary channel configured to native-PCI mode
 >  >  > rdcide0: secondary channel ignored (disabled)
 >  >  > vga0 at pci0 dev 13 function 0: vendor 17f3 product 2015 (rev. 0x00)
 >  >  > wsdisplay0 at vga0 kbdmux 1: console (80x25, vt100 emulation)
 >  >  > wsmux1: connecting to wsdisplay0
 >  >  > drm at vga0 not configured
 >  >  > hdaudio0 at pci0 dev 14 function 0: HD Audio Controller
 >  >  > hdaudio0: interrupting at irq 14
 >  >  > hdafg0 at hdaudio0: vendor 10ec product 0262
 >  >  > hdafg0: DAC00 2ch: Speaker [Jack]
 >  >  > hdafg0: DIG01 2ch: Digital Out [Jack]
 >  >  > hdafg0: ADC02 2ch: Mic In [Jack]
 >  >  > hdafg0: ADC03 2ch: Line In [Jack]
 >  >  > hdafg0: 2ch/2ch 44100Hz 48000Hz 96000Hz 192000Hz PCM16 PCM20 PCM24 AC3
 >  >  > audio0 at hdafg0: full duplex, playback, capture, mmap, independent
 >  >  > hdafg0: Virtual format configured - Format SLINEAR, precision 16, channel=
 >  >  s 2, frequency 48000
 >  >  > hdafg0: Latency: 128 milliseconds
 >  >  > isa0 at pcib0
 >  >  > pckbc0 at isa0 port 0x60-0x64
 >  >  > attimer0 at isa0 port 0x40-0x43
 >  >  > pcppi0 at isa0 port 0x61
 >  >  > midi0 at pcppi0: PC speaker
 >  >  > sysbeep0 at pcppi0
 >  >  > attimer0: attached to pcppi0
 >  >  > isa at pcib1 not configured
 >  >  > timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
 >  >  > uhub0 at usb0: NetBSD (0000) OHCI root hub (0000), class 9/0, rev 1.00/1.=
 >  >  00, addr 1
 >  >  > uhub0: 4 ports with 4 removable, self powered
 >  >  > uhub1 at usb1: NetBSD (0000) EHCI root hub (0000), class 9/0, rev 2.00/1.=
 >  >  00, addr 1
 >  >  > uhub1: 4 ports with 4 removable, self powered
 >  >  > IPsec: Initialized Security Association Processing.
 >  >  > axen0 at uhub1 port 1
 >  >  > axen0: D-Link Elec. Corp. (0x2001) D-Link DUB-1312 (0x4a00), rev 2.10/1.0=
 >  >  0, addr 2
 >  >  > axen0: AX88179
 >  >  > axen0: Ethernet address xx:xx:xx:xx:xx:xx
 >  >  > rgephy0 at axen0 phy 3: RTL8169S/8110S/8211 1000BASE-T media interface, r=
 >  >  ev. 5
 >  >  > rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT-FDX, a=
 >  >  uto
 >  >  > ehci0: handing over low speed device on port 3 to ohci0
 >  >  > wd0 at atabus0 drive 0
 >  >  > wd0: <SS16G D0 RDC SD-IDE HOST CONTROLLER>
 >  >  > wd0: drive supports 1-sector PIO transfers, LBA addressing
 >  >  > wd0: 15193 MB, 30869 cyl, 16 head, 63 sec, 512 bytes/sect x 31116288 sect=
 >  >  ors
 >  >  > wd0: 32-bit data port
 >  >  > wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
 >  >  > wd0(rdcide0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/1=
 >  >  00) (using DMA)
 >  >  > boot device: wd0
 >  >  > root on wd0a dumps on wd0b
 >  >  > root file system type: ffs
 >  >  > kern.module.path=3D/stand/i386/8.99.22/modules
 >  >  > uhidev0 at uhub0 port 3 configuration 1 interface 0
 >  >  > uhidev0: USB (0x1c4f) USB Keykoard (0x02), rev 1.10/1.10, addr 2, iclass =
 >  >  3/1
 >  >  > ukbd0 at uhidev0: 8 Variable keys, 6 Array codes
 >  >  > wskbd0 at ukbd0: console keyboard, using wsdisplay0
 >  >  > uhidev1 at uhub0 port 3 configuration 1 interface 1
 >  >  > uhidev1: USB (0x1c4f) USB Keykoard (0x02), rev 1.10/1.10, addr 2, iclass =
 >  >  3/0
 >  >  > uhidev1: 2 report ids
 >  >  > uhid0 at uhidev1 reportid 1: input=3D2, output=3D0, feature=3D0
 >  >  > uhid1 at uhidev1 reportid 2: input=3D1, output=3D0, feature=3D0
 >  >  > wsdisplay0: screen 1 added (80x25, vt100 emulation)
 >  >  > wsdisplay0: screen 2 added (80x25, vt100 emulation)
 >  >  > wsdisplay0: screen 3 added (80x25, vt100 emulation)
 >  >  > wsdisplay0: screen 4 added (80x25, vt100 emulation)
 >  >  >
 >  >  > >How-To-Repeat:
 >  >  > Boot system and run dhcpcd client for vte0.
 >  >  > >Fix:
 >  >  >
 >  >
 >
 


Home | Main Index | Thread Index | Old Index