Thread (28 messages) 28 messages, 7 authors, 2012-02-08

Re: infinite spin in RT when booting with DHCP on

From: Hector Palacios <hidden>
Date: 2012-02-03 10:23:34

On 02/02/2012 09:13 PM, Uwe Kleine-König wrote:
On Thu, Feb 02, 2012 at 01:38:44PM +0100, Tim Sander wrote:
quoted
Hi
quoted
When booting my platform with DHCP on, the DHCP request is sent by the
network driver before the PHY has even started the autonegotiation.
Since the PHY is not ready, the TX interrupt returns with NETDEV_TX_BUSY
but the softirq [sirq-net-tx] seems to have entered an infinite spin, as
my system is practically hung and 'top' reveals [sirq-net-tx/0] is
consuming 95% of CPU. This is preventing the PHY autonegotiation (which is
scheduled as a delayed work) to start, so the PHY is never ready and the
packet never reaches the network.
Mh, i think i am hit by the same problem. I have a i.mx 35 and when dhcp is
enabled the ksoftirq is also running wild with 3.0-rt. This also happens when
I fail to reproduce that on a pcm043 machine using 3.0.18-rt34. Can you
provide me your config. Does the problem occur on every boot for you? If
not, how often do I need to reboot?
On my ARM iMX51 platform the problem occurs on every boot. Basically I'm launching 
udhcpc on the /etc/network/if-up.d/ifup script, to get a dynamic IP for the FEC.
@Hector: Greeting to Spain. I don't have an imx51 machine handy, but
your config and your answers on my questions might help, too.
Hello Uwe, hope you're doing well.
Apart from the fact that the fec.c driver is checking the link on the 
fec_enet_start_xmit() function and returning NETDEV_TX_BUSY if there's no link, it 
always seemed to me that this driver takes ages to autonegotiate with the PHY (2-3 
seconds), which might be also a reason why this race happens in this platform (in any 
iMX platform with the FEC, actually).

If booting with static IP, it takes this time (2-3 seconds) from when the ifup script 
is run until I see the message from the PHY reporting Link is ON. From then on, I can 
request a DHCP address and work normally.

Attached my kernel config.
-- 
Héctor Palacios

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help