openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

commit 5552570e76602e3a4fae763aefb9e8b1c47fa6b5
parent b0436037a2b6445e5cc10c46cd02ec2ba3d1c045
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date:   Wed,  8 Jan 2020 13:37:24 -0800

SDK-175538: Corrected DMA buffer location for CDMIB counter collection in syn...

Devices: 56980_A0
Module: SOC

Symptom:
Cached counter values returned are large/invalid

Corrected DMA buffer location for CDMIB counter collection in sync mode.

Diffstat:
Msdk-6.5.16/src/soc/common/counter.c | 12+++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/sdk-6.5.16/src/soc/common/counter.c b/sdk-6.5.16/src/soc/common/counter.c @@ -14018,7 +14018,17 @@ soc_counter_collect64(int unit, int discard, soc_port_t tmp_port, soc_reg_t hw_c } else #endif /* BCM_SBUSDMA_SUPPORT */ { - ptr = (uint32 *)&soc->counter_buf64[port_base_dma + index]; +#ifdef BCM_TOMAHAWK3_SUPPORT + if (SOC_IS_TOMAHAWK3(unit) && + soc_feature(unit, soc_feature_sbusdma) && + SOC_REG_IS_COUNTER_TABLE(unit, ctr_reg)) { + int dma_offset = SOC_CTR_TBL_INFO(unit)->tables[index - soc->counter_mib_tbl_first].dma_offset; + ptr = (uint32 *)&soc->counter_buf64[port_base_dma + soc->counter_mib_tbl_first + dma_offset]; + } else +#endif + { + ptr = (uint32 *)&soc->counter_buf64[port_base_dma + index]; + } COUNTER_ATOMIC_BEGIN(s); /* Update the DMA location */ if (soc->counter_flags & SOC_COUNTER_F_SWAP64) {