diff --git a/components/cp_stats/dispatcher/inc/wlan_cp_stats_mc_defs.h b/components/cp_stats/dispatcher/inc/wlan_cp_stats_mc_defs.h index a887aef671ec..ad126a99fa75 100644 --- a/components/cp_stats/dispatcher/inc/wlan_cp_stats_mc_defs.h +++ b/components/cp_stats/dispatcher/inc/wlan_cp_stats_mc_defs.h @@ -129,6 +129,7 @@ enum txrate_gi { * @pno_complete_wake_up_count: pno complete wakeup count * @pno_match_wake_up_count: pno match wakeup count * @oem_response_wake_up_count: oem response wakeup count + * @uc_drop_wake_up_count: local data uc drop wakeup count * @pwr_save_fail_detected: pwr save fail detected wakeup count * @scan_11d 11d scan wakeup count * @mgmt_assoc: association request management frame @@ -156,6 +157,7 @@ struct wake_lock_stats { uint32_t pno_complete_wake_up_count; uint32_t pno_match_wake_up_count; uint32_t oem_response_wake_up_count; + uint32_t uc_drop_wake_up_count; uint32_t pwr_save_fail_detected; uint32_t scan_11d; uint32_t mgmt_assoc; diff --git a/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c b/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c index 1934ab408ca7..6f01a6e6f628 100644 --- a/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c +++ b/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c @@ -551,6 +551,7 @@ static void vdev_iterator(struct wlan_objmgr_psoc *psoc, void *vdev, void *arg) stats->pno_match_wake_up_count += vdev_stats->pno_match_wake_up_count; stats->oem_response_wake_up_count += vdev_stats->oem_response_wake_up_count; + stats->uc_drop_wake_up_count += vdev_stats->uc_drop_wake_up_count; stats->pwr_save_fail_detected += vdev_stats->pwr_save_fail_detected; stats->scan_11d += vdev_stats->scan_11d; } @@ -661,6 +662,7 @@ QDF_STATUS ucfg_mc_cp_stats_write_wow_stats( "\tG-Scan: %u\n" "\tPNO Complete: %u\n" "\tPNO Match: %u\n" + "\tUC Drop wake_count: %u\n" "\tOEM rsp wake_count: %u\n" "\twake count due to pwr_save_fail_detected: %u\n" "\twake count due to 11d scan: %u\n", @@ -679,6 +681,7 @@ QDF_STATUS ucfg_mc_cp_stats_write_wow_stats( wow_stats.gscan_wake_up_count, wow_stats.pno_complete_wake_up_count, wow_stats.pno_match_wake_up_count, + wow_stats.uc_drop_wake_up_count, wow_stats.oem_response_wake_up_count, wow_stats.pwr_save_fail_detected, wow_stats.scan_11d); diff --git a/components/target_if/cp_stats/src/target_if_mc_cp_stats.c b/components/target_if/cp_stats/src/target_if_mc_cp_stats.c index 095644f2b12a..4f6695ed8951 100644 --- a/components/target_if/cp_stats/src/target_if_mc_cp_stats.c +++ b/components/target_if/cp_stats/src/target_if_mc_cp_stats.c @@ -1050,6 +1050,10 @@ static void target_if_cp_stats_inc_wake_lock_stats(uint32_t reason, stats->pwr_save_fail_detected++; break; + case WOW_REASON_LOCAL_DATA_UC_DROP: + stats->uc_drop_wake_up_count++; + break; + default: break; } diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 45d67833cbba..460f639ceec1 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -1477,6 +1477,8 @@ static const uint8_t *wma_wow_wake_reason_str(A_INT32 wake_reason) return "ROAM_PMKID_REQUEST"; case WOW_REASON_VDEV_DISCONNECT: return "VDEV_DISCONNECT"; + case WOW_REASON_LOCAL_DATA_UC_DROP: + return "LOCAL_DATA_UC_DROP"; default: return "unknown"; } @@ -1505,6 +1507,7 @@ static bool wma_wow_reason_has_stats(enum wake_reason_e reason) case WOW_REASON_OEM_RESPONSE_EVENT: case WOW_REASON_CHIP_POWER_FAILURE_DETECT: case WOW_REASON_11D_SCAN: + case WOW_REASON_LOCAL_DATA_UC_DROP: return true; #ifdef WLAN_FEATURE_MOTION_DETECTION case WOW_REASON_WLAN_MD: @@ -1551,13 +1554,14 @@ static void wma_wow_stats_display(struct wake_lock_stats *stats) stats->mgmt_action); wma_nofl_alert("pno_match:%d pno_complete:%d gscan:%d " - "low_rssi:%d rssi_breach:%d oem:%d scan_11d:%d", + "low_rssi:%d rssi_breach:%d oem:%d ucdrop:%d scan_11d:%d", stats->pno_match_wake_up_count, stats->pno_complete_wake_up_count, stats->gscan_wake_up_count, stats->low_rssi_wake_up_count, stats->rssi_breach_wake_up_count, stats->oem_response_wake_up_count, + stats->uc_drop_wake_up_count, stats->scan_11d); } diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index a3b6939295ba..d552ac162214 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -1813,6 +1813,7 @@ static void wma_state_info_dump(char **buf_ptr, uint16_t *size) "\tipv6_mcast_ns %u\n" "\tipv6_mcast_na %u\n" "\toem_response %u\n" + "\tuc_drop %u\n" "dtimPeriod %d\n" "chan_width %d\n" "vdev_active %d\n" @@ -1838,6 +1839,7 @@ static void wma_state_info_dump(char **buf_ptr, uint16_t *size) stats.ipv6_mcast_ns_stats, stats.ipv6_mcast_na_stats, stats.oem_response_wake_up_count, + stats.uc_drop_wake_up_count, iface->dtimPeriod, iface->chan_width, iface->vdev_active,