scsi: megaraid_sas: RAID1 PCI bandwidth limit algorithm is applicable for only Ventura
RAID1 PCI bandwidth limit algorithm is not applicable to Aero as it's PCIe Gen4 adapter. Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Signed-off-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a4413a5859
commit
49f2bf1071
|
@ -5777,6 +5777,9 @@ static int megasas_init_fw(struct megasas_instance *instance)
|
|||
MR_MAX_RAID_MAP_SIZE_MASK);
|
||||
}
|
||||
|
||||
if (instance->adapter_type == VENTURA_SERIES)
|
||||
fusion->pcie_bw_limitation = true;
|
||||
|
||||
/* Check if MSI-X is supported while in ready state */
|
||||
msix_enable = (instance->instancet->read_fw_status_reg(instance) &
|
||||
0x4000000) >> 0x1a;
|
||||
|
|
|
@ -2621,9 +2621,10 @@ static void megasas_stream_detect(struct megasas_instance *instance,
|
|||
*
|
||||
*/
|
||||
static void
|
||||
megasas_set_raidflag_cpu_affinity(union RAID_CONTEXT_UNION *praid_context,
|
||||
struct MR_LD_RAID *raid, bool fp_possible,
|
||||
u8 is_read, u32 scsi_buff_len)
|
||||
megasas_set_raidflag_cpu_affinity(struct fusion_context *fusion,
|
||||
union RAID_CONTEXT_UNION *praid_context,
|
||||
struct MR_LD_RAID *raid, bool fp_possible,
|
||||
u8 is_read, u32 scsi_buff_len)
|
||||
{
|
||||
u8 cpu_sel = MR_RAID_CTX_CPUSEL_0;
|
||||
struct RAID_CONTEXT_G35 *rctx_g35;
|
||||
|
@ -2681,11 +2682,11 @@ megasas_set_raidflag_cpu_affinity(union RAID_CONTEXT_UNION *praid_context,
|
|||
* vs MR_RAID_FLAGS_IO_SUB_TYPE_CACHE_BYPASS.
|
||||
* IO Subtype is not bitmap.
|
||||
*/
|
||||
if ((raid->level == 1) && (!is_read)) {
|
||||
if (scsi_buff_len > MR_LARGE_IO_MIN_SIZE)
|
||||
praid_context->raid_context_g35.raid_flags =
|
||||
(MR_RAID_FLAGS_IO_SUB_TYPE_LDIO_BW_LIMIT
|
||||
<< MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT);
|
||||
if ((fusion->pcie_bw_limitation) && (raid->level == 1) && (!is_read) &&
|
||||
(scsi_buff_len > MR_LARGE_IO_MIN_SIZE)) {
|
||||
praid_context->raid_context_g35.raid_flags =
|
||||
(MR_RAID_FLAGS_IO_SUB_TYPE_LDIO_BW_LIMIT
|
||||
<< MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2834,8 +2835,9 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
|
|||
(instance->host->can_queue)) {
|
||||
fp_possible = false;
|
||||
atomic_dec(&instance->fw_outstanding);
|
||||
} else if ((scsi_buff_len > MR_LARGE_IO_MIN_SIZE) ||
|
||||
(atomic_dec_if_positive(&mrdev_priv->r1_ldio_hint) > 0)) {
|
||||
} else if (fusion->pcie_bw_limitation &&
|
||||
((scsi_buff_len > MR_LARGE_IO_MIN_SIZE) ||
|
||||
(atomic_dec_if_positive(&mrdev_priv->r1_ldio_hint) > 0))) {
|
||||
fp_possible = false;
|
||||
atomic_dec(&instance->fw_outstanding);
|
||||
if (scsi_buff_len > MR_LARGE_IO_MIN_SIZE)
|
||||
|
@ -2860,7 +2862,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
|
|||
|
||||
/* If raid is NULL, set CPU affinity to default CPU0 */
|
||||
if (raid)
|
||||
megasas_set_raidflag_cpu_affinity(&io_request->RaidContext,
|
||||
megasas_set_raidflag_cpu_affinity(fusion, &io_request->RaidContext,
|
||||
raid, fp_possible, io_info.isRead,
|
||||
scsi_buff_len);
|
||||
else
|
||||
|
|
|
@ -1335,7 +1335,7 @@ struct fusion_context {
|
|||
dma_addr_t ioc_init_request_phys;
|
||||
struct MPI2_IOC_INIT_REQUEST *ioc_init_request;
|
||||
struct megasas_cmd *ioc_init_cmd;
|
||||
|
||||
bool pcie_bw_limitation;
|
||||
};
|
||||
|
||||
union desc_value {
|
||||
|
|
Loading…
Reference in New Issue