diff options
author | James Smart <James.Smart@Emulex.Com> | 2009-11-18 15:39:16 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:01:50 -0500 |
commit | c868595d5686e97183bc1ad85502835d81d7a457 (patch) | |
tree | c6e1838b96f048147e7b9954a195aee6bfe5b0c0 /drivers/scsi/lpfc/lpfc_els.c | |
parent | 832151f45806613f203c4c0308c1566d882b971f (diff) |
[SCSI] lpfc 8.3.6 : FCoE Protocol Fixes
FCoE Protocol fixes.
- Fixed FIP frame designation for ELS commands.
- Fix CVL received on Port 1 not processed by driver.
- Fix Zeroed frame on wire after FLOGI
- Fix vport keep-alive does not contain the correct WWN.
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_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index fe0a33c9b874..e9e423f28f8a 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -177,9 +177,22 @@ lpfc_prep_els_iocb(struct lpfc_vport *vport, uint8_t expectRsp, | |||
177 | ((elscmd == ELS_CMD_FLOGI) || | 177 | ((elscmd == ELS_CMD_FLOGI) || |
178 | (elscmd == ELS_CMD_FDISC) || | 178 | (elscmd == ELS_CMD_FDISC) || |
179 | (elscmd == ELS_CMD_LOGO))) | 179 | (elscmd == ELS_CMD_LOGO))) |
180 | elsiocb->iocb_flag |= LPFC_FIP_ELS; | 180 | switch (elscmd) { |
181 | case ELS_CMD_FLOGI: | ||
182 | elsiocb->iocb_flag |= ((ELS_ID_FLOGI << LPFC_FIP_ELS_ID_SHIFT) | ||
183 | & LPFC_FIP_ELS_ID_MASK); | ||
184 | break; | ||
185 | case ELS_CMD_FDISC: | ||
186 | elsiocb->iocb_flag |= ((ELS_ID_FDISC << LPFC_FIP_ELS_ID_SHIFT) | ||
187 | & LPFC_FIP_ELS_ID_MASK); | ||
188 | break; | ||
189 | case ELS_CMD_LOGO: | ||
190 | elsiocb->iocb_flag |= ((ELS_ID_LOGO << LPFC_FIP_ELS_ID_SHIFT) | ||
191 | & LPFC_FIP_ELS_ID_MASK); | ||
192 | break; | ||
193 | } | ||
181 | else | 194 | else |
182 | elsiocb->iocb_flag &= ~LPFC_FIP_ELS; | 195 | elsiocb->iocb_flag &= ~LPFC_FIP_ELS_ID_MASK; |
183 | 196 | ||
184 | icmd = &elsiocb->iocb; | 197 | icmd = &elsiocb->iocb; |
185 | 198 | ||
@@ -591,7 +604,7 @@ lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
591 | } else { | 604 | } else { |
592 | ndlp->nlp_type |= NLP_FABRIC; | 605 | ndlp->nlp_type |= NLP_FABRIC; |
593 | lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); | 606 | lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); |
594 | if (vport->vfi_state & LPFC_VFI_REGISTERED) { | 607 | if (vport->vpi_state & LPFC_VPI_REGISTERED) { |
595 | lpfc_start_fdiscs(phba); | 608 | lpfc_start_fdiscs(phba); |
596 | lpfc_do_scr_ns_plogi(phba, vport); | 609 | lpfc_do_scr_ns_plogi(phba, vport); |
597 | } else | 610 | } else |
@@ -5401,7 +5414,7 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, | |||
5401 | if (lpfc_els_chk_latt(vport)) | 5414 | if (lpfc_els_chk_latt(vport)) |
5402 | goto dropit; | 5415 | goto dropit; |
5403 | 5416 | ||
5404 | /* Ignore traffic recevied during vport shutdown. */ | 5417 | /* Ignore traffic received during vport shutdown. */ |
5405 | if (vport->load_flag & FC_UNLOADING) | 5418 | if (vport->load_flag & FC_UNLOADING) |
5406 | goto dropit; | 5419 | goto dropit; |
5407 | 5420 | ||