qcacmn: Limit error logging when ce id does not match to tasklet_entry
Limit error logging when ce id does not match to tasklet_entry's ce id. And dump all tasklet entries info to get more clue in the next cycle. Change-Id: Idcd9cb6ff45ef8e05fcea33cad48fa464e4f9a1e CRs-Fixed: 3284277
このコミットが含まれているのは:
@@ -534,6 +534,33 @@ void ce_tasklet_kill(struct hif_softc *scn)
|
||||
qdf_atomic_set(&scn->active_tasklet_cnt, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* ce_tasklet_entry_dump() - dump tasklet entries info
|
||||
* @hif_ce_state: ce state
|
||||
*
|
||||
* This function will dump all tasklet entries info
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void ce_tasklet_entry_dump(struct HIF_CE_state *hif_ce_state)
|
||||
{
|
||||
struct ce_tasklet_entry *tasklet_entry;
|
||||
int i;
|
||||
|
||||
if (hif_ce_state) {
|
||||
for (i = 0; i < CE_COUNT_MAX; i++) {
|
||||
tasklet_entry = &hif_ce_state->tasklets[i];
|
||||
|
||||
hif_info("%02d: ce_id=%d, inited=%d, hi_tasklet_ce=%d hif_ce_state=%pK",
|
||||
i,
|
||||
tasklet_entry->ce_id,
|
||||
tasklet_entry->inited,
|
||||
tasklet_entry->hi_tasklet_ce,
|
||||
tasklet_entry->hif_ce_state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define HIF_CE_DRAIN_WAIT_CNT 20
|
||||
/**
|
||||
* hif_drain_tasklets(): wait until no tasklet is pending
|
||||
@@ -800,8 +827,16 @@ irqreturn_t ce_dispatch_interrupt(int ce_id,
|
||||
struct hif_opaque_softc *hif_hdl = GET_HIF_OPAQUE_HDL(scn);
|
||||
|
||||
if (tasklet_entry->ce_id != ce_id) {
|
||||
hif_err("ce_id (expect %d, received %d) does not match",
|
||||
tasklet_entry->ce_id, ce_id);
|
||||
bool rl;
|
||||
|
||||
rl = hif_err_rl("ce_id (expect %d, received %d) does not match, inited=%d, ce_count=%u",
|
||||
tasklet_entry->ce_id, ce_id,
|
||||
tasklet_entry->inited,
|
||||
scn->ce_count);
|
||||
|
||||
if (!rl)
|
||||
ce_tasklet_entry_dump(hif_ce_state);
|
||||
|
||||
return IRQ_NONE;
|
||||
}
|
||||
if (unlikely(ce_id >= CE_COUNT_MAX)) {
|
||||
|
新しいイシューから参照
ユーザーをブロックする