diff options
author | Chris Leech <christopher.leech@intel.com> | 2009-11-03 14:46:24 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:00:57 -0500 |
commit | db36c06cc6802d03bcba08982377f7c03a3cda7f (patch) | |
tree | 9a9ad60bd0de059f1839b8bab2cfc555d0ca56d1 /drivers/scsi/fcoe | |
parent | 8faecddb212d502b1b77936498b9a82b13c4ff44 (diff) |
[SCSI] libfc, libfcoe: FDISC ELS for NPIV
Add FDISC ELS handling to libfc and libfcoe, treat it the same as FLOGI where
appropriate.
Add checking for NPIV support in the FLOGI LS_ACC service parameters.
Signed-off-by: Chris Leech <christopher.leech@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/fcoe')
-rw-r--r-- | drivers/scsi/fcoe/libfcoe.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c index 11ae5c94608b..d8ea04a29199 100644 --- a/drivers/scsi/fcoe/libfcoe.c +++ b/drivers/scsi/fcoe/libfcoe.c | |||
@@ -449,7 +449,7 @@ static int fcoe_ctlr_encaps(struct fcoe_ctlr *fip, | |||
449 | memset(mac, 0, sizeof(mac)); | 449 | memset(mac, 0, sizeof(mac)); |
450 | mac->fd_desc.fip_dtype = FIP_DT_MAC; | 450 | mac->fd_desc.fip_dtype = FIP_DT_MAC; |
451 | mac->fd_desc.fip_dlen = sizeof(*mac) / FIP_BPW; | 451 | mac->fd_desc.fip_dlen = sizeof(*mac) / FIP_BPW; |
452 | if (dtype != FIP_DT_FLOGI) | 452 | if (dtype != FIP_DT_FLOGI && dtype != FIP_DT_FDISC) |
453 | memcpy(mac->fd_mac, fip->data_src_addr, ETH_ALEN); | 453 | memcpy(mac->fd_mac, fip->data_src_addr, ETH_ALEN); |
454 | else if (fip->spma) | 454 | else if (fip->spma) |
455 | memcpy(mac->fd_mac, fip->ctl_src_addr, ETH_ALEN); | 455 | memcpy(mac->fd_mac, fip->ctl_src_addr, ETH_ALEN); |
@@ -865,8 +865,8 @@ static void fcoe_ctlr_recv_els(struct fcoe_ctlr *fip, struct sk_buff *skb) | |||
865 | goto drop; | 865 | goto drop; |
866 | els_op = *(u8 *)(fh + 1); | 866 | els_op = *(u8 *)(fh + 1); |
867 | 867 | ||
868 | if (els_dtype == FIP_DT_FLOGI && sub == FIP_SC_REP && | 868 | if ((els_dtype == FIP_DT_FLOGI || els_dtype == FIP_DT_FDISC) && |
869 | fip->flogi_oxid == ntohs(fh->fh_ox_id) && | 869 | sub == FIP_SC_REP && fip->flogi_oxid == ntohs(fh->fh_ox_id) && |
870 | els_op == ELS_LS_ACC && is_valid_ether_addr(granted_mac)) { | 870 | els_op == ELS_LS_ACC && is_valid_ether_addr(granted_mac)) { |
871 | fip->flogi_oxid = FC_XID_UNKNOWN; | 871 | fip->flogi_oxid = FC_XID_UNKNOWN; |
872 | fip->update_mac(fip, fip->data_src_addr, granted_mac); | 872 | fip->update_mac(fip, fip->data_src_addr, granted_mac); |