summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bnx2fc
diff options
context:
space:
mode:
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>2012-04-24 15:26:01 -0700
committerJames Bottomley <JBottomley@Parallels.com>2012-05-22 09:50:36 +0100
commitde9c05fafc296aa95b58352bad7f23f6199aa90d (patch)
treece836fc9e75525112b60853af6cff9cac3f8f1fe /drivers/scsi/bnx2fc
parent72c04af9a2d57b7945cf3de8e71461bd80695d50 (diff)
downloadlinux-stable-de9c05fafc296aa95b58352bad7f23f6199aa90d.tar.gz
linux-stable-de9c05fafc296aa95b58352bad7f23f6199aa90d.tar.bz2
linux-stable-de9c05fafc296aa95b58352bad7f23f6199aa90d.zip
[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,
struct fc_exch *exch = fc_seq_exch(seq);
struct fc_lport *lport = exch->lp;
u8 *mac;
- struct fc_frame_header *fh;
u8 op;
if (IS_ERR(fp))
@@ -862,13 +861,6 @@ static void bnx2fc_flogi_resp(struct fc_seq *seq, struct fc_frame *fp,
mac = fr_cb(fp)->granted_mac;
if (is_zero_ether_addr(mac)) {
- fh = fc_frame_header_get(fp);
- if (fh->fh_type != FC_TYPE_ELS) {
- printk(KERN_ERR PFX "bnx2fc_flogi_resp:"
- "fh_type != FC_TYPE_ELS\n");
- fc_frame_free(fp);
- return;
- }
op = fc_frame_payload_op(fp);
if (lport->vport) {
if (op == ELS_LS_RJT) {
@@ -878,12 +870,10 @@ static void bnx2fc_flogi_resp(struct fc_seq *seq, struct fc_frame *fp,
return;
}
}
- if (fcoe_ctlr_recv_flogi(fip, lport, fp)) {
- fc_frame_free(fp);
- return;
- }
+ fcoe_ctlr_recv_flogi(fip, lport, fp);
}
- fip->update_mac(lport, mac);
+ if (!is_zero_ether_addr(mac))
+ fip->update_mac(lport, mac);
done:
fc_lport_flogi_resp(seq, fp, lport);
}