From 4326a5437667c7d348c5b1b18353e2cf706f5989 Mon Sep 17 00:00:00 2001 From: Yeshwanth Sriram Guntuka Date: Tue, 17 Mar 2020 17:07:27 +0530 Subject: [PATCH] qcacmn: Add qdf API to check for configured packet types Add qdf API support to check if the packet should be tracked as per the configured protocol types. Change-Id: Ia9e937865d3d440f1350307a67e32b20ea218e54 CRs-Fixed: 2642156 --- qdf/inc/qdf_trace.h | 15 +++++++++++++++ qdf/linux/src/qdf_trace.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/qdf/inc/qdf_trace.h b/qdf/inc/qdf_trace.h index 5898b9aded..cfc389c124 100644 --- a/qdf/inc/qdf_trace.h +++ b/qdf/inc/qdf_trace.h @@ -922,6 +922,16 @@ void qdf_dp_set_proto_event_bitmap(uint32_t value); void qdf_dp_log_proto_pkt_info(uint8_t *sa, uint8_t *da, uint8_t type, uint8_t subtype, uint8_t dir, uint16_t msdu_id, uint8_t status); + +/** + * qdf_dp_track_noack_check() - Check if no ack count should be tracked for + * the configured protocol packet types + * @nbuf: nbuf + * @subtype: subtype of packet to be tracked + * + * Return: none + */ +void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype); #else static inline bool qdf_dp_trace_log_pkt(uint8_t vdev_id, struct sk_buff *skb, @@ -1018,6 +1028,11 @@ void qdf_dp_log_proto_pkt_info(uint8_t *sa, uint8_t *da, uint8_t type, uint8_t status) { } + +static inline +void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype) +{ +} #endif void qdf_trace_display(void); diff --git a/qdf/linux/src/qdf_trace.c b/qdf/linux/src/qdf_trace.c index 9a8cdf176c..2a87eb5067 100644 --- a/qdf/linux/src/qdf_trace.c +++ b/qdf/linux/src/qdf_trace.c @@ -2230,6 +2230,41 @@ bool qdf_dp_proto_log_enable_check(enum qdf_proto_type pkt_type, } } +void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype) +{ + enum qdf_proto_type pkt_type = qdf_dp_get_pkt_proto_type(nbuf); + uint16_t dp_track = 0; + + switch (pkt_type) { + case QDF_PROTO_TYPE_EAPOL: + dp_track = qdf_dp_get_proto_bitmap() & + QDF_NBUF_PKT_TRAC_TYPE_EAPOL; + break; + case QDF_PROTO_TYPE_DHCP: + dp_track = qdf_dp_get_proto_bitmap() & + QDF_NBUF_PKT_TRAC_TYPE_DHCP; + break; + case QDF_PROTO_TYPE_ARP: + dp_track = qdf_dp_get_proto_bitmap() & + QDF_NBUF_PKT_TRAC_TYPE_ARP; + break; + case QDF_PROTO_TYPE_DNS: + dp_track = qdf_dp_get_proto_bitmap() & + QDF_NBUF_PKT_TRAC_TYPE_DNS; + break; + default: + break; + } + + if (!dp_track) { + *subtype = QDF_PROTO_INVALID; + return; + } + + *subtype = qdf_dp_get_pkt_subtype(nbuf, pkt_type); +} +qdf_export_symbol(qdf_dp_track_noack_check); + /** * qdf_dp_trace_ptr() - record dptrace * @code: dptrace code