ucc_geth: transmit queue timeout at half-duplex mode

Schmitz, Andreas Andreas.Schmitz at riedel.net
Sat Dec 11 00:52:27 EST 2010


Hi all,
on my MPC8321E with linux-2.6.36 I get this netdev watchdog warning "NETDEV WATCHDOG: eth0 (of:ucc_geth): transmit queue 0 timed out" if the link mode is half-duplex.
The warning is caused, because all Tx BDs are full and packet transmission is stopped with netif_stop_queue() in ucc_geth_start_xmit().

You can reproduce the bug in the following way:
- Connect to a switch, that supports only 10baseT, or set the mode manually with "mii-diag -F 10baseT".
- Open a telnet session to the target. Generate higher traffic with executing maybe "cat /proc/interrupts" many times.
- After some tries the ethernet connection will be down, then again after approx. 30s seconds the netdev watchdog will dump the warning.

It is unclear to me why the TxBDs get full. Due to missing "Tx buffer sent" interrupts, it seems that the QE stops the transmission.

I found some issue in the errata: "QE_ENET20: UEC may stop transmitting after late collision". But UCCE[TXE] is never set in this case.

Thank you for your help in advance and best regards,

Andreas Schmitz
Software Engineer
_______________________________________
RIEDEL
Communications GmbH & Co. KG
Uellendahler Str. 353
42109 Wuppertal
Germany

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20101210/f0c61c9f/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ucc_geth_half_duplex_netdev_watchdog.txt
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20101210/f0c61c9f/attachment.txt>


More information about the Linuxppc-dev mailing list