IB/mlx4: Return EAGAIN for any error in mlx4_ib_poll_one
authorYuval Shaia <yuval.shaia@oracle.com>
Wed, 27 Jul 2016 08:24:53 +0000 (01:24 -0700)
committerDoug Ledford <dledford@redhat.com>
Mon, 22 Aug 2016 18:26:53 +0000 (14:26 -0400)
Error code EAGAIN should be used when errors are temporary and next call
might succeeds.
When error code other than EAGAIN is returned, the caller (mlx4_ib_poll)
will assume all CQE in the same bunch are error too and will drop them all.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx4/cq.c

index 15b628996633f27354c90c7f492646e78b083b99..006db6436e3b22511bcbb4d990a55e56ac8adcce 100644 (file)
@@ -690,7 +690,7 @@ repoll:
        if (unlikely((cqe->owner_sr_opcode & MLX4_CQE_OPCODE_MASK) == MLX4_OPCODE_NOP &&
                     is_send)) {
                pr_warn("Completion for NOP opcode detected!\n");
-               return -EINVAL;
+               return -EAGAIN;
        }
 
        /* Resize CQ in progress */
@@ -721,7 +721,7 @@ repoll:
                if (unlikely(!mqp)) {
                        pr_warn("CQ %06x with entry for unknown QPN %06x\n",
                               cq->mcq.cqn, be32_to_cpu(cqe->vlan_my_qpn) & MLX4_CQE_QPN_MASK);
-                       return -EINVAL;
+                       return -EAGAIN;
                }
 
                *cur_qp = to_mibqp(mqp);
@@ -739,7 +739,7 @@ repoll:
                if (unlikely(!msrq)) {
                        pr_warn("CQ %06x with entry for unknown SRQN %06x\n",
                                cq->mcq.cqn, srq_num);
-                       return -EINVAL;
+                       return -EAGAIN;
                }
        }