Commit f26ac3a1 authored by Sumit.Saxena@avagotech.com's avatar Sumit.Saxena@avagotech.com Committed by James Bottomley

megaraid_sas : Move controller's queue depth calculation in adapter specific function

Signed-off-by: default avatarKashyap Desai <kashyap.desai@avagotech.com>
Signed-off-by: default avatarSumit Saxena <sumit.saxena@avagotech.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
parent 4a5c814d
...@@ -1084,6 +1084,7 @@ enum MR_SCSI_CMD_TYPE { ...@@ -1084,6 +1084,7 @@ enum MR_SCSI_CMD_TYPE {
#define MEGASAS_SKINNY_INT_CMDS 5 #define MEGASAS_SKINNY_INT_CMDS 5
#define MEGASAS_FUSION_INTERNAL_CMDS 5 #define MEGASAS_FUSION_INTERNAL_CMDS 5
#define MEGASAS_FUSION_IOCTL_CMDS 3 #define MEGASAS_FUSION_IOCTL_CMDS 3
#define MEGASAS_MFI_IOCTL_CMDS 27
#define MEGASAS_MAX_MSIX_QUEUES 128 #define MEGASAS_MAX_MSIX_QUEUES 128
/* /*
......
...@@ -4353,6 +4353,21 @@ megasas_init_adapter_mfi(struct megasas_instance *instance) ...@@ -4353,6 +4353,21 @@ megasas_init_adapter_mfi(struct megasas_instance *instance)
instance->max_mfi_cmds = instance->max_fw_cmds; instance->max_mfi_cmds = instance->max_fw_cmds;
instance->max_num_sge = (instance->instancet->read_fw_status_reg(reg_set) & 0xFF0000) >> instance->max_num_sge = (instance->instancet->read_fw_status_reg(reg_set) & 0xFF0000) >>
0x10; 0x10;
/*
* For MFI skinny adapters, MEGASAS_SKINNY_INT_CMDS commands
* are reserved for IOCTL + driver's internal DCMDs.
*/
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY)) {
instance->max_scsi_cmds = (instance->max_fw_cmds -
MEGASAS_SKINNY_INT_CMDS);
sema_init(&instance->ioctl_sem, MEGASAS_SKINNY_INT_CMDS);
} else {
instance->max_scsi_cmds = (instance->max_fw_cmds -
MEGASAS_INT_CMDS);
sema_init(&instance->ioctl_sem, (MEGASAS_MFI_IOCTL_CMDS));
}
/* /*
* Create a pool of commands * Create a pool of commands
*/ */
...@@ -4788,30 +4803,6 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -4788,30 +4803,6 @@ static int megasas_init_fw(struct megasas_instance *instance)
if (tmp_sectors && (instance->max_sectors_per_req > tmp_sectors)) if (tmp_sectors && (instance->max_sectors_per_req > tmp_sectors))
instance->max_sectors_per_req = tmp_sectors; instance->max_sectors_per_req = tmp_sectors;
/*
* 1. For fusion adapters, 3 commands for IOCTL and 5 commands
* for driver's internal DCMDs.
* 2. For MFI skinny adapters, 5 commands for IOCTL + driver's
* internal DCMDs.
* 3. For rest of MFI adapters, 27 commands reserved for IOCTLs
* and 5 commands for drivers's internal DCMD.
*/
if (instance->ctrl_context) {
instance->max_scsi_cmds = instance->max_fw_cmds -
(MEGASAS_FUSION_INTERNAL_CMDS +
MEGASAS_FUSION_IOCTL_CMDS);
sema_init(&instance->ioctl_sem, MEGASAS_FUSION_IOCTL_CMDS);
} else if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY)) {
instance->max_scsi_cmds = instance->max_fw_cmds -
MEGASAS_SKINNY_INT_CMDS;
sema_init(&instance->ioctl_sem, MEGASAS_SKINNY_INT_CMDS);
} else {
instance->max_scsi_cmds = instance->max_fw_cmds -
MEGASAS_INT_CMDS;
sema_init(&instance->ioctl_sem, (MEGASAS_INT_CMDS - 5));
}
/* Check for valid throttlequeuedepth module parameter */ /* Check for valid throttlequeuedepth module parameter */
if (throttlequeuedepth && if (throttlequeuedepth &&
throttlequeuedepth <= instance->max_scsi_cmds) throttlequeuedepth <= instance->max_scsi_cmds)
......
...@@ -1060,6 +1060,15 @@ megasas_init_adapter_fusion(struct megasas_instance *instance) ...@@ -1060,6 +1060,15 @@ megasas_init_adapter_fusion(struct megasas_instance *instance)
for (i = 0 ; i < count; i++) for (i = 0 ; i < count; i++)
fusion->last_reply_idx[i] = 0; fusion->last_reply_idx[i] = 0;
/*
* For fusion adapters, 3 commands for IOCTL and 5 commands
* for driver's internal DCMDs.
*/
instance->max_scsi_cmds = instance->max_fw_cmds -
(MEGASAS_FUSION_INTERNAL_CMDS +
MEGASAS_FUSION_IOCTL_CMDS);
sema_init(&instance->ioctl_sem, MEGASAS_FUSION_IOCTL_CMDS);
/* /*
* Allocate memory for descriptors * Allocate memory for descriptors
* Create a pool of commands * Create a pool of commands
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment