usb boot img /qualcommax-d440c8c/openwrt-qualcommax-ipq807x-linksys_homewrk-initramfs-uImage.itb
0x01 0x02 0x03 0x04
0x0 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x2 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x3 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x4 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x5 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x6 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x7 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x8 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x9 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xa -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xb -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xc -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xd -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xe -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0xf -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x10 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x11 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x12 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x13 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x14 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x15 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x16 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x17 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x18 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x19 -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1a -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1b -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1c -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1d -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1e -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
0x1f -ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
-ash: mdio: not found
Got the same problem. Found that DHCPOFFER packet contains wrong (partial) UDP checksum thus is dropped by the dhcp client. Fixed by turning off tx checksum offloading for the mesh interface on the primary router:
root@mx4300:~# ethtool --offload phy2-mesh0 tx-checksumming off
And that is extremely weird, since register 0x1 is the generic 802.3 status register and its BIT(2) for link status in 1 and thus it sees a link in the dump you provided.
Even more so, the PHY specific status register (0x11) which always has the current info sees 1G, full-duplex link.
Do note that the MDIO tool only interprets generic 802.3 registers, while the kernel driver (And thus ethtool) will use the PHY specific register instead