lkml.org 
[lkml]   [2019]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 073/102] scsi: hpsa: correct ioaccel2 chaining
    Date
    [ Upstream commit 625d7d3518875c4d303c652a198feaa13d9f52d9 ]

    - set ioaccel2_sg_element member 'chain_indicator' to IOACCEL2_LAST_SG for
    the last s/g element.

    - set ioaccel2_sg_element member 'chain_indicator' to IOACCEL2_CHAIN when
    chaining.

    Reviewed-by: Bader Ali - Saleh <bader.alisaleh@microsemi.com>
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Reviewed-by: Matt Perricone <matt.perricone@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/hpsa.c | 7 ++++++-
    drivers/scsi/hpsa_cmd.h | 1 +
    2 files changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
    index 0b8db8a74d50..9f98c7211ec2 100644
    --- a/drivers/scsi/hpsa.c
    +++ b/drivers/scsi/hpsa.c
    @@ -4815,7 +4815,7 @@ static int hpsa_scsi_ioaccel2_queue_command(struct ctlr_info *h,
    curr_sg->reserved[0] = 0;
    curr_sg->reserved[1] = 0;
    curr_sg->reserved[2] = 0;
    - curr_sg->chain_indicator = 0x80;
    + curr_sg->chain_indicator = IOACCEL2_CHAIN;

    curr_sg = h->ioaccel2_cmd_sg_list[c->cmdindex];
    }
    @@ -4832,6 +4832,11 @@ static int hpsa_scsi_ioaccel2_queue_command(struct ctlr_info *h,
    curr_sg++;
    }

    + /*
    + * Set the last s/g element bit
    + */
    + (curr_sg - 1)->chain_indicator = IOACCEL2_LAST_SG;
    +
    switch (cmd->sc_data_direction) {
    case DMA_TO_DEVICE:
    cp->direction &= ~IOACCEL2_DIRECTION_MASK;
    diff --git a/drivers/scsi/hpsa_cmd.h b/drivers/scsi/hpsa_cmd.h
    index 5961705eef76..39bcbec93c60 100644
    --- a/drivers/scsi/hpsa_cmd.h
    +++ b/drivers/scsi/hpsa_cmd.h
    @@ -516,6 +516,7 @@ struct ioaccel2_sg_element {
    u8 reserved[3];
    u8 chain_indicator;
    #define IOACCEL2_CHAIN 0x80
    +#define IOACCEL2_LAST_SG 0x40
    };

    /*
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-08 18:15    [W:4.166 / U:1.428 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site