diff options
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/en_netdev.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c index f1dcddcb8050..caf204770569 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c | |||
@@ -1236,10 +1236,19 @@ static void mlx4_en_tx_timeout(struct net_device *dev) | |||
1236 | { | 1236 | { |
1237 | struct mlx4_en_priv *priv = netdev_priv(dev); | 1237 | struct mlx4_en_priv *priv = netdev_priv(dev); |
1238 | struct mlx4_en_dev *mdev = priv->mdev; | 1238 | struct mlx4_en_dev *mdev = priv->mdev; |
1239 | int i; | ||
1239 | 1240 | ||
1240 | if (netif_msg_timer(priv)) | 1241 | if (netif_msg_timer(priv)) |
1241 | en_warn(priv, "Tx timeout called on port:%d\n", priv->port); | 1242 | en_warn(priv, "Tx timeout called on port:%d\n", priv->port); |
1242 | 1243 | ||
1244 | for (i = 0; i < priv->tx_ring_num; i++) { | ||
1245 | if (!netif_tx_queue_stopped(netdev_get_tx_queue(dev, i))) | ||
1246 | continue; | ||
1247 | en_warn(priv, "TX timeout on queue: %d, QP: 0x%x, CQ: 0x%x, Cons: 0x%x, Prod: 0x%x\n", | ||
1248 | i, priv->tx_ring[i].qpn, priv->tx_ring[i].cqn, | ||
1249 | priv->tx_ring[i].cons, priv->tx_ring[i].prod); | ||
1250 | } | ||
1251 | |||
1243 | priv->port_stats.tx_timeout++; | 1252 | priv->port_stats.tx_timeout++; |
1244 | en_dbg(DRV, priv, "Scheduling watchdog\n"); | 1253 | en_dbg(DRV, priv, "Scheduling watchdog\n"); |
1245 | queue_work(mdev->workqueue, &priv->watchdog_task); | 1254 | queue_work(mdev->workqueue, &priv->watchdog_task); |