Эх сурвалжийг харах

qcacmn: Separate out nbuf map/unmap code

Put the nbuf map/unmap code under NBUF_MAP_UNMAP_DEBUG.
nbuf map/unmap debug will be enabled on WIN once
the nbuf map/unmap related false positives are fixed.

Change-Id: I6b62539d39664db3ff62411fe8632633f53488c8
CRs-Fixed: 2284128
Shiva Krishna Pittala 6 жил өмнө
parent
commit
5f2280aa4f

+ 3 - 3
qdf/inc/qdf_nbuf.h

@@ -651,7 +651,7 @@ qdf_nbuf_set_send_complete_flag(qdf_nbuf_t buf, bool flag)
 	__qdf_nbuf_set_send_complete_flag(buf, flag);
 }
 
-#ifdef NBUF_MEMORY_DEBUG
+#ifdef NBUF_MAP_UNMAP_DEBUG
 /**
  * qdf_nbuf_map_check_for_leaks() - check for nbut map leaks
  *
@@ -739,7 +739,7 @@ void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev,
 	qdf_nbuf_unmap_nbytes_single_debug(osdev, buf, dir, nbytes, \
 					   __FILE__, __LINE__)
 
-#else /* NBUF_MEMORY_DEBUG */
+#else /* NBUF_MAP_UNMAP_DEBUG */
 
 static inline void qdf_nbuf_map_check_for_leaks(void) {}
 
@@ -794,7 +794,7 @@ qdf_nbuf_unmap_nbytes_single(
 {
 	return __qdf_nbuf_unmap_nbytes_single(osdev, buf, dir, nbytes);
 }
-#endif /* NBUF_MEMORY_DEBUG */
+#endif /* NBUF_MAP_UNMAP_DEBUG */
 
 /**
  * qdf_nbuf_queue_head_dequeue() - dequeue nbuf from the head of queue

+ 32 - 11
qdf/linux/src/qdf_nbuf.c

@@ -577,7 +577,9 @@ qdf_nbuf_history_add(qdf_nbuf_t nbuf, const char *file, uint32_t line,
 	event->type = type;
 	event->timestamp = qdf_get_log_timestamp();
 }
+#endif /* NBUF_MEMORY_DEBUG */
 
+#ifdef NBUF_MAP_UNMAP_DEBUG
 struct qdf_nbuf_map_metadata {
 	struct hlist_node node;
 	qdf_nbuf_t nbuf;
@@ -853,7 +855,35 @@ void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev,
 }
 
 qdf_export_symbol(qdf_nbuf_unmap_nbytes_single_debug);
-#endif /* NBUF_MEMORY_DEBUG */
+
+static void qdf_nbuf_panic_on_free_if_mapped(qdf_nbuf_t nbuf, uint8_t *file,
+					     uint32_t line)
+{
+	struct qdf_nbuf_map_metadata *meta;
+
+	qdf_spin_lock_irqsave(&qdf_nbuf_map_lock);
+	meta = qdf_nbuf_meta_get(nbuf);
+	if (meta)
+		QDF_DEBUG_PANIC(
+			"Nbuf freed @ %s:%u while mapped from %s:%u",
+			kbasename(file), line, meta->file, meta->line);
+	qdf_spin_unlock_irqrestore(&qdf_nbuf_map_lock);
+}
+#else
+static inline void qdf_nbuf_map_tracking_init(void)
+{
+}
+
+static inline void qdf_nbuf_map_tracking_deinit(void)
+{
+}
+
+static inline void qdf_nbuf_panic_on_free_if_mapped(qdf_nbuf_t nbuf,
+						    uint8_t *file,
+						    uint32_t line)
+{
+}
+#endif /* NBUF_MAP_UNMAP_DEBUG */
 
 /**
  * __qdf_nbuf_map() - map a buffer to local bus address space
@@ -2627,16 +2657,7 @@ void qdf_nbuf_free_debug(qdf_nbuf_t nbuf, uint8_t *file, uint32_t line)
 
 	/* Remove SKB from internal QDF tracking table */
 	if (qdf_likely(nbuf)) {
-		struct qdf_nbuf_map_metadata *meta;
-
-		qdf_spin_lock_irqsave(&qdf_nbuf_map_lock);
-		meta = qdf_nbuf_meta_get(nbuf);
-		if (meta)
-			QDF_DEBUG_PANIC(
-				"Nbuf freed @ %s:%u while mapped from %s:%u",
-				kbasename(file), line, meta->file, meta->line);
-		qdf_spin_unlock_irqrestore(&qdf_nbuf_map_lock);
-
+		qdf_nbuf_panic_on_free_if_mapped(nbuf, file, line);
 		qdf_net_buf_debug_delete_node(nbuf);
 		qdf_nbuf_history_add(nbuf, file, line, QDF_NBUF_FREE);
 	}