qcacmn: Fix the leak in ce tasklet counting on one-msi platform

On one-msi platform, when some ce tasklet execute, other srng such
as reo generate the interrupt, the ce interrupt handler can also be
called and then schedule the ce tasklet, if the running ce tasklet
intend to re-schedule itself due to the rx pending, obviously will
fail, then ce active tasklet count leaked.

Decrease the ce active tasklet count if failed to re-schedule when ce
rx pending.

Change-Id: I36c1c6c007735e192bee5af12aab674ee8324ca9
CRs-Fixed: 2830443
此提交包含在:
Li Feng
2020-12-19 16:11:38 +08:00
提交者 snandini
父節點 2bff9b3709
當前提交 8c267f9645

查看文件

@@ -373,6 +373,14 @@ static void ce_tasklet(unsigned long data)
hif_record_ce_desc_event(scn, tasklet_entry->ce_id,
HIF_CE_TASKLET_RESCHEDULE, NULL, NULL, -1, 0);
if (test_bit(TASKLET_STATE_SCHED,
&tasklet_entry->intr_tq.state)) {
hif_info("ce_id%d tasklet was scheduled, return",
tasklet_entry->ce_id);
qdf_atomic_dec(&scn->active_tasklet_cnt);
return;
}
ce_schedule_tasklet(tasklet_entry);
return;
}