scsi: lpfc: Fix incorrect logical link speed on trunks when links down
Invalid logical speed is displayed for trunk enabled ports when all ports are down. Also noted that link speed is incorrectly reported for the units when links are up. Current code is returning the logical link speed from the last event from the adapter. In cases where the last link went down, the link speed in the event was not valid - meaning that although the links where down the field had a bogus value. Rework the event handling to qualify the trunk link state before using the event speed data. Also correct units on other areas where the logical link speed was taken from a link event. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
04d210c98e
commit
b8e6f13617
@ -5741,7 +5741,7 @@ lpfc_get_trunk_info(struct bsg_job *job)
|
||||
|
||||
event_reply->port_speed = phba->sli4_hba.link_state.speed / 1000;
|
||||
event_reply->logical_speed =
|
||||
phba->sli4_hba.link_state.logical_speed / 100;
|
||||
phba->sli4_hba.link_state.logical_speed / 1000;
|
||||
job_error:
|
||||
bsg_reply->result = rc;
|
||||
bsg_job_done(job, bsg_reply->result,
|
||||
|
@ -5055,7 +5055,7 @@ lpfc_update_trunk_link_status(struct lpfc_hba *phba,
|
||||
bf_get(lpfc_acqe_fc_la_speed, acqe_fc));
|
||||
|
||||
phba->sli4_hba.link_state.logical_speed =
|
||||
bf_get(lpfc_acqe_fc_la_llink_spd, acqe_fc);
|
||||
bf_get(lpfc_acqe_fc_la_llink_spd, acqe_fc) * 10;
|
||||
/* We got FC link speed, convert to fc_linkspeed (READ_TOPOLOGY) */
|
||||
phba->fc_linkspeed =
|
||||
lpfc_async_link_speed_to_read_top(
|
||||
@ -5158,8 +5158,14 @@ lpfc_sli4_async_fc_evt(struct lpfc_hba *phba, struct lpfc_acqe_fc_la *acqe_fc)
|
||||
bf_get(lpfc_acqe_fc_la_port_number, acqe_fc);
|
||||
phba->sli4_hba.link_state.fault =
|
||||
bf_get(lpfc_acqe_link_fault, acqe_fc);
|
||||
phba->sli4_hba.link_state.logical_speed =
|
||||
|
||||
if (bf_get(lpfc_acqe_fc_la_att_type, acqe_fc) ==
|
||||
LPFC_FC_LA_TYPE_LINK_DOWN)
|
||||
phba->sli4_hba.link_state.logical_speed = 0;
|
||||
else if (!phba->sli4_hba.conf_trunk)
|
||||
phba->sli4_hba.link_state.logical_speed =
|
||||
bf_get(lpfc_acqe_fc_la_llink_spd, acqe_fc) * 10;
|
||||
|
||||
lpfc_printf_log(phba, KERN_INFO, LOG_SLI,
|
||||
"2896 Async FC event - Speed:%dGBaud Topology:x%x "
|
||||
"LA Type:x%x Port Type:%d Port Number:%d Logical speed:"
|
||||
|
Loading…
Reference in New Issue
Block a user