mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 00:39:48 +00:00
scsi: megaraid_sas: Fix combined reply queue mode detection
For Invader series, if FW supports more than 8 MSI-x vectors, driver needs to enable combined reply queue mode. For Ventura series, driver enables combined reply queue mode in case of more than 16 MSI-x vectors. Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
1401371d7f
commit
e29c322133
1 changed files with 20 additions and 3 deletions
|
@ -5415,12 +5415,29 @@ static int megasas_init_fw(struct megasas_instance *instance)
|
||||||
instance->msix_vectors = (scratch_pad_2
|
instance->msix_vectors = (scratch_pad_2
|
||||||
& MR_MAX_REPLY_QUEUES_OFFSET) + 1;
|
& MR_MAX_REPLY_QUEUES_OFFSET) + 1;
|
||||||
fw_msix_count = instance->msix_vectors;
|
fw_msix_count = instance->msix_vectors;
|
||||||
} else { /* Invader series supports more than 8 MSI-x vectors*/
|
} else {
|
||||||
instance->msix_vectors = ((scratch_pad_2
|
instance->msix_vectors = ((scratch_pad_2
|
||||||
& MR_MAX_REPLY_QUEUES_EXT_OFFSET)
|
& MR_MAX_REPLY_QUEUES_EXT_OFFSET)
|
||||||
>> MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT) + 1;
|
>> MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT) + 1;
|
||||||
if (instance->msix_vectors > 16)
|
|
||||||
instance->msix_combined = true;
|
/*
|
||||||
|
* For Invader series, > 8 MSI-x vectors
|
||||||
|
* supported by FW/HW implies combined
|
||||||
|
* reply queue mode is enabled.
|
||||||
|
* For Ventura series, > 16 MSI-x vectors
|
||||||
|
* supported by FW/HW implies combined
|
||||||
|
* reply queue mode is enabled.
|
||||||
|
*/
|
||||||
|
switch (instance->adapter_type) {
|
||||||
|
case INVADER_SERIES:
|
||||||
|
if (instance->msix_vectors > 8)
|
||||||
|
instance->msix_combined = true;
|
||||||
|
break;
|
||||||
|
case VENTURA_SERIES:
|
||||||
|
if (instance->msix_vectors > 16)
|
||||||
|
instance->msix_combined = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (rdpq_enable)
|
if (rdpq_enable)
|
||||||
instance->is_rdpq = (scratch_pad_2 & MR_RDPQ_MODE_OFFSET) ?
|
instance->is_rdpq = (scratch_pad_2 & MR_RDPQ_MODE_OFFSET) ?
|
||||||
|
|
Loading…
Reference in a new issue