summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Qian <zhangq@codeaurora.org>2016-12-15 11:12:23 +0800
committerAshish kumar goswami <agoswa@codeaurora.org>2016-12-19 18:39:23 +0530
commitd6a34db72dcae4bb089db122a88471386eca843f (patch)
tree87d1adbebbfdc92d83dca00e22b2ebfa4ec45282
parent02050863748264eb7176ddea50ef35b0565d76c8 (diff)
qcacld-2.0: Fix array length bug for MAC counters
Each AC has four arrays for TX stats (MPDUs with same aggregation size, Acked PPDUs with same encoding rate, Unacked PPDUs with same encoding rate, PPDU with same TX delay time) and two arrays for RX stats (MPDU with same aggregation size, PPDUs with encoding rate). Data type for terms in all the arrays is uint32 not uint8. Array length in WMI event's fix_param for each array is number of terms. So size of the array should be multiplied by sizeof(uint32). Change-Id: Ie23c643bc6c71e01fd7b3d39bd2a047f0c152c8a CRs-fixed: 1101826
-rw-r--r--CORE/SERVICES/WMA/wma.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index f20e3e6b7b69..4acc943955ca 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -5343,13 +5343,17 @@ static void __wma_fill_tx_stats(struct sir_wifi_ll_ext_stats *ll_stats,
ac = &tx_stats[k];
WMA_FILL_TX_STATS(wmi_tx_stats, ac);
ac->mpdu_aggr_size = tx_mpdu_aggr;
- ac->aggr_len = tx_mpdu_aggr_array_len;
- ac->success_mcs_len = tx_succ_mcs_array_len;
+ ac->aggr_len = tx_mpdu_aggr_array_len *
+ sizeof(uint32_t);
+ ac->success_mcs_len = tx_succ_mcs_array_len *
+ sizeof(uint32_t);
ac->success_mcs = tx_succ_mcs;
ac->fail_mcs = tx_fail_mcs;
- ac->fail_mcs_len = tx_fail_mcs_array_len;
+ ac->fail_mcs_len = tx_fail_mcs_array_len *
+ sizeof(uint32_t);
ac->delay = tx_delay;
- ac->delay_len = tx_delay_array_len;
+ ac->delay_len = tx_delay_array_len *
+ sizeof(uint32_t);
peer_stats->ac_stats[k].tx_stats = ac;
peer_stats->ac_stats[k].type = k;
tx_mpdu_aggr += tx_mpdu_aggr_array_len;
@@ -5455,9 +5459,11 @@ static void __wma_fill_rx_stats(struct sir_wifi_ll_ext_stats *ll_stats,
ac = &rx_stats[k];
WMA_FILL_RX_STATS(wmi_rx_stats, ac);
ac->mpdu_aggr = rx_mpdu_aggr;
- ac->aggr_len = rx_mpdu_aggr_array_len;
+ ac->aggr_len = rx_mpdu_aggr_array_len *
+ sizeof(uint32_t);
ac->mcs = rx_mcs;
- ac->mcs_len = rx_mcs_array_len;
+ ac->mcs_len = rx_mcs_array_len *
+ sizeof(uint32_t);
peer_stats->ac_stats[k].rx_stats = ac;
peer_stats->ac_stats[k].type = k;
rx_mpdu_aggr += rx_mpdu_aggr_array_len;