msleep(1000);
        if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
                (instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
-               (instance->ctrl_context)) {
+               (instance->adapter_type != MFI_SERIES)) {
                writel(MFI_STOP_ADP, &instance->reg_set->doorbell);
                /* Flush */
                readl(&instance->reg_set->doorbell);
        dev_warn(&instance->pdev->dev, "SR-IOV: Starting heartbeat for scsi%d\n",
               instance->host->host_no);
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                retval = megasas_issue_blocked_cmd(instance, cmd,
                        MEGASAS_ROUTINE_WAIT_TIME_VF);
        else
        /*
         * First wait for all commands to complete
         */
-       if (instance->ctrl_context) {
+       if (instance->adapter_type == MFI_SERIES) {
+               ret = megasas_generic_reset(scmd);
+       } else {
                struct megasas_cmd_fusion *cmd;
                cmd = (struct megasas_cmd_fusion *)scmd->SCp.ptr;
                if (cmd)
                                MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE);
                ret = megasas_reset_fusion(scmd->device->host,
                                SCSIIO_TIMEOUT_OCR);
-       } else
-               ret = megasas_generic_reset(scmd);
+       }
 
        return ret;
 }
 
        instance = (struct megasas_instance *)scmd->device->host->hostdata;
 
-       if (instance->ctrl_context)
+       if (instance->adapter_type != MFI_SERIES)
                ret = megasas_task_abort_fusion(scmd);
        else {
                sdev_printk(KERN_NOTICE, scmd->device, "TASK ABORT not supported\n");
 
        instance = (struct megasas_instance *)scmd->device->host->hostdata;
 
-       if (instance->ctrl_context)
+       if (instance->adapter_type != MFI_SERIES)
                ret = megasas_reset_target_fusion(scmd);
        else {
                sdev_printk(KERN_NOTICE, scmd->device, "TARGET RESET not supported\n");
                                PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
                                (instance->pdev->device ==
                                 PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
-                               (instance->ctrl_context))
+                               (instance->adapter_type != MFI_SERIES))
                                writel(
                                  MFI_INIT_CLEAR_HANDSHAKE|MFI_INIT_HOTPLUG,
                                  &instance->reg_set->doorbell);
                             PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
                                (instance->pdev->device ==
                                 PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
-                               (instance->ctrl_context))
+                               (instance->adapter_type != MFI_SERIES))
                                writel(MFI_INIT_HOTPLUG,
                                       &instance->reg_set->doorbell);
                        else
                                PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
                                (instance->pdev->device ==
                                PCI_DEVICE_ID_LSI_SAS0071SKINNY)  ||
