Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56e4e5ef authored by Alok Kumar's avatar Alok Kumar Committed by Gerrit - the friendly Code Review server
Browse files

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
parent 700a1204
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
/*
 * 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;