diff --git a/hif/src/sdio/hif_sdio_recv.c b/hif/src/sdio/hif_sdio_recv.c index 548352ad177e..ae617c90c0c3 100644 --- a/hif/src/sdio/hif_sdio_recv.c +++ b/hif/src/sdio/hif_sdio_recv.c @@ -1025,8 +1025,11 @@ QDF_STATUS hif_dev_recv_message_pending_handler(struct hif_sdio_device *pdev, hif_dev_process_recv_header(pdev, packet, look_aheads, &num_look_aheads); - if (QDF_IS_STATUS_ERROR(status)) + if (QDF_IS_STATUS_ERROR(status)) { + HTC_PACKET_ENQUEUE_TO_HEAD(&sync_completed_pkts_queue, + packet); break; + } netbuf = (qdf_nbuf_t) packet->pNetBufContext; /* set data length */ @@ -1044,8 +1047,13 @@ QDF_STATUS hif_dev_recv_message_pending_handler(struct hif_sdio_device *pdev, pipeid); } } - if (QDF_IS_STATUS_ERROR(status)) + + if (QDF_IS_STATUS_ERROR(status)) { + if (!HTC_QUEUE_EMPTY(&sync_completed_pkts_queue)) + hif_dev_free_recv_pkt_queue( + &sync_completed_pkts_queue); break; + } if (num_look_aheads == 0) { /* no more look aheads */