Commit 22bcd225 authored by Joe Eykholt's avatar Joe Eykholt Committed by James Bottomley

[SCSI] libfcoe: Allow FIP to be disabled by the driver

Allow FIP to be disabled by the driver for devices
that want to use libfcoe in non-FIP mode.

The driver merely sets the fcoe_ctlr mode to the state which
should be entered when the link comes up.  The default is auto.
No change is needed for fcoe.c which uses auto mode.
Signed-off-by: default avatarJoe Eykholt <jeykholt@cisco.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 84c3e1ad
...@@ -109,6 +109,7 @@ static inline int fcoe_ctlr_fcf_usable(struct fcoe_fcf *fcf) ...@@ -109,6 +109,7 @@ static inline int fcoe_ctlr_fcf_usable(struct fcoe_fcf *fcf)
void fcoe_ctlr_init(struct fcoe_ctlr *fip) void fcoe_ctlr_init(struct fcoe_ctlr *fip)
{ {
fip->state = FIP_ST_LINK_WAIT; fip->state = FIP_ST_LINK_WAIT;
fip->mode = FIP_ST_AUTO;
INIT_LIST_HEAD(&fip->fcfs); INIT_LIST_HEAD(&fip->fcfs);
spin_lock_init(&fip->lock); spin_lock_init(&fip->lock);
fip->flogi_oxid = FC_XID_UNKNOWN; fip->flogi_oxid = FC_XID_UNKNOWN;
...@@ -261,10 +262,11 @@ void fcoe_ctlr_link_up(struct fcoe_ctlr *fip) ...@@ -261,10 +262,11 @@ void fcoe_ctlr_link_up(struct fcoe_ctlr *fip)
spin_unlock_bh(&fip->lock); spin_unlock_bh(&fip->lock);
fc_linkup(fip->lp); fc_linkup(fip->lp);
} else if (fip->state == FIP_ST_LINK_WAIT) { } else if (fip->state == FIP_ST_LINK_WAIT) {
fip->state = FIP_ST_AUTO; fip->state = fip->mode;
fip->last_link = 1; fip->last_link = 1;
fip->link = 1; fip->link = 1;
spin_unlock_bh(&fip->lock); spin_unlock_bh(&fip->lock);
if (fip->state == FIP_ST_AUTO)
LIBFCOE_FIP_DBG("%s", "setting AUTO mode.\n"); LIBFCOE_FIP_DBG("%s", "setting AUTO mode.\n");
fc_linkup(fip->lp); fc_linkup(fip->lp);
fcoe_ctlr_solicit(fip, NULL); fcoe_ctlr_solicit(fip, NULL);
......
...@@ -55,6 +55,7 @@ enum fip_state { ...@@ -55,6 +55,7 @@ enum fip_state {
/** /**
* struct fcoe_ctlr - FCoE Controller and FIP state * struct fcoe_ctlr - FCoE Controller and FIP state
* @state: internal FIP state for network link and FIP or non-FIP mode. * @state: internal FIP state for network link and FIP or non-FIP mode.
* @mode: LLD-selected mode.
* @lp: &fc_lport: libfc local port. * @lp: &fc_lport: libfc local port.
* @sel_fcf: currently selected FCF, or NULL. * @sel_fcf: currently selected FCF, or NULL.
* @fcfs: list of discovered FCFs. * @fcfs: list of discovered FCFs.
...@@ -89,6 +90,7 @@ enum fip_state { ...@@ -89,6 +90,7 @@ enum fip_state {
*/ */
struct fcoe_ctlr { struct fcoe_ctlr {
enum fip_state state; enum fip_state state;
enum fip_state mode;
struct fc_lport *lp; struct fc_lport *lp;
struct fcoe_fcf *sel_fcf; struct fcoe_fcf *sel_fcf;
struct list_head fcfs; struct list_head fcfs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment