• Willy Tarreau's avatar
    net: mvneta: fix improper tx queue usage in mvneta_tx() · ee40a116
    Willy Tarreau authored
    mvneta_tx() was using a static tx queue number causing crashes as
    soon as a little bit of traffic was sent via the interface, because
    it is normally expected that the same queue should be used as in
    dev_queue_xmit().
    
    As suggested by Ben Hutchings, let's use skb_get_queue_mapping() to
    get the proper Tx queue number, and use alloc_etherdev_mqs() instead
    of alloc_etherdev_mq() to create the queues.
    
    Both my Mirabox and my OpenBlocks AX3 used to crash without this patch
    and don't anymore with it. The issue appeared in 3.8 but became more
    visible after the fix allowing GSO to be enabled.
    
    Original work was done by Dmitri Epshtein and Thomas Petazzoni. I
    just adapted it to take care of Ben's comments.
    Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
    Cc: Dmitri Epshtein <dima@marvell.com>
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Cc: Ben Hutchings <bhutchings@solarflare.com>
    Tested-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ee40a116
mvneta.c 74.8 KB