|
@@ -1147,9 +1147,9 @@ wma_fill_tx_stats(struct sir_wifi_ll_ext_stats *ll_stats,
|
|
|
struct sir_wifi_tx *tx_stats;
|
|
|
struct sir_wifi_ll_ext_peer_stats *peer_stats;
|
|
|
uint32_t *tx_mpdu_aggr, *tx_succ_mcs, *tx_fail_mcs, *tx_delay;
|
|
|
- uint32_t len, dst_len, param_len, tx_mpdu_aggr_array_len,
|
|
|
- tx_succ_mcs_array_len, tx_fail_mcs_array_len,
|
|
|
- tx_delay_array_len;
|
|
|
+ uint32_t len, dst_len, param_len, num_entries,
|
|
|
+ tx_mpdu_aggr_array_len, tx_succ_mcs_array_len,
|
|
|
+ tx_fail_mcs_array_len, tx_delay_array_len;
|
|
|
|
|
|
result = *buf;
|
|
|
dst_len = *buf_length;
|
|
@@ -1228,6 +1228,12 @@ wma_fill_tx_stats(struct sir_wifi_ll_ext_stats *ll_stats,
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
}
|
|
|
|
|
|
+ num_entries = fix_param->num_peer_ac_tx_stats * WLAN_MAX_AC;
|
|
|
+ if (num_entries > param_buf->num_tx_stats) {
|
|
|
+ wma_err("tx stats invalid arg, %d", num_entries);
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
for (i = 0; i < fix_param->num_peer_ac_tx_stats; i++) {
|
|
|
uint32_t peer_id = wmi_peer_tx[i].peer_id;
|
|
|
struct sir_wifi_tx *ac;
|