From: Arnd Bergmann > On Tuesday 25 March 2014 10:16:28 Florian Fainelli wrote: > > > > Ok, well that's really unfortunate, to achieve the best of everything, > > the workaround should probably look like: > > > > - keep reclaiming TX buffers in ndo_start_xmit() in case you push more > > packets to the NICs than your timer can free > > - reclaim TX buffers in NAPI poll() context for "symetrical" workloads > > where e.g: TCP ACKs received allow you to complete TX buffers > > - have a timer like you suggest which should help with transmit only > > workloads at a slow rate > > Yes, that is what I was thinking, but with orphaning the tx skbs, > we can probably be a little smarter. Note that in order to check > the state of the queue, we have to do a read from uncached memory, > since the hardware also doesn't support cache coherent DMA. > We don't want to do that too often. Possibly you can check for all the pending transmits having completed - the most likely case. Instead of checking them individually? You should limit the number of tx bytes as well as the number of tx frames - buffering a ring full of large frames subverts some of the algorithms higher up the stack. David -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html