Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'mlx5-fixes'

Saeed Mahameed says:

====================
mlx5 tx timeout watchdog fixes

This patch set provides two trivial fixes for the tx timeout series lately
applied into net 4.7.

From Daniel, detect stuck queues due to BQL
From Mohamad, fix tx timeout watchdog false alarm

Hopefully those two fixes will make it to -stable, assuming
3947ca185999 ('net/mlx5e: Implement ndo_tx_timeout callback') was also backported to -stable.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+12 -1
+12 -1
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
··· 1348 1348 goto err_close_channels; 1349 1349 } 1350 1350 1351 + /* FIXME: This is a W/A for tx timeout watch dog false alarm when 1352 + * polling for inactive tx queues. 1353 + */ 1354 + netif_tx_start_all_queues(priv->netdev); 1355 + 1351 1356 kfree(cparam); 1352 1357 return 0; 1353 1358 ··· 1371 1366 static void mlx5e_close_channels(struct mlx5e_priv *priv) 1372 1367 { 1373 1368 int i; 1369 + 1370 + /* FIXME: This is a W/A only for tx timeout watch dog false alarm when 1371 + * polling for inactive tx queues. 1372 + */ 1373 + netif_tx_stop_all_queues(priv->netdev); 1374 + netif_tx_disable(priv->netdev); 1374 1375 1375 1376 for (i = 0; i < priv->params.num_channels; i++) 1376 1377 mlx5e_close_channel(priv->channel[i]); ··· 2667 2656 for (i = 0; i < priv->params.num_channels * priv->params.num_tc; i++) { 2668 2657 struct mlx5e_sq *sq = priv->txq_to_sq_map[i]; 2669 2658 2670 - if (!netif_tx_queue_stopped(netdev_get_tx_queue(dev, i))) 2659 + if (!netif_xmit_stopped(netdev_get_tx_queue(dev, i))) 2671 2660 continue; 2672 2661 sched_work = true; 2673 2662 set_bit(MLX5E_SQ_STATE_TX_TIMEOUT, &sq->state);