Просмотр исходного кода

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
Yeshwanth Sriram Guntuka 5 лет назад
Родитель
Сommit
4326a54376
2 измененных файлов с 50 добавлено и 0 удалено
  1. 15 0
      qdf/inc/qdf_trace.h
  2. 35 0
      qdf/linux/src/qdf_trace.c

+ 15 - 0
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);

+ 35 - 0
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