Skip to content

Commit

Permalink
[SCSI] lpfc 8.1.7: Fix txcmplq related panics on heavy IO while downl…
Browse files Browse the repository at this point in the history
…oading firmware

Fix txcmplq related panics on heavy IO while downloading firmware

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Smart authored and James Bottomley committed Jul 9, 2006
1 parent 4db621e commit 688a886
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions drivers/scsi/lpfc/lpfc_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1339,7 +1339,8 @@ lpfc_offline(struct lpfc_hba * phba)
struct lpfc_sli_ring *pring;
struct lpfc_sli *psli;
unsigned long iflag;
int i = 0;
int i;
int cnt = 0;

if (!phba)
return 0;
Expand All @@ -1348,17 +1349,26 @@ lpfc_offline(struct lpfc_hba * phba)
return 0;

psli = &phba->sli;
pring = &psli->ring[psli->fcp_ring];

lpfc_linkdown(phba);

/* The linkdown event takes 30 seconds to timeout. */
while (pring->txcmplq_cnt) {
mdelay(10);
if (i++ > 3000)
break;
for (i = 0; i < psli->num_rings; i++) {
pring = &psli->ring[i];
/* The linkdown event takes 30 seconds to timeout. */
while (pring->txcmplq_cnt) {
mdelay(10);
if (cnt++ > 3000) {
lpfc_printf_log(phba,
KERN_WARNING, LOG_INIT,
"%d:0466 Outstanding IO when "
"bringing Adapter offline\n",
phba->brd_no);
break;
}
}
}


/* stop all timers associated with this hba */
lpfc_stop_timer(phba);
phba->work_hba_events = 0;
Expand Down

0 comments on commit 688a886

Please sign in to comment.