lkml.org 
[lkml]   [2017]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 186/306] net/mlx4_en: Process all completions in RX rings after port goes up
    3.16.40-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Erez Shitrit <erezsh@mellanox.com>

    commit 8d59de8f7bb3db296331c665779c653b0c8d13ba upstream.

    Currently there is a race between incoming traffic and
    initialization flow. HW is able to receive the packets
    after INIT_PORT is done and unicast steering is configured.
    Before we set priv->port_up NAPI is not scheduled and
    receive queues become full. Therefore we never get
    new interrupts about the completions.
    This issue could happen if running heavy traffic during
    bringing port up.
    The resolution is to schedule NAPI once port_up is set.
    If receive queues were full this will process all cqes
    and release them.

    Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC")
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 7 +++++++
    1 file changed, 7 insertions(+)

    --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    @@ -1733,6 +1733,13 @@ int mlx4_en_start_port(struct net_device
    vxlan_get_rx_port(dev);
    #endif
    priv->port_up = true;
    +
    + /* Process all completions if exist to prevent
    + * the queues freezing if they are full
    + */
    + for (i = 0; i < priv->rx_ring_num; i++)
    + napi_schedule(&priv->rx_cq[i]->napi);
    +
    netif_tx_start_all_queues(dev);
    netif_device_attach(dev);

    \
     
     \ /
      Last update: 2017-02-16 00:30    [W:4.117 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site