diff options
Diffstat (limited to 'drivers/scsi')
-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); |