Skip to content

Commit

Permalink
IB/isert: Adjust CQ size to HW limits
Browse files Browse the repository at this point in the history
isert has an issue of trying to create a CQ with more CQEs than are
supported by the hardware, that currently results in failures during
isert_device creation during first session login.

This is the isert version of the patch that Minh Tran submitted for
iser, and is simple a workaround required to function with existing
ocrdma hardware.

Signed-off-by: Chris Moore <[email protected]>
Reviewied-by: Sagi Grimberg <[email protected]>
Cc: <[email protected]> # 3.10+
Signed-off-by: Nicholas Bellinger <[email protected]>
  • Loading branch information
Chris Moore authored and Nicholas Bellinger committed Nov 20, 2014
1 parent b6932ee commit b1a5ad0
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/infiniband/ulp/isert/ib_isert.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,12 +228,16 @@ isert_create_device_ib_res(struct isert_device *device)
struct isert_cq_desc *cq_desc;
struct ib_device_attr *dev_attr;
int ret = 0, i, j;
int max_rx_cqe, max_tx_cqe;

dev_attr = &device->dev_attr;
ret = isert_query_device(ib_dev, dev_attr);
if (ret)
return ret;

max_rx_cqe = min(ISER_MAX_RX_CQ_LEN, dev_attr->max_cqe);
max_tx_cqe = min(ISER_MAX_TX_CQ_LEN, dev_attr->max_cqe);

/* asign function handlers */
if (dev_attr->device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS &&
dev_attr->device_cap_flags & IB_DEVICE_SIGNATURE_HANDOVER) {
Expand Down Expand Up @@ -275,7 +279,7 @@ isert_create_device_ib_res(struct isert_device *device)
isert_cq_rx_callback,
isert_cq_event_callback,
(void *)&cq_desc[i],
ISER_MAX_RX_CQ_LEN, i);
max_rx_cqe, i);
if (IS_ERR(device->dev_rx_cq[i])) {
ret = PTR_ERR(device->dev_rx_cq[i]);
device->dev_rx_cq[i] = NULL;
Expand All @@ -287,7 +291,7 @@ isert_create_device_ib_res(struct isert_device *device)
isert_cq_tx_callback,
isert_cq_event_callback,
(void *)&cq_desc[i],
ISER_MAX_TX_CQ_LEN, i);
max_tx_cqe, i);
if (IS_ERR(device->dev_tx_cq[i])) {
ret = PTR_ERR(device->dev_tx_cq[i]);
device->dev_tx_cq[i] = NULL;
Expand Down

0 comments on commit b1a5ad0

Please sign in to comment.