mirror of https://gitee.com/openkylin/linux.git
[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: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
84c3e1ad08
commit
22bcd225bf
|
@ -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)
|
||||||
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 {
|
||||||
/**
|
/**
|
||||||
* 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 {
|
||||||
*/
|
*/
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue