Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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

parent 4a5c814d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1084,6 +1084,7 @@ enum MR_SCSI_CMD_TYPE {
#define MEGASAS_SKINNY_INT_CMDS			5
#define MEGASAS_FUSION_INTERNAL_CMDS		5
#define MEGASAS_FUSION_IOCTL_CMDS		3
#define MEGASAS_MFI_IOCTL_CMDS			27

#define MEGASAS_MAX_MSIX_QUEUES			128
/*
+15 −24
Original line number Diff line number Diff line
@@ -4353,6 +4353,21 @@ megasas_init_adapter_mfi(struct megasas_instance *instance)
	instance->max_mfi_cmds = instance->max_fw_cmds;
	instance->max_num_sge = (instance->instancet->read_fw_status_reg(reg_set) & 0xFF0000) >>
					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
	 */
@@ -4788,30 +4803,6 @@ static int megasas_init_fw(struct megasas_instance *instance)
	if (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 */
	if (throttlequeuedepth &&
			throttlequeuedepth <= instance->max_scsi_cmds)
+9 −0
Original line number Diff line number Diff line
@@ -1060,6 +1060,15 @@ megasas_init_adapter_fusion(struct megasas_instance *instance)
	for (i = 0 ; i < count; i++)
		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
	 * Create a pool of commands