summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlok Kumar <alokkuma@codeaurora.org>2019-08-07 17:39:32 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-10-25 04:15:46 -0700
commit56e4e5efe8b94d88c6642ebf2e057f91826e099f (patch)
tree4ce6f6c82dbf49687a887d4cb137f1f6b8d20849
parent700a1204af197134f49fdbe3a536acb3603407cc (diff)
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
-rw-r--r--hif/src/ce/ce_service.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hif/src/ce/ce_service.c b/hif/src/ce/ce_service.c
index 79d71ba1bb1d..bad8ca6e3557 100644
--- a/hif/src/ce/ce_service.c
+++ b/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
@@ -1999,6 +1999,7 @@ more_watermarks:
CE_WATERMARK_MASK |
HOST_IS_COPY_COMPLETE_MASK);
} else {
+ qdf_atomic_set(&CE_state->rx_pending, 0);
HIF_ERROR_RL(HIF_RATE_LIMIT_CE_ACCESS_LOG,
"%s: target access is not allowed", __func__);
goto unlock_end;