diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2010-07-20 18:20:08 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-07-28 10:05:53 -0400 |
commit | a7b12a279faaad26837276065104a1f9cf60e962 (patch) | |
tree | 3537d1a5b984f4c9f89b7c549df2afcafce8c940 /include/scsi | |
parent | 3726f3584e113697b68d3d4ff1ecf1042a06f800 (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.h | 2 | ||||
-rw-r--r-- | include/scsi/libfc.h | 4 |
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 | */ |
108 | enum fc_rport_state { | 110 | enum 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, |