Skip to content

Commit

Permalink
RDMA/cxgb4: Fix onchip queue support for T5
Browse files Browse the repository at this point in the history
T5 adapter does not support onchip queue memory. Present logic fails to
allocate QP for T5 and returns an error. Also, if module parameter ocqp_support
is zero then we are unable to allocate QP which should not be the case. Ideally
if ocqp_support parameter is 0 or onchip queue support is disable then host QP
should be allocated before returning an error.

Signed-off-by: Vipul Pandya <vipul@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vipul Pandya authored and David S. Miller committed Mar 14, 2013
1 parent 3b174d9 commit 9919d5b
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions drivers/infiniband/hw/cxgb4/qp.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
int wr_len;
struct c4iw_wr_wait wr_wait;
struct sk_buff *skb;
int ret;
int ret = 0;
int eqsize;

wq->sq.qid = c4iw_get_qpid(rdev, uctx);
Expand Down Expand Up @@ -180,17 +180,14 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
}

if (user) {
ret = alloc_oc_sq(rdev, &wq->sq);
if (ret)
if (alloc_oc_sq(rdev, &wq->sq) && alloc_host_sq(rdev, &wq->sq))
goto free_hwaddr;

ret = alloc_host_sq(rdev, &wq->sq);
if (ret)
goto free_sq;
} else
} else {
ret = alloc_host_sq(rdev, &wq->sq);
if (ret)
goto free_hwaddr;
}

memset(wq->sq.queue, 0, wq->sq.memsize);
dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);

Expand Down

0 comments on commit 9919d5b

Please sign in to comment.