Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 453a7b35 authored by Rajeev Kumar's avatar Rajeev Kumar Committed by Gerrit - the friendly Code Review server
Browse files

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
parent 05d1a3a7
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -127,22 +127,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
@@ -153,7 +137,6 @@ static inline void ce_schedule_tasklet(struct ce_tasklet_entry *tasklet_entry)
{
	tasklet_schedule(&tasklet_entry->intr_tq);
}
#endif

/**
 * ce_tasklet() - ce_tasklet