User Profile
User Widgets
Contributions
Re: High-Latency Ethernet on Arria 10 SoC device using HPS EMAC and KSZ9031
Hi Silvan, When you get the devkit "stuck" waiting for a receive, try issuing the command, ethtool -d <eth_interface>, to get a dump of all the registers. This might provide deeper insight into the problem. An experiment worth trying is to change the size of the ICMP packets sent by the ping command with the -s option. I suggest trying values of 128, 129, 130, and 131 to explore alignment as being part of the problem. Another experiment to try is to enable "busy polling" every millisecond with the following command: # echo 1000 > /proc/sys/net/core/busy_poll The value of the parameter is microseconds; so, I would expect the RX path would get unstuck after 1 millisecond. Regards, Matthew2.3KViews0likes1CommentRe: Debug during boot
Are you saying that Linux is hanging during boot? If so what are all the messages that linux does print out before hanging? That could give some indication of the nature of the hang ( e.g. what part of the EMAC initialization is hanging )? If you have access to the ARM DS Debugger, you could step through the driver probe function to locate what software is getting stuck. If you don't have access to the debugger, you could add dev_info() calls in the driver to get more insight to the location of the hang. From a software point of view, hangs usually indicate no response to a read or write transaction. Has reset to the EMAC been deasserted?1.3KViews1like0CommentsRe: EMAC drivers Agilex5
I am not an expert on the GMII interface, but your connections look correct to me. Clocks and resets need to be connected appropriately, and the tx related signals of one ethernet need to be connected to corresponding rx related signals on the other ethernet. You'll know you have the connections correct when link gets established on both ends as observed with ifconfig or ip commands.790Views1like0CommentsRe: EMAC drivers Agilex5
I can think of two possible use cases to use the ethernet drivers without connecting the device to an external phy: Enable loopback on the internal devices. Connect emac0 and emac1 together in the FPGA. In either case, your suggested device tree change is sufficient to properly bind the driver instances to the devices.859Views1like1Comment