Wifi-HAL: Treat wake counter related stats from driver as optional

Earlier, all the attributes of wakestats were considered mandatory
to be present from driver. This commit addresses that wake counter
related stats to be treated as optional. If these attributes are
not present in the message from driver then it is reported as zero
instead of discarding the whole message.

Bug: 121156966
Test: Regression

CRs-Fixed: 2218700
Change-Id: I51137a5104537edae9529e2b6b62f5f07e10c67a
diff --git a/qcwcn/wifi_hal/wifilogger.cpp b/qcwcn/wifi_hal/wifilogger.cpp
index 87653f5..38aad86 100644
--- a/qcwcn/wifi_hal/wifilogger.cpp
+++ b/qcwcn/wifi_hal/wifilogger.cpp
@@ -1165,59 +1165,56 @@
 
             if (!tbVendor[
                     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_CMD_EVENT_WAKE]) {
-                ALOGE("%s: TOTAL_CMD_EVENT_WAKE not found", __FUNCTION__);
-                break;
+                mGetWakeStats->total_cmd_event_wake = 0;
+            } else {
+                mGetWakeStats->total_cmd_event_wake = nla_get_u32(
+                    tbVendor[QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_CMD_EVENT_WAKE]);
             }
-            mGetWakeStats->total_cmd_event_wake = nla_get_u32(
-                tbVendor[QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_CMD_EVENT_WAKE]);
 
             if (mGetWakeStats->total_cmd_event_wake &&
                     mGetWakeStats->cmd_event_wake_cnt) {
                 if (!tbVendor[
                     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR]) {
-                    ALOGE("%s: CMD_EVENT_WAKE_CNT_PTR not found", __FUNCTION__);
-                    break;
+                    mGetWakeStats->cmd_event_wake_cnt_used = 0;
+                } else {
+                    len = nla_len(tbVendor[
+                            QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR]);
+                    mGetWakeStats->cmd_event_wake_cnt_used =
+                            (len < mGetWakeStats->cmd_event_wake_cnt_sz) ? len :
+                                        mGetWakeStats->cmd_event_wake_cnt_sz;
+                    memcpy(mGetWakeStats->cmd_event_wake_cnt,
+                        nla_data(tbVendor[
+                            QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR]),
+                        (mGetWakeStats->cmd_event_wake_cnt_used * sizeof(int)));
                 }
-                len = nla_len(tbVendor[
-                        QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR]);
-                mGetWakeStats->cmd_event_wake_cnt_used =
-                        (len < mGetWakeStats->cmd_event_wake_cnt_sz) ? len :
-                                    mGetWakeStats->cmd_event_wake_cnt_sz;
-                memcpy(mGetWakeStats->cmd_event_wake_cnt,
-                    nla_data(tbVendor[
-                        QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR]),
-                    (mGetWakeStats->cmd_event_wake_cnt_used * sizeof(int)));
             } else
                 mGetWakeStats->cmd_event_wake_cnt_used = 0;
 
             if (!tbVendor[
-                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_DRIVER_FW_LOCAL_WAKE])
-            {
-                ALOGE("%s: TOTAL_DRIVER_FW_LOCAL_WAKE not found", __FUNCTION__);
-                break;
+                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_DRIVER_FW_LOCAL_WAKE]) {
+                mGetWakeStats->total_driver_fw_local_wake = 0;
+            } else {
+                mGetWakeStats->total_driver_fw_local_wake = nla_get_u32(tbVendor[
+                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_DRIVER_FW_LOCAL_WAKE]);
             }
-            mGetWakeStats->total_driver_fw_local_wake = nla_get_u32(tbVendor[
-                QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_DRIVER_FW_LOCAL_WAKE]);
 
             if (mGetWakeStats->total_driver_fw_local_wake &&
                     mGetWakeStats->driver_fw_local_wake_cnt) {
                 if (!tbVendor[
-                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR])
-                {
-                    ALOGE("%s: DRIVER_FW_LOCAL_WAKE_CNT_PTR not found",
-                        __FUNCTION__);
-                    break;
-                }
-                len = nla_len(tbVendor[
-                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR]);
-                mGetWakeStats->driver_fw_local_wake_cnt_used =
-                    (len < mGetWakeStats->driver_fw_local_wake_cnt_sz) ? len :
-                                    mGetWakeStats->driver_fw_local_wake_cnt_sz;
+                    QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR]) {
+                    mGetWakeStats->driver_fw_local_wake_cnt_used = 0;
+                } else {
+                    len = nla_len(tbVendor[
+                        QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR]);
+                    mGetWakeStats->driver_fw_local_wake_cnt_used =
+                        (len < mGetWakeStats->driver_fw_local_wake_cnt_sz) ? len :
+                                        mGetWakeStats->driver_fw_local_wake_cnt_sz;
 
-                memcpy(mGetWakeStats->driver_fw_local_wake_cnt,
-                    nla_data(tbVendor[
-                        QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR]),
-                    (mGetWakeStats->driver_fw_local_wake_cnt_used * sizeof(int)));
+                    memcpy(mGetWakeStats->driver_fw_local_wake_cnt,
+                        nla_data(tbVendor[
+                            QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR]),
+                        (mGetWakeStats->driver_fw_local_wake_cnt_used * sizeof(int)));
+                }
             } else
                 mGetWakeStats->driver_fw_local_wake_cnt_used = 0;