|
@@ -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;
|
|
|
}
|