diff options
author | James Smart <james.smart@emulex.com> | 2011-04-16 11:03:17 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-05-01 12:03:38 -0400 |
commit | 9589b062f53e314ea3abfaca8de7a260b4ef69c2 (patch) | |
tree | e1a1e7138e2950aac7a83a7833fe50a9271b8288 /drivers/scsi/lpfc/lpfc_init.c | |
parent | 86a80846a68eeb8575119db61f6b262f49522e6f (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.c | 7 |
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 | ||