qcacmn: Reo-Cmd: Donot write to reg if no src desc

For reo_cmd ring, in current implementation, we call hal_srng_access_end
in case a descriptor is not available before baling out. This may cause
a write to the shadow register for the reo_cmd ring. In case we are in
the middle of WOW, this can be problematic.
Modify existing implementation to use hal_srng_access_end_reap, which
will not schedule a write to the register and simply return.

Change-Id: Ifb83d904e39b3d749522cd246a5ab3fe51a3104e
CRs-Fixed: 3194289
此提交包含在:
Mohit Khanna
2022-05-20 07:47:47 -07:00
提交者 Madan Koyyalamudi
父節點 0130242aed
當前提交 04bf8070da
共有 4 個檔案被更改,包括 92 行新增60 行删除

查看文件

@@ -2202,7 +2202,6 @@ hal_srng_access_end_unlocked(void *hal_soc, hal_ring_handle_t hal_ring_hdl)
* This API should be used only if hal_srng_access_start was used to
* start ring access
*
* Return: 0 on success; error on failire
*/
static inline void
hal_srng_access_end(void *hal_soc, hal_ring_handle_t hal_ring_hdl)
@@ -2218,6 +2217,40 @@ hal_srng_access_end(void *hal_soc, hal_ring_handle_t hal_ring_hdl)
SRNG_UNLOCK(&(srng->lock));
}
void hal_srng_access_end_v1(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl,
wlan_rtpm_dbgid rtpm_dbgid,
bool is_critical_ctx);
#ifdef FEATURE_RUNTIME_PM
#define hal_srng_access_end_v1 hal_srng_rtpm_access_end
/**
* hal_srng_rtpm_access_end - RTPM aware, Unlock ring access
* @hal_soc: Opaque HAL SOC handle
* @hal_ring_hdl: Ring pointer (Source or Destination ring)
* @rtpm_dbgid: RTPM debug id
* @is_critical_ctx: Whether the calling context is critical
*
* Function updates the HP/TP value to the hardware register.
* The target expects cached head/tail pointer to be updated to the
* shared location in the little-endian order, This API ensures that.
* This API should be used only if hal_srng_access_start was used to
* start ring access
*
* Return: None
*/
void
hal_srng_rtpm_access_end(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl,
wlan_rtpm_dbgid rtpm_dbgid,
bool is_critical_ctx);
#else
#define hal_srng_access_end_v1(hal_soc_hdl, hal_ring_hdl, rtpm_dbgid, \
is_critical_ctx)\
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl)
#endif
/* hal_srng_access_end already handles endianness conversion, so use the same */
#define hal_le_srng_access_end_in_cpu_order \
hal_srng_access_end