diff options
author | James Smart <james.smart@emulex.com> | 2012-09-29 11:31:55 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-10-08 07:11:16 -0400 |
commit | 26979cedb05ecc2f6ae69c307058ccb510ac17f1 (patch) | |
tree | c1b2188d75d5cb7d949d2029d9257c0289d747cd /drivers/scsi | |
parent | 292098beb5ea8624e6114cdd53a1b089c233560b (diff) |
[SCSI] lpfc 8.3.35: Fixed not checking solicition in progress bit when verifying FCF record for use
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hbadisc.c | 11 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hw4.h | 8 |
2 files changed, 15 insertions, 4 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index e9845d2ecf1..d7096ad94d3 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -1506,9 +1506,10 @@ lpfc_match_fcf_conn_list(struct lpfc_hba *phba, | |||
1506 | } | 1506 | } |
1507 | } | 1507 | } |
1508 | 1508 | ||
1509 | /* If FCF not available return 0 */ | 1509 | /* FCF not valid/available or solicitation in progress */ |
1510 | if (!bf_get(lpfc_fcf_record_fcf_avail, new_fcf_record) || | 1510 | if (!bf_get(lpfc_fcf_record_fcf_avail, new_fcf_record) || |
1511 | !bf_get(lpfc_fcf_record_fcf_valid, new_fcf_record)) | 1511 | !bf_get(lpfc_fcf_record_fcf_valid, new_fcf_record) || |
1512 | bf_get(lpfc_fcf_record_fcf_sol, new_fcf_record)) | ||
1512 | return 0; | 1513 | return 0; |
1513 | 1514 | ||
1514 | if (!(phba->hba_flag & HBA_FIP_SUPPORT)) { | 1515 | if (!(phba->hba_flag & HBA_FIP_SUPPORT)) { |
@@ -1842,6 +1843,7 @@ lpfc_sli4_log_fcf_record_info(struct lpfc_hba *phba, | |||
1842 | "\tFCF_Index : x%x\n" | 1843 | "\tFCF_Index : x%x\n" |
1843 | "\tFCF_Avail : x%x\n" | 1844 | "\tFCF_Avail : x%x\n" |
1844 | "\tFCF_Valid : x%x\n" | 1845 | "\tFCF_Valid : x%x\n" |
1846 | "\tFCF_SOL : x%x\n" | ||
1845 | "\tFIP_Priority : x%x\n" | 1847 | "\tFIP_Priority : x%x\n" |
1846 | "\tMAC_Provider : x%x\n" | 1848 | "\tMAC_Provider : x%x\n" |
1847 | "\tLowest VLANID : x%x\n" | 1849 | "\tLowest VLANID : x%x\n" |
@@ -1852,6 +1854,7 @@ lpfc_sli4_log_fcf_record_info(struct lpfc_hba *phba, | |||
1852 | bf_get(lpfc_fcf_record_fcf_index, fcf_record), | 1854 | bf_get(lpfc_fcf_record_fcf_index, fcf_record), |
1853 | bf_get(lpfc_fcf_record_fcf_avail, fcf_record), | 1855 | bf_get(lpfc_fcf_record_fcf_avail, fcf_record), |
1854 | bf_get(lpfc_fcf_record_fcf_valid, fcf_record), | 1856 | bf_get(lpfc_fcf_record_fcf_valid, fcf_record), |
1857 | bf_get(lpfc_fcf_record_fcf_sol, fcf_record), | ||
1855 | fcf_record->fip_priority, | 1858 | fcf_record->fip_priority, |
1856 | bf_get(lpfc_fcf_record_mac_addr_prov, fcf_record), | 1859 | bf_get(lpfc_fcf_record_mac_addr_prov, fcf_record), |
1857 | vlan_id, | 1860 | vlan_id, |
@@ -2185,12 +2188,14 @@ lpfc_mbx_cmpl_fcf_scan_read_fcf_rec(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq) | |||
2185 | new_fcf_record)); | 2188 | new_fcf_record)); |
2186 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP, | 2189 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP, |
2187 | "2781 FCF (x%x) failed connection " | 2190 | "2781 FCF (x%x) failed connection " |
2188 | "list check: (x%x/x%x)\n", | 2191 | "list check: (x%x/x%x/%x)\n", |
2189 | bf_get(lpfc_fcf_record_fcf_index, | 2192 | bf_get(lpfc_fcf_record_fcf_index, |
2190 | new_fcf_record), | 2193 | new_fcf_record), |
2191 | bf_get(lpfc_fcf_record_fcf_avail, | 2194 | bf_get(lpfc_fcf_record_fcf_avail, |
2192 | new_fcf_record), | 2195 | new_fcf_record), |
2193 | bf_get(lpfc_fcf_record_fcf_valid, | 2196 | bf_get(lpfc_fcf_record_fcf_valid, |
2197 | new_fcf_record), | ||
2198 | bf_get(lpfc_fcf_record_fcf_sol, | ||
2194 | new_fcf_record)); | 2199 | new_fcf_record)); |
2195 | if ((phba->fcf.fcf_flag & FCF_IN_USE) && | 2200 | if ((phba->fcf.fcf_flag & FCF_IN_USE) && |
2196 | lpfc_sli4_fcf_record_match(phba, &phba->fcf.current_rec, | 2201 | lpfc_sli4_fcf_record_match(phba, &phba->fcf.current_rec, |
diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h index 834b699cac7..e2838e90ddf 100644 --- a/drivers/scsi/lpfc/lpfc_hw4.h +++ b/drivers/scsi/lpfc/lpfc_hw4.h | |||
@@ -1695,8 +1695,14 @@ struct fcf_record { | |||
1695 | #define lpfc_fcf_record_fc_map_2_MASK 0x000000FF | 1695 | #define lpfc_fcf_record_fc_map_2_MASK 0x000000FF |
1696 | #define lpfc_fcf_record_fc_map_2_WORD word7 | 1696 | #define lpfc_fcf_record_fc_map_2_WORD word7 |
1697 | #define lpfc_fcf_record_fcf_valid_SHIFT 24 | 1697 | #define lpfc_fcf_record_fcf_valid_SHIFT 24 |
1698 | #define lpfc_fcf_record_fcf_valid_MASK 0x000000FF | 1698 | #define lpfc_fcf_record_fcf_valid_MASK 0x00000001 |
1699 | #define lpfc_fcf_record_fcf_valid_WORD word7 | 1699 | #define lpfc_fcf_record_fcf_valid_WORD word7 |
1700 | #define lpfc_fcf_record_fcf_fc_SHIFT 25 | ||
1701 | #define lpfc_fcf_record_fcf_fc_MASK 0x00000001 | ||
1702 | #define lpfc_fcf_record_fcf_fc_WORD word7 | ||
1703 | #define lpfc_fcf_record_fcf_sol_SHIFT 31 | ||
1704 | #define lpfc_fcf_record_fcf_sol_MASK 0x00000001 | ||
1705 | #define lpfc_fcf_record_fcf_sol_WORD word7 | ||
1700 | uint32_t word8; | 1706 | uint32_t word8; |
1701 | #define lpfc_fcf_record_fcf_index_SHIFT 0 | 1707 | #define lpfc_fcf_record_fcf_index_SHIFT 0 |
1702 | #define lpfc_fcf_record_fcf_index_MASK 0x0000FFFF | 1708 | #define lpfc_fcf_record_fcf_index_MASK 0x0000FFFF |