From cd911185014f773f0e227cabfb760b30968c3bca Mon Sep 17 00:00:00 2001 From: Mantas Pucka Date: Tue, 27 May 2025 14:13:27 +0300 Subject: [PATCH] Revert "wifi: ath12k: convert tasklet to BH workqueue for CE interrupts" This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. --- drivers/net/wireless/ath/ath12k/ce.h | 2 +- drivers/net/wireless/ath/ath12k/pci.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) --- a/drivers/net/wireless/ath/ath12k/ce.h +++ b/drivers/net/wireless/ath/ath12k/ce.h @@ -148,7 +148,7 @@ struct ath12k_ce_pipe { void (*send_cb)(struct ath12k_ce_pipe *pipe); void (*recv_cb)(struct ath12k_base *ab, struct sk_buff *skb); - struct work_struct intr_wq; + struct tasklet_struct intr_tq; struct ath12k_ce_ring *src_ring; struct ath12k_ce_ring *dest_ring; struct ath12k_ce_ring *status_ring; --- a/drivers/net/wireless/ath/ath12k/pci.c +++ b/drivers/net/wireless/ath/ath12k/pci.c @@ -430,9 +430,9 @@ static void ath12k_pci_sync_ce_irqs(stru } } -static void ath12k_pci_ce_workqueue(struct work_struct *work) +static void ath12k_pci_ce_tasklet(struct tasklet_struct *t) { - struct ath12k_ce_pipe *ce_pipe = from_work(ce_pipe, work, intr_wq); + struct ath12k_ce_pipe *ce_pipe = from_tasklet(ce_pipe, t, intr_tq); int irq_idx = ATH12K_PCI_IRQ_CE0_OFFSET + ce_pipe->pipe_num; ath12k_ce_per_engine_service(ce_pipe->ab, ce_pipe->pipe_num); @@ -454,7 +454,7 @@ static irqreturn_t ath12k_pci_ce_interru disable_irq_nosync(ab->irq_num[irq_idx]); - queue_work(system_bh_wq, &ce_pipe->intr_wq); + tasklet_schedule(&ce_pipe->intr_tq); return IRQ_HANDLED; } @@ -683,7 +683,7 @@ static int ath12k_pci_config_irq(struct irq_idx = ATH12K_PCI_IRQ_CE0_OFFSET + i; - INIT_WORK(&ce_pipe->intr_wq, ath12k_pci_ce_workqueue); + tasklet_setup(&ce_pipe->intr_tq, ath12k_pci_ce_tasklet); ret = request_irq(irq, ath12k_pci_ce_interrupt_handler, ab_pci->irq_flags, irq_name[irq_idx], @@ -970,7 +970,7 @@ static void ath12k_pci_aspm_restore(stru PCI_EXP_LNKCTL_ASPMC); } -static void ath12k_pci_cancel_workqueue(struct ath12k_base *ab) +static void ath12k_pci_kill_tasklets(struct ath12k_base *ab) { int i; @@ -980,7 +980,7 @@ static void ath12k_pci_cancel_workqueue( if (ath12k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR) continue; - cancel_work_sync(&ce_pipe->intr_wq); + tasklet_kill(&ce_pipe->intr_tq); } } @@ -988,7 +988,7 @@ static void ath12k_pci_ce_irq_disable_sy { ath12k_pci_ce_irqs_disable(ab); ath12k_pci_sync_ce_irqs(ab); - ath12k_pci_cancel_workqueue(ab); + ath12k_pci_kill_tasklets(ab); } int ath12k_pci_map_service_to_pipe(struct ath12k_base *ab, u16 service_id,