diff options
author | James Smart <James.Smart@Emulex.Com> | 2007-10-27 13:37:33 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-11 19:22:33 -0500 |
commit | 98c9ea5c026ee47efe2a0f595078dbf199d08f50 (patch) | |
tree | 4d07a863ed26b1d3efec0d198ce456e20fad3954 /drivers/scsi/lpfc/lpfc_ct.c | |
parent | 0b727fea7a700e223bf52fb1eaf4c3a27c4340db (diff) |
[SCSI] lpfc 8.2.3 : Miscellaneous Small Fixes - part 1
Miscellaneous Small Fixes - part 1
- Fix typo kmzlloc -> kzalloc
- Fix discovery ndlp use after free panic
- Fix link event causing flood of 0108 messages
- Relieve some mbox congestion on link up with 100 vports
- Fix broken vport parameters
- Prevent lock recursion in logo_reglogin_issue
- Split uses of error variable in lpfc_pci_probe_one into retval and error
- Remove completion code related to dev_loss_tmo
- Remove unused LPFC_MAX_HBQ #define
- Don't compare pointers to 0 for sparse
- Make 2 functions static for sparse
- Fix default rpi cleanup code causing rogue ndlps to remain on the NPR list
- Remove annoying ELS messages when driver is unloaded
- Fix Cannot issue Register Fabric login problems on link up
- Remove LPFC_EVT_DEV_LOSS_DELAY
- Fix FC port swap test leads to device going offline
- Fix vport CT flags to only be set when accepted
- Add code to handle signals during vport_create
- Fix too many retries in FC-AL mode
- Pull lpfc_port_link_failure out of lpfc_linkdown_port
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_ct.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_ct.c | 62 |
1 files changed, 51 insertions, 11 deletions
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c index dbe020e66b09..e8bd7c122f1e 100644 --- a/drivers/scsi/lpfc/lpfc_ct.c +++ b/drivers/scsi/lpfc/lpfc_ct.c | |||
@@ -458,7 +458,7 @@ lpfc_ns_rsp(struct lpfc_vport *vport, struct lpfc_dmabuf *mp, uint32_t Size) | |||
458 | ((lpfc_find_vport_by_did(phba, Did) == NULL) || | 458 | ((lpfc_find_vport_by_did(phba, Did) == NULL) || |
459 | vport->cfg_peer_port_login)) { | 459 | vport->cfg_peer_port_login)) { |
460 | if ((vport->port_type != LPFC_NPIV_PORT) || | 460 | if ((vport->port_type != LPFC_NPIV_PORT) || |
461 | (!vport->ct_flags & FC_CT_RFF_ID) || | 461 | (!(vport->ct_flags & FC_CT_RFF_ID)) || |
462 | (!vport->cfg_restrict_login)) { | 462 | (!vport->cfg_restrict_login)) { |
463 | ndlp = lpfc_setup_disc_node(vport, Did); | 463 | ndlp = lpfc_setup_disc_node(vport, Did); |
464 | if (ndlp) { | 464 | if (ndlp) { |
@@ -854,8 +854,16 @@ lpfc_cmpl_ct_cmd_rft_id(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
854 | IOCB_t *irsp = &rspiocb->iocb; | 854 | IOCB_t *irsp = &rspiocb->iocb; |
855 | struct lpfc_vport *vport = cmdiocb->vport; | 855 | struct lpfc_vport *vport = cmdiocb->vport; |
856 | 856 | ||
857 | if (irsp->ulpStatus == IOSTAT_SUCCESS) | 857 | if (irsp->ulpStatus == IOSTAT_SUCCESS) { |
858 | vport->ct_flags |= FC_CT_RFT_ID; | 858 | struct lpfc_dmabuf *outp; |
859 | struct lpfc_sli_ct_request *CTrsp; | ||
860 | |||
861 | outp = (struct lpfc_dmabuf *) cmdiocb->context2; | ||
862 | CTrsp = (struct lpfc_sli_ct_request *) outp->virt; | ||
863 | if (CTrsp->CommandResponse.bits.CmdRsp == | ||
864 | be16_to_cpu(SLI_CT_RESPONSE_FS_ACC)) | ||
865 | vport->ct_flags |= FC_CT_RFT_ID; | ||
866 | } | ||
859 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); | 867 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); |
860 | return; | 868 | return; |
861 | } | 869 | } |
@@ -867,8 +875,16 @@ lpfc_cmpl_ct_cmd_rnn_id(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
867 | IOCB_t *irsp = &rspiocb->iocb; | 875 | IOCB_t *irsp = &rspiocb->iocb; |
868 | struct lpfc_vport *vport = cmdiocb->vport; | 876 | struct lpfc_vport *vport = cmdiocb->vport; |
869 | 877 | ||
870 | if (irsp->ulpStatus == IOSTAT_SUCCESS) | 878 | if (irsp->ulpStatus == IOSTAT_SUCCESS) { |
871 | vport->ct_flags |= FC_CT_RNN_ID; | 879 | struct lpfc_dmabuf *outp; |
880 | struct lpfc_sli_ct_request *CTrsp; | ||
881 | |||
882 | outp = (struct lpfc_dmabuf *) cmdiocb->context2; | ||
883 | CTrsp = (struct lpfc_sli_ct_request *) outp->virt; | ||
884 | if (CTrsp->CommandResponse.bits.CmdRsp == | ||
885 | be16_to_cpu(SLI_CT_RESPONSE_FS_ACC)) | ||
886 | vport->ct_flags |= FC_CT_RNN_ID; | ||
887 | } | ||
872 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); | 888 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); |
873 | return; | 889 | return; |
874 | } | 890 | } |
@@ -880,8 +896,16 @@ lpfc_cmpl_ct_cmd_rspn_id(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
880 | IOCB_t *irsp = &rspiocb->iocb; | 896 | IOCB_t *irsp = &rspiocb->iocb; |
881 | struct lpfc_vport *vport = cmdiocb->vport; | 897 | struct lpfc_vport *vport = cmdiocb->vport; |
882 | 898 | ||
883 | if (irsp->ulpStatus == IOSTAT_SUCCESS) | 899 | if (irsp->ulpStatus == IOSTAT_SUCCESS) { |
884 | vport->ct_flags |= FC_CT_RSPN_ID; | 900 | struct lpfc_dmabuf *outp; |
901 | struct lpfc_sli_ct_request *CTrsp; | ||
902 | |||
903 | outp = (struct lpfc_dmabuf *) cmdiocb->context2; | ||
904 | CTrsp = (struct lpfc_sli_ct_request *) outp->virt; | ||
905 | if (CTrsp->CommandResponse.bits.CmdRsp == | ||
906 | be16_to_cpu(SLI_CT_RESPONSE_FS_ACC)) | ||
907 | vport->ct_flags |= FC_CT_RSPN_ID; | ||
908 | } | ||
885 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); | 909 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); |
886 | return; | 910 | return; |
887 | } | 911 | } |
@@ -893,8 +917,16 @@ lpfc_cmpl_ct_cmd_rsnn_nn(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
893 | IOCB_t *irsp = &rspiocb->iocb; | 917 | IOCB_t *irsp = &rspiocb->iocb; |
894 | struct lpfc_vport *vport = cmdiocb->vport; | 918 | struct lpfc_vport *vport = cmdiocb->vport; |
895 | 919 | ||
896 | if (irsp->ulpStatus == IOSTAT_SUCCESS) | 920 | if (irsp->ulpStatus == IOSTAT_SUCCESS) { |
897 | vport->ct_flags |= FC_CT_RSNN_NN; | 921 | struct lpfc_dmabuf *outp; |
922 | struct lpfc_sli_ct_request *CTrsp; | ||
923 | |||
924 | outp = (struct lpfc_dmabuf *) cmdiocb->context2; | ||
925 | CTrsp = (struct lpfc_sli_ct_request *) outp->virt; | ||
926 | if (CTrsp->CommandResponse.bits.CmdRsp == | ||
927 | be16_to_cpu(SLI_CT_RESPONSE_FS_ACC)) | ||
928 | vport->ct_flags |= FC_CT_RSNN_NN; | ||
929 | } | ||
898 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); | 930 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); |
899 | return; | 931 | return; |
900 | } | 932 | } |
@@ -918,8 +950,16 @@ lpfc_cmpl_ct_cmd_rff_id(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
918 | IOCB_t *irsp = &rspiocb->iocb; | 950 | IOCB_t *irsp = &rspiocb->iocb; |
919 | struct lpfc_vport *vport = cmdiocb->vport; | 951 | struct lpfc_vport *vport = cmdiocb->vport; |
920 | 952 | ||
921 | if (irsp->ulpStatus == IOSTAT_SUCCESS) | 953 | if (irsp->ulpStatus == IOSTAT_SUCCESS) { |
922 | vport->ct_flags |= FC_CT_RFF_ID; | 954 | struct lpfc_dmabuf *outp; |
955 | struct lpfc_sli_ct_request *CTrsp; | ||
956 | |||
957 | outp = (struct lpfc_dmabuf *) cmdiocb->context2; | ||
958 | CTrsp = (struct lpfc_sli_ct_request *) outp->virt; | ||
959 | if (CTrsp->CommandResponse.bits.CmdRsp == | ||
960 | be16_to_cpu(SLI_CT_RESPONSE_FS_ACC)) | ||
961 | vport->ct_flags |= FC_CT_RFF_ID; | ||
962 | } | ||
923 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); | 963 | lpfc_cmpl_ct(phba, cmdiocb, rspiocb); |
924 | return; | 964 | return; |
925 | } | 965 | } |