aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/cxgb4/qp.c
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2010-09-10 12:15:25 -0400
committerRoland Dreier <rolandd@cisco.com>2010-09-28 13:46:34 -0400
commitaadc4df3087a33ca7fc37f91a024e7b7efdafa75 (patch)
tree41e5da5350ce779d1f6058329166ab9da0cc4c61 /drivers/infiniband/hw/cxgb4/qp.c
parent9e8d1fa3420f489da8a5da47c026511aa71fa50b (diff)
RDMA/cxgb4: Centralize the wait logic
Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/cxgb4/qp.c')
-rw-r--r--drivers/infiniband/hw/cxgb4/qp.c35
1 files changed, 5 insertions, 30 deletions
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
index 1199d1b9baf6..40187e26d2b9 100644
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -198,14 +198,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
198 ret = c4iw_ofld_send(rdev, skb); 198 ret = c4iw_ofld_send(rdev, skb);
199 if (ret) 199 if (ret)
200 goto err7; 200 goto err7;
201 wait_event_timeout(wr_wait.wait, wr_wait.done, C4IW_WR_TO); 201 ret = c4iw_wait_for_reply(rdev, &wr_wait, 0, wq->sq.qid, __func__);
202 if (!wr_wait.done) {
203 printk(KERN_ERR MOD "Device %s not responding!\n",
204 pci_name(rdev->lldi.pdev));
205 rdev->flags = T4_FATAL_ERROR;
206 ret = -EIO;
207 } else
208 ret = wr_wait.ret;
209 if (ret) 202 if (ret)
210 goto err7; 203 goto err7;
211 204
@@ -997,20 +990,8 @@ static int rdma_fini(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
997 if (ret) 990 if (ret)
998 goto out; 991 goto out;
999 992
1000 wait_event_timeout(wr_wait.wait, wr_wait.done, C4IW_WR_TO); 993 ret = c4iw_wait_for_reply(&rhp->rdev, &wr_wait, qhp->ep->hwtid,
1001 if (!wr_wait.done) { 994 qhp->wq.sq.qid, __func__);
1002 printk(KERN_ERR MOD "Device %s not responding!\n",
1003 pci_name(rhp->rdev.lldi.pdev));
1004 rhp->rdev.flags = T4_FATAL_ERROR;
1005 ret = -EIO;
1006 } else {
1007 ret = wr_wait.ret;
1008 if (ret)
1009 printk(KERN_WARNING MOD
1010 "%s: Abnormal close qpid %d ret %u\n",
1011 pci_name(rhp->rdev.lldi.pdev), qhp->wq.sq.qid,
1012 ret);
1013 }
1014out: 995out:
1015 PDBG("%s ret %d\n", __func__, ret); 996 PDBG("%s ret %d\n", __func__, ret);
1016 return ret; 997 return ret;
@@ -1106,14 +1087,8 @@ static int rdma_init(struct c4iw_dev *rhp, struct c4iw_qp *qhp)
1106 if (ret) 1087 if (ret)
1107 goto out; 1088 goto out;
1108 1089
1109 wait_event_timeout(wr_wait.wait, wr_wait.done, C4IW_WR_TO); 1090 ret = c4iw_wait_for_reply(&rhp->rdev, &wr_wait, qhp->ep->hwtid,
1110 if (!wr_wait.done) { 1091 qhp->wq.sq.qid, __func__);
1111 printk(KERN_ERR MOD "Device %s not responding!\n",
1112 pci_name(rhp->rdev.lldi.pdev));
1113 rhp->rdev.flags = T4_FATAL_ERROR;
1114 ret = -EIO;
1115 } else
1116 ret = wr_wait.ret;
1117out: 1092out:
1118 PDBG("%s ret %d\n", __func__, ret); 1093 PDBG("%s ret %d\n", __func__, ret);
1119 return ret; 1094 return ret;