Kaynağa Gözat

qcacmn: Fix issue with IRQ re-enablement for CE IRQs

Currently on WCN6450 which is based on IPCI, there is a problem
in re-enabling the IRQs while firmware recovery is in progress.

While processing the CE IRQs, if there’s an active recovery
happening in the host (due to FW assert), we are leaving the IRQs
disabled in the kernel.

Fix this by refactoring the code such that hif_irq_disable() is
called only when there is no active recovery.

Change-Id: I4e3ccbb5f820645597feb724ddfe321e7d7d1a5f
CRs-Fixed: 3579429
Manikanta Pubbisetty 1 yıl önce
ebeveyn
işleme
3ac14805dd
1 değiştirilmiş dosya ile 2 ekleme ve 2 silme
  1. 2 2
      hif/src/ce/ce_tasklet.c

+ 2 - 2
hif/src/ce/ce_tasklet.c

@@ -907,13 +907,13 @@ irqreturn_t ce_dispatch_interrupt(int ce_id,
 		return IRQ_NONE;
 	}
 
-	hif_irq_disable(scn, ce_id);
-
 	if (!TARGET_REGISTER_ACCESS_ALLOWED(scn)) {
 		ce_interrupt_unlock(ce_state);
 		return IRQ_HANDLED;
 	}
 
+	hif_irq_disable(scn, ce_id);
+
 	hif_record_ce_desc_event(scn, ce_id, HIF_IRQ_EVENT,
 				NULL, NULL, 0, 0);
 	hif_ce_increment_interrupt_count(hif_ce_state, ce_id);