aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc/fc_exch.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libfc/fc_exch.c')
-rw-r--r--drivers/scsi/libfc/fc_exch.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index 7c055fdca45d..1b22130035da 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -469,6 +469,7 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
469 struct fc_frame_header *fh = fc_frame_header_get(fp); 469 struct fc_frame_header *fh = fc_frame_header_get(fp);
470 int error; 470 int error;
471 u32 f_ctl; 471 u32 f_ctl;
472 u8 fh_type = fh->fh_type;
472 473
473 ep = fc_seq_exch(sp); 474 ep = fc_seq_exch(sp);
474 WARN_ON((ep->esb_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT); 475 WARN_ON((ep->esb_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT);
@@ -493,7 +494,7 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
493 */ 494 */
494 error = lport->tt.frame_send(lport, fp); 495 error = lport->tt.frame_send(lport, fp);
495 496
496 if (fh->fh_type == FC_TYPE_BLS) 497 if (fh_type == FC_TYPE_BLS)
497 return error; 498 return error;
498 499
499 /* 500 /*
@@ -1792,6 +1793,9 @@ restart:
1792 goto restart; 1793 goto restart;
1793 } 1794 }
1794 } 1795 }
1796 pool->next_index = 0;
1797 pool->left = FC_XID_UNKNOWN;
1798 pool->right = FC_XID_UNKNOWN;
1795 spin_unlock_bh(&pool->lock); 1799 spin_unlock_bh(&pool->lock);
1796} 1800}
1797 1801
@@ -2280,6 +2284,7 @@ struct fc_exch_mgr *fc_exch_mgr_alloc(struct fc_lport *lport,
2280 goto free_mempool; 2284 goto free_mempool;
2281 for_each_possible_cpu(cpu) { 2285 for_each_possible_cpu(cpu) {
2282 pool = per_cpu_ptr(mp->pool, cpu); 2286 pool = per_cpu_ptr(mp->pool, cpu);
2287 pool->next_index = 0;
2283 pool->left = FC_XID_UNKNOWN; 2288 pool->left = FC_XID_UNKNOWN;
2284 pool->right = FC_XID_UNKNOWN; 2289 pool->right = FC_XID_UNKNOWN;
2285 spin_lock_init(&pool->lock); 2290 spin_lock_init(&pool->lock);