|
@@ -100,6 +100,16 @@ static int alloc_host_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int alloc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq, int user)
|
|
|
+{
|
|
|
+ int ret = -ENOSYS;
|
|
|
+ if (user)
|
|
|
+ ret = alloc_oc_sq(rdev, sq);
|
|
|
+ if (ret)
|
|
|
+ ret = alloc_host_sq(rdev, sq);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
|
|
|
struct c4iw_dev_ucontext *uctx)
|
|
|
{
|
|
@@ -168,18 +178,9 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
|
|
|
goto free_sw_rq;
|
|
|
}
|
|
|
|
|
|
- if (user) {
|
|
|
- ret = alloc_oc_sq(rdev, &wq->sq);
|
|
|
- if (ret)
|
|
|
- goto free_hwaddr;
|
|
|
-
|
|
|
- ret = alloc_host_sq(rdev, &wq->sq);
|
|
|
- if (ret)
|
|
|
- goto free_sq;
|
|
|
- } else
|
|
|
- ret = alloc_host_sq(rdev, &wq->sq);
|
|
|
- if (ret)
|
|
|
- goto free_hwaddr;
|
|
|
+ ret = alloc_sq(rdev, &wq->sq, user);
|
|
|
+ if (ret)
|
|
|
+ goto free_hwaddr;
|
|
|
memset(wq->sq.queue, 0, wq->sq.memsize);
|
|
|
dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
|
|
|
|