Hello everyone,
I'm using the fec0 of the iMX287 with 10M/Half duplex mode,but sometimes the fec0 will enter error state with the error message is "eth0: tx queue full!",and this state will keep on until I send "ifconfig eth0 down" and "ifconfig eth0 up".After these two commands,the fec0 will word correctly.I find the location of the error message "eth0: tx queue full!" is in the function of fec_enet_start_xmit in /drivers/net/fec.c, the resaon is the status bit BD_ENET_TX_READY is set. What's this bit mean? and in what condition this bit will be set? and when this bit is set, where and how to reset it?
Best Regards.
The following may be helpful.
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thanks very much! But this article don't solve my problem,it seems no effect. After testing, I find when enter to the error state, the driver can't get in the "fec_timeout" function, so the way to modify the "fec_timeout" function doesn't work.
The status bit BD_ENET_TX_READY means, that current Tx buffer cannot be
send in time. If there are no hardware errors, it is needed just wait the Tx buffer transmitting.
Looks like the current BSP implementation is not optimal for 10M half duplex mode.
~Yuri.