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) %
|
uint32_t next_entry = (srng->last_desc_cleared + srng->entry_size) %
|
||||||
srng->ring_size;
|
srng->ring_size;
|
||||||
|
|
||||||
if (next_entry != (srng->u.src_ring.cached_tp + srng->entry_size) %
|
if (next_entry != srng->u.src_ring.cached_tp) {
|
||||||
srng->ring_size) {
|
|
||||||
desc = &srng->ring_base_vaddr[next_entry];
|
desc = &srng->ring_base_vaddr[next_entry];
|
||||||
srng->last_desc_cleared = next_entry;
|
srng->last_desc_cleared = next_entry;
|
||||||
}
|
}
|
||||||
|
@@ -1853,6 +1853,27 @@ hal_srng_set_nf_thresholds(struct hal_srng *srng,
|
|||||||
}
|
}
|
||||||
#endif
|
#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_srng_setup - Initialize HW SRNG ring.
|
||||||
* @hal_soc: Opaque HAL SOC handle
|
* @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;
|
srng->flags |= HAL_SRNG_RING_PTR_SWAP;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
hal_srng_last_desc_cleared_init(srng);
|
||||||
|
|
||||||
if (srng->ring_dir == HAL_SRNG_SRC_RING) {
|
if (srng->ring_dir == HAL_SRNG_SRC_RING) {
|
||||||
srng->u.src_ring.hp = 0;
|
srng->u.src_ring.hp = 0;
|
||||||
srng->u.src_ring.reap_hp = srng->ring_size -
|
srng->u.src_ring.reap_hp = srng->ring_size -
|
||||||
|
Reference in New Issue
Block a user