mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
[SCSI] libfcoe: fcoe: fnic: change fcoe_ctlr_init interface to specify mode
There are three modes that libfcoe currently supports, and a new one is coming. Change the fcoe_ctlr_init() interface to add the mode desired. This should not change any functionality. 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
0685230c59
commit
3d902ac09a
4 changed files with 15 additions and 6 deletions
|
@ -357,7 +357,7 @@ static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev)
|
||||||
/*
|
/*
|
||||||
* Initialize FIP.
|
* Initialize FIP.
|
||||||
*/
|
*/
|
||||||
fcoe_ctlr_init(&fcoe->ctlr);
|
fcoe_ctlr_init(&fcoe->ctlr, FIP_MODE_AUTO);
|
||||||
fcoe->ctlr.send = fcoe_fip_send;
|
fcoe->ctlr.send = fcoe_fip_send;
|
||||||
fcoe->ctlr.update_mac = fcoe_update_src_mac;
|
fcoe->ctlr.update_mac = fcoe_update_src_mac;
|
||||||
fcoe->ctlr.get_src_addr = fcoe_get_src_mac;
|
fcoe->ctlr.get_src_addr = fcoe_get_src_mac;
|
||||||
|
|
|
@ -108,10 +108,10 @@ static inline int fcoe_ctlr_fcf_usable(struct fcoe_fcf *fcf)
|
||||||
* fcoe_ctlr_init() - Initialize the FCoE Controller instance
|
* fcoe_ctlr_init() - Initialize the FCoE Controller instance
|
||||||
* @fip: The FCoE controller to initialize
|
* @fip: The FCoE controller to initialize
|
||||||
*/
|
*/
|
||||||
void fcoe_ctlr_init(struct fcoe_ctlr *fip)
|
void fcoe_ctlr_init(struct fcoe_ctlr *fip, enum fip_state mode)
|
||||||
{
|
{
|
||||||
fip->state = FIP_ST_LINK_WAIT;
|
fip->state = FIP_ST_LINK_WAIT;
|
||||||
fip->mode = FIP_ST_AUTO;
|
fip->mode = mode;
|
||||||
INIT_LIST_HEAD(&fip->fcfs);
|
INIT_LIST_HEAD(&fip->fcfs);
|
||||||
mutex_init(&fip->ctlr_mutex);
|
mutex_init(&fip->ctlr_mutex);
|
||||||
fip->flogi_oxid = FC_XID_UNKNOWN;
|
fip->flogi_oxid = FC_XID_UNKNOWN;
|
||||||
|
|
|
@ -617,7 +617,6 @@ static int __devinit fnic_probe(struct pci_dev *pdev,
|
||||||
fnic->ctlr.send = fnic_eth_send;
|
fnic->ctlr.send = fnic_eth_send;
|
||||||
fnic->ctlr.update_mac = fnic_update_mac;
|
fnic->ctlr.update_mac = fnic_update_mac;
|
||||||
fnic->ctlr.get_src_addr = fnic_get_mac;
|
fnic->ctlr.get_src_addr = fnic_get_mac;
|
||||||
fcoe_ctlr_init(&fnic->ctlr);
|
|
||||||
if (fnic->config.flags & VFCF_FIP_CAPABLE) {
|
if (fnic->config.flags & VFCF_FIP_CAPABLE) {
|
||||||
shost_printk(KERN_INFO, fnic->lport->host,
|
shost_printk(KERN_INFO, fnic->lport->host,
|
||||||
"firmware supports FIP\n");
|
"firmware supports FIP\n");
|
||||||
|
@ -625,10 +624,11 @@ static int __devinit fnic_probe(struct pci_dev *pdev,
|
||||||
vnic_dev_packet_filter(fnic->vdev, 1, 1, 0, 0, 0);
|
vnic_dev_packet_filter(fnic->vdev, 1, 1, 0, 0, 0);
|
||||||
vnic_dev_add_addr(fnic->vdev, FIP_ALL_ENODE_MACS);
|
vnic_dev_add_addr(fnic->vdev, FIP_ALL_ENODE_MACS);
|
||||||
vnic_dev_add_addr(fnic->vdev, fnic->ctlr.ctl_src_addr);
|
vnic_dev_add_addr(fnic->vdev, fnic->ctlr.ctl_src_addr);
|
||||||
|
fcoe_ctlr_init(&fnic->ctlr, FIP_MODE_AUTO);
|
||||||
} else {
|
} else {
|
||||||
shost_printk(KERN_INFO, fnic->lport->host,
|
shost_printk(KERN_INFO, fnic->lport->host,
|
||||||
"firmware uses non-FIP mode\n");
|
"firmware uses non-FIP mode\n");
|
||||||
fnic->ctlr.mode = FIP_ST_NON_FIP;
|
fcoe_ctlr_init(&fnic->ctlr, FIP_MODE_NON_FIP);
|
||||||
}
|
}
|
||||||
fnic->state = FNIC_IN_FC_MODE;
|
fnic->state = FNIC_IN_FC_MODE;
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,15 @@ enum fip_state {
|
||||||
FIP_ST_ENABLED,
|
FIP_ST_ENABLED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Modes:
|
||||||
|
* The mode is the state that is to be entered after link up.
|
||||||
|
* It must not change after fcoe_ctlr_init() sets it.
|
||||||
|
*/
|
||||||
|
#define FIP_MODE_AUTO FIP_ST_AUTO
|
||||||
|
#define FIP_MODE_NON_FIP FIP_ST_NON_FIP
|
||||||
|
#define FIP_MODE_FABRIC FIP_ST_ENABLED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
|
@ -152,7 +161,7 @@ struct fcoe_fcf {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* FIP API functions */
|
/* FIP API functions */
|
||||||
void fcoe_ctlr_init(struct fcoe_ctlr *);
|
void fcoe_ctlr_init(struct fcoe_ctlr *, enum fip_state);
|
||||||
void fcoe_ctlr_destroy(struct fcoe_ctlr *);
|
void fcoe_ctlr_destroy(struct fcoe_ctlr *);
|
||||||
void fcoe_ctlr_link_up(struct fcoe_ctlr *);
|
void fcoe_ctlr_link_up(struct fcoe_ctlr *);
|
||||||
int fcoe_ctlr_link_down(struct fcoe_ctlr *);
|
int fcoe_ctlr_link_down(struct fcoe_ctlr *);
|
||||||
|
|
Loading…
Reference in a new issue