[PATCH] IB/mthca: Fix posting work requests to shared receive queues
authorRoland Dreier <rolandd@cisco.com>
Sun, 18 Sep 2005 21:00:17 +0000 (14:00 -0700)
committerRoland Dreier <rolandd@cisco.com>
Mon, 19 Sep 2005 05:02:38 +0000 (22:02 -0700)
The error handling paths in mthca_tavor_post_srq_recv() and
mthca_arbel_post_srq_recv() are quite bogus, the result of a
screwed up merge.  Fix them so they work as intended.

Pointed out by Michael S. Tsirkin <mst@mellanox.co.il>

Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_srq.c

index fe06cc0..45dedd2 100644 (file)
@@ -409,7 +409,7 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
                        mthca_err(dev, "SRQ %06x full\n", srq->srqn);
                        err = -ENOMEM;
                        *bad_wr = wr;
-                       return nreq;
+                       break;
                }
 
                wqe       = get_wqe(srq, ind);
@@ -427,7 +427,7 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
                        err = -EINVAL;
                        *bad_wr = wr;
                        srq->last = prev_wqe;
-                       return nreq;
+                       break;
                }
 
                for (i = 0; i < wr->num_sge; ++i) {
@@ -456,8 +456,6 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
                srq->first_free = next_ind;
        }
 
-       return nreq;
-
        if (likely(nreq)) {
                __be32 doorbell[2];
 
@@ -501,7 +499,7 @@ int mthca_arbel_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
                        mthca_err(dev, "SRQ %06x full\n", srq->srqn);
                        err = -ENOMEM;
                        *bad_wr = wr;
-                       return nreq;
+                       break;
                }
 
                wqe       = get_wqe(srq, ind);
@@ -517,7 +515,7 @@ int mthca_arbel_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
                if (unlikely(wr->num_sge > srq->max_gs)) {
                        err = -EINVAL;
                        *bad_wr = wr;
-                       return nreq;
+                       break;
                }
 
                for (i = 0; i < wr->num_sge; ++i) {