Ethernet reinit on phyCORE hangs the device
andrej.picej at norik.com
Tue Jun 14 03:33:48 PDT 2022
On 14. 06. 22 10:27, Sascha Hauer wrote:
> On Tue, Jun 14, 2022 at 09:12:23AM +0200, Andrej Picej wrote:
>> Hi all,
>> when testing barebox ethernet on i.MX6 (phyCORE) we encountered a bug:
>> the ethernet re-init on barebox doesn't work! If we do:
>> $ ifup eth0
>> $ ifdown eth0
>> and then:
>> $ ifup eth0
>> $ ping HOST_IP
>> the device hangs and can only be saved by resetting the board manually.
> I can confirm the behaviour is the same here.
>> We narrowed the problem down to the "fec_tx_task_enable". It seems that
>> enabling tx task with writing to TDAR reg hangs the device shortly after.
>> Did you guys maybe encounter something similar on i.MX6 boards or on any
>> other boards?
>> I guess this is a really specific problem as people don't normally do
>> ifup/ifdown with ethernet in bootloader :D.
> Nope :)
>> Do you have any idea what could be the reason or how could this be solved?
>> Any useful information would be greatly appreciated.
> Part of the problem is that fec_halt() tears down the device completely.
> The counterpart of that is fec_init(), but that is called from during
> probe only. I think fec_init() should be called from fec_open() as well.
Hmm I thought I already tried that, guess not...
> A quick test revealed this is really only part of the problem. The next
> one is that fec_update_linkspeed() is not called on second open, so the
> fec speed registers will not get their correct value.
Ok, I'll check that out.
Thanks for your help so far.
More information about the barebox