1
0

qcacmn: Reduce spinlock time in qdf_net_buf_debug_look_up

Improve hash function to better utilize the memory entropy.
Do memory allocation outside of the spinlock.

Change-Id: Ife7da44c81463bfa9bcf19850d98471f5c61d3f3
CRs-Fixed: 1013620
Este cometimento está contido em:
Houston Hoffman
2016-05-12 16:01:07 -07:00
cometido por Akash Patel
ascendente 341e6a9ec5
cometimento 10749156e4

Ver ficheiro

@@ -634,7 +634,9 @@ uint32_t qdf_net_buf_debug_hash(qdf_nbuf_t net_buf)
{
uint32_t i;
i = (uint32_t) ((uintptr_t) net_buf & (QDF_NET_BUF_TRACK_MAX_SIZE - 1));
i = (uint32_t) (((uintptr_t) net_buf) >> 4);
i += (uint32_t) (((uintptr_t) net_buf) >> 14);
i &= (QDF_NET_BUF_TRACK_MAX_SIZE - 1);
return i;
}
@@ -675,6 +677,9 @@ void qdf_net_buf_debug_add_node(qdf_nbuf_t net_buf, size_t size,
uint32_t i;
unsigned long irq_flag;
QDF_NBUF_TRACK *p_node;
QDF_NBUF_TRACK *new_node;
new_node = (QDF_NBUF_TRACK *) qdf_mem_malloc(sizeof(*new_node));
spin_lock_irqsave(&g_qdf_net_buf_track_lock, irq_flag);
@@ -687,10 +692,10 @@ void qdf_net_buf_debug_add_node(qdf_nbuf_t net_buf, size_t size,
p_node->net_buf, p_node->file_name, p_node->line_num,
net_buf, file_name, line_num);
QDF_ASSERT(0);
qdf_mem_free(new_node);
goto done;
} else {
p_node = (QDF_NBUF_TRACK *)
qdf_mem_malloc(sizeof(*p_node));
p_node = new_node;
if (p_node) {
p_node->net_buf = net_buf;
p_node->file_name = file_name;