scsi: lpfc: Fix link state reporting for trunking when adapter is offline

If the adapter is taken offline, the trunk link port attributes continue to
report trunk links as up even though all links are down as the adapter is
offline.

Clear the trunk links state as part of taking the adapter offline.

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:
James Smart 2018-12-13 15:17:52 -08:00 committed by Martin K. Petersen
parent 009b715614
commit 2977a09512
1 changed files with 14 additions and 2 deletions

View File

@ -888,9 +888,15 @@ lpfc_linkdown(struct lpfc_hba *phba)
LPFC_MBOXQ_t *mb;
int i;
if (phba->link_state == LPFC_LINK_DOWN)
if (phba->link_state == LPFC_LINK_DOWN) {
if (phba->sli4_hba.conf_trunk) {
phba->trunk_link.link0.state = 0;
phba->trunk_link.link1.state = 0;
phba->trunk_link.link2.state = 0;
phba->trunk_link.link3.state = 0;
}
return 0;
}
/* Block all SCSI stack I/Os */
lpfc_scsi_dev_block(phba);
@ -901,6 +907,12 @@ lpfc_linkdown(struct lpfc_hba *phba)
spin_unlock_irq(&phba->hbalock);
if (phba->link_state > LPFC_LINK_DOWN) {
phba->link_state = LPFC_LINK_DOWN;
if (phba->sli4_hba.conf_trunk) {
phba->trunk_link.link0.state = 0;
phba->trunk_link.link1.state = 0;
phba->trunk_link.link2.state = 0;
phba->trunk_link.link3.state = 0;
}
spin_lock_irq(shost->host_lock);
phba->pport->fc_flag &= ~FC_LBIT;
spin_unlock_irq(shost->host_lock);