scsi: fnic: Advertise NVMe initiator service parameters

Set FC service parameters according to the selected initiator role.

Keep FCP retry and confirmation bits for FCP initiators, and advertise NVMe
initiator and SLER bits for NVMe initiators.

Reviewed-by: Sesidhar Baddela <sebaddel@cisco.com>
Reviewed-by: Arulprabhu Ponnusamy <arulponn@cisco.com>
Reviewed-by: Gian Carlo Boffa <gcboffa@cisco.com>
Reviewed-by: Arun Easi <aeasi@cisco.com>
Reviewed-by: Hannes Reinecke <hare@kernel.org>
Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Karan Tilak Kumar <kartilak@cisco.com>
Co-developed-by: Hannes Reinecke <hare@kernel.org>
Link: https://patch.msgid.link/20260724174811.5118-5-kartilak@cisco.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Karan Tilak Kumar
2026-07-24 10:48:02 -07:00
committed by Martin K. Petersen
parent 12bd1b2912
commit 20b991c302
2 changed files with 13 additions and 5 deletions

View File

@@ -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)

View File

@@ -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;