1 From 16573cbb9c82218f93741a9bc873242c012ac061 Mon Sep 17 00:00:00 2001
2 From: Hangtian Zhu <hangtian@qti.qualcomm.com>
3 Date: Thu, 14 Jun 2018 11:10:05 +0800
4 Subject: [PATCH 22/23] MLK-18491-02 qcacld-2.0: fix the overflow of bounce
7 Patch a41baa51cbc5("MLK-18491 qcacld-2.0: avoid overflow of bounce buffer")
8 is not reasonable to fix overflow of bounce buffer issue.
10 The patch is released by Qualcomm to fix the issue.
11 (Case Number:03515221)
13 Signed-off-by: Hangtian Zhu <hangtian@qti.qualcomm.com>
15 CORE/SERVICES/HTC/htc.c | 2 +-
16 CORE/SERVICES/HTC/htc_send.c | 28 ++++++++++++++--------------
17 2 files changed, 15 insertions(+), 15 deletions(-)
19 diff --git a/CORE/SERVICES/HTC/htc.c b/CORE/SERVICES/HTC/htc.c
20 index 1e2450d..09936a0 100644
21 --- a/CORE/SERVICES/HTC/htc.c
22 +++ b/CORE/SERVICES/HTC/htc.c
23 @@ -657,7 +657,7 @@ static void ResetEndpointStates(HTC_TARGET *target)
24 INIT_HTC_PACKET_QUEUE(&pEndpoint->RxBufferHoldQueue);
25 pEndpoint->target = target;
26 //pEndpoint->TxCreditFlowEnabled = (A_BOOL)htc_credit_flow;
27 - pEndpoint->TxCreditFlowEnabled = (A_BOOL)0;
28 + pEndpoint->TxCreditFlowEnabled = (A_BOOL)1;
29 adf_os_atomic_init(&pEndpoint->TxProcessCount);
32 diff --git a/CORE/SERVICES/HTC/htc_send.c b/CORE/SERVICES/HTC/htc_send.c
33 index 1a3dd28..19d8065 100644
34 --- a/CORE/SERVICES/HTC/htc_send.c
35 +++ b/CORE/SERVICES/HTC/htc_send.c
36 @@ -105,12 +105,12 @@ void HTCGetControlEndpointTxHostCredits(HTC_HANDLE HTCHandle, int *credits)
38 static INLINE void RestoreTxPacket(HTC_TARGET *target, HTC_PACKET *pPacket)
40 + adf_nbuf_t netbuf = GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket);
41 if (pPacket->PktInfo.AsTx.Flags & HTC_TX_PACKET_FLAG_FIXUP_NETBUF) {
42 - adf_nbuf_t netbuf = GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket);
43 adf_nbuf_unmap(target->osdev, netbuf, ADF_OS_DMA_TO_DEVICE);
44 - adf_nbuf_pull_head(netbuf, sizeof(HTC_FRAME_HDR));
45 pPacket->PktInfo.AsTx.Flags &= ~HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
47 + adf_nbuf_pull_head(netbuf, sizeof(HTC_FRAME_HDR));
51 @@ -641,12 +641,11 @@ static A_STATUS HTCIssuePackets(HTC_TARGET *target,
52 * that is already mapped, or a non-data netbuf that needs to be
55 - if (pPacket->PktInfo.AsTx.Flags & HTC_TX_PACKET_FLAG_FIXUP_NETBUF) {
58 - GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
59 - ADF_OS_DMA_TO_DEVICE);
61 + pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
64 + GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
65 + ADF_OS_DMA_TO_DEVICE);
68 /* store in look up queue to match completions */
69 @@ -1261,12 +1260,13 @@ A_STATUS HTCSendPktsMultiple(HTC_HANDLE HTCHandle, HTC_PACKET_QUEUE *pPktQueue)
70 * mapped. This only applies to non-data frames, since data frames
71 * were already mapped as they entered into the driver.
75 - GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
76 - ADF_OS_DMA_TO_DEVICE);
78 - pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
79 + if(!IS_TX_CREDIT_FLOW_ENABLED(pEndpoint)) {
80 + pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
83 + GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
84 + ADF_OS_DMA_TO_DEVICE);
86 } HTC_PACKET_QUEUE_ITERATE_END;
88 HTCTrySend(target,pEndpoint,pPktQueue);