net/mlx4_en: Add prints when TX timeout occurs
authorYevgeny Petrilin <yevgenyp@mellanox.com>
Tue, 25 Jun 2013 09:09:34 +0000 (12:09 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Jun 2013 23:29:39 +0000 (16:29 -0700)
Print a warning when a TX timeout is detected

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_netdev.c

index f1dcddcb8050d571c76fa451d49f105d2894cde6..caf2047705697f5e370407f46e5b521304ba83f4 100644 (file)
@@ -1236,10 +1236,19 @@ static void mlx4_en_tx_timeout(struct net_device *dev)
 {
        struct mlx4_en_priv *priv = netdev_priv(dev);
        struct mlx4_en_dev *mdev = priv->mdev;
+       int i;
 
        if (netif_msg_timer(priv))
                en_warn(priv, "Tx timeout called on port:%d\n", priv->port);
 
+       for (i = 0; i < priv->tx_ring_num; i++) {
+               if (!netif_tx_queue_stopped(netdev_get_tx_queue(dev, i)))
+                       continue;
+               en_warn(priv, "TX timeout on queue: %d, QP: 0x%x, CQ: 0x%x, Cons: 0x%x, Prod: 0x%x\n",
+                       i, priv->tx_ring[i].qpn, priv->tx_ring[i].cqn,
+                       priv->tx_ring[i].cons, priv->tx_ring[i].prod);
+       }
+
        priv->port_stats.tx_timeout++;
        en_dbg(DRV, priv, "Scheduling watchdog\n");
        queue_work(mdev->workqueue, &priv->watchdog_task);