-                               (instance->ctrl_context)) {
+                               (instance->adapter_type != MFI_SERIES)) {
                                writel(MFI_RESET_FLAGS,
                                        &instance->reg_set->doorbell);
 
-                               if (instance->ctrl_context) {
+                               if (instance->adapter_type != MFI_SERIES) {
                                        for (i = 0; i < (10 * 1000); i += 20) {
                                                if (readl(
                                                            &instance->
         * max_sge_sz  = 12 byte (sizeof  megasas_sge64)
         * Total 192 byte (3 MFI frame of 64 byte)
         */
-       frame_count = instance->ctrl_context ? (3 + 1) : (15 + 1);
+       frame_count = (instance->adapter_type == MFI_SERIES) ?
+                       (15 + 1) : (3 + 1);
        instance->mfi_frame_size = MEGAMFI_FRAME_SIZE * frame_count;
        /*
         * Use DMA pool facility provided by PCI layer
                memset(cmd->frame, 0, instance->mfi_frame_size);
                cmd->frame->io.context = cpu_to_le32(cmd->index);
                cmd->frame->io.pad_0 = 0;
-               if (!instance->ctrl_context && reset_devices)
+               if ((instance->adapter_type == MFI_SERIES) && reset_devices)
                        cmd->frame->hdr.cmd = MFI_CMD_INVALID;
        }
 
 inline int
 dcmd_timeout_ocr_possible(struct megasas_instance *instance) {
 
-       if (!instance->ctrl_context)
+       if (instance->adapter_type == MFI_SERIES)
                return KILL_ADAPTER;
        else if (instance->unload ||
                        test_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags))
        dcmd->sgl.sge32[0].phys_addr = cpu_to_le32(instance->pd_info_h);
        dcmd->sgl.sge32[0].length = cpu_to_le32(sizeof(struct MR_PD_INFO));
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd, MFI_IO_TIMEOUT_SECS);
        else
                ret = megasas_issue_polled(instance, cmd);
        dcmd->sgl.sge32[0].phys_addr = cpu_to_le32(ci_h);
        dcmd->sgl.sge32[0].length = cpu_to_le32(MEGASAS_MAX_PD * sizeof(struct MR_PD_LIST));
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd,
                        MFI_IO_TIMEOUT_SECS);
        else
                dev_info(&instance->pdev->dev, "MR_DCMD_PD_LIST_QUERY "
                        "failed/not supported by firmware\n");
 
-               if (instance->ctrl_context)
+               if (instance->adapter_type != MFI_SERIES)
                        megaraid_sas_kill_hba(instance);
                else
                        instance->pd_list_not_supported = 1;
        dcmd->sgl.sge32[0].length = cpu_to_le32(sizeof(struct MR_LD_LIST));
        dcmd->pad_0  = 0;
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd,
                        MFI_IO_TIMEOUT_SECS);
        else
        dcmd->sgl.sge32[0].length = cpu_to_le32(sizeof(struct MR_LD_TARGETID_LIST));
        dcmd->pad_0  = 0;
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd, MFI_IO_TIMEOUT_SECS);
        else
                ret = megasas_issue_polled(instance, cmd);
        dcmd->sgl.sge32[0].length = cpu_to_le32(sizeof(struct megasas_ctrl_info));
        dcmd->mbox.b[0] = 1;
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd, MFI_IO_TIMEOUT_SECS);
        else
                ret = megasas_issue_polled(instance, cmd);
        dcmd->sgl.sge32[0].phys_addr = cpu_to_le32(instance->crash_dump_h);
        dcmd->sgl.sge32[0].length = cpu_to_le32(CRASH_DMA_BUF_SIZE);
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance, cmd, MFI_IO_TIMEOUT_SECS);
        else
                ret = megasas_issue_polled(instance, cmd);
 
        reg_set = instance->reg_set;
 
-       if (fusion)
+       if (instance->adapter_type != MFI_SERIES)
                instance->instancet = &megasas_instance_template_fusion;
        else {
                switch (instance->pdev->device) {
        dcmd->sgl.sge32[0].length =
                cpu_to_le32(sizeof(struct MR_TARGET_PROPERTIES));
 
-       if (instance->ctrl_context && !instance->mask_interrupts)
+       if ((instance->adapter_type != MFI_SERIES) &&
+           !instance->mask_interrupts)
                ret = megasas_issue_blocked_cmd(instance,
                                                cmd, MFI_IO_TIMEOUT_SECS);
        else
        instance->disableOnlineCtrlReset = 1;
        instance->UnevenSpanSupport = 0;
 
-       if (instance->ctrl_context) {
+       if (instance->adapter_type != MFI_SERIES) {
                INIT_WORK(&instance->work_init, megasas_fusion_ocr_wq);
                INIT_WORK(&instance->crash_init, megasas_fusion_crash_dump_wq);
        } else
        instance->instancet->disable_intr(instance);
        megasas_destroy_irqs(instance);
 
-       if (instance->ctrl_context)
+       if (instance->adapter_type != MFI_SERIES)
                megasas_release_fusion(instance);
        else
                megasas_release_mfi(instance);
        if (rval < 0)
                goto fail_reenable_msix;
 
-       if (instance->ctrl_context) {
+       if (instance->adapter_type != MFI_SERIES) {
                megasas_reset_reply_desc(instance);
                if (megasas_ioc_init_fusion(instance)) {
                        megasas_free_cmds(instance);
        }
 
 
-       if (instance->ctrl_context) {
+       if (instance->adapter_type != MFI_SERIES) {
                megasas_release_fusion(instance);
                        pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
                                (sizeof(struct MR_PD_CFG_SEQ) *