浏览代码

qcacmn: Do not schedule a work before reschedulign tasklet

Current wifi driver breaks tasklet storm by scheduling a work
whenever wifi driver tasklet reschedules itself to avoid excessive
tasklet storm and wd barks as a side effect. Remove work scheduling
from tasklet reschedule such that tasklets can be rescheduled as
fast as possible and reap CE rings as fast as possible and let linux
kernel handle the tasklet storm by bringing in ksoftirqd as needed.

Change-Id: I985369f534c09903b2d269f858adb88640e4fd2f
Crs-Fixed: 2325935
Rajeev Kumar 6 年之前
父节点
当前提交
1de8fdf2ab
共有 1 个文件被更改,包括 0 次插入17 次删除
  1. 0 17
      hif/src/ce/ce_tasklet.c

+ 0 - 17
hif/src/ce/ce_tasklet.c

@@ -128,22 +128,6 @@ void deinit_tasklet_workers(struct hif_opaque_softc *scn)
 	work_initialized = false;
 }
 
-#ifdef HIF_CONFIG_SLUB_DEBUG_ON
-/**
- * ce_schedule_tasklet() - schedule ce tasklet
- * @tasklet_entry: struct ce_tasklet_entry
- *
- * Return: N/A
- */
-static inline void ce_schedule_tasklet(struct ce_tasklet_entry *tasklet_entry)
-{
-	if (work_initialized && (tasklet_entry->ce_id < CE_ID_MAX))
-		schedule_work(&tasklet_workers[tasklet_entry->ce_id].work);
-	else
-		HIF_ERROR("%s: work_initialized = %d, ce_id = %d",
-			__func__, work_initialized, tasklet_entry->ce_id);
-}
-#else
 /**
  * ce_schedule_tasklet() - schedule ce tasklet
  * @tasklet_entry: struct ce_tasklet_entry
@@ -154,7 +138,6 @@ static inline void ce_schedule_tasklet(struct ce_tasklet_entry *tasklet_entry)
 {
 	tasklet_schedule(&tasklet_entry->intr_tq);
 }
-#endif
 
 /**
  * ce_tasklet() - ce_tasklet