Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 659615bd authored by Jinwei Chen's avatar Jinwei Chen Committed by snandini
Browse files

qcacmn: add function for multi-pages memory zero operation

Add function qdf_mem_multi_pages_zero() to support multi-pages
memory zero operation.

Change-Id: I08b5c2722c02881550d3a1da27d5137c0957fd51
CRs-Fixed: 27763653
parent 96349dc9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@
#include "ce_assignment.h"
#include "ce_tasklet.h"
#include "qdf_module.h"
#include "hal_api.h"

#define CE_POLL_TIMEOUT 10      /* ms */

@@ -58,6 +57,10 @@
#define QCA_WIFI_SUPPORT_SRNG
#endif

#ifdef QCA_WIFI_SUPPORT_SRNG
#include <hal_api.h>
#endif

/* Forward references */
QDF_STATUS hif_post_recv_buffers_for_pipe(struct HIF_CE_pipe_info *pipe_info);

+12 −0
Original line number Diff line number Diff line
@@ -303,6 +303,18 @@ void qdf_mem_multi_pages_free(qdf_device_t osdev,

#endif /* MEMORY_DEBUG */

/**
 * qdf_mem_multi_pages_zero() - zero out each page memory
 * @pages: Multi page information storage
 * @cacheable: Coherent memory or cacheable memory
 *
 * This function will zero out each page memory
 *
 * Return: None
 */
void qdf_mem_multi_pages_zero(struct qdf_mem_multi_page_t *pages,
			      bool cacheable);

/**
 * qdf_aligned_malloc() - allocates aligned QDF memory.
 * @size: Size to be allocated
+25 −0
Original line number Diff line number Diff line
@@ -1650,6 +1650,31 @@ void qdf_mem_multi_pages_free(qdf_device_t osdev,
qdf_export_symbol(qdf_mem_multi_pages_free);
#endif

void qdf_mem_multi_pages_zero(struct qdf_mem_multi_page_t *pages,
			      bool cacheable)
{
	unsigned int page_idx;
	struct qdf_mem_dma_page_t *dma_pages;

	if (!pages->page_size)
		pages->page_size = qdf_page_size;

	if (cacheable) {
		for (page_idx = 0; page_idx < pages->num_pages; page_idx++)
			qdf_mem_zero(pages->cacheable_pages[page_idx],
				     pages->page_size);
	} else {
		dma_pages = pages->dma_pages;
		for (page_idx = 0; page_idx < pages->num_pages; page_idx++) {
			qdf_mem_zero(dma_pages->page_v_addr_start,
				     pages->page_size);
			dma_pages++;
		}
	}
}

qdf_export_symbol(qdf_mem_multi_pages_zero);

void __qdf_mem_free(void *ptr)
{
	if (!ptr)