wifi-hal: Send link stats after all events are received

Send link stats to framework after all the related events are received
in wifi-hal.

Change-Id: I1222307cb9189a91ba8ae5c42c7032daaa2e9df6
CRs-fixed: 1083922
diff --git a/qcwcn/wifi_hal/llstats.cpp b/qcwcn/wifi_hal/llstats.cpp
index 7183eb9..284e70f 100644
--- a/qcwcn/wifi_hal/llstats.cpp
+++ b/qcwcn/wifi_hal/llstats.cpp
@@ -857,6 +857,31 @@
     return WifiCommand::requestResponse(mMsg);
 }
 
+void LLStatsCommand::notifyResponse()
+{
+    mHandler.on_link_stats_results(mRequestId,
+                            mResultsParams.iface_stat, mNumRadios,
+                            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;
+        mRadioStatsSize = 0;
+        mNumRadios = 0;
+     }
+     if(mResultsParams.iface_stat)
+     {
+        free(mResultsParams.iface_stat);
+        mResultsParams.iface_stat = NULL;
+     }
+}
+
+
 int LLStatsCommand::handleResponse(WifiEvent &reply)
 {
     unsigned i=0;
@@ -1032,28 +1057,6 @@
                         ALOGV("%s: numPeers is %u\n", __FUNCTION__,
                                 mResultsParams.iface_stat->num_peers);
 #endif
-                        if(mResultsParams.iface_stat->num_peers == 0)
-                        {
-                            // Number of Radios are 1 for now
-                            mHandler.on_link_stats_results(mRequestId,
-                                    mResultsParams.iface_stat,
-                                    mNumRadios,
-                                    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;
-                                mRadioStatsSize = 0;
-                                mNumRadios = 0;
-                            }
-                            free(mResultsParams.iface_stat);
-                            mResultsParams.iface_stat = NULL;
-                        }
                     }
                 }
                 break;
@@ -1166,27 +1169,6 @@
                         }
                     }
 
-                    // Number of Radios are 1 for now
-                    mHandler.on_link_stats_results(mRequestId,
-                            mResultsParams.iface_stat, mNumRadios,
-                            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;
-                        mRadioStatsSize = 0;
-                        mNumRadios = 0;
-                    }
-                    if(mResultsParams.iface_stat)
-                    {
-                        free(mResultsParams.iface_stat);
-                        mResultsParams.iface_stat = NULL;
-                    }
                 }
                 break;
 
@@ -1369,6 +1351,9 @@
     if (ret < 0)
         goto cleanup;
 
+    if (ret == 0)
+        LLCommand->notifyResponse();
+
 cleanup:
     return (wifi_error)ret;
 }
diff --git a/qcwcn/wifi_hal/llstatscommand.h b/qcwcn/wifi_hal/llstatscommand.h
index 9202f3a..64aba60 100644
--- a/qcwcn/wifi_hal/llstatscommand.h
+++ b/qcwcn/wifi_hal/llstatscommand.h
@@ -103,6 +103,8 @@
 
     virtual int requestResponse();
 
+    virtual void notifyResponse();
+
     virtual int handleResponse(WifiEvent &reply);
 
     virtual void getClearRspParams(u32 *stats_clear_rsp_mask, u8 *stop_rsp);