wlan: Add changes to collect Arp packet stats

Add changes to collect arp packet stats along
with existing hdd stats to debug the arp packet
related issues.

Change-Id: I3574d512744bcdd0021f8a57d2f9f70e1b154458
CRs-Fixed: 1115366
diff --git a/CORE/VOSS/src/vos_packet.c b/CORE/VOSS/src/vos_packet.c
index 43daf9f..7332176 100644
--- a/CORE/VOSS/src/vos_packet.c
+++ b/CORE/VOSS/src/vos_packet.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -3100,6 +3100,35 @@
    return pkt_proto_type;
 }
 
+bool vos_is_arp_pkt(void *pskb, bool is_translated)
+{
+   v_U16_t    ether_type;
+   struct sk_buff *skb = NULL;
+#define HEADER_OFFSET_802_11 20
+
+   if (NULL == pskb)
+   {
+      return FALSE;
+   }
+
+   skb = (struct sk_buff *)pskb;
+
+   if (is_translated)
+      ether_type = (v_U16_t)(*(v_U16_t *)(skb->data + VOS_PKT_PROT_ETH_TYPE_OFFSET + HEADER_OFFSET_802_11));
+   else
+      ether_type = (v_U16_t)(*(v_U16_t *)(skb->data + VOS_PKT_PROT_ETH_TYPE_OFFSET));
+
+   if (VOS_PKT_PROT_ARP_ETH_TYPE == VOS_SWAP_U16(ether_type))
+   {
+      return TRUE;
+   }
+   else
+   {
+      return FALSE;
+   }
+#undef HEADER_OFFSET_802_11
+}
+
 v_PVOID_t vos_get_pkt_head(vos_pkt_t *pPacket)
 {
    struct sk_buff *skb;