diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-03-17 14:42:40 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 10:23:08 -0400 |
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 4a9611f5a589..917aae886897 100644 --- a/drivers/scsi/fcoe/fcoe.h +++ b/drivers/scsi/fcoe/fcoe.h | |||
@@ -26,10 +26,6 @@ | |||
26 | #define FCOE_MAX_QUEUE_DEPTH 256 | 26 | #define FCOE_MAX_QUEUE_DEPTH 256 |
27 | #define FCOE_LOW_QUEUE_DEPTH 32 | 27 | #define FCOE_LOW_QUEUE_DEPTH 32 |
28 | 28 | ||
29 | /* destination address mode */ | ||
30 | #define FCOE_GW_ADDR_MODE 0x00 | ||
31 | #define FCOE_FCOUI_ADDR_MODE 0x01 | ||
32 | |||
33 | #define FCOE_WORD_TO_BYTE 4 | 29 | #define FCOE_WORD_TO_BYTE 4 |
34 | 30 | ||
35 | #define FCOE_VERSION "0.1" | 31 | #define FCOE_VERSION "0.1" |
@@ -59,24 +55,17 @@ struct fcoe_percpu_s { | |||
59 | */ | 55 | */ |
60 | struct fcoe_softc { | 56 | struct fcoe_softc { |
61 | struct list_head list; | 57 | struct list_head list; |
62 | struct fc_lport *lp; | ||
63 | struct net_device *real_dev; | 58 | struct net_device *real_dev; |
64 | struct net_device *phys_dev; /* device with ethtool_ops */ | 59 | struct net_device *phys_dev; /* device with ethtool_ops */ |
65 | struct packet_type fcoe_packet_type; | 60 | struct packet_type fcoe_packet_type; |
61 | struct packet_type fip_packet_type; | ||
66 | struct sk_buff_head fcoe_pending_queue; | 62 | struct sk_buff_head fcoe_pending_queue; |
67 | u8 fcoe_pending_queue_active; | 63 | u8 fcoe_pending_queue_active; |
68 | 64 | struct fcoe_ctlr ctlr; | |
69 | u8 dest_addr[ETH_ALEN]; | ||
70 | u8 ctl_src_addr[ETH_ALEN]; | ||
71 | u8 data_src_addr[ETH_ALEN]; | ||
72 | /* | ||
73 | * fcoe protocol address learning related stuff | ||
74 | */ | ||
75 | u16 flogi_oxid; | ||
76 | u8 flogi_progress; | ||
77 | u8 address_mode; | ||
78 | }; | 65 | }; |
79 | 66 | ||
67 | #define fcoe_from_ctlr(fc) container_of(fc, struct fcoe_softc, ctlr) | ||
68 | |||
80 | static inline struct net_device *fcoe_netdev( | 69 | static inline struct net_device *fcoe_netdev( |
81 | const struct fc_lport *lp) | 70 | const struct fc_lport *lp) |
82 | { | 71 | { |