]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnx2fc: Allow FLOGI to be retried when receiving bad responses.
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>
Tue, 24 Apr 2012 22:26:01 +0000 (15:26 -0700)
committerJoe Jin <joe.jin@oracle.com>
Wed, 29 Aug 2012 00:22:06 +0000 (08:22 +0800)
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.

(cherry picked from commit de9c05fafc296aa95b58352bad7f23f6199aa90d)
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/scsi/bnx2fc/bnx2fc_els.c

index ce0ce3e32f336aaf711d6129a781c0aa035120fa..cf3bdcdefb2075af9f39974e04a2288f4d35b859 100644 (file)
@@ -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);
 }