diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2010-05-07 18:18:13 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-05-16 22:22:25 -0400 |
commit | b3667f9177359b0594e4f2cd5cc01115f8c7e2af (patch) | |
tree | 07fe41c0fd9ffb0e9a6763b469fc0783beda14d5 /drivers/scsi/libfc/fc_exch.c | |
parent | f1af6208c8cef81e313ec2e64b44e783c3a11c13 (diff) |
[SCSI] libfc: set seq_id for incoming sequence
After the recent patch "fixes unnecessary seq id jump"
the SCST module fcst stopped working because multi-sequence
write data wasn't finding the sequence after the first frame.
Add back the setting of the seq_id when the first frame arrives.
Also fix indentation on two lines.
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 'drivers/scsi/libfc/fc_exch.c')
-rw-r--r-- | drivers/scsi/libfc/fc_exch.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c index daff880e426e..6addbd6e41e2 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c | |||
@@ -918,6 +918,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, | |||
918 | if (fc_sof_is_init(fr_sof(fp))) { | 918 | if (fc_sof_is_init(fr_sof(fp))) { |
919 | sp = &ep->seq; | 919 | sp = &ep->seq; |
920 | sp->ssb_stat |= SSB_ST_RESP; | 920 | sp->ssb_stat |= SSB_ST_RESP; |
921 | sp->id = fh->fh_seq_id; | ||
921 | } else { | 922 | } else { |
922 | sp = &ep->seq; | 923 | sp = &ep->seq; |
923 | if (sp->id != fh->fh_seq_id) { | 924 | if (sp->id != fh->fh_seq_id) { |
@@ -1322,11 +1323,12 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) | |||
1322 | } | 1323 | } |
1323 | sof = fr_sof(fp); | 1324 | sof = fr_sof(fp); |
1324 | sp = &ep->seq; | 1325 | sp = &ep->seq; |
1325 | if (fc_sof_is_init(sof)) | 1326 | if (fc_sof_is_init(sof)) { |
1326 | sp->ssb_stat |= SSB_ST_RESP; | 1327 | sp->ssb_stat |= SSB_ST_RESP; |
1327 | else if (sp->id != fh->fh_seq_id) { | 1328 | sp->id = fh->fh_seq_id; |
1328 | atomic_inc(&mp->stats.seq_not_found); | 1329 | } else if (sp->id != fh->fh_seq_id) { |
1329 | goto rel; | 1330 | atomic_inc(&mp->stats.seq_not_found); |
1331 | goto rel; | ||
1330 | } | 1332 | } |
1331 | 1333 | ||
1332 | f_ctl = ntoh24(fh->fh_f_ctl); | 1334 | f_ctl = ntoh24(fh->fh_f_ctl); |