浏览代码

qcacmn: Reset rx_pending to avoid continuous tasklet scheduling

The rx_pending flag is never set to 0 if the check for
TARGET_REGISTER_ACCESS_ALLOWED(scn) is failed when target is
not reachable. Since, the rx_pending flag is not set to 0,
ce_check_rx_pending(CE_state) check inside ce_tasklet() will
be true and tasklet gets rescheduled again and again.

Reset the rx_pending flag before TARGET_REGISTER_ACCESS_ALLOWED(scn)
check in ce_per_engine_service() to avoid continuous scheduling of
tasklet when check for TARGET_REGISTER_ACCESS_ALLOWED(scn) fails.

Change-Id: Ib9268e6cf2bdcd0ed0bf84934e9370bcef1cdbab
CRs-Fixed: 2375307
Alok Kumar 6 年之前
父节点
当前提交
6fef0e9592
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      hif/src/ce/ce_service.c

+ 2 - 1
hif/src/ce/ce_service.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -1077,6 +1077,7 @@ more_watermarks:
 					   CE_WATERMARK_MASK |
 					   HOST_IS_COPY_COMPLETE_MASK);
 		} else {
+			qdf_atomic_set(&CE_state->rx_pending, 0);
 			hif_err_rl("%s: target access is not allowed",
 				   __func__);
 			return;