net/mlx4_en: Notify user when TX ring in error state
authorAmir Vadai <amirv@mellanox.com>
Wed, 21 Aug 2013 07:08:57 +0000 (10:08 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 21 Aug 2013 19:19:26 +0000 (12:19 -0700)
When hardware gets into error state, must notify user about it.
When QP in error state no traffic will be tx'ed from the attached
tx_ring.

Driver should know how to recover from this unexpected state. I will send later
on the recovery flow, but having the print shouldn't be delayed.

Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_tx.c

index 6dcca98..0d691e3 100644 (file)
@@ -362,6 +362,15 @@ static void mlx4_en_process_tx_cq(struct net_device *dev, struct mlx4_en_cq *cq)
                 */
                rmb();
 
+               if (unlikely((cqe->owner_sr_opcode & MLX4_CQE_OPCODE_MASK) ==
+                            MLX4_CQE_OPCODE_ERROR)) {
+                       struct mlx4_err_cqe *cqe_err = (struct mlx4_err_cqe *)cqe;
+
+                       en_err(priv, "CQE error - vendor syndrome: 0x%x syndrome: 0x%x\n",
+                              cqe_err->vendor_err_syndrome,
+                              cqe_err->syndrome);
+               }
+
                /* Skip over last polled CQE */
                new_index = be16_to_cpu(cqe->wqe_index) & size_mask;