summaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorChris Leech <christopher.leech@intel.com>2009-11-03 11:46:19 -0800
committerJames Bottomley <James.Bottomley@suse.de>2009-12-04 12:00:57 -0600
commit8faecddb212d502b1b77936498b9a82b13c4ff44 (patch)
tree6809700a72089288aec97187fc7f6455fa6b1d95 /include/scsi
parent174e1ebffd30a7599b889900089f7acef944cc6b (diff)
downloadlinux-8faecddb212d502b1b77936498b9a82b13c4ff44.tar.gz
linux-8faecddb212d502b1b77936498b9a82b13c4ff44.tar.bz2
linux-8faecddb212d502b1b77936498b9a82b13c4ff44.zip
[SCSI] libfc: vport link handling and fc_vport state managment
NPIV vports are managed in libfc by changing their virtual link state when the parent N_Ports internal state changes. The vport link is only online when the N_Port is in a ready state (logged into the fabric). vport_state is updated as needed in this patch as well, currently the states LINKDOWN, INITIALIZING, ACTIVE, DSIABLED, and NO_FABRIC_SUPP are used. This also changes the fc_host port_state handling to differentiate between LINKDOWN and OFFLINE. Signed-off-by: Chris Leech <christopher.leech@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/libfc.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index 2c6d55de8ccd..dfeb1ee4f03f 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -788,11 +788,13 @@ int fc_fabric_login(struct fc_lport *lp);
/*
* The link is up for the given local port.
*/
+void __fc_linkup(struct fc_lport *);
void fc_linkup(struct fc_lport *);
/*
* Link is down for the given local port.
*/
+void __fc_linkdown(struct fc_lport *);
void fc_linkdown(struct fc_lport *);
/*
@@ -821,6 +823,12 @@ struct fc_lport *libfc_vport_create(struct fc_vport *vport, int privsize);
struct fc_lport *fc_vport_id_lookup(struct fc_lport *n_port, u32 port_id);
/*
+ * NPIV VN_Port link state management
+ */
+void fc_vport_setlink(struct fc_lport *vn_port);
+void fc_vports_linkchange(struct fc_lport *n_port);
+
+/*
* REMOTE PORT LAYER
*****************************/
int fc_rport_init(struct fc_lport *lp);