netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Assorted mvneta fixes
@ 2014-01-12  9:31 Willy Tarreau
  2014-01-12  9:31 ` [PATCH 1/5] net: mvneta: increase the 64-bit rx/tx stats out of the hot path Willy Tarreau
                   ` (6 more replies)
  0 siblings, 7 replies; 25+ messages in thread
From: Willy Tarreau @ 2014-01-12  9:31 UTC (permalink / raw)
  To: davem
  Cc: netdev, Willy Tarreau, Thomas Petazzoni, Gregory CLEMENT,
	Arnaud Ebalard, Eric Dumazet

Hi,

this series provides some fixes for a number of issues met with the
mvneta driver :

  - 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 driver 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 | 217 ++++++++++++++++++----------------
 1 file changed, 116 insertions(+), 101 deletions(-)

-- 
1.7.12.2.21.g234cd45.dirty

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2014-01-15  0:58 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-12  9:31 [PATCH 0/5] Assorted mvneta fixes Willy Tarreau
2014-01-12  9:31 ` [PATCH 1/5] net: mvneta: increase the 64-bit rx/tx stats out of the hot path Willy Tarreau
2014-01-13  0:49   ` Eric Dumazet
2014-01-13  3:06     ` Willy Tarreau
2014-01-12  9:31 ` [PATCH 2/5] net: mvneta: use per_cpu stats to fix an SMP lock up Willy Tarreau
2014-01-12 18:07   ` Eric Dumazet
2014-01-12 22:09     ` Willy Tarreau
2014-01-13  0:45       ` Eric Dumazet
2014-01-13  3:02         ` Willy Tarreau
2014-01-13  0:48   ` Eric Dumazet
2014-01-12  9:31 ` [PATCH 3/5] net: mvneta: do not schedule in mvneta_tx_timeout Willy Tarreau
2014-01-12 16:49   ` Ben Hutchings
2014-01-12 16:55     ` Willy Tarreau
2014-01-12 17:38       ` Ben Hutchings
2014-01-12 22:14         ` Willy Tarreau
2014-01-14 15:33         ` Willy Tarreau
2014-01-12  9:31 ` [PATCH 4/5] net: mvneta: add missing bit descriptions for interrupt masks and causes Willy Tarreau
2014-01-12  9:31 ` [PATCH 5/5] net: mvneta: replace Tx timer with a real interrupt Willy Tarreau
2014-01-13 23:22   ` Arnaud Ebalard
2014-01-14  7:30     ` Willy Tarreau
2014-01-12 19:21 ` [PATCH 0/5] Assorted mvneta fixes Arnaud Ebalard
2014-01-12 22:22   ` Willy Tarreau
2014-01-13 22:36     ` Arnaud Ebalard
2014-01-14  7:24       ` Willy Tarreau
2014-01-15  0:58 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).