diff options
-rw-r--r-- | drivers/infiniband/hw/cxgb4/qp.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c index 90833d701631..9fe6f1e84373 100644 --- a/drivers/infiniband/hw/cxgb4/qp.c +++ b/drivers/infiniband/hw/cxgb4/qp.c | |||
@@ -140,7 +140,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq, | |||
140 | int wr_len; | 140 | int wr_len; |
141 | struct c4iw_wr_wait wr_wait; | 141 | struct c4iw_wr_wait wr_wait; |
142 | struct sk_buff *skb; | 142 | struct sk_buff *skb; |
143 | int ret; | 143 | int ret = 0; |
144 | int eqsize; | 144 | int eqsize; |
145 | 145 | ||
146 | wq->sq.qid = c4iw_get_qpid(rdev, uctx); | 146 | wq->sq.qid = c4iw_get_qpid(rdev, uctx); |
@@ -180,17 +180,14 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq, | |||
180 | } | 180 | } |
181 | 181 | ||
182 | if (user) { | 182 | if (user) { |
183 | ret = alloc_oc_sq(rdev, &wq->sq); | 183 | if (alloc_oc_sq(rdev, &wq->sq) && alloc_host_sq(rdev, &wq->sq)) |
184 | if (ret) | ||
185 | goto free_hwaddr; | 184 | goto free_hwaddr; |
186 | 185 | } else { | |
187 | ret = alloc_host_sq(rdev, &wq->sq); | ||
188 | if (ret) | ||
189 | goto free_sq; | ||
190 | } else | ||
191 | ret = alloc_host_sq(rdev, &wq->sq); | 186 | ret = alloc_host_sq(rdev, &wq->sq); |
192 | if (ret) | 187 | if (ret) |
193 | goto free_hwaddr; | 188 | goto free_hwaddr; |
189 | } | ||
190 | |||
194 | memset(wq->sq.queue, 0, wq->sq.memsize); | 191 | memset(wq->sq.queue, 0, wq->sq.memsize); |
195 | dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr); | 192 | dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr); |
196 | 193 | ||