Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Bhanu Prakash Gollapudi and committed by
James Bottomley
de9c05fa 72c04af9

+3 -13
+3 -13
drivers/scsi/bnx2fc/bnx2fc_els.c
··· 854 854 struct fc_exch *exch = fc_seq_exch(seq); 855 855 struct fc_lport *lport = exch->lp; 856 856 u8 *mac; 857 - struct fc_frame_header *fh; 858 857 u8 op; 859 858 860 859 if (IS_ERR(fp)) ··· 861 862 862 863 mac = fr_cb(fp)->granted_mac; 863 864 if (is_zero_ether_addr(mac)) { 864 - fh = fc_frame_header_get(fp); 865 - if (fh->fh_type != FC_TYPE_ELS) { 866 - printk(KERN_ERR PFX "bnx2fc_flogi_resp:" 867 - "fh_type != FC_TYPE_ELS\n"); 868 - fc_frame_free(fp); 869 - return; 870 - } 871 865 op = fc_frame_payload_op(fp); 872 866 if (lport->vport) { 873 867 if (op == ELS_LS_RJT) { ··· 870 878 return; 871 879 } 872 880 } 873 - if (fcoe_ctlr_recv_flogi(fip, lport, fp)) { 874 - fc_frame_free(fp); 875 - return; 876 - } 881 + fcoe_ctlr_recv_flogi(fip, lport, fp); 877 882 } 878 - fip->update_mac(lport, mac); 883 + if (!is_zero_ether_addr(mac)) 884 + fip->update_mac(lport, mac); 879 885 done: 880 886 fc_lport_flogi_resp(seq, fp, lport); 881 887 }