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
此提交包含在:
@@ -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
|
||||
|
新增問題並參考
封鎖使用者