lkml.org 
[lkml]   [2014]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 21/73] IB/isert: Adjust CQ size to HW limits
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Chris Moore <Chris.Moore@Emulex.Com>

    commit b1a5ad006b34ded9dc7ec64988deba1b3ecad367 upstream.

    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 <chris.moore@emulex.com>
    Reviewied-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/ulp/isert/ib_isert.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/drivers/infiniband/ulp/isert/ib_isert.c
    +++ b/drivers/infiniband/ulp/isert/ib_isert.c
    @@ -220,12 +220,16 @@ isert_create_device_ib_res(struct isert_
    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) {
    device->use_fastreg = 1;
    @@ -261,7 +265,7 @@ isert_create_device_ib_res(struct isert_
    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;
    @@ -273,7 +277,7 @@ isert_create_device_ib_res(struct isert_
    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;



    \
     
     \ /
      Last update: 2014-12-06 01:01    [W:5.075 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site