wlan: log tx and rx events for ARP packet
ARP packets are critical to start communication
with any peer in our network. Log ARP packets
to help with debugging issues where we cannot
start traffic over IP layer because we are
not able resolve MAC for the peer or the gateway.
Change-Id: I8eca6b852d85c29d9fea3d104a8e53be846b575d
CRs-Fixed: 852437
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 2277e3e..6c3b47a 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -1376,6 +1376,11 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"SAP TX DHCP");
}
+ else if (VOS_PKT_PROTO_TYPE_ARP & proto_type)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "SAP TX ARP");
+ }
}
//xg: @@@@: temporarily disble these. will revisit later
{
@@ -1635,6 +1640,11 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"SAP RX DHCP");
}
+ else if (VOS_PKT_PROTO_TYPE_ARP & proto_type)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "SAP RX ARP");
+ }
}
if (WLAN_RX_BCMC_STA_ID == pRxMetaInfo->ucDesSTAId)
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index af949bd..0035aa6 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1794,6 +1794,11 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"IBSS STA TX DHCP");
}
+ else if (VOS_PKT_PROTO_TYPE_ARP & proto_type)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "IBSS STA TX ARP");
+ }
}
vos_pkt_get_packet_length( pVosPacket,&packet_size );
@@ -2106,6 +2111,11 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"STA TX DHCP");
}
+ else if (VOS_PKT_PROTO_TYPE_ARP & proto_type)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "STA TX ARP");
+ }
}
vos_pkt_get_packet_length( pVosPacket,&packet_size );
@@ -2611,6 +2621,11 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"STA RX DHCP");
}
+ else if (VOS_PKT_PROTO_TYPE_ARP & proto_type)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "STA RX ARP");
+ }
}
if (pHddCtx->cfg_ini->gEnableRoamDelayStats)
diff --git a/CORE/VOSS/inc/vos_packet.h b/CORE/VOSS/inc/vos_packet.h
index 608cfca..2fe96d9 100644
--- a/CORE/VOSS/inc/vos_packet.h
+++ b/CORE/VOSS/inc/vos_packet.h
@@ -52,6 +52,7 @@
------------------------------------------------------------------------*/
#define VOS_PKT_PROTO_TYPE_EAPOL 0x02
#define VOS_PKT_PROTO_TYPE_DHCP 0x04
+#define VOS_PKT_PROTO_TYPE_ARP 0x08
/*--------------------------------------------------------------------------
Type declarations
------------------------------------------------------------------------*/
diff --git a/CORE/VOSS/src/vos_packet.c b/CORE/VOSS/src/vos_packet.c
index 36de09e..5dba8ac 100644
--- a/CORE/VOSS/src/vos_packet.c
+++ b/CORE/VOSS/src/vos_packet.c
@@ -58,6 +58,7 @@
#define VOS_PKT_PROT_DHCP_SRV_PORT 67
#define VOS_PKT_PROT_DHCP_CLI_PORT 68
#define VOS_PKT_PROT_EAPOL_ETH_TYPE 0x888E
+#define VOS_PKT_PROT_ARP_ETH_TYPE 0x0806
/*--------------------------------------------------------------------------
Type declarations
@@ -3067,6 +3068,16 @@
}
}
+ /* ARP Tracking Enabled */
+ if (VOS_PKT_PROTO_TYPE_ARP & tracking_map)
+ {
+ 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))
+ {
+ pkt_proto_type |= VOS_PKT_PROTO_TYPE_ARP;
+ }
+ }
+
/* DHCP Tracking enabled */
if (VOS_PKT_PROTO_TYPE_DHCP & tracking_map)
{