Selaa lähdekoodia

qcacmn: Add ksize check for calling qdf_mem_prealloc_put

In perf builds, add a ksize check and call qdf_mem_prealloc_put()
only when size is greater than 4K to avoid lookup overhead.

Change-Id: If01a7cbeaf1ee7f514f16296340169a937dafa78
CRs-Fixed: 2936464
Alan Chen 4 vuotta sitten
vanhempi
sitoutus
0fedc36000
1 muutettua tiedostoa jossa 17 lisäystä ja 2 poistoa
  1. 17 2
      qdf/linux/src/qdf_mem.c

+ 17 - 2
qdf/linux/src/qdf_mem.c

@@ -1365,6 +1365,14 @@ void __qdf_mempool_free(qdf_device_t osdev, __qdf_mempool_t pool, void *buf)
 qdf_export_symbol(__qdf_mempool_free);
 
 #if IS_ENABLED(CONFIG_WCNSS_MEM_PRE_ALLOC)
+static bool qdf_might_be_prealloc(void *ptr)
+{
+	if (ksize(ptr) > WCNSS_PRE_ALLOC_GET_THRESHOLD)
+		return true;
+	else
+		return false;
+}
+
 /**
  * qdf_mem_prealloc_get() - conditionally pre-allocate memory
  * @size: the number of bytes to allocate
@@ -1396,6 +1404,11 @@ static inline bool qdf_mem_prealloc_put(void *ptr)
 	return wcnss_prealloc_put(ptr);
 }
 #else
+static bool qdf_might_be_prealloc(void *ptr)
+{
+	return false;
+}
+
 static inline void *qdf_mem_prealloc_get(size_t size)
 {
 	return NULL;
@@ -2033,8 +2046,10 @@ void __qdf_mem_free(void *ptr)
 	if (!ptr)
 		return;
 
-	if (qdf_mem_prealloc_put(ptr))
-		return;
+	if (qdf_might_be_prealloc(ptr)) {
+		if (qdf_mem_prealloc_put(ptr))
+			return;
+	}
 
 	qdf_mem_kmalloc_dec(ksize(ptr));