[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>
This commit is contained in:
committed by
James Bottomley
parent
af5f428763
commit
97c8389d54
@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user