Bläddra i källkod

qcacmn: Add iova to nbuf map history event

Record iova address in the nbuf map history
events.

Change-Id: I1bb415537ffe68c839c4c2f69901394ad047022b
CRs-Fixed: 2856038
Yeshwanth Sriram Guntuka 4 år sedan
förälder
incheckning
28c395b59d
1 ändrade filer med 26 tillägg och 17 borttagningar
  1. 26 17
      qdf/linux/src/qdf_nbuf.c

+ 26 - 17
qdf/linux/src/qdf_nbuf.c

@@ -737,6 +737,7 @@ struct qdf_nbuf_event {
 	uint32_t line;
 	enum qdf_nbuf_event_type type;
 	uint64_t timestamp;
+	qdf_dma_addr_t iova;
 };
 
 #define QDF_NBUF_HISTORY_SIZE 4096
@@ -766,6 +767,10 @@ qdf_nbuf_history_add(qdf_nbuf_t nbuf, const char *func, uint32_t line,
 	event->line = line;
 	event->type = type;
 	event->timestamp = qdf_get_log_timestamp();
+	if (type == QDF_NBUF_MAP || type == QDF_NBUF_UNMAP)
+		event->iova = QDF_NBUF_CB_PADDR(nbuf);
+	else
+		event->iova = 0;
 }
 #endif /* NBUF_MEMORY_DEBUG */
 
@@ -787,18 +792,10 @@ static void qdf_nbuf_map_tracking_deinit(void)
 static QDF_STATUS
 qdf_nbuf_track_map(qdf_nbuf_t nbuf, const char *func, uint32_t line)
 {
-	QDF_STATUS status;
-
 	if (is_initial_mem_debug_disabled)
 		return QDF_STATUS_SUCCESS;
 
-	status = qdf_tracker_track(&qdf_nbuf_map_tracker, nbuf, func, line);
-	if (QDF_IS_STATUS_ERROR(status))
-		return status;
-
-	qdf_nbuf_history_add(nbuf, func, line, QDF_NBUF_MAP);
-
-	return QDF_STATUS_SUCCESS;
+	return qdf_tracker_track(&qdf_nbuf_map_tracker, nbuf, func, line);
 }
 
 static void
@@ -829,10 +826,13 @@ QDF_STATUS qdf_nbuf_map_debug(qdf_device_t osdev,
 		return status;
 
 	status = __qdf_nbuf_map(osdev, buf, dir);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_nbuf_untrack_map(buf, func, line);
-	else
+	} else {
+		if (!is_initial_mem_debug_disabled)
+			qdf_nbuf_history_add(buf, func, line, QDF_NBUF_MAP);
 		qdf_net_buf_debug_update_map_node(buf, func, line);
+	}
 
 	return status;
 }
@@ -865,10 +865,13 @@ QDF_STATUS qdf_nbuf_map_single_debug(qdf_device_t osdev,
 		return status;
 
 	status = __qdf_nbuf_map_single(osdev, buf, dir);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_nbuf_untrack_map(buf, func, line);
-	else
+	} else {
+		if (!is_initial_mem_debug_disabled)
+			qdf_nbuf_history_add(buf, func, line, QDF_NBUF_MAP);
 		qdf_net_buf_debug_update_map_node(buf, func, line);
+	}
 
 	return status;
 }
@@ -902,10 +905,13 @@ QDF_STATUS qdf_nbuf_map_nbytes_debug(qdf_device_t osdev,
 		return status;
 
 	status = __qdf_nbuf_map_nbytes(osdev, buf, dir, nbytes);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_nbuf_untrack_map(buf, func, line);
-	else
+	} else {
+		if (!is_initial_mem_debug_disabled)
+			qdf_nbuf_history_add(buf, func, line, QDF_NBUF_MAP);
 		qdf_net_buf_debug_update_map_node(buf, func, line);
+	}
 
 	return status;
 }
@@ -940,10 +946,13 @@ QDF_STATUS qdf_nbuf_map_nbytes_single_debug(qdf_device_t osdev,
 		return status;
 
 	status = __qdf_nbuf_map_nbytes_single(osdev, buf, dir, nbytes);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_nbuf_untrack_map(buf, func, line);
-	else
+	} else {
+		if (!is_initial_mem_debug_disabled)
+			qdf_nbuf_history_add(buf, func, line, QDF_NBUF_MAP);
 		qdf_net_buf_debug_update_map_node(buf, func, line);
+	}
 
 	return status;
 }