diff options
| author | Himanshu Agarwal <himanaga@codeaurora.org> | 2016-08-10 15:22:45 +0530 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-08-19 18:33:12 -0700 |
| commit | 4574e28362c57c7050ac64f51cdf91a73978d221 (patch) | |
| tree | 1e5a7de9661e243618f19986972ec72446cdae85 | |
| parent | 77e1b31e0d63f475b3713434915affa8585fee96 (diff) | |
qcacld-3.0: Correct wow wakeup counters
Propagation from qcacld-2.0 to qcacld-3.0.
Correct the updation of various wow wakeup counts.
Change wow_icmpv6_uc_bc_count to wow_icmpv6_count
as there is no broadcast in case of ipv6.
Change-Id: Iceaf1226edbf909ca3881e049c33f7d121860ef2
CRs-fixed: 1049254
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 14 | ||||
| -rw-r--r-- | core/mac/inc/sir_api.h | 4 | ||||
| -rw-r--r-- | core/wma/inc/wma.h | 4 | ||||
| -rw-r--r-- | core/wma/src/wma_features.c | 45 |
4 files changed, 31 insertions, 36 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index dac9770fc942..b73d99c82291 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -6918,20 +6918,14 @@ static uint32_t hdd_send_wakelock_stats(hdd_context_t *hdd_ctx, hdd_log(LOG1, "wow_ipv6_mcast_na_stats %d", data->wow_ipv6_mcast_na_stats); hdd_log(LOG1, "wow_icmpv4_count %d", data->wow_icmpv4_count); - hdd_log(LOG1, "wow_icmpv6_uc_bc_count %d", - data->wow_icmpv6_uc_bc_count); + hdd_log(LOG1, "wow_icmpv6_count %d", + data->wow_icmpv6_count); ipv6_rx_multicast_addr_cnt = - data->wow_ipv6_mcast_wake_up_count + - data->wow_ipv6_mcast_ra_stats + - data->wow_ipv6_mcast_ns_stats + - data->wow_ipv6_mcast_na_stats; + data->wow_ipv6_mcast_wake_up_count; icmpv6_cnt = - data->wow_icmpv6_uc_bc_count + - data->wow_ipv6_mcast_ra_stats + - data->wow_ipv6_mcast_ns_stats + - data->wow_ipv6_mcast_na_stats; + data->wow_icmpv6_count; rx_multicast_cnt = data->wow_ipv4_mcast_wake_up_count + diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 1fe6beb1b780..b62923e31c91 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -5945,7 +5945,7 @@ struct sir_bpf_get_offload { * @wow_ipv6_mcast_ns_stats: ipv6 multicast ns stats * @wow_ipv6_mcast_na_stats: ipv6 multicast na stats * @wow_icmpv4_count: ipv4 icmp packet count - * @wow_icmpv6_uc_bc_count: ipv6 icmp packet count for unicast and broadcast + * @wow_icmpv6_count: ipv6 icmp packet count */ struct sir_wake_lock_stats { uint32_t wow_ucast_wake_up_count; @@ -5956,7 +5956,7 @@ struct sir_wake_lock_stats { uint32_t wow_ipv6_mcast_ns_stats; uint32_t wow_ipv6_mcast_na_stats; uint32_t wow_icmpv4_count; - uint32_t wow_icmpv6_uc_bc_count; + uint32_t wow_icmpv6_count; }; /** diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index f7ecbd58a4cc..9fb309ab1a91 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -1267,7 +1267,7 @@ struct extended_caps { * @wow_ipv6_mcast_ns_stats: WoW IPV6 mcast NS packet wake up count * @wow_ipv6_mcast_na_stats: WoW IPV6 mcast NA packet wake up count * @wow_icmpv4_count: WoW ipv4 icmp packet wake up count - * @wow_icmpv6_uc_bc_count: WoW ipv6 icmp packet count for unicast and broadcast + * @wow_icmpv6_count: WoW ipv6 icmp packet wake up count * @dual_mac_cfg: Dual mac configuration params for scan and fw mode * * @max_scan: maximum scan requests than can be queued @@ -1429,7 +1429,7 @@ typedef struct { uint32_t wow_ipv6_mcast_ns_stats; uint32_t wow_ipv6_mcast_na_stats; uint32_t wow_icmpv4_count; - uint32_t wow_icmpv6_uc_bc_count; + uint32_t wow_icmpv6_count; uint32_t wow_oem_response_wake_up_count; /* OCB request contexts */ diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index b3c01068e837..ace8d4727eff 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -2385,7 +2385,7 @@ static void wma_wow_wake_up_stats_display(tp_wma_handle wma) 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_icmpv6_count, wma->wow_oem_response_wake_up_count); return; @@ -2400,12 +2400,13 @@ static void wma_wow_wake_up_stats_display(tp_wma_handle wma) */ static void wma_wow_ipv6_mcast_stats(tp_wma_handle wma, uint8_t *data) { - static const uint8_t ipv6_mcast[] = {0x86, 0xDD}; + static const uint8_t ipv6_ether_type[] = {0x86, 0xDD}; - if (!memcmp(ipv6_mcast, (data + WMA_ETHER_TYPE_OFFSET), - sizeof(ipv6_mcast))) { + if (!memcmp(ipv6_ether_type, (data + WMA_ETHER_TYPE_OFFSET), + sizeof(ipv6_ether_type))) { if (WMA_ICMP_V6_HEADER_TYPE == *(data + WMA_ICMP_V6_HEADER_OFFSET)) { + wma->wow_icmpv6_count++; if (WMA_ICMP_V6_RA_TYPE == *(data + WMA_ICMP_V6_TYPE_OFFSET)) wma->wow_ipv6_mcast_ra_stats++; @@ -2448,14 +2449,11 @@ 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 (qdf_nbuf_data_is_ipv4_pkt(data) && - (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL))) + if (qdf_nbuf_data_is_icmp_pkt(data)) wma->wow_icmpv4_count++; - else if (qdf_nbuf_data_is_ipv6_pkt(data) && - (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 ((len > WMA_ICMP_V6_TYPE_OFFSET) && + qdf_nbuf_data_is_icmpv6_pkt(data)) + wma->wow_icmpv6_count++; } else if (WMA_MCAST_IPV4_MAC_ADDR == *data) { wma->wow_ipv4_mcast_wake_up_count++; if (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL)) @@ -2468,19 +2466,22 @@ 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 (qdf_nbuf_data_is_ipv4_pkt(data) && - (WMA_ICMP_PROTOCOL == *(data + WMA_IPV4_PROTOCOL))) - wma->wow_icmpv4_count++; - else if (qdf_nbuf_data_is_ipv6_pkt(data) && - (len > WMA_ICMP_V6_TYPE_OFFSET) && - (WMA_ICMP_V6_HEADER_TYPE == - *(data + WMA_ICMP_V6_HEADER_OFFSET))) - wma->wow_icmpv6_uc_bc_count++; + if (qdf_nbuf_data_is_ipv4_pkt(data)) { + if (qdf_nbuf_data_is_ipv4_mcast_pkt(data)) + wma->wow_ipv4_mcast_wake_up_count++; + if (WMA_ICMP_PROTOCOL == + *(data + WMA_IPV4_PROTOCOL)) + wma->wow_icmpv4_count++; + } else if ((len > WMA_ICMP_V6_TYPE_OFFSET) && + qdf_nbuf_data_is_icmpv6_pkt(data)) + wma->wow_icmpv6_count++; } break; case WOW_REASON_RA_MATCH: + wma->wow_icmpv6_count++; wma->wow_ipv6_mcast_ra_stats++; + wma->wow_ipv6_mcast_wake_up_count++; break; case WOW_REASON_NLOD: @@ -2963,7 +2964,7 @@ static void wma_wow_parse_data_pkt_buffer(uint8_t *data, default: end: WMA_LOGE("wow_buf_pkt_len: %u", buf_len); - WMA_LOGE("Invalid Packet Type or Smaller WOW packet buffer than expected"); + WMA_LOGE("Unknown Packet or Insufficient packet buffer"); break; } } @@ -7967,8 +7968,8 @@ QDF_STATUS wma_get_wakelock_stats(struct sir_wake_lock_stats *wake_lock_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; + wake_lock_stats->wow_icmpv6_count = + wma_handle->wow_icmpv6_count; return QDF_STATUS_SUCCESS; } |
