aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2011-04-16 11:03:17 -0400
committerJames Bottomley <James.Bottomley@suse.de>2011-05-01 12:03:38 -0400
commit9589b062f53e314ea3abfaca8de7a260b4ef69c2 (patch)
treee1a1e7138e2950aac7a83a7833fe50a9271b8288 /drivers/scsi/lpfc/lpfc_init.c
parent86a80846a68eeb8575119db61f6b262f49522e6f (diff)
[SCSI] lpfc 8.3.23: Miscellaneous fixes
Miscellaneous fixes - Do not limit RPI Count to a minimum of 64 - Fix FCFI incorrect on received unsolicited frames. - Save the FCFI returned in the REG_FCFI mailbox command if it was successful. - Fixed Vports not sending FDISC after lips. - Align based on the SLI4_PAGE_SIZE. - Fixed double byte swap on received RRQ. - Fixed mask size for the wq_id mask from 0x7F to 0x7FFF. - Clear FC_FABRIC flag when NPIV LOGO completes (and add a log message). - Modified driver to skip round robin only when ulpStatus==LOCAL_REJECT and word4=SEQUENCE_TIMEOUT to prevent FLOGI to disconnected FCF. - Don't add rport if driver unloading Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 505f88443b5c..7b6a089796d7 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -4906,6 +4906,7 @@ lpfc_sli4_create_rpi_hdr(struct lpfc_hba *phba)
4906 uint16_t rpi_limit, curr_rpi_range; 4906 uint16_t rpi_limit, curr_rpi_range;
4907 struct lpfc_dmabuf *dmabuf; 4907 struct lpfc_dmabuf *dmabuf;
4908 struct lpfc_rpi_hdr *rpi_hdr; 4908 struct lpfc_rpi_hdr *rpi_hdr;
4909 uint32_t rpi_count;
4909 4910
4910 rpi_limit = phba->sli4_hba.max_cfg_param.rpi_base + 4911 rpi_limit = phba->sli4_hba.max_cfg_param.rpi_base +
4911 phba->sli4_hba.max_cfg_param.max_rpi - 1; 4912 phba->sli4_hba.max_cfg_param.max_rpi - 1;
@@ -4920,7 +4921,9 @@ lpfc_sli4_create_rpi_hdr(struct lpfc_hba *phba)
4920 * and to allow the full max_rpi range per port. 4921 * and to allow the full max_rpi range per port.
4921 */ 4922 */
4922 if ((curr_rpi_range + (LPFC_RPI_HDR_COUNT - 1)) > rpi_limit) 4923 if ((curr_rpi_range + (LPFC_RPI_HDR_COUNT - 1)) > rpi_limit)
4923 return NULL; 4924 rpi_count = rpi_limit - curr_rpi_range;
4925 else
4926 rpi_count = LPFC_RPI_HDR_COUNT;
4924 4927
4925 /* 4928 /*
4926 * First allocate the protocol header region for the port. The 4929 * First allocate the protocol header region for the port. The
@@ -4961,7 +4964,7 @@ lpfc_sli4_create_rpi_hdr(struct lpfc_hba *phba)
4961 * The next_rpi stores the next module-64 rpi value to post 4964 * The next_rpi stores the next module-64 rpi value to post
4962 * in any subsequent rpi memory region postings. 4965 * in any subsequent rpi memory region postings.
4963 */ 4966 */
4964 phba->sli4_hba.next_rpi += LPFC_RPI_HDR_COUNT; 4967 phba->sli4_hba.next_rpi += rpi_count;
4965 spin_unlock_irq(&phba->hbalock); 4968 spin_unlock_irq(&phba->hbalock);
4966 return rpi_hdr; 4969 return rpi_hdr;
4967 4970