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
This commit is contained in:

committed by
nshrivas

parent
71a0cfb91a
commit
5f2280aa4f
@@ -651,7 +651,7 @@ qdf_nbuf_set_send_complete_flag(qdf_nbuf_t buf, bool flag)
|
|||||||
__qdf_nbuf_set_send_complete_flag(buf, 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
|
* 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, \
|
qdf_nbuf_unmap_nbytes_single_debug(osdev, buf, dir, nbytes, \
|
||||||
__FILE__, __LINE__)
|
__FILE__, __LINE__)
|
||||||
|
|
||||||
#else /* NBUF_MEMORY_DEBUG */
|
#else /* NBUF_MAP_UNMAP_DEBUG */
|
||||||
|
|
||||||
static inline void qdf_nbuf_map_check_for_leaks(void) {}
|
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);
|
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
|
* qdf_nbuf_queue_head_dequeue() - dequeue nbuf from the head of queue
|
||||||
|
@@ -577,7 +577,9 @@ qdf_nbuf_history_add(qdf_nbuf_t nbuf, const char *file, uint32_t line,
|
|||||||
event->type = type;
|
event->type = type;
|
||||||
event->timestamp = qdf_get_log_timestamp();
|
event->timestamp = qdf_get_log_timestamp();
|
||||||
}
|
}
|
||||||
|
#endif /* NBUF_MEMORY_DEBUG */
|
||||||
|
|
||||||
|
#ifdef NBUF_MAP_UNMAP_DEBUG
|
||||||
struct qdf_nbuf_map_metadata {
|
struct qdf_nbuf_map_metadata {
|
||||||
struct hlist_node node;
|
struct hlist_node node;
|
||||||
qdf_nbuf_t nbuf;
|
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);
|
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
|
* __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 */
|
/* Remove SKB from internal QDF tracking table */
|
||||||
if (qdf_likely(nbuf)) {
|
if (qdf_likely(nbuf)) {
|
||||||
struct qdf_nbuf_map_metadata *meta;
|
qdf_nbuf_panic_on_free_if_mapped(nbuf, file, line);
|
||||||
|
|
||||||
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_net_buf_debug_delete_node(nbuf);
|
qdf_net_buf_debug_delete_node(nbuf);
|
||||||
qdf_nbuf_history_add(nbuf, file, line, QDF_NBUF_FREE);
|
qdf_nbuf_history_add(nbuf, file, line, QDF_NBUF_FREE);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user