]> code.ossystems Code Review - meta-freescale.git/blob
3ab1ccdd42f4442a6381e915ce6de8f604fb65f9
[meta-freescale.git] /
1 From e480b6825d3670f3517c3b7be0c13fd318cbe985 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] MLK-18491-02 qcacld-2.0: fix the overflow of bounce buffer
5
6 Patch a41baa51cbc5("MLK-18491 qcacld-2.0: avoid overflow of bounce buffer")
7 is not reasonable to fix overflow of bounce buffer issue.
8
9 The patch is released by Qualcomm to fix the issue.
10 (Case Number:03515221)
11
12 Upstream-Status: Pending
13
14 Signed-off-by: Hangtian Zhu <hangtian@qti.qualcomm.com>
15 ---
16  CORE/SERVICES/HTC/htc.c      |  2 +-
17  CORE/SERVICES/HTC/htc_send.c | 28 ++++++++++++++--------------
18  2 files changed, 15 insertions(+), 15 deletions(-)
19
20 diff --git a/CORE/SERVICES/HTC/htc.c b/CORE/SERVICES/HTC/htc.c
21 index 1e2450d..09936a0 100644
22 --- a/CORE/SERVICES/HTC/htc.c
23 +++ b/CORE/SERVICES/HTC/htc.c
24 @@ -657,7 +657,7 @@ static void ResetEndpointStates(HTC_TARGET *target)
25          INIT_HTC_PACKET_QUEUE(&pEndpoint->RxBufferHoldQueue);
26          pEndpoint->target = target;
27          //pEndpoint->TxCreditFlowEnabled = (A_BOOL)htc_credit_flow;
28 -        pEndpoint->TxCreditFlowEnabled = (A_BOOL)0;
29 +        pEndpoint->TxCreditFlowEnabled = (A_BOOL)1;
30          adf_os_atomic_init(&pEndpoint->TxProcessCount);
31      }
32  }
33 diff --git a/CORE/SERVICES/HTC/htc_send.c b/CORE/SERVICES/HTC/htc_send.c
34 index 1a3dd28..19d8065 100644
35 --- a/CORE/SERVICES/HTC/htc_send.c
36 +++ b/CORE/SERVICES/HTC/htc_send.c
37 @@ -105,12 +105,12 @@ void HTCGetControlEndpointTxHostCredits(HTC_HANDLE HTCHandle, int *credits)
38  
39  static INLINE void RestoreTxPacket(HTC_TARGET *target, HTC_PACKET *pPacket)
40  {
41 +    adf_nbuf_t netbuf = GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket);
42      if (pPacket->PktInfo.AsTx.Flags & HTC_TX_PACKET_FLAG_FIXUP_NETBUF) {
43 -        adf_nbuf_t netbuf = GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket);
44          adf_nbuf_unmap(target->osdev, netbuf, ADF_OS_DMA_TO_DEVICE);
45 -        adf_nbuf_pull_head(netbuf, sizeof(HTC_FRAME_HDR));
46          pPacket->PktInfo.AsTx.Flags &= ~HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
47      }
48 +    adf_nbuf_pull_head(netbuf, sizeof(HTC_FRAME_HDR));
49  
50  }
51  
52 @@ -641,12 +641,11 @@ static A_STATUS HTCIssuePackets(HTC_TARGET       *target,
53               * that is already mapped, or a non-data netbuf that needs to be
54               * mapped.
55               */
56 -            if (pPacket->PktInfo.AsTx.Flags & HTC_TX_PACKET_FLAG_FIXUP_NETBUF) {
57 -                adf_nbuf_map(
58 -                        target->osdev,
59 -                        GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
60 -                        ADF_OS_DMA_TO_DEVICE);
61 -            }
62 +            pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
63 +            adf_nbuf_map(
64 +                    target->osdev,
65 +                    GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
66 +                    ADF_OS_DMA_TO_DEVICE);
67          }
68          LOCK_HTC_TX(target);
69              /* store in look up queue to match completions */
70 @@ -1261,12 +1260,13 @@ A_STATUS HTCSendPktsMultiple(HTC_HANDLE HTCHandle, HTC_PACKET_QUEUE *pPktQueue)
71               * mapped.  This only applies to non-data frames, since data frames
72               * were already mapped as they entered into the driver.
73               */
74 -            adf_nbuf_map(
75 -                    target->osdev,
76 -                    GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
77 -                    ADF_OS_DMA_TO_DEVICE);
78 -
79 -       pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
80 +            if(!IS_TX_CREDIT_FLOW_ENABLED(pEndpoint)) {
81 +               pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
82 +                adf_nbuf_map(
83 +                        target->osdev,
84 +                        GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
85 +                        ADF_OS_DMA_TO_DEVICE);
86 +           }
87      } HTC_PACKET_QUEUE_ITERATE_END;
88  
89      HTCTrySend(target,pEndpoint,pPktQueue);
90 -- 
91 1.9.1
92