scsi: scsi_transport_fc: nvme: display FC-NVMe port roles
Currently the FC-NVMe driver is leverating the SCSI FC transport class to access the remote ports. Which means that all FC-NVMe remote ports will be visible to the fc transport layer, but due to missing definitions the port roles will always be 'unknown'. This patch adds the missing definitions to the fc transport class to that the port roles are correctly displayed. Signed-off-by: Hannes Reinecke <hare@suse.de> Reviewed-by: James Smart <james.smart@broadcom.com> Reviewed-by: Ewan D. Milne <emilne@redhat.com> Reviewed-by: Giridhar Malavali <gmalavali@marvell.com> Reviewed-by: Himanshu Madhani <hmadhani@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
ea63e60f7a
commit
a6a6d0589a
@@ -2264,7 +2264,10 @@ typedef enum {
|
||||
FCT_BROADCAST,
|
||||
FCT_INITIATOR,
|
||||
FCT_TARGET,
|
||||
FCT_NVME
|
||||
FCT_NVME_INITIATOR = 0x10,
|
||||
FCT_NVME_TARGET = 0x20,
|
||||
FCT_NVME_DISCOVERY = 0x40,
|
||||
FCT_NVME = 0xf0,
|
||||
} fc_port_type_t;
|
||||
|
||||
enum qla_sess_deletion {
|
||||
|
||||
@@ -5268,16 +5268,23 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport)
|
||||
|
||||
rport->supported_classes = fcport->supported_classes;
|
||||
|
||||
rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
|
||||
rport_ids.roles = FC_PORT_ROLE_UNKNOWN;
|
||||
if (fcport->port_type == FCT_INITIATOR)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
|
||||
rport_ids.roles |= FC_PORT_ROLE_FCP_INITIATOR;
|
||||
if (fcport->port_type == FCT_TARGET)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
|
||||
rport_ids.roles |= FC_PORT_ROLE_FCP_TARGET;
|
||||
if (fcport->port_type & FCT_NVME_INITIATOR)
|
||||
rport_ids.roles |= FC_PORT_ROLE_NVME_INITIATOR;
|
||||
if (fcport->port_type & FCT_NVME_TARGET)
|
||||
rport_ids.roles |= FC_PORT_ROLE_NVME_TARGET;
|
||||
if (fcport->port_type & FCT_NVME_DISCOVERY)
|
||||
rport_ids.roles |= FC_PORT_ROLE_NVME_DISCOVERY;
|
||||
|
||||
ql_dbg(ql_dbg_disc, vha, 0x20ee,
|
||||
"%s %8phN. rport %p is %s mode\n",
|
||||
__func__, fcport->port_name, rport,
|
||||
(fcport->port_type == FCT_TARGET) ? "tgt" : "ini");
|
||||
(fcport->port_type == FCT_TARGET) ? "tgt" :
|
||||
((fcport->port_type & FCT_NVME) ? "nvme" :"ini"));
|
||||
|
||||
fc_remote_port_rolechg(rport, rport_ids.roles);
|
||||
}
|
||||
|
||||
@@ -6387,7 +6387,13 @@ int __qla24xx_parse_gpdb(struct scsi_qla_host *vha, fc_port_t *fcport,
|
||||
fcport->d_id.b.rsvd_1 = 0;
|
||||
|
||||
if (fcport->fc4f_nvme) {
|
||||
fcport->port_type = FCT_NVME;
|
||||
fcport->port_type = 0;
|
||||
if ((pd->prli_svc_param_word_3[0] & BIT_5) == 0)
|
||||
fcport->port_type |= FCT_NVME_INITIATOR;
|
||||
if ((pd->prli_svc_param_word_3[0] & BIT_4) == 0)
|
||||
fcport->port_type |= FCT_NVME_TARGET;
|
||||
if ((pd->prli_svc_param_word_3[0] & BIT_3) == 0)
|
||||
fcport->port_type |= FCT_NVME_DISCOVERY;
|
||||
} else {
|
||||
/* If not target must be initiator or unknown type. */
|
||||
if ((pd->prli_svc_param_word_3[0] & BIT_4) == 0)
|
||||
|
||||
Reference in New Issue
Block a user