aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2010-07-20 18:20:08 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-28 10:05:53 -0400
commita7b12a279faaad26837276065104a1f9cf60e962 (patch)
tree3537d1a5b984f4c9f89b7c549df2afcafce8c940 /include/scsi
parent3726f3584e113697b68d3d4ff1ecf1042a06f800 (diff)
[SCSI] libfc: add FLOGI state to rport for VN2VN
The FIP proposal for VN_port to VN_port point-to-multipoint operation requires a FLOGI be sent to each remote port. The FLOGI is sent with the assigned S_ID and D_IDs of the local and remote ports. This and the response get FIP-encapsulated for Ethernet. Add FLOGI state to the remote port state machine. This will be skipped if not in point-to-multipoint mode. To reduce a little duplication between PLOGI and FLOGI response handling, added fc_rport_login_complete(), which handles the parameters for the rdata struct. 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>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/fc/fc_els.h2
-rw-r--r--include/scsi/libfc.h4
2 files changed, 6 insertions, 0 deletions
diff --git a/include/scsi/fc/fc_els.h b/include/scsi/fc/fc_els.h
index 70a7e92a7664..481abbd48e39 100644
--- a/include/scsi/fc/fc_els.h
+++ b/include/scsi/fc/fc_els.h
@@ -191,6 +191,7 @@ enum fc_els_rjt_reason {
191 ELS_RJT_UNAB = 0x09, /* unable to perform command request */ 191 ELS_RJT_UNAB = 0x09, /* unable to perform command request */
192 ELS_RJT_UNSUP = 0x0b, /* command not supported */ 192 ELS_RJT_UNSUP = 0x0b, /* command not supported */
193 ELS_RJT_INPROG = 0x0e, /* command already in progress */ 193 ELS_RJT_INPROG = 0x0e, /* command already in progress */
194 ELS_RJT_FIP = 0x20, /* FIP error */
194 ELS_RJT_VENDOR = 0xff, /* vendor specific error */ 195 ELS_RJT_VENDOR = 0xff, /* vendor specific error */
195}; 196};
196 197
@@ -212,6 +213,7 @@ enum fc_els_rjt_explan {
212 ELS_EXPL_UNAB_DATA = 0x2a, /* unable to supply requested data */ 213 ELS_EXPL_UNAB_DATA = 0x2a, /* unable to supply requested data */
213 ELS_EXPL_UNSUPR = 0x2c, /* Request not supported */ 214 ELS_EXPL_UNSUPR = 0x2c, /* Request not supported */
214 ELS_EXPL_INV_LEN = 0x2d, /* Invalid payload length */ 215 ELS_EXPL_INV_LEN = 0x2d, /* Invalid payload length */
216 ELS_EXPL_NOT_NEIGHBOR = 0x62, /* VN2VN_Port not in neighbor set */
215 /* TBD - above definitions incomplete */ 217 /* TBD - above definitions incomplete */
216}; 218};
217 219
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index bd0560509ce6..24b91c922055 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -97,6 +97,8 @@ enum fc_disc_event {
97/** 97/**
98 * enum fc_rport_state - Remote port states 98 * enum fc_rport_state - Remote port states
99 * @RPORT_ST_INIT: Initialized 99 * @RPORT_ST_INIT: Initialized
100 * @RPORT_ST_FLOGI: Waiting for FLOGI completion for point-to-multipoint
101 * @RPORT_ST_PLOGI_WAIT: Waiting for peer to login for point-to-multipoint
100 * @RPORT_ST_PLOGI: Waiting for PLOGI completion 102 * @RPORT_ST_PLOGI: Waiting for PLOGI completion
101 * @RPORT_ST_PRLI: Waiting for PRLI completion 103 * @RPORT_ST_PRLI: Waiting for PRLI completion
102 * @RPORT_ST_RTV: Waiting for RTV completion 104 * @RPORT_ST_RTV: Waiting for RTV completion
@@ -107,6 +109,8 @@ enum fc_disc_event {
107*/ 109*/
108enum fc_rport_state { 110enum fc_rport_state {
109 RPORT_ST_INIT, 111 RPORT_ST_INIT,
112 RPORT_ST_FLOGI,
113 RPORT_ST_PLOGI_WAIT,
110 RPORT_ST_PLOGI, 114 RPORT_ST_PLOGI,
111 RPORT_ST_PRLI, 115 RPORT_ST_PRLI,
112 RPORT_ST_RTV, 116 RPORT_ST_RTV,