summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirav Shah <nnshah@qti.qualcomm.com>2015-06-18 16:15:07 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-06-22 20:50:25 +0530
commitf5fc7dcb06ab230ae45bf622950b61a7035edb65 (patch)
tree528390da66b7d19ab4dcfad6faa04ce507ceefce
parent83f1a58cbcf1685967ad06e7200aba187edf2aa4 (diff)
qcacld: Process rx packet handling in async_task
Queue rx packet to async task queue to process rx packet in async_task context. CRs-Fixed: 856590 Change-Id: Ia511c3ac7223c4a2dc979ec8336fb6e32174458b
-rw-r--r--CORE/SERVICES/HIF/sdio/hif_sdio_recv.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/CORE/SERVICES/HIF/sdio/hif_sdio_recv.c b/CORE/SERVICES/HIF/sdio/hif_sdio_recv.c
index 1e258c04e3cd..ad2d3a856040 100644
--- a/CORE/SERVICES/HIF/sdio/hif_sdio_recv.c
+++ b/CORE/SERVICES/HIF/sdio/hif_sdio_recv.c
@@ -291,12 +291,21 @@ static INLINE A_STATUS HIFDevRecvPacket(HIF_SDIO_DEVICE *pDev,
paddedLength,
pDev->MailBoxInfo.MboxAddresses[mboxIndex]));
+#ifdef HIF_SYNC_READ
status = HIFSyncRead(pDev->HIFDevice,
pDev->MailBoxInfo.MboxAddresses[mboxIndex],
pPacket->pBuffer,
paddedLength,
(sync ? HIF_RD_SYNC_BLOCK_FIX : HIF_RD_ASYNC_BLOCK_FIX),
sync ? NULL : pPacket); /* pass the packet as the context to the HIF request */
+#else
+ status = HIFReadWrite(pDev->HIFDevice,
+ pDev->MailBoxInfo.MboxAddresses[mboxIndex],
+ pPacket->pBuffer,
+ paddedLength,
+ (sync ? HIF_RD_SYNC_BLOCK_FIX : HIF_RD_ASYNC_BLOCK_FIX),
+ sync ? NULL : pPacket); /* pass the packet as the context to the HIF request */
+#endif
AR_DEBUG_PRINTF( ATH_DEBUG_RECV, ("EP%d, Seq:%d\n",
((HTC_FRAME_HDR*)pPacket->pBuffer)->EndpointID,
@@ -667,12 +676,22 @@ static A_STATUS HIFDevIssueRecvPacketBundle(HIF_SDIO_DEVICE *pDev,
target->rx_bundle_stats[HTC_PACKET_QUEUE_DEPTH(pSyncCompletionQueue) - 1]++;
#endif
+
+#ifdef HIF_SYNC_READ
status = HIFSyncRead(pDev->HIFDevice,
pDev->MailBoxInfo.MboxAddresses[(int)MailBoxIndex],
pBundleBuffer,
totalLength,
HIF_RD_SYNC_BLOCK_FIX,
NULL);
+#else
+ status = HIFReadWrite(pDev->HIFDevice,
+ pDev->MailBoxInfo.MboxAddresses[(int)MailBoxIndex],
+ pBundleBuffer,
+ totalLength,
+ HIF_RD_SYNC_BLOCK_FIX,
+ NULL);
+#endif
if(status != A_OK){
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("%s, HIFSend Failed status:%d \n",__FUNCTION__, status));
@@ -1075,12 +1094,22 @@ static A_STATUS HIFDevProcessPendingIRQs(HIF_SDIO_DEVICE *pDev, A_BOOL *pDone,
break;
}
+
+#ifdef HIF_SYNC_READ
status = HIFSyncRead(pDev->HIFDevice,
HOST_INT_STATUS_ADDRESS,
(A_UINT8 *) &pDev->IrqProcRegisters,
sizeof(pDev->IrqProcRegisters),
HIF_RD_SYNC_BYTE_INC,
NULL);
+#else
+ status = HIFReadWrite(pDev->HIFDevice,
+ HOST_INT_STATUS_ADDRESS,
+ (A_UINT8 *) &pDev->IrqProcRegisters,
+ sizeof(pDev->IrqProcRegisters),
+ HIF_RD_SYNC_BYTE_INC,
+ NULL);
+#endif
if (A_FAILED(status)) {
break;