diff options
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc_els.c')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_els.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_els.c b/drivers/scsi/bnx2fc/bnx2fc_els.c index ce0ce3e32f33..bdbbb13b8534 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); | ||
887 | done: | 877 | done: |
888 | fc_lport_flogi_resp(seq, fp, lport); | 878 | fc_lport_flogi_resp(seq, fp, lport); |
889 | } | 879 | } |
@@ -910,7 +900,7 @@ struct fc_seq *bnx2fc_elsct_send(struct fc_lport *lport, u32 did, | |||
910 | { | 900 | { |
911 | struct fcoe_port *port = lport_priv(lport); | 901 | struct fcoe_port *port = lport_priv(lport); |
912 | struct bnx2fc_interface *interface = port->priv; | 902 | struct bnx2fc_interface *interface = port->priv; |
913 | struct fcoe_ctlr *fip = &interface->ctlr; | 903 | struct fcoe_ctlr *fip = bnx2fc_to_ctlr(interface); |
914 | struct fc_frame_header *fh = fc_frame_header_get(fp); | 904 | struct fc_frame_header *fh = fc_frame_header_get(fp); |
915 | 905 | ||
916 | switch (op) { | 906 | switch (op) { |