On 8/20/21 7:06 AM, Oleksij Rempel wrote:
Can you please test attached patch.
And may be add some prints to the ax88772_hw_reset() and ax88772a_hw_reset().
It would be interesting to know, which variant is actually affected.
It works! Looks like it goes through ax88772_hw_reset() here. I added on
top of your patch "netdev_dbg(dev->net, "%s\n", __func__);" to beginning
of both x88772_hw_reset() and ax88772a_hw_reset().
I attached the "dmesg | grep -i asix". This time no ifconfig down/up
jump since machine got the link up and IP from the DHCP server.
You may add
Tested-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
[ 0.000000] Command line: noinitrd console=ttyS0,115200n8 buildroot_hostname=ehl07 module_blacklist=dw_dmac root=PARTUUID=dcd1314f-692a-8749-8b66-c2a1f1ee46e6 resume=PARTUUID=3a0bb9e6-27ae-46d3-a380-43f04fde12ee i2c_designware_core.dyndbg=+p m_can.dyndbg=+p m_can_pci.dyndbg=+p asix.dyndbg=+p ax88179_178a.dyndbg=+p dmi_entry_point=0x748cd000
[ 0.022619] Kernel command line: noinitrd console=ttyS0,115200n8 buildroot_hostname=ehl07 module_blacklist=dw_dmac root=PARTUUID=dcd1314f-692a-8749-8b66-c2a1f1ee46e6 resume=PARTUUID=3a0bb9e6-27ae-46d3-a380-43f04fde12ee i2c_designware_core.dyndbg=+p m_can.dyndbg=+p m_can_pci.dyndbg=+p asix.dyndbg=+p ax88179_178a.dyndbg=+p dmi_entry_point=0x748cd000
[ 5.126770] usbcore: registered new interface driver asix
[ 5.712789] asix 1-8:1.0 (unnamed net_device) (uninitialized): internal PHY address 0x10
[ 5.723591] asix 1-8:1.0 (unnamed net_device) (uninitialized): ax88772_hw_reset
[ 5.735668] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_write_gpio() - value = 0x00b0
[ 6.010792] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_write_rx_ctl() - mode = 0x0088
[ 6.010915] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_write_medium_mode() - mode = 0x0336
[ 6.011120] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_write_rx_ctl() - mode = 0x0088
[ 6.011227] asix 1-8:1.0 (unnamed net_device) (uninitialized): RX_CTL is 0x0088 after all initializations
[ 6.011309] asix 1-8:1.0 (unnamed net_device) (uninitialized): Medium Status is 0x0336 after all initializations
[ 6.013405] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x00, loc=0x02, returns=0x0000
[ 6.014910] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x00, loc=0x03, returns=0x0000
[ 6.021857] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x01, loc=0x02, returns=0x0000
[ 6.023376] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x01, loc=0x03, returns=0x0000
[ 6.030024] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x02, loc=0x02, returns=0x0000
[ 6.031391] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x02, loc=0x03, returns=0x0000
[ 6.035294] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x03, loc=0x02, returns=0x0000
[ 6.036789] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x03, loc=0x03, returns=0x0000
[ 6.040771] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x04, loc=0x02, returns=0x0000
[ 6.042139] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x04, loc=0x03, returns=0x0000
[ 6.046118] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x05, loc=0x02, returns=0x0000
[ 6.047560] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x05, loc=0x03, returns=0x0000
[ 6.051306] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x06, loc=0x02, returns=0x0000
[ 6.052747] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x06, loc=0x03, returns=0x0000
[ 6.056534] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x07, loc=0x02, returns=0x0000
[ 6.057962] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x07, loc=0x03, returns=0x0000
[ 6.061899] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x08, loc=0x02, returns=0x0000
[ 6.068703] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x08, loc=0x03, returns=0x0000
[ 6.072668] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x09, loc=0x02, returns=0x0000
[ 6.074123] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x09, loc=0x03, returns=0x0000
[ 6.078067] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0a, loc=0x02, returns=0x0000
[ 6.079596] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0a, loc=0x03, returns=0x0000
[ 6.083303] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0b, loc=0x02, returns=0x0000
[ 6.084738] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0b, loc=0x03, returns=0x0000
[ 6.088636] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0c, loc=0x02, returns=0x0000
[ 6.090062] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0c, loc=0x03, returns=0x0000
[ 6.093646] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0d, loc=0x02, returns=0x0000
[ 6.095177] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0d, loc=0x03, returns=0x0000
[ 6.098943] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0e, loc=0x02, returns=0x0000
[ 6.100484] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0e, loc=0x03, returns=0x0000
[ 6.104265] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0f, loc=0x02, returns=0x0000
[ 6.105690] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x0f, loc=0x03, returns=0x0000
[ 6.109293] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x10, loc=0x02, returns=0x003b
[ 6.110716] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x10, loc=0x03, returns=0x1811
[ 6.114312] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x11, loc=0x02, returns=0x1811
[ 6.115813] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x11, loc=0x03, returns=0x1811
[ 6.119522] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x12, loc=0x02, returns=0x1811
[ 6.120948] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x12, loc=0x03, returns=0x1811
[ 6.124645] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x13, loc=0x02, returns=0x1811
[ 6.126067] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x13, loc=0x03, returns=0x1811
[ 6.129873] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x14, loc=0x02, returns=0x1811
[ 6.131390] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x14, loc=0x03, returns=0x1811
[ 6.135109] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x15, loc=0x02, returns=0x1811
[ 6.136647] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x15, loc=0x03, returns=0x1811
[ 6.140356] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x16, loc=0x02, returns=0x1811
[ 6.141912] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x16, loc=0x03, returns=0x1811
[ 6.145746] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x17, loc=0x02, returns=0x1811
[ 6.147348] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x17, loc=0x03, returns=0x1811
[ 6.151305] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x18, loc=0x02, returns=0x1811
[ 6.152820] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x18, loc=0x03, returns=0x1811
[ 6.156801] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x19, loc=0x02, returns=0x1811
[ 6.158270] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x19, loc=0x03, returns=0x1811
[ 6.162402] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1a, loc=0x02, returns=0x1811
[ 6.163922] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1a, loc=0x03, returns=0x1811
[ 6.167757] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1b, loc=0x02, returns=0x1811
[ 6.169351] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1b, loc=0x03, returns=0x1811
[ 6.173259] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1c, loc=0x02, returns=0x1811
[ 6.174907] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1c, loc=0x03, returns=0x1811
[ 6.178790] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1d, loc=0x02, returns=0x1811
[ 6.180451] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1d, loc=0x03, returns=0x1811
[ 6.184342] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1e, loc=0x02, returns=0x1811
[ 6.185965] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1e, loc=0x03, returns=0x1811
[ 6.189861] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1f, loc=0x02, returns=0x1811
[ 6.191433] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x1f, loc=0x03, returns=0x1811
[ 6.193647] libphy: Asix MDIO Bus: probed
[ 6.199983] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 6.201581] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 6.209848] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 6.209853] asix 1-8:1.0 (unnamed net_device) (uninitialized): asix_mdio_write() phy_id=0x10, loc=0x00, val=0x3900
[ 6.222519] asix 1-8:1.0 eth0: register 'asix' at usb-0000:00:14.0-8, ASIX AX88772 USB 2.0 Ethernet, 00:10:60:31:d5:f8
[ 8.349551] asix 1-8:1.0 eth0: asix_write_rx_ctl() - mode = 0x0088
[ 8.349611] asix 1-8:1.0 eth0: asix_write_medium_mode() - mode = 0x0336
[ 8.351536] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3900
[ 8.351551] asix 1-8:1.0 eth0: asix_mdio_write() phy_id=0x10, loc=0x00, val=0x3100
[ 8.354707] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x04, returns=0x01e1
[ 8.356264] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 8.357770] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 8.359269] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 8.360677] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 8.362076] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 8.362080] asix 1-8:1.0 eth0: asix_write_medium_mode() - mode = 0x0000
[ 8.362145] asix 1-8:1.0 eth0: Link is Down
[ 9.388904] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 9.390510] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 9.392454] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x7809
[ 10.265292] asix 1-8:1.0 eth0: Link Status is: 1
[ 10.393301] asix 1-8:1.0 eth0: Link Status is: 1
[ 10.413595] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 10.415556] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 10.417402] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x05, returns=0xc1e1
[ 10.417536] asix 1-8:1.0 eth0: asix_write_medium_mode() - mode = 0x0336
[ 10.418225] asix 1-8:1.0 eth0: Link is Up - 100Mbps/Full - flow control off
[ 11.437384] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 11.439584] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 12.461627] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 12.463740] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 13.485618] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 13.487713] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 14.509668] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 14.511712] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 15.533691] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 15.537704] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 16.557690] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 16.561641] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 17.581726] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 17.585550] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 18.605660] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 18.607662] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 19.629989] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 19.632010] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 20.653657] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 20.655648] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 21.677710] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 21.679696] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 22.701718] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 22.703702] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 23.726345] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 23.728774] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 24.749636] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 24.752064] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 25.773655] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 25.775642] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 26.797688] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 26.799674] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 27.821728] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 27.823704] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 28.845634] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 28.847683] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 29.869654] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 29.871646] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d
[ 30.894304] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x00, returns=0x3100
[ 30.896681] asix 1-8:1.0 eth0: asix_mdio_read() phy_id=0x10, loc=0x01, returns=0x782d