aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bnx2fc
diff options
context:
space:
mode:
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>2012-04-24 18:26:01 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-05-22 04:50:36 -0400
commitde9c05fafc296aa95b58352bad7f23f6199aa90d (patch)
treece836fc9e75525112b60853af6cff9cac3f8f1fe /drivers/scsi/bnx2fc
parent72c04af9a2d57b7945cf3de8e71461bd80695d50 (diff)
[SCSI] bnx2fc: Allow FLOGI to be retried when receiving bad responses.
Commit 907c07d45199f954ddcf66c2c9763c87d012cb15 added more cases to do FLOGI retry on receiving bad response. Remove the code that drops the packet and allow the stack to handle bad FLOGI response. Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc')
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_els.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_els.c b/drivers/scsi/bnx2fc/bnx2fc_els.c
index ce0ce3e32f33..cf3bdcdefb20 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_els.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_els.c
@@ -854,7 +854,6 @@ static void bnx2fc_flogi_resp(struct fc_seq *seq, struct fc_frame *fp,
854 struct fc_exch *exch = fc_seq_exch(seq); 854 struct fc_exch *exch = fc_seq_exch(seq);
855 struct fc_lport *lport = exch->lp; 855 struct fc_lport *lport = exch->lp;
856 u8 *mac; 856 u8 *mac;
857 struct fc_frame_header *fh;
858 u8 op; 857 u8 op;
859 858
860 if (IS_ERR(fp)) 859 if (IS_ERR(fp))
@@ -862,13 +861,6 @@ static void bnx2fc_flogi_resp(struct fc_seq *seq, struct fc_frame *fp,
862 861
863 mac = fr_cb(fp)->granted_mac; 862 mac = fr_cb(fp)->granted_mac;
864 if (is_zero_ether_addr(mac)) { 863 if (is_zero_ether_addr(mac)) {
865 fh = fc_frame_header_get(fp);
866 if (fh->fh_type != FC_TYPE_ELS) {
867 printk(KERN_ERR PFX "bnx2fc_flogi_resp:"
868 "fh_type != FC_TYPE_ELS\n");
869 fc_frame_free(fp);
870 return;
871 }
872 op = fc_frame_payload_op(fp); 864 op = fc_frame_payload_op(fp);
873 if (lport->vport) { 865 if (lport->vport) {
874 if (op == ELS_LS_RJT) { 866 if (op == ELS_LS_RJT) {
@@ -878,12 +870,10 @@ static void bnx2fc_flogi_resp(struct fc_seq *seq, struct fc_frame *fp,
878 return; 870 return;
879 } 871 }
880 } 872 }
881 if (fcoe_ctlr_recv_flogi(fip, lport, fp)) { 873 fcoe_ctlr_recv_flogi(fip, lport, fp);
882 fc_frame_free(fp);
883 return;
884 }
885 } 874 }
886 fip->update_mac(lport, mac); 875 if (!is_zero_ether_addr(mac))
876 fip->update_mac(lport, mac);
887done: 877done:
888 fc_lport_flogi_resp(seq, fp, lport); 878 fc_lport_flogi_resp(seq, fp, lport);
889} 879}