Message ID | 20250116134257.93643-1-ahmed.zaki@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net] idpf: synchronize pending IRQs after disable | expand |
On Thu, Jan 16, 2025 at 06:42:57AM -0700, Ahmed Zaki wrote: > Wait for pending IRQ handler after it is disabled. This will ensure the IRQ > is cleanly freed afterwards. > > Fixes: d4d558718266 ("idpf: initialize interrupts and enable vport") > Reviewed-by: Madhu Chittim <madhu.chittim@intel.com> > Suggested-by: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com> > Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com> Reviewed-by: Simon Horman <horms@kernel.org>
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c index 9be6a6b59c4e..8006bd9a95f6 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c @@ -3592,10 +3592,15 @@ static void idpf_vport_intr_rel_irq(struct idpf_vport *vport) static void idpf_vport_intr_dis_irq_all(struct idpf_vport *vport) { struct idpf_q_vector *q_vector = vport->q_vectors; - int q_idx; + int q_idx, vidx, irq_num; + + for (q_idx = 0; q_idx < vport->num_q_vectors; q_idx++) { + vidx = vport->q_vector_idxs[q_idx]; + irq_num = vport->adapter->msix_entries[vidx].vector; - for (q_idx = 0; q_idx < vport->num_q_vectors; q_idx++) writel(0, q_vector[q_idx].intr_reg.dyn_ctl); + synchronize_irq(irq_num); + } } /**