diff options
| author | Zhang Qian <zhangq@codeaurora.org> | 2016-12-15 11:12:23 +0800 |
|---|---|---|
| committer | Ashish kumar goswami <agoswa@codeaurora.org> | 2016-12-19 18:39:23 +0530 |
| commit | d6a34db72dcae4bb089db122a88471386eca843f (patch) | |
| tree | 87d1adbebbfdc92d83dca00e22b2ebfa4ec45282 | |
| parent | 02050863748264eb7176ddea50ef35b0565d76c8 (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.c | 18 |
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; |
