From: Arnd Bergmann > > Using a timer to ensure completion of TX packets is a trick that > > worked in the past, but now that the networking stack got smarter, > > this might artificially increase the processing time of packets in the > > transmit path, and this will defeat features like TCP small queues > > etc.. as could be seen with the mvneta driver [1]. The best way really > > is to rely on TX completion interrupts when those exist as they cannot > > lie about the hardware status (in theory) and they should provide the > > fastest way to complete TX packets. > > By as Zhangfei Gao pointed out, this hardware does not have a working > TX completion interrupt. Using timers to do this has always just been > a workaround for broken hardware IMHO. I remember disabling the 'tx done' interrupt (unless the tx ring was full) in order to get a significant increase in throughput due to the reduced interrupt load. The 'interrupt mitigation' logic on modern hardware probably makes this less of a problem. It might be possible to orphan the skb when they are put into the tx ring, and to significantly limit the number of bytes in the tx ring (BQL?). That might upset TCP small queues less than delaying the actual tx completions. 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