summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Agarwal <himanaga@codeaurora.org>2017-01-04 14:52:01 +0530
committerAshish kumar goswami <agoswa@codeaurora.org>2017-01-09 15:03:23 +0530
commit2e4d8ba22fe059647612082aaf4711a76ec54ae3 (patch)
treef68ebc4603f5b88c2ec502e95b8e1d8968cf405d
parent23a6196c92d29c581aadf8a86468fd3d9beb036a (diff)
qcacld-2.0: Add infrastructure to log mgmt pkts in DPTRACE
Add infrastructure to log mgmt packets like assoc, disassoc, auth and deauth in DPTRACE. Change-Id: I0437a2100554628607c561b0e815c0009f1c5606 CRs-Fixed: 1008087
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c12
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c11
-rw-r--r--CORE/SERVICES/COMMON/adf/adf_nbuf.h46
-rw-r--r--CORE/SERVICES/COMMON/adf/adf_trace.c52
-rw-r--r--CORE/SERVICES/COMMON/adf/adf_trace.h100
5 files changed, 193 insertions, 28 deletions
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 939633940253..97db2a909ef2 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.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.
*
@@ -71,6 +71,7 @@
#include <wlan_logging_sock_svc.h>
#include "tl_shim.h"
#include "wlan_hdd_oemdata.h"
+#include "adf_trace.h"
struct ether_addr
{
@@ -984,6 +985,10 @@ static eHalStatus hdd_DisConnectHandler( hdd_adapter_t *pAdapter, tCsrRoamInfo *
}
#endif /* QCA_PKT_PROTO_TRACE */
+ DPTRACE(adf_dp_trace_mgmt_pkt(ADF_DP_TRACE_MGMT_PACKET_RECORD,
+ pAdapter->sessionId,
+ ADF_PROTO_TYPE_MGMT, ADF_PROTO_MGMT_DISASSOC));
+
/* HDD has initiated disconnect, do not send disconnect indication
* to kernel. Sending disconnected event to kernel for userspace
* initiated disconnect will be handled by diconnect handler call
@@ -1859,6 +1864,11 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
vos_pkt_trace_buf_update("ST:ASSOC");
}
#endif /* QCA_PKT_PROTO_TRACE */
+
+ DPTRACE(adf_dp_trace_mgmt_pkt(ADF_DP_TRACE_MGMT_PACKET_RECORD,
+ pAdapter->sessionId,
+ ADF_PROTO_TYPE_MGMT, ADF_PROTO_MGMT_ASSOC));
+
//For reassoc, the station is already registered, all we need is to change the state
//of the STA in TL.
//If authentication is required (WPA/WPA2/DWEP), change TL to CONNECTED instead of AUTHENTICATED
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 553e293831ef..693c0c95d879 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.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.
*
@@ -2327,6 +2327,10 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa
}
#endif /* QCA_PKT_PROTO_TRACE */
+ DPTRACE(adf_dp_trace_mgmt_pkt(ADF_DP_TRACE_MGMT_PACKET_RECORD,
+ pHostapdAdapter->sessionId,
+ ADF_PROTO_TYPE_MGMT, ADF_PROTO_MGMT_ASSOC));
+
#ifdef FEATURE_BUS_BANDWIDTH
/* start timer in sap/p2p_go */
if (pHddApCtx->bApActive == VOS_FALSE)
@@ -2469,6 +2473,11 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa
vos_pkt_trace_buf_update("HA:DISASC");
}
#endif /* QCA_PKT_PROTO_TRACE */
+
+ DPTRACE(adf_dp_trace_mgmt_pkt(ADF_DP_TRACE_MGMT_PACKET_RECORD,
+ pHostapdAdapter->sessionId,
+ ADF_PROTO_TYPE_MGMT, ADF_PROTO_MGMT_DISASSOC));
+
hdd_softap_DeregisterSTA(pHostapdAdapter, staId);
pHddApCtx->bApActive = VOS_FALSE;
diff --git a/CORE/SERVICES/COMMON/adf/adf_nbuf.h b/CORE/SERVICES/COMMON/adf/adf_nbuf.h
index 0e8f5e18d700..e14de34a1f46 100644
--- a/CORE/SERVICES/COMMON/adf/adf_nbuf.h
+++ b/CORE/SERVICES/COMMON/adf/adf_nbuf.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014, 2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2014, 2016-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -182,13 +182,52 @@ struct mon_rx_status {
#define ICMPV6_NA 0x88
#define ADF_NBUF_IPA_CHECK_MASK 0x80000000
+/**
+ * adf_proto_type - protocol type
+ * @ADF_PROTO_TYPE_DHCP - DHCP
+ * @ADF_PROTO_TYPE_EAPOL - EAPOL
+ * @ADF_PROTO_TYPE_ARP - ARP
+ * @ADF_PROTO_TYPE_MGMT - MGMT
+ */
enum adf_proto_type {
ADF_PROTO_TYPE_DHCP = 0,
ADF_PROTO_TYPE_EAPOL,
ADF_PROTO_TYPE_ARP,
+ ADF_PROTO_TYPE_MGMT,
ADF_PROTO_TYPE_MAX
};
+/**
+ * adf_proto_subtype - subtype of packet
+ * @ADF_PROTO_EAPOL_M1 - EAPOL 1/4
+ * @ADF_PROTO_EAPOL_M2 - EAPOL 2/4
+ * @ADF_PROTO_EAPOL_M3 - EAPOL 3/4
+ * @ADF_PROTO_EAPOL_M4 - EAPOL 4/4
+ * @ADF_PROTO_DHCP_DISCOVER - discover
+ * @ADF_PROTO_DHCP_REQUEST - request
+ * @ADF_PROTO_DHCP_OFFER - offer
+ * @ADF_PROTO_DHCP_ACK - ACK
+ * @ADF_PROTO_DHCP_NACK - NACK
+ * @ADF_PROTO_DHCP_RELEASE - release
+ * @ADF_PROTO_DHCP_INFORM - inform
+ * @ADF_PROTO_DHCP_DECLINE - decline
+ * @ADF_PROTO_ARP_REQ - arp request
+ * @ADF_PROTO_ARP_RES - arp response
+ * @ADF_PROTO_ICMP_REQ - icmp request
+ * @ADF_PROTO_ICMP_RES - icmp response
+ * @ADF_PROTO_ICMPV6_REQ - icmpv6 request
+ * @ADF_PROTO_ICMPV6_RES - icmpv6 response
+ * @ADF_PROTO_ICMPV6_NS - icmpv6 ns packet
+ * @ADF_PROTO_ICMPV6_NA - icmpv6 na packet
+ * @ADF_PROTO_IPV4_UDP - ipv4 udp
+ * @ADF_PROTO_IPV4_TCP - ipv4 tcp
+ * @ADF_PROTO_IPV6_UDP - ipv6 udp
+ * @ADF_PROTO_IPV6_TCP - ipv6 tcp
+ * @ADF_PROTO_MGMT_ASSOC -assoc
+ * @ADF_PROTO_MGMT_DISASSOC - disassoc
+ * @ADF_PROTO_MGMT_AUTH - auth
+ * @ADF_PROTO_MGMT_DEAUTH - deauth
+ */
enum adf_proto_subtype {
ADF_PROTO_INVALID = 0,
ADF_PROTO_EAPOL_M1,
@@ -205,7 +244,6 @@ enum adf_proto_subtype {
ADF_PROTO_DHCP_DECLINE,
ADF_PROTO_ARP_REQ,
ADF_PROTO_ARP_RES,
- ADF_PROTO_ARP_SUBTYPE,
ADF_PROTO_ICMP_REQ,
ADF_PROTO_ICMP_RES,
ADF_PROTO_ICMPV6_REQ,
@@ -216,6 +254,10 @@ enum adf_proto_subtype {
ADF_PROTO_IPV4_TCP,
ADF_PROTO_IPV6_UDP,
ADF_PROTO_IPV6_TCP,
+ ADF_PROTO_MGMT_ASSOC,
+ ADF_PROTO_MGMT_DISASSOC,
+ ADF_PROTO_MGMT_AUTH,
+ ADF_PROTO_MGMT_DEAUTH,
ADF_PROTO_SUBTYPE_MAX
};
diff --git a/CORE/SERVICES/COMMON/adf/adf_trace.c b/CORE/SERVICES/COMMON/adf/adf_trace.c
index cfcfe687f391..612cbbbff1e6 100644
--- a/CORE/SERVICES/COMMON/adf/adf_trace.c
+++ b/CORE/SERVICES/COMMON/adf/adf_trace.c
@@ -76,7 +76,7 @@ void adf_dp_trace_init(void)
g_adf_dp_trace_data.tail = INVALID_ADF_DP_TRACE_ADDR;
g_adf_dp_trace_data.num = 0;
g_adf_dp_trace_data.proto_bitmap = NBUF_PKT_TRAC_TYPE_DHCP |
- NBUF_PKT_TRAC_TYPE_EAPOL;
+ NBUF_PKT_TRAC_TYPE_EAPOL | NBUF_PKT_TRAC_TYPE_MGMT_ACTION;
g_adf_dp_trace_data.no_of_record = 0;
g_adf_dp_trace_data.verbosity = ADF_DP_TRACE_VERBOSITY_LOW;
g_adf_dp_trace_data.enable = true;
@@ -85,13 +85,14 @@ void adf_dp_trace_init(void)
adf_dp_trace_cb_table[i] = adf_dp_display_record;
adf_dp_trace_cb_table[ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD] =
- adf_dp_trace_cb_table[ADF_DP_TRACE_TXRX_FAST_PACKET_PTR_RECORD] =
adf_dp_trace_cb_table[ADF_DP_TRACE_FREE_PACKET_PTR_RECORD] =
adf_dp_display_ptr_record;
adf_dp_trace_cb_table[ADF_DP_TRACE_EAPOL_PACKET_RECORD] =
adf_dp_trace_cb_table[ADF_DP_TRACE_DHCP_PACKET_RECORD] =
adf_dp_trace_cb_table[ADF_DP_TRACE_ARP_PACKET_RECORD] =
adf_dp_display_proto_pkt;
+ adf_dp_trace_cb_table[ADF_DP_TRACE_MGMT_PACKET_RECORD] =
+ adf_dp_display_mgmt_pkt;
}
/**
@@ -216,14 +217,14 @@ const char *adf_dp_code_to_string(enum ADF_DP_TRACE_ID code)
return "DHCP:";
case ADF_DP_TRACE_ARP_PACKET_RECORD:
return "ARP:";
+ case ADF_DP_TRACE_MGMT_PACKET_RECORD:
+ return "MGMT:";
case ADF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD:
return "HDD: TX: PTR:";
case ADF_DP_TRACE_HDD_TX_PACKET_RECORD:
return "HDD: TX: DATA:";
case ADF_DP_TRACE_CE_PACKET_PTR_RECORD:
return "CE: TX: PTR:";
- case ADF_DP_TRACE_CE_FAST_PACKET_PTR_RECORD:
- return "CE: TX: FAST: PTR:";
case ADF_DP_TRACE_FREE_PACKET_PTR_RECORD:
return "FREE: TX: PTR:";
case ADF_DP_TRACE_RX_HTT_PACKET_PTR_RECORD:
@@ -238,8 +239,6 @@ const char *adf_dp_code_to_string(enum ADF_DP_TRACE_ID code)
return "TXRX: TX: Q: PTR:";
case ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD:
return "TXRX: TX: PTR:";
- case ADF_DP_TRACE_TXRX_FAST_PACKET_PTR_RECORD:
- return "TXRX: TX: FAST: PTR:";
case ADF_DP_TRACE_HTT_PACKET_PTR_RECORD:
return "HTT: TX: PTR:";
case ADF_DP_TRACE_HTC_PACKET_PTR_RECORD:
@@ -290,6 +289,8 @@ const char *adf_dp_type_to_str(enum adf_proto_type type)
return "EAPOL";
case ADF_PROTO_TYPE_ARP:
return "ARP";
+ case ADF_PROTO_TYPE_MGMT:
+ return "MGMT";
default:
return "invalid";
}
@@ -332,6 +333,14 @@ const char *adf_dp_subtype_to_str(enum adf_proto_subtype subtype)
return "REQUEST";
case ADF_PROTO_ARP_RES:
return "RESPONSE";
+ case ADF_PROTO_MGMT_ASSOC:
+ return "ASSOC";
+ case ADF_PROTO_MGMT_DISASSOC:
+ return "DISASSOC";
+ case ADF_PROTO_MGMT_AUTH:
+ return "AUTH";
+ case ADF_PROTO_MGMT_DEAUTH:
+ return "DEAUTH";
default:
return "invalid";
}
@@ -606,6 +615,37 @@ void adf_dp_trace_proto_pkt(enum ADF_DP_TRACE_ID code, uint8_t vdev_id,
adf_dp_add_record(code, (uint8_t *)&buf, buf_size, true);
}
+void adf_dp_display_mgmt_pkt(struct adf_dp_trace_record_s *record,
+ uint16_t index)
+{
+ struct adf_dp_trace_mgmt_buf *buf =
+ (struct adf_dp_trace_mgmt_buf *)record->data;
+
+ adf_os_print("DPT: %04d: %012llu: %s vdev_id %d", index,
+ record->time, adf_dp_code_to_string(record->code),
+ buf->vdev_id);
+ adf_os_print("DPT: Type %s Subtype %s", adf_dp_type_to_str(buf->type),
+ adf_dp_subtype_to_str(buf->subtype));
+}
+
+void adf_dp_trace_mgmt_pkt(enum ADF_DP_TRACE_ID code, uint8_t vdev_id,
+ enum adf_proto_type type, enum adf_proto_subtype subtype)
+{
+ struct adf_dp_trace_mgmt_buf buf;
+ int buf_size = sizeof(struct adf_dp_trace_mgmt_buf);
+
+ if (adf_dp_enable_check(NULL, code, ADF_NA) == false)
+ return;
+
+ if (buf_size > ADF_DP_TRACE_RECORD_SIZE)
+ ADF_BUG(0);
+
+ buf.type = type;
+ buf.subtype = subtype;
+ buf.vdev_id = vdev_id;
+ adf_dp_add_record(code, (uint8_t *)&buf, buf_size, true);
+}
+
/**
* adf_dp_display_ptr_record() - display record
* @record: dptrace record
diff --git a/CORE/SERVICES/COMMON/adf/adf_trace.h b/CORE/SERVICES/COMMON/adf/adf_trace.h
index c1359c886606..c853b4b57d8f 100644
--- a/CORE/SERVICES/COMMON/adf/adf_trace.h
+++ b/CORE/SERVICES/COMMON/adf/adf_trace.h
@@ -71,34 +71,45 @@ struct adf_mac_addr {
/**
* enum ADF_DP_TRACE_ID - Generic ID to identify various events in data path
- * @ADF_DP_TRACE_INVALID: Invalid ID
- * @ADF_DP_TRACE_DROP_PACKET_RECORD: Dropped packet stored with this id
- * @ADF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD: nbuf->data ptr of HDD
- * @ADF_DP_TRACE_HDD_TX_PACKET_RECORD: nbuf->data stored with this id
- * @ADF_DP_TRACE_CE_PACKET_PTR_RECORD: nbuf->data ptr of CE
- * @ADF_DP_TRACE_CE_PACKET_RECORD: nbuf->data stored with this id
- * @ADF_DP_TRACE_TXRX_QUEUE_PACKET_PTR_RECORD: nbuf->data ptr of txrx queue
- * @ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD: nbuf->data ptr of txrx
- * @ADF_DP_TRACE_HTT_PACKET_PTR_RECORD: nbuf->data ptr of htt
- * @ADF_DP_TRACE_HTC_PACKET_PTR_RECORD: nbuf->data ptr of htc
- * @ADF_DP_TRACE_HIF_PACKET_PTR_RECORD: nbuf->data ptr of hif
- * @ADF_DP_TRACE_HDD_TX_TIMEOUT: hdd tx timeout event
- * @ADF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT: hdd tx softap timeout event
- *
+ * @ADF_DP_TRACE_INVALID - invalid
+ * @ADF_DP_TRACE_DROP_PACKET_RECORD - record drop packet
+ * @ADF_DP_TRACE_EAPOL_PACKET_RECORD - record EAPOL packet
+ * @ADF_DP_TRACE_DHCP_PACKET_RECORD - record DHCP packet
+ * @ADF_DP_TRACE_ARP_PACKET_RECORD - record ARP packet
+ * @ADF_DP_TRACE_MGMT_PACKET_RECORD - record MGMT pacekt
+ * @ADF_DP_TRACE_DEFAULT_VERBOSITY - below this are part of default verbosity
+ * @ADF_DP_TRACE_HDD_TX_TIMEOUT - HDD tx timeout
+ * @ADF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT- SOFTAP HDD tx timeout
+ * @ADF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD - HDD layer ptr record
+ * @ADF_DP_TRACE_CE_PACKET_PTR_RECORD - CE layer ptr record
+ * @ADF_DP_TRACE_FREE_PACKET_PTR_RECORD - tx completion ptr record
+ * @ADF_DP_TRACE_RX_HTT_PACKET_PTR_RECORD - HTT RX record
+ * @ADF_DP_TRACE_RX_OFFLOAD_HTT_PACKET_PTR_RECORD- HTT RX offload record
+ * @ADF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD - HDD RX record
+ * @ADF_DP_TRACE_LOW_VERBOSITY - below this are part of low verbosity
+ * @ADF_DP_TRACE_TXRX_QUEUE_PACKET_PTR_RECORD -tx queue ptr record
+ * @ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD - txrx packet ptr record
+ * @ADF_DP_TRACE_HTT_PACKET_PTR_RECORD - htt packet ptr record
+ * @ADF_DP_TRACE_HTC_PACKET_PTR_RECORD - htc packet ptr record
+ * @ADF_DP_TRACE_HIF_PACKET_PTR_RECORD - hif packet ptr record
+ * @ADF_DP_TRACE_RX_TXRX_PACKET_PTR_RECORD - txrx packet ptr record
+ * @ADF_DP_TRACE_MED_VERBOSITY - below this are part of med verbosity
+ * @ADF_DP_TRACE_HDD_TX_PACKET_RECORD - record 32 bytes at HDD
+ * @ADF_DP_TRACE_HDD_RX_PACKET_RECORD - record 32 bytes at HDD
+ * @ADF_DP_TRACE_HIGH_VERBOSITY - below this are part of high verbosity
*/
-
enum ADF_DP_TRACE_ID {
ADF_DP_TRACE_INVALID = 0,
ADF_DP_TRACE_DROP_PACKET_RECORD,
ADF_DP_TRACE_EAPOL_PACKET_RECORD,
ADF_DP_TRACE_DHCP_PACKET_RECORD,
ADF_DP_TRACE_ARP_PACKET_RECORD,
+ ADF_DP_TRACE_MGMT_PACKET_RECORD,
ADF_DP_TRACE_DEFAULT_VERBOSITY,
ADF_DP_TRACE_HDD_TX_TIMEOUT,
ADF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT,
ADF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD,
ADF_DP_TRACE_CE_PACKET_PTR_RECORD,
- ADF_DP_TRACE_CE_FAST_PACKET_PTR_RECORD,
ADF_DP_TRACE_FREE_PACKET_PTR_RECORD,
ADF_DP_TRACE_RX_HTT_PACKET_PTR_RECORD,
ADF_DP_TRACE_RX_OFFLOAD_HTT_PACKET_PTR_RECORD,
@@ -106,7 +117,6 @@ enum ADF_DP_TRACE_ID {
ADF_DP_TRACE_LOW_VERBOSITY,
ADF_DP_TRACE_TXRX_QUEUE_PACKET_PTR_RECORD,
ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD,
- ADF_DP_TRACE_TXRX_FAST_PACKET_PTR_RECORD,
ADF_DP_TRACE_HTT_PACKET_PTR_RECORD,
ADF_DP_TRACE_HTC_PACKET_PTR_RECORD,
ADF_DP_TRACE_HIF_PACKET_PTR_RECORD,
@@ -118,17 +128,39 @@ enum ADF_DP_TRACE_ID {
ADF_DP_TRACE_MAX
};
+/**
+ * adf_proto_dir - direction
+ * @ADF_TX: TX direction
+ * @ADF_RX: RX direction
+ * @ADF_NA: not applicable
+ */
enum adf_proto_dir {
ADF_TX,
- ADF_RX
+ ADF_RX,
+ ADF_NA
};
+/**
+ * struct adf_dp_trace_ptr_buf - pointer record buffer
+ * @cookie: cookie value
+ * @msdu_id: msdu_id
+ * @status: completion status
+ */
struct adf_dp_trace_ptr_buf {
uint64_t cookie;
uint16_t msdu_id;
uint16_t status;
};
+/**
+ * struct adf_dp_trace_proto_buf - proto packet buffer
+ * @sa: source address
+ * @da: destination address
+ * @vdev_id : vdev id
+ * @type: packet type
+ * @subtype: packet subtype
+ * @dir: direction
+ */
struct adf_dp_trace_proto_buf {
struct adf_mac_addr sa;
struct adf_mac_addr da;
@@ -138,6 +170,17 @@ struct adf_dp_trace_proto_buf {
uint8_t dir;
};
+/**
+ * struct adf_dp_trace_mgmt_buf - mgmt packet buffer
+ * @vdev_id : vdev id
+ * @type: packet type
+ * @subtype: packet subtype
+ */
+struct adf_dp_trace_mgmt_buf {
+ uint8_t vdev_id;
+ uint8_t type;
+ uint8_t subtype;
+};
/**
* struct adf_dp_trace_record_s - Describes a record in DP trace
@@ -210,6 +253,27 @@ void adf_dp_trace_log_pkt(uint8_t session_id, struct sk_buff *skb,
void adf_dp_trace_enable_live_mode(void);
void adf_dp_trace_clear_buffer(void);
+/**
+ * adf_dp_trace_mgmt_pkt() - record mgmt packet
+ * @code: dptrace code
+ * @vdev_id: vdev id
+ * @type: proto type
+ * @subtype: proto subtype
+ *
+ * Return: none
+ */
+void adf_dp_trace_mgmt_pkt(enum ADF_DP_TRACE_ID code, uint8_t vdev_id,
+ enum adf_proto_type type, enum adf_proto_subtype subtype);
+
+/**
+ * adf_dp_display_mgmt_pkt() - display proto packet
+ * @record: dptrace record
+ * @index: index
+ *
+ * Return: none
+ */
+void adf_dp_display_mgmt_pkt(struct adf_dp_trace_record_s *record,
+ uint16_t index);
#else
static inline void adf_dp_trace_init(void)
{