Skip to content

Commit fef4522

Browse files
wyr-7xiaoxiang781216
authored andcommitted
rpmsg_vritio: INVALIDATE cache in calculate buffer nused
optimize buffer nused calculation Signed-off-by: Yongrong Wang <[email protected]>
1 parent de5d90a commit fef4522

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

drivers/rpmsg/rpmsg_virtio.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,18 @@ static int rpmsg_virtio_buffer_nused(FAR struct rpmsg_virtio_device *rvdev,
134134
{
135135
FAR struct virtqueue *vq = rx ? rvdev->rvq : rvdev->svq;
136136
uint16_t nused = vq->vq_ring.avail->idx - vq->vq_ring.used->idx;
137+
bool is_host = rpmsg_virtio_get_role(rvdev) == RPMSG_HOST;
137138

138-
if ((rpmsg_virtio_get_role(rvdev) == RPMSG_HOST) ^ rx)
139+
if (is_host)
140+
{
141+
RPMSG_VIRTIO_INVALIDATE(vq->vq_ring.used->idx);
142+
}
143+
else
144+
{
145+
RPMSG_VIRTIO_INVALIDATE(vq->vq_ring.avail->idx);
146+
}
147+
148+
if (is_host ^ rx)
139149
{
140150
return nused;
141151
}

0 commit comments

Comments
 (0)