summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortfyu <tfyu@codeaurora.org>2017-06-09 15:50:03 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-07-04 23:50:51 -0700
commit1df5eef78c9426fe0acebefdf3f7fd96b5be256c (patch)
treed4440e3e11882bb99ad0377d741ec74e411f313d
parent93da24c049dac3cec834d3a444487c0a70ca7d0c (diff)
qcacmn: Fix the TX packet drop after doing the TX bundle
qcacld-2.0 to qcacmn propagation The driver will drop the TX packet if remaining depth of the sending queue is less than 2. This will casue the memory leak, credits missing and TCP stall issue when running the iperf test. The fix is to add back current packet before return, which just be dequeued. Change-Id: I9e0c69c16e9562afd627d0fc222a9fbd475c468c CRs-Fixed: 2056195
-rw-r--r--htc/htc_send.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/htc/htc_send.c b/htc/htc_send.c
index 7133ac12d7ca..bad060836e11 100644
--- a/htc/htc_send.c
+++ b/htc/htc_send.c
@@ -502,8 +502,12 @@ static void htc_issue_packets_bundle(HTC_TARGET *target,
htc_send_bundled_netbuf(target, pEndpoint,
pBundleBuffer - last_credit_pad,
pPacketTx);
- if (HTC_PACKET_QUEUE_DEPTH(pPktQueue) <
+ /* One packet has been dequeued from sending queue when enter
+ * this loop, so need to add 1 back for this checking.
+ */
+ if ((HTC_PACKET_QUEUE_DEPTH(pPktQueue) + 1) <
HTC_MIN_MSG_PER_BUNDLE) {
+ HTC_PACKET_ENQUEUE_TO_HEAD(pPktQueue, pPacket);
return;
}
bundlesSpaceRemaining =
@@ -511,6 +515,7 @@ static void htc_issue_packets_bundle(HTC_TARGET *target,
pEndpoint->TxCreditSize;
pPacketTx = allocate_htc_bundle_packet(target);
if (!pPacketTx) {
+ HTC_PACKET_ENQUEUE_TO_HEAD(pPktQueue, pPacket);
/* good time to panic */
AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
("allocate_htc_bundle_packet failed\n"));