Commit 21d3c710 authored by Sumit.Saxena@lsi.com's avatar Sumit.Saxena@lsi.com Committed by James Bottomley

[SCSI] megaraid_sas: Add support for MegaRAID Fury (device ID-0x005f) 12Gb/s controllers

Signed-off-by: default avatarSumit Saxena <sumit.saxena@lsi.com>
Signed-off-by: default avatarKashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 32d8745c
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#define PCI_DEVICE_ID_LSI_SAS0071SKINNY 0x0071 #define PCI_DEVICE_ID_LSI_SAS0071SKINNY 0x0071
#define PCI_DEVICE_ID_LSI_FUSION 0x005b #define PCI_DEVICE_ID_LSI_FUSION 0x005b
#define PCI_DEVICE_ID_LSI_INVADER 0x005d #define PCI_DEVICE_ID_LSI_INVADER 0x005d
#define PCI_DEVICE_ID_LSI_FURY 0x005f
/* /*
* ===================================== * =====================================
......
...@@ -122,6 +122,8 @@ static struct pci_device_id megasas_pci_table[] = { ...@@ -122,6 +122,8 @@ static struct pci_device_id megasas_pci_table[] = {
/* Fusion */ /* Fusion */
{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_INVADER)}, {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_INVADER)},
/* Invader */ /* Invader */
{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FURY)},
/* Fury */
{} {}
}; };
...@@ -223,6 +225,7 @@ megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) ...@@ -223,6 +225,7 @@ megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd)
cmd->frame_count = 0; cmd->frame_count = 0;
if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) && if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) &&
(instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) && (instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) &&
(instance->pdev->device != PCI_DEVICE_ID_LSI_FURY) &&
(reset_devices)) (reset_devices))
cmd->frame->hdr.cmd = MFI_CMD_INVALID; cmd->frame->hdr.cmd = MFI_CMD_INVALID;
list_add_tail(&cmd->list, &instance->cmd_pool); list_add_tail(&cmd->list, &instance->cmd_pool);
...@@ -1599,7 +1602,8 @@ void megaraid_sas_kill_hba(struct megasas_instance *instance) ...@@ -1599,7 +1602,8 @@ void megaraid_sas_kill_hba(struct megasas_instance *instance)
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY) || (instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || (instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) { (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
writel(MFI_STOP_ADP, &instance->reg_set->doorbell); writel(MFI_STOP_ADP, &instance->reg_set->doorbell);
} else { } else {
writel(MFI_STOP_ADP, &instance->reg_set->inbound_doorbell); writel(MFI_STOP_ADP, &instance->reg_set->inbound_doorbell);
...@@ -1974,7 +1978,8 @@ static int megasas_reset_bus_host(struct scsi_cmnd *scmd) ...@@ -1974,7 +1978,8 @@ static int megasas_reset_bus_host(struct scsi_cmnd *scmd)
* First wait for all commands to complete * First wait for all commands to complete
*/ */
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
ret = megasas_reset_fusion(scmd->device->host); ret = megasas_reset_fusion(scmd->device->host);
else else
ret = megasas_generic_reset(scmd); ret = megasas_generic_reset(scmd);
...@@ -2680,9 +2685,11 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) ...@@ -2680,9 +2685,11 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr)
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_SAS0071SKINNY) || PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_FUSION) || PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_INVADER)) { PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device ==
PCI_DEVICE_ID_LSI_FURY)) {
writel( writel(
MFI_INIT_CLEAR_HANDSHAKE|MFI_INIT_HOTPLUG, MFI_INIT_CLEAR_HANDSHAKE|MFI_INIT_HOTPLUG,
&instance->reg_set->doorbell); &instance->reg_set->doorbell);
...@@ -2704,7 +2711,9 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) ...@@ -2704,7 +2711,9 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr)
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_FUSION) || PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_INVADER)) { PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device ==
PCI_DEVICE_ID_LSI_FURY)) {
writel(MFI_INIT_HOTPLUG, writel(MFI_INIT_HOTPLUG,
&instance->reg_set->doorbell); &instance->reg_set->doorbell);
} else } else
...@@ -2727,13 +2736,17 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) ...@@ -2727,13 +2736,17 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr)
(instance->pdev->device (instance->pdev->device
== PCI_DEVICE_ID_LSI_FUSION) || == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device (instance->pdev->device
== PCI_DEVICE_ID_LSI_INVADER)) { == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device
== PCI_DEVICE_ID_LSI_FURY)) {
writel(MFI_RESET_FLAGS, writel(MFI_RESET_FLAGS,
&instance->reg_set->doorbell); &instance->reg_set->doorbell);
if ((instance->pdev->device == if ((instance->pdev->device ==
PCI_DEVICE_ID_LSI_FUSION) || PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == (instance->pdev->device ==
PCI_DEVICE_ID_LSI_INVADER)) { PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device ==
PCI_DEVICE_ID_LSI_FURY)) {
for (i = 0; i < (10 * 1000); i += 20) { for (i = 0; i < (10 * 1000); i += 20) {
if (readl( if (readl(
&instance-> &instance->
...@@ -2958,6 +2971,7 @@ static int megasas_create_frame_pool(struct megasas_instance *instance) ...@@ -2958,6 +2971,7 @@ static int megasas_create_frame_pool(struct megasas_instance *instance)
cmd->frame->io.pad_0 = 0; cmd->frame->io.pad_0 = 0;
if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) && if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) &&
(instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) && (instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) &&
(instance->pdev->device != PCI_DEVICE_ID_LSI_FURY) &&
(reset_devices)) (reset_devices))
cmd->frame->hdr.cmd = MFI_CMD_INVALID; cmd->frame->hdr.cmd = MFI_CMD_INVALID;
} }
...@@ -3495,6 +3509,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -3495,6 +3509,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
switch (instance->pdev->device) { switch (instance->pdev->device) {
case PCI_DEVICE_ID_LSI_FUSION: case PCI_DEVICE_ID_LSI_FUSION:
case PCI_DEVICE_ID_LSI_INVADER: case PCI_DEVICE_ID_LSI_INVADER:
case PCI_DEVICE_ID_LSI_FURY:
instance->instancet = &megasas_instance_template_fusion; instance->instancet = &megasas_instance_template_fusion;
break; break;
case PCI_DEVICE_ID_LSI_SAS1078R: case PCI_DEVICE_ID_LSI_SAS1078R:
...@@ -3528,7 +3543,8 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -3528,7 +3543,8 @@ static int megasas_init_fw(struct megasas_instance *instance)
if (msix_enable && !msix_disable) { if (msix_enable && !msix_disable) {
/* Check max MSI-X vectors */ /* Check max MSI-X vectors */
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) { (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
instance->msix_vectors = (readl(&instance->reg_set-> instance->msix_vectors = (readl(&instance->reg_set->
outbound_scratch_pad_2 outbound_scratch_pad_2
) & 0x1F) + 1; ) & 0x1F) + 1;
...@@ -3933,7 +3949,8 @@ static int megasas_io_attach(struct megasas_instance *instance) ...@@ -3933,7 +3949,8 @@ static int megasas_io_attach(struct megasas_instance *instance)
/* Fusion only supports host reset */ /* Fusion only supports host reset */
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) { (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
host->hostt->eh_device_reset_handler = NULL; host->hostt->eh_device_reset_handler = NULL;
host->hostt->eh_bus_reset_handler = NULL; host->hostt->eh_bus_reset_handler = NULL;
} }
...@@ -4044,6 +4061,7 @@ static int megasas_probe_one(struct pci_dev *pdev, ...@@ -4044,6 +4061,7 @@ static int megasas_probe_one(struct pci_dev *pdev,
switch (instance->pdev->device) { switch (instance->pdev->device) {
case PCI_DEVICE_ID_LSI_FUSION: case PCI_DEVICE_ID_LSI_FUSION:
case PCI_DEVICE_ID_LSI_INVADER: case PCI_DEVICE_ID_LSI_INVADER:
case PCI_DEVICE_ID_LSI_FURY:
{ {
struct fusion_context *fusion; struct fusion_context *fusion;
...@@ -4136,7 +4154,8 @@ static int megasas_probe_one(struct pci_dev *pdev, ...@@ -4136,7 +4154,8 @@ static int megasas_probe_one(struct pci_dev *pdev,
instance->disableOnlineCtrlReset = 1; instance->disableOnlineCtrlReset = 1;
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
INIT_WORK(&instance->work_init, megasas_fusion_ocr_wq); INIT_WORK(&instance->work_init, megasas_fusion_ocr_wq);
else else
INIT_WORK(&instance->work_init, process_fw_state_change_wq); INIT_WORK(&instance->work_init, process_fw_state_change_wq);
...@@ -4227,7 +4246,8 @@ static int megasas_probe_one(struct pci_dev *pdev, ...@@ -4227,7 +4246,8 @@ static int megasas_probe_one(struct pci_dev *pdev,
free_irq(instance->pdev->irq, &instance->irq_context[0]); free_irq(instance->pdev->irq, &instance->irq_context[0]);
fail_irq: fail_irq:
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) || if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER)) (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
megasas_release_fusion(instance); megasas_release_fusion(instance);
else else
megasas_release_mfi(instance); megasas_release_mfi(instance);
...@@ -4438,6 +4458,7 @@ megasas_resume(struct pci_dev *pdev) ...@@ -4438,6 +4458,7 @@ megasas_resume(struct pci_dev *pdev)
switch (instance->pdev->device) { switch (instance->pdev->device) {
case PCI_DEVICE_ID_LSI_FUSION: case PCI_DEVICE_ID_LSI_FUSION:
case PCI_DEVICE_ID_LSI_INVADER: case PCI_DEVICE_ID_LSI_INVADER:
case PCI_DEVICE_ID_LSI_FURY:
{ {
megasas_reset_reply_desc(instance); megasas_reset_reply_desc(instance);
if (megasas_ioc_init_fusion(instance)) { if (megasas_ioc_init_fusion(instance)) {
...@@ -4587,6 +4608,7 @@ static void megasas_detach_one(struct pci_dev *pdev) ...@@ -4587,6 +4608,7 @@ static void megasas_detach_one(struct pci_dev *pdev)
switch (instance->pdev->device) { switch (instance->pdev->device) {
case PCI_DEVICE_ID_LSI_FUSION: case PCI_DEVICE_ID_LSI_FUSION:
case PCI_DEVICE_ID_LSI_INVADER: case PCI_DEVICE_ID_LSI_INVADER:
case PCI_DEVICE_ID_LSI_FURY:
megasas_release_fusion(instance); megasas_release_fusion(instance);
for (i = 0; i < 2 ; i++) for (i = 0; i < 2 ; i++)
if (fusion->ld_map[i]) if (fusion->ld_map[i])
......
...@@ -238,6 +238,11 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow, ...@@ -238,6 +238,11 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
u64 row; u64 row;
u8 retval = TRUE; u8 retval = TRUE;
int error_code = 0; int error_code = 0;
u8 do_invader = 0;
if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER ||
instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
do_invader = 1;
row = mega_div64_32(stripRow, raid->rowDataSize); row = mega_div64_32(stripRow, raid->rowDataSize);
...@@ -282,9 +287,8 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow, ...@@ -282,9 +287,8 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
else { else {
*pDevHandle = MR_PD_INVALID; /* set dev handle as invalid. */ *pDevHandle = MR_PD_INVALID; /* set dev handle as invalid. */
if ((raid->level >= 5) && if ((raid->level >= 5) &&
((instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) || (!do_invader || (do_invader &&
(instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER && (raid->regTypeReqOnRead != REGION_TYPE_UNUSED))))
raid->regTypeReqOnRead != REGION_TYPE_UNUSED)))
pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE; pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
else if (raid->level == 1) { else if (raid->level == 1) {
/* Get alternate Pd. */ /* Get alternate Pd. */
...@@ -405,7 +409,8 @@ MR_BuildRaidContext(struct megasas_instance *instance, ...@@ -405,7 +409,8 @@ MR_BuildRaidContext(struct megasas_instance *instance,
} }
pRAID_Context->timeoutValue = map->raidMap.fpPdIoTimeoutSec; pRAID_Context->timeoutValue = map->raidMap.fpPdIoTimeoutSec;
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
pRAID_Context->regLockFlags = (isRead) ? pRAID_Context->regLockFlags = (isRead) ?
raid->regTypeReqOnRead : raid->regTypeReqOnWrite; raid->regTypeReqOnRead : raid->regTypeReqOnWrite;
else else
......
...@@ -1071,7 +1071,8 @@ megasas_make_sgl_fusion(struct megasas_instance *instance, ...@@ -1071,7 +1071,8 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
fusion = instance->ctrl_context; fusion = instance->ctrl_context;
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) { if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end = sgl_ptr; struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end = sgl_ptr;
sgl_ptr_end += fusion->max_sge_in_main_msg - 1; sgl_ptr_end += fusion->max_sge_in_main_msg - 1;
sgl_ptr_end->Flags = 0; sgl_ptr_end->Flags = 0;
...@@ -1088,7 +1089,8 @@ megasas_make_sgl_fusion(struct megasas_instance *instance, ...@@ -1088,7 +1089,8 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
sgl_ptr->Length = sg_dma_len(os_sgl); sgl_ptr->Length = sg_dma_len(os_sgl);
sgl_ptr->Address = sg_dma_address(os_sgl); sgl_ptr->Address = sg_dma_address(os_sgl);
sgl_ptr->Flags = 0; sgl_ptr->Flags = 0;
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) { if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
if (i == sge_count - 1) if (i == sge_count - 1)
sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST; sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST;
} }
...@@ -1100,8 +1102,10 @@ megasas_make_sgl_fusion(struct megasas_instance *instance, ...@@ -1100,8 +1102,10 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
(sge_count > fusion->max_sge_in_main_msg)) { (sge_count > fusion->max_sge_in_main_msg)) {
struct MPI25_IEEE_SGE_CHAIN64 *sg_chain; struct MPI25_IEEE_SGE_CHAIN64 *sg_chain;
if (instance->pdev->device == if ((instance->pdev->device ==
PCI_DEVICE_ID_LSI_INVADER) { PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device ==
PCI_DEVICE_ID_LSI_FURY)) {
if ((cmd->io_request->IoFlags & if ((cmd->io_request->IoFlags &
MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH) != MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH) !=
MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH) MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
...@@ -1117,8 +1121,10 @@ megasas_make_sgl_fusion(struct megasas_instance *instance, ...@@ -1117,8 +1121,10 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
sg_chain = sgl_ptr; sg_chain = sgl_ptr;
/* Prepare chain element */ /* Prepare chain element */
sg_chain->NextChainOffset = 0; sg_chain->NextChainOffset = 0;
if (instance->pdev->device == if ((instance->pdev->device ==
PCI_DEVICE_ID_LSI_INVADER) PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device ==
PCI_DEVICE_ID_LSI_FURY))
sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT; sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT;
else else
sg_chain->Flags = sg_chain->Flags =
...@@ -1434,7 +1440,8 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, ...@@ -1434,7 +1440,8 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
cmd->request_desc->SCSIIO.RequestFlags = cmd->request_desc->SCSIIO.RequestFlags =
(MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY
<< MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT); << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) { if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
if (io_request->RaidContext.regLockFlags == if (io_request->RaidContext.regLockFlags ==
REGION_TYPE_UNUSED) REGION_TYPE_UNUSED)
cmd->request_desc->SCSIIO.RequestFlags = cmd->request_desc->SCSIIO.RequestFlags =
...@@ -1465,7 +1472,8 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, ...@@ -1465,7 +1472,8 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
cmd->request_desc->SCSIIO.RequestFlags = cmd->request_desc->SCSIIO.RequestFlags =
(MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO (MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO
<< MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT); << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) { if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
if (io_request->RaidContext.regLockFlags == if (io_request->RaidContext.regLockFlags ==
REGION_TYPE_UNUSED) REGION_TYPE_UNUSED)
cmd->request_desc->SCSIIO.RequestFlags = cmd->request_desc->SCSIIO.RequestFlags =
...@@ -1941,7 +1949,8 @@ build_mpt_mfi_pass_thru(struct megasas_instance *instance, ...@@ -1941,7 +1949,8 @@ build_mpt_mfi_pass_thru(struct megasas_instance *instance,
fusion = instance->ctrl_context; fusion = instance->ctrl_context;
io_req = cmd->io_request; io_req = cmd->io_request;
if (instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) { if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
(instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) {
struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end = struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end =
(struct MPI25_IEEE_SGE_CHAIN64 *)&io_req->SGL; (struct MPI25_IEEE_SGE_CHAIN64 *)&io_req->SGL;
sgl_ptr_end += fusion->max_sge_in_main_msg - 1; sgl_ptr_end += fusion->max_sge_in_main_msg - 1;
......
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