فهرست منبع

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
Houston Hoffman 9 سال پیش
والد
کامیت
9c0f80a85b
2فایلهای تغییر یافته به همراه9 افزوده شده و 2 حذف شده
  1. 8 2
      core/hif/src/ce/ce_main.c
  2. 1 0
      core/hif/src/ce/ce_tasklet.h

+ 8 - 2
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 */

+ 1 - 0
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);