diff options
| author | tfyu <tfyu@codeaurora.org> | 2017-06-09 15:50:03 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-07-04 23:50:51 -0700 |
| commit | 1df5eef78c9426fe0acebefdf3f7fd96b5be256c (patch) | |
| tree | d4440e3e11882bb99ad0377d741ec74e411f313d | |
| parent | 93da24c049dac3cec834d3a444487c0a70ca7d0c (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.c | 7 |
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")); |
