Re: NIU - Sun Neptune 10g - Transmit timed out reset (2.6.24)

David Miller
2008-06-18T00:02:37Z

From: Matheos Worku <Matheos.Worku@Sun.COM>
Date: Tue, 27 May 2008 18:18:57 -0700

> Considering that fixing the HW would take considerable time, I was
> wondering if the scheme we use in the nxge driver could be considered as
> a workaround. Since the niu driver is already doing skb_orphan as a work
> around, what if already transmitted TX buffers are reclaimed
> periodically, within dev->hard_start_xmit() ? Then TX_DESC_MARK would
> be set if/when available TX descriptor count falls below some watermark.
> Disable device TX queue about the time TX_DESC_MARK is set and enable
> it within TX interrupt.

This is still insufficient.

Even if we detach the socket association, there are still resources
held by the SKB, such as firewalling state.

So you can get into situations where, for example, you can't unload
netfilter modules, attempts just hang the system.

The only workaround is to use a timer to purge the TX queue, and that's
far from acceptable in my opinion, because of the timer maintainence
overhead and the latency.