* issues to bring up two VSC8531 PHYs
@ 2023-04-12 20:11 Ron Eggler
2023-04-12 22:10 ` Andrew Lunn
2023-04-12 22:12 ` Heiner Kallweit
0 siblings, 2 replies; 13+ messages in thread
From: Ron Eggler @ 2023-04-12 20:11 UTC (permalink / raw)
To: netdev
Hi,
I am trying to bring up a pair of VSC9531 PHYs on an embedded system. I'm using a Yocto build and have altered the device tree with the following patch:
https://github.com/MistySOM/meta-mistysom/blob/phy-enable/recipes-kernel/linux/smarc-rzg2l/0001-add-vsc8531-userspace-dts.patch
I installed mdio-tools and can see the interfaces like:
# mdio
11c20000.ethernet-ffffffff
11c30000.ethernet-ffffffff
Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged):
# mdio 11c20000.ethernet-ffffffff
DEV PHY-ID LINK
0x00 0x00070572 up
Yet, ifconfig doesn't show the interfaces and I get:
# ifconfig eth0 up
[ 140.542939] ravb 11c20000.ethernet eth0: failed to connect PHY
SIOCSIFFLAGS: No such file or directory
When I try to bring it up
# ip l displays the interfaces as:
4: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 9a:ab:83:16:65:36 brd ff:ff:ff:ff:ff:ff
5: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 2a:9d:bf:09:8d:c3 brd ff:ff:ff:ff:ff:ff
Where am I going from here? I have experimented with drilling down into bitwise analysis of the MDIO communications. I'm uncertain though if this is my best bet, does someone here have any insight and can provide me with some guidance?
Thanks a lot!
--
Ron
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: issues to bring up two VSC8531 PHYs 2023-04-12 20:11 issues to bring up two VSC8531 PHYs Ron Eggler @ 2023-04-12 22:10 ` Andrew Lunn 2023-04-12 22:12 ` Heiner Kallweit 1 sibling, 0 replies; 13+ messages in thread From: Andrew Lunn @ 2023-04-12 22:10 UTC (permalink / raw) To: Ron Eggler; +Cc: netdev On Wed, Apr 12, 2023 at 01:11:45PM -0700, Ron Eggler wrote: > Hi, > I am trying to bring up a pair of VSC9531 PHYs on an embedded system. I'm using a Yocto build and have altered the device tree with the following patch: > https://github.com/MistySOM/meta-mistysom/blob/phy-enable/recipes-kernel/linux/smarc-rzg2l/0001-add-vsc8531-userspace-dts.patch + phy0: ethernet-phy@7 { + compatible = "ethernet-phy-ieee802.3-c45"; + reg = <0>; There is a minor DT issue here. I assume the PHY is on address 0 of the bus? Then ethernet-phy@7 should be ethernet-phy@0. This is pretty much cosmetic, but when you come to submit the board for inclusion in mainline, you need to have this correct. > I installed mdio-tools and can see the interfaces like: > # mdio > 11c20000.ethernet-ffffffff > 11c30000.ethernet-ffffffff > > Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged): > # mdio 11c20000.ethernet-ffffffff > DEV PHY-ID LINK > 0x00 0x00070572 up So that matches with: /linux/drivers/net/phy$ grep -r 000705 * mscc/mscc.h:#define PHY_ID_VSC8531 0x00070570 Take a look in sys/bus/mdio_bus/devices/ Any sign of the two PHYs? > Yet, ifconfig doesn't show the interfaces and I get: > # ifconfig eth0 up > [ 140.542939] ravb 11c20000.ethernet eth0: failed to connect PHY So this is where you need to start debugging. Why cannot it find the PHY? Your DT patch does not show a phy-handle. Is there one inherited from a .dtsi files? Is phy-mode also set? Andrew ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-12 20:11 issues to bring up two VSC8531 PHYs Ron Eggler 2023-04-12 22:10 ` Andrew Lunn @ 2023-04-12 22:12 ` Heiner Kallweit 2023-04-12 22:20 ` Andrew Lunn 1 sibling, 1 reply; 13+ messages in thread From: Heiner Kallweit @ 2023-04-12 22:12 UTC (permalink / raw) To: Ron Eggler, netdev, Andrew Lunn, Russell King - ARM Linux On 12.04.2023 22:11, Ron Eggler wrote: > Hi, > I am trying to bring up a pair of VSC9531 PHYs on an embedded system. I'm using a Yocto build and have altered the device tree with the following patch: > https://github.com/MistySOM/meta-mistysom/blob/phy-enable/recipes-kernel/linux/smarc-rzg2l/0001-add-vsc8531-userspace-dts.patch > I installed mdio-tools and can see the interfaces like: > # mdio > 11c20000.ethernet-ffffffff > 11c30000.ethernet-ffffffff > > Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged): > # mdio 11c20000.ethernet-ffffffff > DEV PHY-ID LINK > 0x00 0x00070572 up > AFAICS there's no PHY driver yet for this model. The generic driver may or may not work. Best add a PHY driver. > Yet, ifconfig doesn't show the interfaces and I get: > # ifconfig eth0 up > [ 140.542939] ravb 11c20000.ethernet eth0: failed to connect PHY > SIOCSIFFLAGS: No such file or directory > When I try to bring it up > > # ip l displays the interfaces as: > 4: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 > link/ether 9a:ab:83:16:65:36 brd ff:ff:ff:ff:ff:ff > 5: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 > link/ether 2a:9d:bf:09:8d:c3 brd ff:ff:ff:ff:ff:ff > > Where am I going from here? I have experimented with drilling down into bitwise analysis of the MDIO communications. I'm uncertain though if this is my best bet, does someone here have any insight and can provide me with some guidance? > Any specific reason why you set the compatible to ethernet-phy-ieee802.3-c45 for a c22 PHY? > Thanks a lot! It would be advisable to include the phylib maintainers when asking phylib-related questions. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-12 22:12 ` Heiner Kallweit @ 2023-04-12 22:20 ` Andrew Lunn 2023-04-12 22:37 ` Heiner Kallweit 0 siblings, 1 reply; 13+ messages in thread From: Andrew Lunn @ 2023-04-12 22:20 UTC (permalink / raw) To: Heiner Kallweit; +Cc: Ron Eggler, netdev, Russell King - ARM Linux > > Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged): > > # mdio 11c20000.ethernet-ffffffff > > DEV PHY-ID LINK > > 0x00 0x00070572 up > > > AFAICS there's no PHY driver yet for this model. The generic driver may or may not work. > Best add a PHY driver. Hi Heiner mscc.h:#define PHY_ID_VSC8531 0x00070570 mscc_main.c: .phy_id = PHY_ID_VSC8531, .name = "Microsemi VSC8531", .phy_id_mask = 0xfffffff0, /* PHY_GBIT_FEATURES */ > Any specific reason why you set the compatible to > ethernet-phy-ieee802.3-c45 for a c22 PHY? Ah, i missed that! The driver only uses phy_read/phy_write, not phy_write_mmd() and phy_read_mmd(). Remove the compatible string. It is not needed for C22 PHYs. Andrew ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-12 22:20 ` Andrew Lunn @ 2023-04-12 22:37 ` Heiner Kallweit 2023-04-13 20:13 ` Ron Eggler 0 siblings, 1 reply; 13+ messages in thread From: Heiner Kallweit @ 2023-04-12 22:37 UTC (permalink / raw) To: Andrew Lunn; +Cc: Ron Eggler, netdev, Russell King - ARM Linux On 13.04.2023 00:20, Andrew Lunn wrote: >>> Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged): >>> # mdio 11c20000.ethernet-ffffffff >>> DEV PHY-ID LINK >>> 0x00 0x00070572 up >>> >> AFAICS there's no PHY driver yet for this model. The generic driver may or may not work. >> Best add a PHY driver. > > Hi Heiner > > mscc.h:#define PHY_ID_VSC8531 0x00070570 > > mscc_main.c: OK, missed that. I just looked at the vitesse driver which also covers a number of VSCxxxx PHY's. > .phy_id = PHY_ID_VSC8531, > .name = "Microsemi VSC8531", > .phy_id_mask = 0xfffffff0, > /* PHY_GBIT_FEATURES */ > >> Any specific reason why you set the compatible to >> ethernet-phy-ieee802.3-c45 for a c22 PHY? > > Ah, i missed that! The driver only uses phy_read/phy_write, not > phy_write_mmd() and phy_read_mmd(). > > Remove the compatible string. It is not needed for C22 PHYs. > > Andrew ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-12 22:37 ` Heiner Kallweit @ 2023-04-13 20:13 ` Ron Eggler 2023-04-13 20:27 ` Andrew Lunn 0 siblings, 1 reply; 13+ messages in thread From: Ron Eggler @ 2023-04-13 20:13 UTC (permalink / raw) To: Heiner Kallweit, Andrew Lunn; +Cc: netdev, Russell King - ARM Linux On 2023-04-12 3:37 p.m., Heiner Kallweit wrote: > On 13.04.2023 00:20, Andrew Lunn wrote: >>>> Also, I hooked up a logic analyzer to the mdio lines and can see communications happening at boot time. Also, it appears that it's able to read the link status correctly (when a cable is plugged): >>>> # mdio 11c20000.ethernet-ffffffff >>>> DEV PHY-ID LINK >>>> 0x00 0x00070572 up >>>> >>> AFAICS there's no PHY driver yet for this model. The generic driver may or may not work. >>> Best add a PHY driver. >> Hi Heiner >> >> mscc.h:#define PHY_ID_VSC8531 0x00070570 >> >> mscc_main.c: > OK, missed that. I just looked at the vitesse driver which also covers > a number of VSCxxxx PHY's. > >> .phy_id = PHY_ID_VSC8531, >> .name = "Microsemi VSC8531", >> .phy_id_mask = 0xfffffff0, >> /* PHY_GBIT_FEATURES */ >> >>> Any specific reason why you set the compatible to >>> ethernet-phy-ieee802.3-c45 for a c22 PHY? Since the VSC8531 has a clause 45 register space, I assumed that it is a clause 45 PHY. >> Ah, i missed that! The driver only uses phy_read/phy_write, not >> phy_write_mmd() and phy_read_mmd(). >> >> Remove the compatible string. It is not needed for C22 PHYs. Anyways, I changed the patch specify "ethernet-phy-ieee802.3-c22" instead, it seems c22 is just a fallback if it's not specified per phy.txt - Documentation/devicetree/bindings/net/phy.txt - Linux source code (v4.14) - Bootlin <https://elixir.bootlin.com/linux/v4.14/source/Documentation/devicetree/bindings/net/phy.txt> Okay, I tried it out, booted up and see my network interfaces: # ifconfig eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 ether f6:1f:f8:73:ce:f4 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 170 eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 ether 7a:18:b6:23:bf:f6 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 173 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 metric 1 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 I'm pumped! This is a huge step forward, Thank you Heiner & Andrew! I've set IPs manually (haven't dealt with DHCP yet) but am not able to transfer any data yet. (tried pinging hosts in local network). Also IP doesn't appear to be visible on network. Pinging localhost or own IP works fine. I connected it with a patch cable to a laptop and fired up tcpdump on the laptop. I can see ARP requests going out (from the laptop) but VSC8531s are not responding (tried both ports). What else can I do from here, is it time to probe the RGMII signals on the board? Thanks! -- Ron ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-13 20:13 ` Ron Eggler @ 2023-04-13 20:27 ` Andrew Lunn 2023-04-21 16:06 ` Ron Eggler 0 siblings, 1 reply; 13+ messages in thread From: Andrew Lunn @ 2023-04-13 20:27 UTC (permalink / raw) To: Ron Eggler; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux > Anyways, I changed the patch specify "ethernet-phy-ieee802.3-c22" instead, > it seems c22 is just a fallback if it's not specified per phy.txt - > Documentation/devicetree/bindings/net/phy.txt - Linux source code (v4.14) - > Bootlin <https://elixir.bootlin.com/linux/v4.14/source/Documentation/devicetree/bindings/net/phy.txt> I would not trust 4.14 Documentation. That has been dead for a long long time. We generally request you report networking issues against the net-next tree, or the last -rcX kernel. > I connected it with a patch cable to a laptop and fired up tcpdump on the > laptop. > I can see ARP requests going out (from the laptop) but VSC8531s are not > responding (tried both ports). > What else can I do from here, is it time to probe the RGMII signals on the > board? What phy-mode are you using. Generally rgmii-id is what you want, so that the PHY adds the RGMII delays. You can also try: ethtool --phy-statistics ethX The statistics are mostly about errors, not correctly received frames, so there might not be anything useful. Andrew ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-13 20:27 ` Andrew Lunn @ 2023-04-21 16:06 ` Ron Eggler 2023-04-21 16:35 ` Andrew Lunn 0 siblings, 1 reply; 13+ messages in thread From: Ron Eggler @ 2023-04-21 16:06 UTC (permalink / raw) To: Andrew Lunn; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux Andrew, Russel & list, Please aplogize for the delay in follow up! On 2023-04-13 1:27 p.m., Andrew Lunn wrote: >> Anyways, I changed the patch specify "ethernet-phy-ieee802.3-c22" instead, >> it seems c22 is just a fallback if it's not specified per phy.txt - >> Documentation/devicetree/bindings/net/phy.txt - Linux source code (v4.14) - >> Bootlin<https://elixir.bootlin.com/linux/v4.14/source/Documentation/devicetree/bindings/net/phy.txt> > I would not trust 4.14 Documentation. That has been dead for a long > long time. We generally request you report networking issues against > the net-next tree, or the last -rcX kernel. Yeah, got it and I should have probably looked at the docs for the kernel version we're using which is 5.10.83-cip1 which leads me to: https://elixir.bootlin.com/linux/v5.10.83/source/Documentation/devicetree/bindings/net/ethernet-phy.yaml it does list "ethernet-phy-ieee802.3-c22" as an option. I'm still a bit puzzled though because the VSC8531 datasheet clearly indicates that it's got a clause 45 register space: https://ww1.microchip.com/downloads/en/DeviceDoc/VMDS-10514.pdf page 54. >> I connected it with a patch cable to a laptop and fired up tcpdump on the >> laptop. >> I can see ARP requests going out (from the laptop) but VSC8531s are not >> responding (tried both ports). >> What else can I do from here, is it time to probe the RGMII signals on the >> board? > What phy-mode are you using. Generally rgmii-id is what you want, so > that the PHY adds the RGMII delays. Okay great, I've added the following patch to my build: diff --git a/r9a07g044.dtsi.orig b/r9a07g044.dtsi index 16ff035..727815c 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi @@ -951,7 +951,7 @@ <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "mux", "fil", "arp_ns"; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; clocks = <&cpg CPG_MOD R9A07G044_ETH0_CLK_AXI>, <&cpg CPG_MOD R9A07G044_ETH0_CLK_CHI>, <&cpg CPG_CORE R9A07G044_CLK_HP>; @@ -971,7 +971,7 @@ <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "mux", "fil", "arp_ns"; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; clocks = <&cpg CPG_MOD R9A07G044_ETH1_CLK_AXI>, <&cpg CPG_MOD R9A07G044_ETH1_CLK_CHI>, <&cpg CPG_CORE R9A07G044_CLK_HP>; > You can also try: > > ethtool --phy-statistics ethX after appliaction of the above patch, ethtool tells me # ethtool --phy-statistics eth0 PHY statistics: phy_receive_errors: 65535 phy_idle_errors: 255 and this along with the frame counters in ifconfig looks like there are no frames going back and forth between the MPU and the PHY: # ifconfig eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255 ether e4:19:2f:15:1f:c1 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 20 collisions 0 device interrupt 170 eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 inet 192.168.1.234 netmask 255.255.0.0 broadcast 192.168.255.255 ether f6:c8:2f:5e:01:7c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 79 collisions 0 device interrupt 173 /proc/interrupts reports a few interrupts on eth0 & eth1: # cat /proc/interrupts CPU0 CPU1 11: 117135 97562 GICv3 27 Level arch_timer 13: 0 0 GICv3 202 Level 10001200.timer 20: 0 0 GICv3 209 Level 10001200.timer 56: 0 0 GICv3 358 Level 10049c00.ssi 60: 0 0 GICv3 362 Level 1004a000.ssi 65: 0 0 GICv3 448 Level 1004b000.spi:rx 66: 0 0 GICv3 449 Level 1004b000.spi:tx 67: 0 0 GICv3 412 Level 1004b800.serial:rx err 68: 26 0 GICv3 414 Level 1004b800.serial:rx full 69: 3478 0 GICv3 415 Level 1004b800.serial:tx empty 70: 0 0 GICv3 413 Level 1004b800.serial:break 71: 230 0 GICv3 416 Level 1004b800.serial:rx ready 73: 0 0 GICv3 458 Level canfd.g_err 74: 0 0 GICv3 459 Level canfd.g_recc 75: 0 0 GICv3 454 Level canfd.ch0_err 77: 0 0 GICv3 460 Level canfd.ch0_trx 78: 0 0 GICv3 455 Level canfd.ch1_err 80: 0 0 GICv3 461 Level canfd.ch1_trx 87: 0 0 GICv3 382 Level riic-tend 88: 0 0 GICv3 380 Edge riic-rdrf 89: 3 0 GICv3 381 Edge riic-tdre 90: 1 0 GICv3 384 Level riic-stop 92: 1 0 GICv3 383 Level riic-nack 95: 0 0 GICv3 390 Level riic-tend 96: 0 0 GICv3 388 Edge riic-rdrf 97: 2 0 GICv3 389 Edge riic-tdre 98: 1 0 GICv3 392 Level riic-stop 100: 1 0 GICv3 391 Level riic-nack 103: 17 0 GICv3 406 Level riic-tend 104: 0 0 GICv3 404 Edge riic-rdrf 105: 51 0 GICv3 405 Edge riic-tdre 106: 17 0 GICv3 408 Level riic-stop 108: 0 0 GICv3 407 Level riic-nack 111: 0 0 GICv3 379 Edge 10059000.adc 113: 5 0 GICv3 476 Level tint0 114: 1 0 GICv3 477 Level tint1 115: 0 0 GICv3 478 Level tint2 116: 0 0 GICv3 479 Level tint3 117: 0 0 GICv3 480 Level tint4 118: 0 0 GICv3 481 Level tint5 119: 0 0 GICv3 482 Level tint6 120: 0 0 GICv3 483 Level tint7 121: 0 0 GICv3 484 Level tint8 122: 0 0 GICv3 485 Level tint9 123: 0 0 GICv3 486 Level tint10 124: 0 0 GICv3 487 Level tint11 125: 0 0 GICv3 488 Level tint12 126: 0 0 GICv3 489 Level tint13 127: 0 0 GICv3 490 Level tint14 128: 0 0 GICv3 491 Level tint15 129: 0 0 GICv3 492 Level tint16 130: 0 0 GICv3 493 Level tint17 131: 0 0 GICv3 494 Level tint18 132: 0 0 GICv3 495 Level tint19 133: 0 0 GICv3 496 Level tint20 134: 0 0 GICv3 497 Level tint21 135: 0 0 GICv3 498 Level tint22 136: 0 0 GICv3 499 Level tint23 137: 0 0 GICv3 500 Level tint24 138: 0 0 GICv3 501 Level tint25 139: 0 0 GICv3 502 Level tint26 140: 0 0 GICv3 503 Level tint27 141: 0 0 GICv3 504 Level tint28 142: 0 0 GICv3 505 Level tint29 143: 0 0 GICv3 506 Level tint30 144: 0 0 GICv3 507 Level tint31 145: 0 0 GICv3 173 Edge error 146: 0 0 GICv3 157 Edge 11820000.dma-controller:0 147: 0 0 GICv3 158 Edge 11820000.dma-controller:1 148: 0 0 GICv3 159 Edge 11820000.dma-controller:2 149: 0 0 GICv3 160 Edge 11820000.dma-controller:3 150: 0 0 GICv3 161 Edge 11820000.dma-controller:4 151: 0 0 GICv3 162 Edge 11820000.dma-controller:5 152: 0 0 GICv3 163 Edge 11820000.dma-controller:6 153: 0 0 GICv3 164 Edge 11820000.dma-controller:7 154: 0 0 GICv3 165 Edge 11820000.dma-controller:8 155: 0 0 GICv3 166 Edge 11820000.dma-controller:9 156: 0 0 GICv3 167 Edge 11820000.dma-controller:10 157: 0 0 GICv3 168 Edge 11820000.dma-controller:11 158: 0 0 GICv3 169 Edge 11820000.dma-controller:12 159: 0 0 GICv3 170 Edge 11820000.dma-controller:13 160: 0 0 GICv3 171 Edge 11820000.dma-controller:14 161: 0 0 GICv3 172 Edge 11820000.dma-controller:15 162: 0 0 GICv3 186 Level 11840000.gpu 163: 0 0 GICv3 187 Level 11840000.gpu 164: 1 0 GICv3 185 Level 11840000.gpu 166: 790 0 GICv3 136 Level 11c00000.mmc 167: 0 0 GICv3 137 Level 11c00000.mmc 168: 27937 0 GICv3 138 Level 11c10000.mmc 169: 0 0 GICv3 139 Level 11c10000.mmc 170: 20 0 GICv3 116 Level eth0 173: 79 0 GICv3 119 Level eth1 176: 0 0 GICv3 123 Level ohci_hcd:usb3 177: 0 0 GICv3 128 Level ohci_hcd:usb4 178: 0 0 GICv3 124 Level ehci_hcd:usb1 179: 0 0 GICv3 129 Level ehci_hcd:usb2 180: 0 0 GICv3 126 Level 11c50200.usb-phy 181: 0 0 GICv3 131 Level 11c70200.usb-phy 182: 0 0 GICv3 132 Edge 11c60000.usb 186: 0 0 GICv3 302 Edge 10048400.gpt 187: 0 0 GICv3 303 Edge 10048400.gpt 194: 0 0 GICv3 310 Edge 10048400.gpt 199: 0 0 GICv3 181 Level 10870000.vsp 208: 0 0 GICv3 80 Edge timer@12801800 209: 0 0 GICv3 199 Level rzg2l_cru 211: 1 0 11030000.pin-controller 8 Edge 11c20000.ethernet-ffffffff:00 212: 3 0 11030000.pin-controller 9 Edge 11c30000.ethernet-ffffffff:00 IPI0: 1995 6562 Rescheduling interrupts IPI1: 200 161 Function call interrupts IPI2: 0 0 CPU stop interrupts IPI3: 0 0 CPU stop (for crash dump) interrupts IPI4: 0 0 Timer broadcast interrupts IPI5: 0 0 IRQ work interrupts IPI6: 0 0 CPU wake-up interrupts Err: 0 -- *RON EGGLER* Firmware Engineer (he/him/his) www.mistywest.com MistyWest Logo ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-21 16:06 ` Ron Eggler @ 2023-04-21 16:35 ` Andrew Lunn 2023-04-21 22:55 ` Ron Eggler 2023-04-22 0:28 ` Ron Eggler 0 siblings, 2 replies; 13+ messages in thread From: Andrew Lunn @ 2023-04-21 16:35 UTC (permalink / raw) To: Ron Eggler; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux > > You can also try: > > > > ethtool --phy-statistics ethX > > after appliaction of the above patch, ethtool tells me > > # ethtool --phy-statistics eth0 > PHY statistics: > phy_receive_errors: 65535 > phy_idle_errors: 255 So these have saturated. Often these counters don't wrap, they stop at the maximum value. These errors also indicate your problem is probably not between the MAC and the PHY, but between the PHY and the RJ45 socket. Or maybe how the PHY is clocked. It might not have a stable clock, or the wrong clock frequency. Andrew ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-21 16:35 ` Andrew Lunn @ 2023-04-21 22:55 ` Ron Eggler 2023-04-22 0:09 ` Florian Fainelli 2023-04-22 0:28 ` Ron Eggler 1 sibling, 1 reply; 13+ messages in thread From: Ron Eggler @ 2023-04-21 22:55 UTC (permalink / raw) To: Andrew Lunn; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux On 4/21/23 09:35, Andrew Lunn wrote: >>> You can also try: >>> >>> ethtool --phy-statistics ethX >> after appliaction of the above patch, ethtool tells me >> >> # ethtool --phy-statistics eth0 >> PHY statistics: >> phy_receive_errors: 65535 >> phy_idle_errors: 255 > So these have saturated. Often these counters don't wrap, they stop at > the maximum value. > > These errors also indicate your problem is probably not between the > MAC and the PHY, but between the PHY and the RJ45 socket. Or maybe how > the PHY is clocked. It might not have a stable clock, or the wrong > clock frequency. The man page (https://www.man7.org/linux/man-pages/man8/ethtool.8.html) does not give any details about what phy_receive_errors or phy_idle_errors refer to exactly, is there any documentation about it that I could not find? Ron -- RON EGGLER Firmware Engineer (he/him/his) www.mistywest.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-21 22:55 ` Ron Eggler @ 2023-04-22 0:09 ` Florian Fainelli 2023-04-23 22:53 ` Ron Eggler 0 siblings, 1 reply; 13+ messages in thread From: Florian Fainelli @ 2023-04-22 0:09 UTC (permalink / raw) To: Ron Eggler, Andrew Lunn; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux On 4/21/2023 3:55 PM, Ron Eggler wrote: > > On 4/21/23 09:35, Andrew Lunn wrote: >>>> You can also try: >>>> >>>> ethtool --phy-statistics ethX >>> after appliaction of the above patch, ethtool tells me >>> >>> # ethtool --phy-statistics eth0 >>> PHY statistics: >>> phy_receive_errors: 65535 >>> phy_idle_errors: 255 >> So these have saturated. Often these counters don't wrap, they stop at >> the maximum value. >> >> These errors also indicate your problem is probably not between the >> MAC and the PHY, but between the PHY and the RJ45 socket. Or maybe how >> the PHY is clocked. It might not have a stable clock, or the wrong >> clock frequency. > > The man page (https://www.man7.org/linux/man-pages/man8/ethtool.8.html) > does not give any details about what phy_receive_errors or > phy_idle_errors refer to exactly, is there any documentation about it > that I could not find? The statistics are inherently PHY specific and how a driver writer choses to map a name to a specific PHY counter is backed within the driver. -- Florian ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-22 0:09 ` Florian Fainelli @ 2023-04-23 22:53 ` Ron Eggler 0 siblings, 0 replies; 13+ messages in thread From: Ron Eggler @ 2023-04-23 22:53 UTC (permalink / raw) To: Florian Fainelli, Andrew Lunn Cc: Heiner Kallweit, netdev, Russell King - ARM Linux On 4/21/23 17:09, Florian Fainelli wrote: > > > On 4/21/2023 3:55 PM, Ron Eggler wrote: >> >> On 4/21/23 09:35, Andrew Lunn wrote: >>>>> You can also try: >>>>> >>>>> ethtool --phy-statistics ethX >>>> after appliaction of the above patch, ethtool tells me >>>> >>>> # ethtool --phy-statistics eth0 >>>> PHY statistics: >>>> phy_receive_errors: 65535 >>>> phy_idle_errors: 255 >>> So these have saturated. Often these counters don't wrap, they stop at >>> the maximum value. >>> >>> These errors also indicate your problem is probably not between the >>> MAC and the PHY, but between the PHY and the RJ45 socket. Or maybe how >>> the PHY is clocked. It might not have a stable clock, or the wrong >>> clock frequency. >> >> The man page >> (https://www.man7.org/linux/man-pages/man8/ethtool.8.html) does not >> give any details about what phy_receive_errors or phy_idle_errors >> refer to exactly, is there any documentation about it that I could >> not find? > > The statistics are inherently PHY specific and how a driver writer > choses to map a name to a specific PHY counter is backed within the > driver. Thank you, I think I have moved past this now: When I reboot, both RX & TX_CLK delay values are set to 0x0044 which equates 2.0ns delay and this actually lets me monitor traffic on the local network with tcpdump but still, my arp address doesn't go out and while my arp table gets populated, I'm not able to get any ping responses: My interface in question: # ifconfig eth0 eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255 ether 92:95:1c:76:8c:3e txqueuelen 1000 (Ethernet) RX packets 94 bytes 22123 (21.6 KiB) RX errors 0 dropped 36 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 170 arp table: # arp Address HWtype HWaddress Flags Mask Iface 192.168.1.222 ether 54:04:a6:f3:19:db C eth0 192.168.1.223 ether 68:ec:c5:ca:13:9f C eth0 none of these hosts would reply to pings though but # tcpdump -i eth0 ip shows me traffic on the local network the phy statistics now look like: # ethtool --phy-statistics eth0 PHY statistics: phy_receive_errors: 0 phy_false_carrier: 0 phy_cu_media_link_disconnect: 0 phy_cu_media_crc_good_count: 9667 phy_cu_media_crc_error_count: 0 It appears like RX packets are getting dropped but interestingly the TX packets are showing 0 even though the ping command should send out some data: # ifconfig eth0 eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1 inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255 ether 92:95:1c:76:8c:3e txqueuelen 1000 (Ethernet) RX packets 9885 bytes 2202753 (2.1 MiB) RX errors 0 dropped 3916 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 170 what could be going on here and how can I trouble shoot this further? Thank you! -- RON EGGLER Firmware Engineer (he/him/his) www.mistywest.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: issues to bring up two VSC8531 PHYs 2023-04-21 16:35 ` Andrew Lunn 2023-04-21 22:55 ` Ron Eggler @ 2023-04-22 0:28 ` Ron Eggler 1 sibling, 0 replies; 13+ messages in thread From: Ron Eggler @ 2023-04-22 0:28 UTC (permalink / raw) To: Andrew Lunn; +Cc: Heiner Kallweit, netdev, Russell King - ARM Linux On 4/21/23 09:35, Andrew Lunn wrote: >>> You can also try: >>> >>> ethtool --phy-statistics ethX >> after appliaction of the above patch, ethtool tells me >> >> # ethtool --phy-statistics eth0 >> PHY statistics: >> phy_receive_errors: 65535 >> phy_idle_errors: 255 > So these have saturated. Often these counters don't wrap, they stop at > the maximum value. > > These errors also indicate your problem is probably not between the > MAC and the PHY, but between the PHY and the RJ45 socket. Or maybe how > the PHY is clocked. It might not have a stable clock, or the wrong > clock frequency. Oh and as for the clock, there's a 25MHz, +/- 20ppm crystal hooked up to XTAL1 & XTAL2 pins which is a supported clock source (per datasheet) but I also see in the following: For RGMII mode: Configure register 20E2 (to access register 20E2, register 31 must be set to 2). Set bit 11 to 0 and set RX_CLK delay and TX_CLK delay accordingly through bit [6:4] and/or bit [2:0] respectively. I figured out that the register 20E2 is in the extended register space which is accessible when register 0x1F is set to 0x0002. I've been able to set and read it, I found a nice loop from David Creger that reads the complete register space and prints it to stdout: # x=0; while [ $x -le 31 ]; do printf "Register 0x%02X = " $x ; phytool read eth0/0/$x $(( x++ )) ; done Register 0x00 = 0x1040 Register 0x01 = 0x796d Register 0x02 = 0x0007 Register 0x03 = 0x0572 Register 0x04 = 0x0101 Register 0x05 = 0x45e1 Register 0x06 = 0x0005 Register 0x07 = 0x2801 Register 0x08 = 0000 Register 0x09 = 0x0200 Register 0x0A = 0x4000 Register 0x0B = 0000 Register 0x0C = 0000 Register 0x0D = 0000 Register 0x0E = 0000 Register 0x0F = 0x3000 Register 0x10 = 0x028e Register 0x11 = 0x0100 Register 0x12 = 0x0800 Register 0x13 = 0000 Register 0x14 = 0000 Register 0x15 = 0000 Register 0x16 = 0000 Register 0x17 = 0000 Register 0x18 = 0000 Register 0x19 = 0000 Register 0x1A = 0000 Register 0x1B = 0x0ff0 Register 0x1C = 0000 Register 0x1D = 0000 Register 0x1E = 0x0030 Register 0x1F = 0x0002 and per the datasheet, the extended registers space maps into the above registers 16 - 30 like: Address Name 16E2 Cu PMD Transmit Control 17E2 EEE Control 18E2–19E2 Reserved 20E2 RGMII Control 21E2 Wake-on-LAN MAC Address [15:0] 22E2 Wake-on-LAN MAC Address [31:16] 23E2 Wake-on-LAN MAC Address [47:32] 24E2 Secure-On Password [15:0] 25E2 Secure-On Password [31:16] 26E2 Secure-On Password [47:32] 27E2 Wake-on-LAN and MAC Interface Control 28E2 Extended Interrupt Mask 29E2 Extended Interrupt Status 30E2 Reserved So per my calculations: Register 0x10 = -> 16E2 Register 0x11 = -> 17E2 Register 0x12 = -> 18E2 Register 0x13 = -> 19E2 Register 0x14 = -> 20E2 Register 0x15 = -> 21E2 Register 0x16 = -> 22E2 Register 0x17 = -> 23E2 Register 0x18 = -> 24E2 Register 0x19 = -> 25E2 Register 0x1A = -> 26E2 Register 0x1B = -> 27E2 Register 0x1C = -> 28E2 Register 0x1D = -> 29E2 Register 0x1E = -> 30E2 20 (0x14) maps into 20E2 but I'm not fully certain what RX_CLK and TX_CLK should be set to, can anyone help me out, here? datasheet: https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/DataSheets/VMDS-10514.pdf Also, should the above delay configuration not be part of the driver and configurable through the device tree? https://www.kernel.org/doc/Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt -- RON EGGLER Firmware Engineer (he/him/his) www.mistywest.com ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-04-23 22:53 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-12 20:11 issues to bring up two VSC8531 PHYs Ron Eggler 2023-04-12 22:10 ` Andrew Lunn 2023-04-12 22:12 ` Heiner Kallweit 2023-04-12 22:20 ` Andrew Lunn 2023-04-12 22:37 ` Heiner Kallweit 2023-04-13 20:13 ` Ron Eggler 2023-04-13 20:27 ` Andrew Lunn 2023-04-21 16:06 ` Ron Eggler 2023-04-21 16:35 ` Andrew Lunn 2023-04-21 22:55 ` Ron Eggler 2023-04-22 0:09 ` Florian Fainelli 2023-04-23 22:53 ` Ron Eggler 2023-04-22 0:28 ` Ron Eggler
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox