From 56320c1e4d5ed51dc12406cd47a4ab2dbfa3f86b Mon Sep 17 00:00:00 2001 From: Rakesh Pillai Date: Wed, 5 Jun 2019 00:25:48 +0530 Subject: [PATCH] qcacmn: Fix calculation of getting head/tail pointer The current calculation of head/tail pointer for srng gives an index in the array by skipping entry_size dwords. The head/tail pointers are preffered to be the index values like in the srng registers, which brings them in alignment with the other usage of head/tail pointers. Fix the calculation of head/tail pointers for srng by avoiding the division by srng entry size. CRs-Fixed: 2469332 Change-Id: If9a167f3fac3cb39ebe59618e9ad2224d9e54bcc --- hal/wifi3.0/hal_api.h | 8 ++++---- hal/wifi3.0/hal_generic_api.h | 12 ++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/hal/wifi3.0/hal_api.h b/hal/wifi3.0/hal_api.h index fca927152100..75be311e1979 100644 --- a/hal/wifi3.0/hal_api.h +++ b/hal/wifi3.0/hal_api.h @@ -895,11 +895,11 @@ static inline void hal_get_sw_hptp(void *hal_soc, void *hal_ring, struct hal_srng *srng = (struct hal_srng *)hal_ring; if (srng->ring_dir == HAL_SRNG_SRC_RING) { - *headp = srng->u.src_ring.hp / srng->entry_size; - *tailp = *(srng->u.src_ring.tp_addr) / srng->entry_size; + *headp = srng->u.src_ring.hp; + *tailp = *srng->u.src_ring.tp_addr; } else { - *tailp = srng->u.dst_ring.tp / srng->entry_size; - *headp = *(srng->u.dst_ring.hp_addr) / srng->entry_size; + *tailp = srng->u.dst_ring.tp; + *headp = *srng->u.dst_ring.hp_addr; } } diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index fae5bb0212a9..2bc2490aea39 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -1530,15 +1530,11 @@ void hal_get_hw_hptp_generic(struct hal_soc *soc, void *hal_ring, ring_config = HAL_SRNG_CONFIG(soc, ring_type); if (!ring_config->lmac_ring) { if (srng->ring_dir == HAL_SRNG_SRC_RING) { - *headp = - (SRNG_SRC_REG_READ(srng, HP)) / srng->entry_size; - *tailp = - (SRNG_SRC_REG_READ(srng, TP)) / srng->entry_size; + *headp = SRNG_SRC_REG_READ(srng, HP); + *tailp = SRNG_SRC_REG_READ(srng, TP); } else { - *headp = - (SRNG_DST_REG_READ(srng, HP)) / srng->entry_size; - *tailp = - (SRNG_DST_REG_READ(srng, TP)) / srng->entry_size; + *headp = SRNG_DST_REG_READ(srng, HP); + *tailp = SRNG_DST_REG_READ(srng, TP); } } }