diff options
Diffstat (limited to 'drivers/scsi/aacraid/comminit.c')
-rw-r--r-- | drivers/scsi/aacraid/comminit.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c index 8e5d3be16127..3f759957f4b4 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c | |||
@@ -404,7 +404,13 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev) | |||
404 | dev->max_fib_size = status[1] & 0xFFE0; | 404 | dev->max_fib_size = status[1] & 0xFFE0; |
405 | host->sg_tablesize = status[2] >> 16; | 405 | host->sg_tablesize = status[2] >> 16; |
406 | dev->sg_tablesize = status[2] & 0xFFFF; | 406 | dev->sg_tablesize = status[2] & 0xFFFF; |
407 | host->can_queue = (status[3] & 0xFFFF) - AAC_NUM_MGT_FIB; | 407 | if (dev->pdev->device == PMC_DEVICE_S7 || |
408 | dev->pdev->device == PMC_DEVICE_S8 || | ||
409 | dev->pdev->device == PMC_DEVICE_S9) | ||
410 | host->can_queue = ((status[3] >> 16) ? (status[3] >> 16) : | ||
411 | (status[3] & 0xFFFF)) - AAC_NUM_MGT_FIB; | ||
412 | else | ||
413 | host->can_queue = (status[3] & 0xFFFF) - AAC_NUM_MGT_FIB; | ||
408 | dev->max_num_aif = status[4] & 0xFFFF; | 414 | dev->max_num_aif = status[4] & 0xFFFF; |
409 | /* | 415 | /* |
410 | * NOTE: | 416 | * NOTE: |
@@ -452,6 +458,9 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev) | |||
452 | } | 458 | } |
453 | } | 459 | } |
454 | 460 | ||
461 | if (host->can_queue > AAC_NUM_IO_FIB) | ||
462 | host->can_queue = AAC_NUM_IO_FIB; | ||
463 | |||
455 | /* | 464 | /* |
456 | * Ok now init the communication subsystem | 465 | * Ok now init the communication subsystem |
457 | */ | 466 | */ |