diff options
| -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); |
