From 8aff77d4ceea809da273b68763aea737ed81da38 Mon Sep 17 00:00:00 2001 From: Guiding Li Date: Tue, 2 Aug 2022 11:12:19 +0800 Subject: [PATCH 09/12] openamp: firstly take all buffer from shram pool 1. the memory already alloced for shram 2. this can help dump the right free cnt Signed-off-by: Guiding Li --- lib/rpmsg/rpmsg_virtio.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c index 92f5883..4f26b01 100644 --- a/lib/rpmsg/rpmsg_virtio.c +++ open-amp/lib/rpmsg/rpmsg_virtio.c @@ -154,12 +154,13 @@ static void *rpmsg_virtio_get_tx_buffer(struct rpmsg_virtio_device *rvdev, #ifndef VIRTIO_DEVICE_ONLY if (role == RPMSG_HOST) { - data = virtqueue_get_buffer(rvdev->svq, len, idx); - if (!data && rvdev->svq->vq_free_cnt) { - data = rpmsg_virtio_shm_pool_get_buffer(rvdev->shpool, - rvdev->config.h2r_buf_size); + data = rpmsg_virtio_shm_pool_get_buffer(rvdev->shpool, + rvdev->config.h2r_buf_size); + if (data) { *len = rvdev->config.h2r_buf_size; *idx = 0; + } else { + data = virtqueue_get_buffer(rvdev->svq, len, idx); } } #endif /*!VIRTIO_DEVICE_ONLY*/ -- 2.25.1