From 8a68b91de40919d863a09247baef1f98f91c4a2d Mon Sep 17 00:00:00 2001 From: Himanshu Agarwal Date: Tue, 24 Jan 2017 21:34:16 +0530 Subject: qcacld-2.0: Add support to dump ICMPV6 RS and RA in wow wakeup stats Add support to dump information for ICMPV6 RS and RA packets in wow wakeup stats. Change-Id: I1a2852189664fff31e29b487d7a8c66ee83931c5 CRs-Fixed: 1115364 --- CORE/SERVICES/COMMON/adf/adf_nbuf.c | 8 +++++++- CORE/SERVICES/COMMON/adf/adf_nbuf.h | 6 ++++++ CORE/SERVICES/WMA/wma.c | 12 ++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CORE/SERVICES/COMMON/adf/adf_nbuf.c b/CORE/SERVICES/COMMON/adf/adf_nbuf.c index c184a339ea09..503b5a3c1231 100644 --- a/CORE/SERVICES/COMMON/adf/adf_nbuf.c +++ b/CORE/SERVICES/COMMON/adf/adf_nbuf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -753,6 +753,12 @@ __adf_nbuf_data_get_icmpv6_subtype(uint8_t *data) case ICMPV6_RESPONSE: proto_subtype = ADF_PROTO_ICMPV6_RES; break; + case ICMPV6_RS: + proto_subtype = ADF_PROTO_ICMPV6_RS; + break; + case ICMPV6_RA: + proto_subtype = ADF_PROTO_ICMPV6_RA; + break; case ICMPV6_NS: proto_subtype = ADF_PROTO_ICMPV6_NS; break; diff --git a/CORE/SERVICES/COMMON/adf/adf_nbuf.h b/CORE/SERVICES/COMMON/adf/adf_nbuf.h index 048a34075f91..1a5c20ecc0a6 100644 --- a/CORE/SERVICES/COMMON/adf/adf_nbuf.h +++ b/CORE/SERVICES/COMMON/adf/adf_nbuf.h @@ -178,6 +178,8 @@ struct mon_rx_status { #define ICMPV6_SUBTYPE_OFFSET 54 #define ICMPV6_REQUEST 0x80 #define ICMPV6_RESPONSE 0x81 +#define ICMPV6_RS 0x85 +#define ICMPV6_RA 0x86 #define ICMPV6_NS 0x87 #define ICMPV6_NA 0x88 #define ADF_NBUF_IPA_CHECK_MASK 0x80000000 @@ -219,6 +221,8 @@ enum adf_proto_type { * @ADF_PROTO_ICMP_RES - icmp response * @ADF_PROTO_ICMPV6_REQ - icmpv6 request * @ADF_PROTO_ICMPV6_RES - icmpv6 response + * @ADF_PROTO_ICMPV6_RS - icmpv6 rs packet + * @ADF_PROTO_ICMPV6_RA - icmpv6 ra packet * @ADF_PROTO_ICMPV6_NS - icmpv6 ns packet * @ADF_PROTO_ICMPV6_NA - icmpv6 na packet * @ADF_PROTO_IPV4_UDP - ipv4 udp @@ -253,6 +257,8 @@ enum adf_proto_subtype { ADF_PROTO_ICMP_RES, ADF_PROTO_ICMPV6_REQ, ADF_PROTO_ICMPV6_RES, + ADF_PROTO_ICMPV6_RS, + ADF_PROTO_ICMPV6_RA, ADF_PROTO_ICMPV6_NS, ADF_PROTO_ICMPV6_NA, ADF_PROTO_IPV4_UDP, diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index c1ea9e032203..358819e289df 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -22616,6 +22616,14 @@ wma_pkt_proto_subtype_to_string(enum adf_proto_subtype proto_subtype) return "ICMPV6 REQUEST"; case ADF_PROTO_ICMPV6_RES: return "ICMPV6 RESPONSE"; + case ADF_PROTO_ICMPV6_RS: + return "ICMPV6 RS"; + case ADF_PROTO_ICMPV6_RA: + return "ICMPV6 RA"; + case ADF_PROTO_ICMPV6_NS: + return "ICMPV6 NS"; + case ADF_PROTO_ICMPV6_NA: + return "ICMPV6 NA"; case ADF_PROTO_IPV4_UDP: return "IPV4 UDP Packet"; case ADF_PROTO_IPV4_TCP: @@ -22808,6 +22816,10 @@ static void wma_wow_parse_data_pkt_buffer(uint8_t *data, case ADF_PROTO_ICMPV6_REQ: case ADF_PROTO_ICMPV6_RES: + case ADF_PROTO_ICMPV6_RS: + case ADF_PROTO_ICMPV6_RA: + case ADF_PROTO_ICMPV6_NS: + case ADF_PROTO_ICMPV6_NA: WMA_LOGD("WOW Wakeup: %s rcvd", wma_pkt_proto_subtype_to_string(proto_subtype)); if (buf_len >= WMA_IPV6_PKT_INFO_GET_MIN_LEN) { -- cgit v1.2.3