Commit 688a8863 authored by James Smart's avatar James Smart Committed by James Bottomley
Browse files

[SCSI] lpfc 8.1.7: Fix txcmplq related panics on heavy IO while downloading firmware



Fix txcmplq related panics on heavy IO while downloading firmware

Signed-off-by: default avatarJames Smart <James.Smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 4db621e0
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -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;
@@ -1348,16 +1349,25 @@ lpfc_offline(struct lpfc_hba * phba)
		return 0;

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

	lpfc_linkdown(phba);

	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 (i++ > 3000)
			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);