diff --git a/drivers/scsi/fnic/fdls_fc.h b/drivers/scsi/fnic/fdls_fc.h index 012f43afd083..e33c829545fb 100644 --- a/drivers/scsi/fnic/fdls_fc.h +++ b/drivers/scsi/fnic/fdls_fc.h @@ -39,6 +39,9 @@ #define FNIC_FCP_SP_CONF_CMPL 0x00000080 #define FNIC_FCP_SP_RETRY 0x00000100 +#define FNIC_NVME_SP_INITIATOR 0x00000020 +#define FNIC_NVME_SP_SLER 0x00000100 + #define FNIC_FC_CONCUR_SEQS (0xFF) #define FNIC_FC_RO_INFO (0x1F) diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c index 3a365ea455b1..5850d51b0e8f 100644 --- a/drivers/scsi/fnic/fnic_main.c +++ b/drivers/scsi/fnic/fnic_main.c @@ -1016,11 +1016,16 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) iport->max_flogi_retries = fnic->config.flogi_retries; iport->max_plogi_retries = fnic->config.plogi_retries; iport->plogi_timeout = fnic->config.plogi_timeout; - iport->service_params = - (FNIC_FCP_SP_INITIATOR | FNIC_FCP_SP_RD_XRDY_DIS | - FNIC_FCP_SP_CONF_CMPL); - if (fnic->config.flags & VFCF_FCP_SEQ_LVL_ERR) - iport->service_params |= FNIC_FCP_SP_RETRY; + if (IS_FNIC_FCP_INITIATOR(fnic)) { + iport->service_params = (FNIC_FCP_SP_INITIATOR | + FNIC_FCP_SP_RD_XRDY_DIS | FNIC_FCP_SP_CONF_CMPL); + if (fnic->config.flags & VFCF_FCP_SEQ_LVL_ERR) + iport->service_params |= FNIC_FCP_SP_RETRY; + } else if (IS_FNIC_NVME_INITIATOR(fnic)) { + iport->service_params = (FNIC_NVME_SP_INITIATOR); + if (fnic->config.flags & VFCF_FCP_SEQ_LVL_ERR) + iport->service_params |= FNIC_NVME_SP_SLER; + } iport->boot_time = jiffies; iport->e_d_tov = fnic->config.ed_tov;