qcacmn: init last_desc_cleared and it should always behind tp
Initialize the last_desc_cleared pointer to -1 not 0, and also fix the check it should always behind tp. Change-Id: I281e066d45a99ac99d4f3c4e0bcc3f65f14bb589 CRs-Fixed: 2987029
This commit is contained in:

committed by
Madan Koyyalamudi

parent
190ff6c23e
commit
1a98ac54d7
@@ -1935,8 +1935,7 @@ void *hal_srng_src_get_next_consumed(void *hal_soc,
|
||||
uint32_t next_entry = (srng->last_desc_cleared + srng->entry_size) %
|
||||
srng->ring_size;
|
||||
|
||||
if (next_entry != (srng->u.src_ring.cached_tp + srng->entry_size) %
|
||||
srng->ring_size) {
|
||||
if (next_entry != srng->u.src_ring.cached_tp) {
|
||||
desc = &srng->ring_base_vaddr[next_entry];
|
||||
srng->last_desc_cleared = next_entry;
|
||||
}
|
||||
|
@@ -1853,6 +1853,27 @@ hal_srng_set_nf_thresholds(struct hal_srng *srng,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CLEAR_SW2TCL_CONSUMED_DESC)
|
||||
/**
|
||||
* hal_srng_last_desc_cleared_init - Initialize SRNG last_desc_cleared ptr
|
||||
*
|
||||
* @srng: Source ring pointer
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline
|
||||
void hal_srng_last_desc_cleared_init(struct hal_srng *srng)
|
||||
{
|
||||
srng->last_desc_cleared = srng->ring_size - srng->entry_size;
|
||||
}
|
||||
|
||||
#else
|
||||
static inline
|
||||
void hal_srng_last_desc_cleared_init(struct hal_srng *srng)
|
||||
{
|
||||
}
|
||||
#endif /* CLEAR_SW2TCL_CONSUMED_DESC */
|
||||
|
||||
/**
|
||||
* hal_srng_setup - Initialize HW SRNG ring.
|
||||
* @hal_soc: Opaque HAL SOC handle
|
||||
@@ -1932,6 +1953,8 @@ void *hal_srng_setup(void *hal_soc, int ring_type, int ring_num,
|
||||
srng->flags |= HAL_SRNG_RING_PTR_SWAP;
|
||||
#endif
|
||||
|
||||
hal_srng_last_desc_cleared_init(srng);
|
||||
|
||||
if (srng->ring_dir == HAL_SRNG_SRC_RING) {
|
||||
srng->u.src_ring.hp = 0;
|
||||
srng->u.src_ring.reap_hp = srng->ring_size -
|
||||
|
Reference in New Issue
Block a user