diff --git a/htc/htc_send.c b/htc/htc_send.c index 172a5c2a4d04..9294dddb8aca 100644 --- a/htc/htc_send.c +++ b/htc/htc_send.c @@ -501,8 +501,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 = @@ -510,6 +514,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"));