From eab684b5110030c6ef03f076c47ead6b173f4f6c Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Mon, 28 Sep 2015 18:36:36 -0700 Subject: [PATCH] qcacld-3.0: Check for SSR before sending messages to upper layers FW is asserted, dont service the messages. The hif completion thread used to prevent processing of messages when firmware crashed. Change-Id: I42a5a285056e989d302e766f2922bb7c114634dc CRs-Fixed: 941358 --- core/hif/src/ce/ce_main.c | 10 ++++++++-- core/hif/src/ce/ce_tasklet.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/hif/src/ce/ce_main.c b/core/hif/src/ce/ce_main.c index 79504ec0fb..9ea21085f7 100644 --- a/core/hif/src/ce/ce_main.c +++ b/core/hif/src/ce/ce_main.c @@ -685,6 +685,9 @@ hif_pci_ce_send_done(struct CE_handle *copyeng, void *ce_context, * when last fragment is complteted. */ if (transfer_context != CE_SENDLIST_ITEM_CTXT) { + if (hif_state->scn->target_status + == OL_TRGET_STATUS_RESET) + return; msg_callbacks->txCompletionHandler( msg_callbacks->Context, @@ -751,8 +754,11 @@ hif_pci_ce_recv_data(struct CE_handle *copyeng, void *ce_context, atomic_inc(&pipe_info->recv_bufs_needed); hif_post_recv_buffers_for_pipe(pipe_info); - hif_ce_do_recv(msg_callbacks, transfer_context, nbytes, - pipe_info); + if (hif_state->scn->target_status == OL_TRGET_STATUS_RESET) + return; + + hif_ce_do_recv(msg_callbacks, transfer_context, + nbytes, pipe_info); /* Set up force_break flag if num of receices reaches * MAX_NUM_OF_RECEIVES */ diff --git a/core/hif/src/ce/ce_tasklet.h b/core/hif/src/ce/ce_tasklet.h index c4147709c8..bcfd75cc3e 100644 --- a/core/hif/src/ce/ce_tasklet.h +++ b/core/hif/src/ce/ce_tasklet.h @@ -27,6 +27,7 @@ #ifndef __CE_TASKLET_H__ #define __CE_TASKLET_H__ +#include "ce_main.h" void init_tasklet_workers(void); void ce_tasklet_init(struct HIF_CE_state *hif_ce_state, uint32_t mask); void ce_tasklet_kill(struct HIF_CE_state *hif_ce_state);