[lkml]   [2008]   [May]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[patch 31/37] SCSI: qla1280: Fix queue depth problem
    2.6.25-stable review patch.  If anyone has any objections, please let us

    From: Jeremy Higdon <>

    commit af5741c6de4f4a1d8608b0f00867c77cb7123635 upstream

    The qla1280 driver was ANDing the output value of mailbox register
    0 with (1 << target-number) to determine whether to enable queueing
    on the target in question.

    But mailbox register 0 has the status code for the mailbox command
    (in this case, Set Target Parameters). Potential values are:
    * ISP mailbox command complete status codes

    So clearly that is in error. I can't think what the author of that
    line was looking for in a mailbox register, so I just eliminated the
    AND. flag is used later in the function, and I think that the later
    usage was also wrong, though it was used to set values that aren't
    used. Oh well, an overhaul of this driver is not what I want to do
    now -- just a bugfix.

    After the fix, I found that my disks were getting a queue depth of
    255, which is far too many. Most SCSI disks are limited to 32 or
    64. In any case, there's no point, queueing up a bunch of commands
    to the adapter that will just result in queue full or starve other
    targets from being issued commands due to running out of internal
    memory. So I dropped default queue depth to 32 (from which 1 is
    subtracted elsewhere, giving net of 31).

    I tested with a Seagate ST336753LC, and results look good, so
    I'm satisfied with this patch.

    Signed-off-by: Jeremy Higdon <>
    Acked-by: Jes Sorensen <>
    Signed-off-by: James Bottomley <>
    Signed-off-by: Greg Kroah-Hartman <>

    drivers/scsi/qla1280.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/scsi/qla1280.c
    +++ b/drivers/scsi/qla1280.c
    @@ -2012,7 +2012,7 @@ qla1280_set_defaults(struct scsi_qla_hos
    nv->bus[bus].config_2.req_ack_active_negation = 1;
    nv->bus[bus].config_2.data_line_active_negation = 1;
    nv->bus[bus].selection_timeout = 250;
    - nv->bus[bus].max_queue_depth = 256;
    + nv->bus[bus].max_queue_depth = 32;

    if (IS_ISP1040(ha)) {
    nv->bus[bus].bus_reset_delay = 3;
    @@ -2056,7 +2056,7 @@ qla1280_config_target(struct scsi_qla_ho
    status = qla1280_mailbox_command(ha, 0x0f, mb);

    /* Save Tag queuing enable flag. */
    - flag = (BIT_0 << target) & mb[0];
    + flag = (BIT_0 << target);
    if (nv->bus[bus].target[target].parameter.tag_queuing)
    ha->bus_settings[bus].qtag_enables |= flag;


     \ /
      Last update: 2008-05-13 22:27    [W:0.030 / U:2.480 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site