|
@@ -2424,10 +2424,13 @@ _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
|
|
|
}
|
|
|
|
|
|
/* command line tunables for max controller queue depth */
|
|
|
- if (max_queue_depth != -1)
|
|
|
- max_request_credit = (max_queue_depth < facts->RequestCredit)
|
|
|
- ? max_queue_depth : facts->RequestCredit;
|
|
|
- else
|
|
|
+ if (max_queue_depth != -1 && max_queue_depth != 0) {
|
|
|
+ max_request_credit = min_t(u16, max_queue_depth +
|
|
|
+ ioc->hi_priority_depth + ioc->internal_depth,
|
|
|
+ facts->RequestCredit);
|
|
|
+ if (max_request_credit > MAX_HBA_QUEUE_DEPTH)
|
|
|
+ max_request_credit = MAX_HBA_QUEUE_DEPTH;
|
|
|
+ } else
|
|
|
max_request_credit = min_t(u16, facts->RequestCredit,
|
|
|
MAX_HBA_QUEUE_DEPTH);
|
|
|
|
|
@@ -2502,7 +2505,7 @@ _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
|
|
|
/* set the scsi host can_queue depth
|
|
|
* with some internal commands that could be outstanding
|
|
|
*/
|
|
|
- ioc->shost->can_queue = ioc->scsiio_depth - (2);
|
|
|
+ ioc->shost->can_queue = ioc->scsiio_depth;
|
|
|
dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "scsi host: "
|
|
|
"can_queue depth (%d)\n", ioc->name, ioc->shost->can_queue));
|
|
|
|