Re: [PATCH 0/5] net: assorted mvneta fixes for 3.10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Aug 02, 2014 at 11:02:49PM +0200, Willy Tarreau wrote:
> 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

Thanks Willy, I'm queuing these patches for the 3.11 kernel as well.

Cheers,
--
Luís
--
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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]