diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_init.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index a6d2559217cd..09b23f70fd66 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -1697,6 +1697,7 @@ qla2x00_alloc_fcport(scsi_qla_host_t *ha, int flags) | |||
1697 | fcport->iodesc_idx_sent = IODESC_INVALID_INDEX; | 1697 | fcport->iodesc_idx_sent = IODESC_INVALID_INDEX; |
1698 | atomic_set(&fcport->state, FCS_UNCONFIGURED); | 1698 | atomic_set(&fcport->state, FCS_UNCONFIGURED); |
1699 | fcport->flags = FCF_RLC_SUPPORT; | 1699 | fcport->flags = FCF_RLC_SUPPORT; |
1700 | fcport->supported_classes = FC_COS_UNSPECIFIED; | ||
1700 | 1701 | ||
1701 | return (fcport); | 1702 | return (fcport); |
1702 | } | 1703 | } |
@@ -2075,6 +2076,7 @@ qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport) | |||
2075 | return; | 2076 | return; |
2076 | } | 2077 | } |
2077 | rport->dd_data = fcport; | 2078 | rport->dd_data = fcport; |
2079 | rport->supported_classes = fcport->supported_classes; | ||
2078 | 2080 | ||
2079 | rport_ids.roles = FC_RPORT_ROLE_UNKNOWN; | 2081 | rport_ids.roles = FC_RPORT_ROLE_UNKNOWN; |
2080 | if (fcport->port_type == FCT_INITIATOR) | 2082 | if (fcport->port_type == FCT_INITIATOR) |
@@ -2794,6 +2796,11 @@ qla2x00_fabric_login(scsi_qla_host_t *ha, fc_port_t *fcport, | |||
2794 | } | 2796 | } |
2795 | } | 2797 | } |
2796 | 2798 | ||
2799 | if (mb[10] & BIT_0) | ||
2800 | fcport->supported_classes |= FC_COS_CLASS2; | ||
2801 | if (mb[10] & BIT_1) | ||
2802 | fcport->supported_classes |= FC_COS_CLASS3; | ||
2803 | |||
2797 | rval = QLA_SUCCESS; | 2804 | rval = QLA_SUCCESS; |
2798 | break; | 2805 | break; |
2799 | } else if (mb[0] == MBS_LOOP_ID_USED) { | 2806 | } else if (mb[0] == MBS_LOOP_ID_USED) { |