summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Agarwal <himanaga@codeaurora.org>2016-08-10 15:22:45 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-08-19 18:33:12 -0700
commit4574e28362c57c7050ac64f51cdf91a73978d221 (patch)
tree1e5a7de9661e243618f19986972ec72446cdae85
parent77e1b31e0d63f475b3713434915affa8585fee96 (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.c14
-rw-r--r--core/mac/inc/sir_api.h4
-rw-r--r--core/wma/inc/wma.h4
-rw-r--r--core/wma/src/wma_features.c45
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;
}