diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/fcoe/libfcoe.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c index 62ba0f39c6bd..a7ecafb9a507 100644 --- a/drivers/scsi/fcoe/libfcoe.c +++ b/drivers/scsi/fcoe/libfcoe.c | |||
@@ -447,14 +447,10 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr *fip, struct sk_buff *skb) | |||
447 | u16 old_xid; | 447 | u16 old_xid; |
448 | u8 op; | 448 | u8 op; |
449 | 449 | ||
450 | if (fip->state == FIP_ST_NON_FIP) | ||
451 | return 0; | ||
452 | |||
453 | fh = (struct fc_frame_header *)skb->data; | 450 | fh = (struct fc_frame_header *)skb->data; |
454 | op = *(u8 *)(fh + 1); | 451 | op = *(u8 *)(fh + 1); |
455 | 452 | ||
456 | switch (op) { | 453 | if (op == ELS_FLOGI) { |
457 | case ELS_FLOGI: | ||
458 | old_xid = fip->flogi_oxid; | 454 | old_xid = fip->flogi_oxid; |
459 | fip->flogi_oxid = ntohs(fh->fh_ox_id); | 455 | fip->flogi_oxid = ntohs(fh->fh_ox_id); |
460 | if (fip->state == FIP_ST_AUTO) { | 456 | if (fip->state == FIP_ST_AUTO) { |
@@ -466,6 +462,15 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr *fip, struct sk_buff *skb) | |||
466 | fip->map_dest = 1; | 462 | fip->map_dest = 1; |
467 | return 0; | 463 | return 0; |
468 | } | 464 | } |
465 | if (fip->state == FIP_ST_NON_FIP) | ||
466 | fip->map_dest = 1; | ||
467 | } | ||
468 | |||
469 | if (fip->state == FIP_ST_NON_FIP) | ||
470 | return 0; | ||
471 | |||
472 | switch (op) { | ||
473 | case ELS_FLOGI: | ||
469 | op = FIP_DT_FLOGI; | 474 | op = FIP_DT_FLOGI; |
470 | break; | 475 | break; |
471 | case ELS_FDISC: | 476 | case ELS_FDISC: |