diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index 3bdec4b2faae..99bc2bb1987f 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -1733,11 +1733,20 @@ lpfc_parse_vpd(struct lpfc_hba *phba, uint8_t *vpd, int len) | |||
1733 | j = 0; | 1733 | j = 0; |
1734 | Length -= (3+i); | 1734 | Length -= (3+i); |
1735 | while(i--) { | 1735 | while(i--) { |
1736 | phba->Port[j++] = vpd[index++]; | 1736 | if ((phba->sli_rev == LPFC_SLI_REV4) && |
1737 | if (j == 19) | 1737 | (phba->sli4_hba.pport_name_sta == |
1738 | break; | 1738 | LPFC_SLI4_PPNAME_GET)) { |
1739 | j++; | ||
1740 | index++; | ||
1741 | } else | ||
1742 | phba->Port[j++] = vpd[index++]; | ||
1743 | if (j == 19) | ||
1744 | break; | ||
1739 | } | 1745 | } |
1740 | phba->Port[j] = 0; | 1746 | if ((phba->sli_rev != LPFC_SLI_REV4) || |
1747 | (phba->sli4_hba.pport_name_sta == | ||
1748 | LPFC_SLI4_PPNAME_NON)) | ||
1749 | phba->Port[j] = 0; | ||
1741 | continue; | 1750 | continue; |
1742 | } | 1751 | } |
1743 | else { | 1752 | else { |