diff options
Diffstat (limited to 'qcwcn')
-rw-r--r-- | qcwcn/wifi_hal/llstats.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/qcwcn/wifi_hal/llstats.cpp b/qcwcn/wifi_hal/llstats.cpp index c0e72fb..419c3c0 100644 --- a/qcwcn/wifi_hal/llstats.cpp +++ b/qcwcn/wifi_hal/llstats.cpp @@ -1020,6 +1020,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) mResultsParams.radio_stat); if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } @@ -1033,7 +1038,7 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) case QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS: { struct nlattr *peerInfo; - wifi_iface_stat *pIfaceStat; + wifi_iface_stat *pIfaceStat = NULL; u32 numPeers, num_rates = 0; if (!tb_vendor[ QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS]) @@ -1098,9 +1103,12 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) } memset(pIfaceStat, 0, resultsBufSize); - if(mResultsParams.iface_stat) + if(mResultsParams.iface_stat) { memcpy ( pIfaceStat, mResultsParams.iface_stat, sizeof(wifi_iface_stat)); + free (mResultsParams.iface_stat); + mResultsParams.iface_stat = pIfaceStat; + } wifi_peer_info *pPeerStats; pIfaceStat->num_peers = numPeers; @@ -1132,9 +1140,6 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) goto cleanup; } } - if(mResultsParams.iface_stat) - free (mResultsParams.iface_stat); - mResultsParams.iface_stat = pIfaceStat; } // Number of Radios are 1 for now @@ -1143,6 +1148,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) mResultsParams.radio_stat); if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } @@ -1207,6 +1217,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) cleanup: if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } |