Commit 471115ab authored by Michal Kalderon's avatar Michal Kalderon Committed by David S. Miller

qed: Fix maximum number of CQs for iWARP

The maximum number of CQs supported is bound to the number
of connections supported, which differs between RoCE and iWARP.

This fixes a crash that occurred in iWARP when running 1000 sessions
using perftest.

Fixes: 67b40dcc ("qed: Implement iWARP initialization, teardown and qp operations")
Signed-off-by: default avatarMichal Kalderon <Michal.Kalderon@cavium.com>
Signed-off-by: default avatarAriel Elior <Ariel.Elior@cavium.com>
Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d1abfd0b
...@@ -209,11 +209,11 @@ static int qed_rdma_alloc(struct qed_hwfn *p_hwfn, ...@@ -209,11 +209,11 @@ static int qed_rdma_alloc(struct qed_hwfn *p_hwfn,
goto free_pd_map; goto free_pd_map;
} }
/* Allocate bitmap for cq's. The maximum number of CQs is bounded to /* Allocate bitmap for cq's. The maximum number of CQs is bound to
* twice the number of QPs. * the number of connections we support. (num_qps in iWARP or
* num_qps/2 in RoCE).
*/ */
rc = qed_rdma_bmap_alloc(p_hwfn, &p_rdma_info->cq_map, rc = qed_rdma_bmap_alloc(p_hwfn, &p_rdma_info->cq_map, num_cons, "CQ");
p_rdma_info->num_qps * 2, "CQ");
if (rc) { if (rc) {
DP_VERBOSE(p_hwfn, QED_MSG_RDMA, DP_VERBOSE(p_hwfn, QED_MSG_RDMA,
"Failed to allocate cq bitmap, rc = %d\n", rc); "Failed to allocate cq bitmap, rc = %d\n", rc);
...@@ -222,10 +222,10 @@ static int qed_rdma_alloc(struct qed_hwfn *p_hwfn, ...@@ -222,10 +222,10 @@ static int qed_rdma_alloc(struct qed_hwfn *p_hwfn,
/* Allocate bitmap for toggle bit for cq icids /* Allocate bitmap for toggle bit for cq icids
* We toggle the bit every time we create or resize cq for a given icid. * We toggle the bit every time we create or resize cq for a given icid.
* The maximum number of CQs is bounded to twice the number of QPs. * Size needs to equal the size of the cq bmap.
*/ */
rc = qed_rdma_bmap_alloc(p_hwfn, &p_rdma_info->toggle_bits, rc = qed_rdma_bmap_alloc(p_hwfn, &p_rdma_info->toggle_bits,
p_rdma_info->num_qps * 2, "Toggle"); num_cons, "Toggle");
if (rc) { if (rc) {
DP_VERBOSE(p_hwfn, QED_MSG_RDMA, DP_VERBOSE(p_hwfn, QED_MSG_RDMA,
"Failed to allocate toogle bits, rc = %d\n", rc); "Failed to allocate toogle bits, rc = %d\n", rc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment