diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-03-17 11:42:40 -0700 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 09:23:08 -0500 |
commit | 97c8389d54b9665c38105ea72a428a44b97ff2f6 (patch) | |
tree | 1548f9a3739241101f4e6f972418a16b45b52d57 /drivers/scsi/fcoe/fcoe.h | |
parent | af5f428763eefb6547d2bee055b559c903f2a749 (diff) |
[SCSI] fcoe, libfcoe: Add support for FIP. FCoE discovery and keep-alive.
FIP is the new standard way to discover Fibre-Channel Forwarders (FCFs)
by sending solicitations and listening for advertisements from FCFs.
It also provides for keep-alives and period advertisements so that both
parties know they have connectivity. If the FCF loses connectivity to
the storage fabric, it can send a Link Reset to inform the E_node.
This version is also compatible with pre-FIP implementations, so no
configured selection between FIP mode and non-FIP mode is required.
We wait a couple seconds after sending the initial solicitation
and then send an old-style FLOGI. If we receive any FIP frames,
we use FIP only mode. If the old FLOGI receives a response,
we disable FIP mode. After every reset or link up, this
determination is repeated.
Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/fcoe/fcoe.h')
-rw-r--r-- | drivers/scsi/fcoe/fcoe.h | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/scsi/fcoe/fcoe.h b/drivers/scsi/fcoe/fcoe.h index 4a9611f5a58..917aae88689 100644 --- a/drivers/scsi/fcoe/fcoe.h +++ b/drivers/scsi/fcoe/fcoe.h @@ -26,10 +26,6 @@ #define FCOE_MAX_QUEUE_DEPTH 256 #define FCOE_LOW_QUEUE_DEPTH 32 -/* destination address mode */ -#define FCOE_GW_ADDR_MODE 0x00 -#define FCOE_FCOUI_ADDR_MODE 0x01 - #define FCOE_WORD_TO_BYTE 4 #define FCOE_VERSION "0.1" @@ -59,24 +55,17 @@ struct fcoe_percpu_s { */ struct fcoe_softc { struct list_head list; - struct fc_lport *lp; struct net_device *real_dev; struct net_device *phys_dev; /* device with ethtool_ops */ struct packet_type fcoe_packet_type; + struct packet_type fip_packet_type; struct sk_buff_head fcoe_pending_queue; u8 fcoe_pending_queue_active; - - u8 dest_addr[ETH_ALEN]; - u8 ctl_src_addr[ETH_ALEN]; - u8 data_src_addr[ETH_ALEN]; - /* - * fcoe protocol address learning related stuff - */ - u16 flogi_oxid; - u8 flogi_progress; - u8 address_mode; + struct fcoe_ctlr ctlr; }; +#define fcoe_from_ctlr(fc) container_of(fc, struct fcoe_softc, ctlr) + static inline struct net_device *fcoe_netdev( const struct fc_lport *lp) { |