Hi Greg, this is the series I sent a few months ago that David has already backported to 3.13-stable, and that did not apply well to 3.10. As agreed with David he I've now handled the 3.10-stable one myself, and rebased the patches on top of 3.10.51. For better tracking I'm re-iterating here the issues these patches fix : - driver lockup when reading stats while sending traffic from multiple CPUs : this obviously only happens on SMP and is the result of missing locking on the driver. The problem was present since the introduction of the driver in 3.8. The first patch performs some changes that are needed for the second one which actually fixes the issue by using per-cpu counters. It could make sense to backport this to the relevant stable versions. - mvneta_tx_timeout calls various functions to reset the NIC, and these functions sleep, which is not allowed here, resulting in a panic. Better completely disable this Tx timeout handler for now since it is never called. The problem was encountered while developing some new features, it's uncertain whether it's possible to reproduce it with regular usage, so maybe a backport to stable is not needed. - replace the Tx timer with a real Tx IRQ. As first reported by Arnaud Ebalard and explained by Eric Dumazet, there is no way this driver can work correctly if it uses a timer to recycle the Tx descriptors. If too many packets are sent at once, the driver quickly ends up with no descriptors (which happens twice as easily in GSO) and has to wait 10ms for recycling its descriptors and being able to send again. Eric has worked around this in the core GSO code. But still when routing traffic or sending UDP packets, the limitation is very visible. Using Tx IRQs allows Tx descriptors to be recycled when sent. The coalesce value is still configurable using ethtool. This fix turns the UDP send bitrate from 134 Mbps to 987 Mbps (ie: line rate). It's made of two patches, one to add the relevant bits from the original Marvell's driver, and another one to implement the change. I don't know if it should be backported to stable, as the bug only causes poor performance. Thanks, Willy --- willy tarreau (5): net: mvneta: increase the 64-bit rx/tx stats out of the hot path net: mvneta: use per_cpu stats to fix an SMP lock up net: mvneta: do not schedule in mvneta_tx_timeout net: mvneta: add missing bit descriptions for interrupt masks and causes net: mvneta: replace Tx timer with a real interrupt drivers/net/ethernet/marvell/mvneta.c | 206 ++++++++++++++++++---------------- 1 file changed, 108 insertions(+), 98 deletions(-) -- 1.7.12.2.21.g234cd45.dirty -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html