lkml.org 
[lkml]   [2012]   [Feb]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] firewire-sbp2: Initialise sbp2_orb->rcode for management ORBs
    Date
    When sending ORBs the struct sbp2_orb->rcode field should be initialised
    to -1 otherwise complete_transaction() assumes the request is successful
    (RCODE_COMPLETE is 0). When sending managament ORBs, such as LOGIN or
    LOGOUT, this was not done and so the initiator would wait for the
    request to time out before trying again.

    Without this, LOGINs are only retried when the management ORB times out,
    rather than the initiator noticing an error occurred and retrying soon
    after. For targets that advertise more than one LUN per unit, and can
    only accept one management request at a time, this means LUNs are only
    logged in one per timeout period.

    Signed-off-by: Chris Boot <bootc@bootc.net>
    Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
    ---
    drivers/firewire/sbp2.c | 3 +++
    1 files changed, 3 insertions(+), 0 deletions(-)

    diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
    index b12c6ba..7776c18 100644
    --- a/drivers/firewire/sbp2.c
    +++ b/drivers/firewire/sbp2.c
    @@ -572,6 +572,9 @@ static int sbp2_send_management_orb(struct sbp2_logical_unit *lu, int node_id,
    if (dma_mapping_error(device->card->device, orb->response_bus))
    goto fail_mapping_response;

    + /* Initialize rcode to something not RCODE_COMPLETE. */
    + orb->base.rcode = -1;
    +
    orb->request.response.high = 0;
    orb->request.response.low = cpu_to_be32(orb->response_bus);

    --
    1.7.9


    \
     
     \ /
      Last update: 2012-02-18 22:39    [W:0.022 / U:29.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site