From 4e745226d130ce99fe4248ad0bf7fb0bb351d434 Mon Sep 17 00:00:00 2001 From: Manjunathappa Prakash Date: Thu, 26 Mar 2015 11:59:31 -0700 Subject: qcacld-new: reduce the DMA buffer size to 4K Reducing the DMA buffer size to 4K as packet size cannot be more than 4K. Change-Id: I605080b3fb352f7fa61a3312ebd56ff19af80c4f CRs-Fixed: 813885 --- .../HIF/sdio/linux/native_sdio/include/hif_internal.h | 2 +- CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h b/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h index 234bc09fc931..382e38c1b92e 100644 --- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h +++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h @@ -112,7 +112,7 @@ struct hif_device { A_BOOL swap_mailbox; }; -#define HIF_DMA_BUFFER_SIZE (56 * 1024) +#define HIF_DMA_BUFFER_SIZE (4 * 1024) #define CMD53_FIXED_ADDRESS 1 #define CMD53_INCR_ADDRESS 2 diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c index c7b1349e86a8..29c3b1160b5e 100644 --- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c @@ -406,6 +406,12 @@ __HIFReadWrite(HIF_DEVICE *device, tbuffer = device->dma_buffer; /* copy the write data to the dma buffer */ AR_DEBUG_ASSERT(length <= HIF_DMA_BUFFER_SIZE); + if (length > HIF_DMA_BUFFER_SIZE) { + AR_DEBUG_PRINTF(ATH_DEBUG_ERROR, + ("AR6000: Invalid write length: %d\n", length)); + status = A_EINVAL; + break; + } memcpy(tbuffer, buffer, length); bounced = TRUE; } else { @@ -428,6 +434,12 @@ __HIFReadWrite(HIF_DEVICE *device, if (BUFFER_NEEDS_BOUNCE(buffer)) { AR_DEBUG_ASSERT(device->dma_buffer != NULL); AR_DEBUG_ASSERT(length <= HIF_DMA_BUFFER_SIZE); + if (length > HIF_DMA_BUFFER_SIZE) { + AR_DEBUG_PRINTF(ATH_DEBUG_ERROR, + ("AR6000: Invalid read length: %d\n", length)); + status = A_EINVAL; + break; + } tbuffer = device->dma_buffer; bounced = TRUE; } else { -- cgit v1.2.3