Eth0 does not come up on boot after SDK 4.5.1 update

After SDK 4.5.1 update eth0 interface does not come up on boot. After everything is booted I can bring interface up manually with “sudo ifconfig eth0 up” and everything works after that. But I cannot make it come up automatically. If I add “auto eth0” in /etc/network/interfaces.d/eth0, then I have 7 minutes holdup on boot.
“eqos 2490000.ether_qos: failed to read eqos_auto_cal_config_0_reg” message but nothing else suspicious. Interesting is that there are no messages for about 3 seconds prior to the mentioned above error.

Custom board with ether_eqos driver, fixed link, no phy direct MAC to MAC connection to Zynq RGMII. Everything was working and coming up on boot on SDK 4.4.1. I have tried revering back eqos driver and DT to 4.4.1 version but same problem persists.
Appreciate any idea how to debug this.

Thanks,
-Aliaksei.

Could you share the full dmesg?

dmesg log
Here is the log there is also an interesting error from it:
[ 18.106734] net eth0: Failed to reset MAC

Could you also share what change you’ve added in jp4.4.1 to make Zynq RGMII work?

Is there any specific dts or driver needed? If there is extra driver, have you checked that driver? Maybe some upstream change modified it.

I have only minimal DT change below. Again the driver works after I bring it up manually, the issue is that it does not come up after boot automatically.

>  ether_qos@2490000 {
> 		/* PTP_ref clock speed in MHz */
> 		nvidia,ptp_ref_clock_speed = <312500000>;
> 		/* rxq_enable_ctrl = <rx0 rx1 rx2 rx3>
> 		 * 0x0 = Not enabled, 0x1 = Enabled for AV
> 		 * 0x2 = Enabled for Legacy, 0x3 = Reserved
> 		 */
> 		nvidia,rxq_enable_ctrl = <2 2 2 2>;
> 		nvidia,queue_prio = <0 1 2 3>;
> 		nvidia,use_tagged_ptp;
> 		nvidia,ptp_dma_ch = <3>;
> 		nvidia,chan_napi_quota = <64 64 64 64>;
> 		nvidia,pause_frames = <0>; /*0=enable, 1=disable */
> 		nvidia,phy-reset-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(G, 5) 0>;
> 		nvidia,phy-max-frame-size = <16>;	/* size in kbytes */
> 		nvidia,eth_iso_enable = <1>; /*0=enable, 1=disable */
> 		/*  mod begin */
> 		phy-mode = "rgmii";
> 		/* phy-handle = <&phy0>; */
> 		fixed-link {
> 				speed = <1000>;
> 				full-duplex;
> 		};
> 		/*  mod end*/
> 		mdio {
> 			compatible = "nvidia,eqos-mdio";
> 			#address-cells = <1>;
> 			#size-cells = <0>;
> 			phy0: ethernet-phy@0 {
> 				reg = <0>;
> 				interrupt-parent = <&tegra_main_gpio>;
> 				interrupts = <TEGRA194_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
> 				marvell,copper-mode;
> 				/* Setup LED[2] as interrupt pin (active low) */
> 				marvell,reg-init = <0x03 0x12 0x7fff 0x880>;
> 			};
> 		};
> 	};

Do you see any diff between jp4.4.1 and jp4.5 for all the drivers you can come up to here?

WaneWWW,
Thanks for your help. I think this is a red herring, somebody changed FPGA design that broke this. I reverted Xavier to 4.4.1, and still see the problem there. I think we can close this. Sorry, just too many things have changed at the same time.
-Aliaksei.

1 Like