aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2009-08-25 17:02:11 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-10 13:07:48 -0400
commit0f6c6149870e03c722af6eae406758b28cb71320 (patch)
tree7dca629255539d73bd44fea4fb50a9c0a9ddd079 /include/scsi
parent8025b5db7e10cd90cadec940cc766be3bbda65e8 (diff)
[SCSI] libfc: do not log off rports before or after discovery
When receiving an RSCN, do not log off all rports. This is extremely disruptive. If, after the GPN_FT response, some rports haven't been listed, delete them. Add field disc_id to structs fc_rport_priv and fc_disc. disc_id is an arbitrary serial number used to identify the rports found by the latest discovery. This eliminates the need to go through the rport list when restarting discovery. 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/libfc.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index 093b0439a2cf..517dce5c8d0d 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -202,6 +202,7 @@ struct fc_rport_libfc_priv {
202 * @ids: remote port identifiers and roles 202 * @ids: remote port identifiers and roles
203 * @flags: REC and RETRY supported flags 203 * @flags: REC and RETRY supported flags
204 * @max_seq: maximum number of concurrent sequences 204 * @max_seq: maximum number of concurrent sequences
205 * @disc_id: discovery identifier
205 * @maxframe_size: maximum frame size 206 * @maxframe_size: maximum frame size
206 * @retries: retry count in current state 207 * @retries: retry count in current state
207 * @e_d_tov: error detect timeout value (in msec) 208 * @e_d_tov: error detect timeout value (in msec)
@@ -218,6 +219,7 @@ struct fc_rport_priv {
218 struct fc_rport_identifiers ids; 219 struct fc_rport_identifiers ids;
219 u16 flags; 220 u16 flags;
220 u16 max_seq; 221 u16 max_seq;
222 u16 disc_id;
221 u16 maxframe_size; 223 u16 maxframe_size;
222 unsigned int retries; 224 unsigned int retries;
223 unsigned int e_d_tov; 225 unsigned int e_d_tov;
@@ -678,6 +680,7 @@ struct fc_disc {
678 unsigned char requested; 680 unsigned char requested;
679 unsigned short seq_count; 681 unsigned short seq_count;
680 unsigned char buf_len; 682 unsigned char buf_len;
683 u16 disc_id;
681 684
682 void (*disc_callback)(struct fc_lport *, 685 void (*disc_callback)(struct fc_lport *,
683 enum fc_disc_event); 686 enum fc_disc_event);