|
@@ -2369,7 +2369,7 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason)
|
|
|
*/
|
|
|
static void wma_wow_wake_up_stats_display(tp_wma_handle wma)
|
|
|
{
|
|
|
- WMA_LOGA("uc %d bc %d v4_mc %d v6_mc %d ra %d ns %d na %d pno_match %d pno_complete %d gscan %d low_rssi %d rssi_breach %d oem %d",
|
|
|
+ WMA_LOGA("uc %d bc %d v4_mc %d v6_mc %d ra %d ns %d na %d pno_match %d pno_complete %d gscan %d low_rssi %d rssi_breach %d icmp %d icmpv6 %d oem %d",
|
|
|
wma->wow_ucast_wake_up_count,
|
|
|
wma->wow_bcast_wake_up_count,
|
|
|
wma->wow_ipv4_mcast_wake_up_count,
|
|
@@ -2382,6 +2382,8 @@ static void wma_wow_wake_up_stats_display(tp_wma_handle wma)
|
|
|
wma->wow_gscan_wake_up_count,
|
|
|
wma->wow_low_rssi_wake_up_count,
|
|
|
wma->wow_rssi_breach_wake_up_count,
|
|
|
+ wma->wow_icmpv4_count,
|
|
|
+ wma->wow_icmpv6_uc_bc_count,
|
|
|
wma->wow_oem_response_wake_up_count);
|
|
|
|
|
|
return;
|
|
@@ -2444,8 +2446,16 @@ static void wma_wow_wake_up_stats(tp_wma_handle wma, uint8_t *data,
|
|
|
case WOW_REASON_PATTERN_MATCH_FOUND:
|
|
|
if (WMA_BCAST_MAC_ADDR == *data) {
|
|
|
wma->wow_bcast_wake_up_count++;
|
|
|
+ if (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL))
|
|
|
+ wma->wow_icmpv4_count++;
|
|
|
+ if ((len > WMA_ICMP_V6_TYPE_OFFSET) &&
|
|
|
+ (WMA_ICMP_V6_HEADER_TYPE ==
|
|
|
+ *(data + WMA_ICMP_V6_HEADER_OFFSET)))
|
|
|
+ wma->wow_icmpv6_uc_bc_count++;
|
|
|
} else if (WMA_MCAST_IPV4_MAC_ADDR == *data) {
|
|
|
wma->wow_ipv4_mcast_wake_up_count++;
|
|
|
+ if (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL))
|
|
|
+ wma->wow_icmpv4_count++;
|
|
|
} else if (WMA_MCAST_IPV6_MAC_ADDR == *data) {
|
|
|
wma->wow_ipv6_mcast_wake_up_count++;
|
|
|
if (len > WMA_ICMP_V6_TYPE_OFFSET)
|
|
@@ -2454,6 +2464,12 @@ static void wma_wow_wake_up_stats(tp_wma_handle wma, uint8_t *data,
|
|
|
WMA_LOGA("ICMP_V6 data len %d", len);
|
|
|
} else {
|
|
|
wma->wow_ucast_wake_up_count++;
|
|
|
+ if (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL))
|
|
|
+ wma->wow_icmpv4_count++;
|
|
|
+ if ((len > WMA_ICMP_V6_TYPE_OFFSET) &&
|
|
|
+ (WMA_ICMP_V6_HEADER_TYPE ==
|
|
|
+ *(data + WMA_ICMP_V6_HEADER_OFFSET)))
|
|
|
+ wma->wow_icmpv6_uc_bc_count++;
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -7944,6 +7960,9 @@ QDF_STATUS wma_get_wakelock_stats(struct sir_wake_lock_stats *wake_lock_stats)
|
|
|
wma_handle->wow_ipv6_mcast_ns_stats;
|
|
|
wake_lock_stats->wow_ipv6_mcast_na_stats =
|
|
|
wma_handle->wow_ipv6_mcast_na_stats;
|
|
|
+ wake_lock_stats->wow_icmpv4_count = wma_handle->wow_icmpv4_count;
|
|
|
+ wake_lock_stats->wow_icmpv6_uc_bc_count =
|
|
|
+ wma_handle->wow_icmpv6_uc_bc_count;
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|