qcacld-3.0: Bypass hif_completion_thread in fw event

We want to process the completions in parallel.
Upper layer should take care of its own thread safety.
hif_completion_thread is a legacy function that does in
context serialization of hif completions. Bypass it.

Change-Id: I73b8518d87645d827814cd1345eb68370de30d1f
CRs-Fixed: 941358
Cette révision appartient à :
Houston Hoffman
2015-09-28 16:25:51 -07:00
révisé par Satish Singh
Parent bada641804
révision 4c9607b607

Voir le fichier

@@ -194,6 +194,19 @@ bool hif_target_forced_awake(struct ol_softc *scn)
return awake && forced_awake;
}
static inline void hif_fw_event_handler(struct HIF_CE_state *hif_state)
{
struct hif_msg_callbacks *msg_callbacks =
&hif_state->msg_callbacks_current;
if (!msg_callbacks->fwEventHandler)
return;
msg_callbacks->fwEventHandler(msg_callbacks->Context,
CDF_STATUS_E_FAILURE);
}
/**
* hif_fw_interrupt_handler(): FW interrupt handler
*
@@ -224,9 +237,7 @@ irqreturn_t hif_fw_interrupt_handler(int irq, void *arg)
A_TARGET_ACCESS_END_RET(scn);
if (hif_state->started) {
/* Alert the Host-side service thread */
atomic_set(&hif_state->fw_event_pending, 1);
hif_completion_thread(hif_state);
hif_fw_event_handler(hif_state);
} else {
/*
* Probable Target failure before we're prepared