lkml.org 
[lkml]   [2013]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 065/212] IB/srp: Report receive errors correctly
    Date
    3.12-stable review patch.  If anyone has any objections, please let me know.

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

    From: Bart Van Assche <bvanassche@acm.org>

    commit cd4e38542a5c2cab94e5410fb17c1cc004a60792 upstream.

    The IB spec does not guarantee that the opcode is available in error
    completions. Hence do not rely on it. See also commit 948d1e889e5b
    ("IB/srp: Introduce srp_handle_qp_err()").

    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/ulp/srp/ib_srp.c | 9 ++++-----
    1 file changed, 4 insertions(+), 5 deletions(-)

    --- a/drivers/infiniband/ulp/srp/ib_srp.c
    +++ b/drivers/infiniband/ulp/srp/ib_srp.c
    @@ -1303,14 +1303,13 @@ static void srp_handle_recv(struct srp_t
    PFX "Recv failed with error code %d\n", res);
    }

    -static void srp_handle_qp_err(enum ib_wc_status wc_status,
    - enum ib_wc_opcode wc_opcode,
    +static void srp_handle_qp_err(enum ib_wc_status wc_status, bool send_err,
    struct srp_target_port *target)
    {
    if (target->connected && !target->qp_in_error) {
    shost_printk(KERN_ERR, target->scsi_host,
    PFX "failed %s status %d\n",
    - wc_opcode & IB_WC_RECV ? "receive" : "send",
    + send_err ? "send" : "receive",
    wc_status);
    }
    target->qp_in_error = true;
    @@ -1326,7 +1325,7 @@ static void srp_recv_completion(struct i
    if (likely(wc.status == IB_WC_SUCCESS)) {
    srp_handle_recv(target, &wc);
    } else {
    - srp_handle_qp_err(wc.status, wc.opcode, target);
    + srp_handle_qp_err(wc.status, false, target);
    }
    }
    }
    @@ -1342,7 +1341,7 @@ static void srp_send_completion(struct i
    iu = (struct srp_iu *) (uintptr_t) wc.wr_id;
    list_add(&iu->list, &target->free_tx);
    } else {
    - srp_handle_qp_err(wc.status, wc.opcode, target);
    + srp_handle_qp_err(wc.status, true, target);
    }
    }
    }



    \
     
     \ /
      Last update: 2013-12-02 21:41    [W:9.564 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site