Lines Matching refs:last_used_idx
194 u16 last_used_idx; member
426 vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR); in virtqueue_init()
428 vq->last_used_idx = 0; in virtqueue_init()
807 return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev, in more_used_split()
836 last_used = (vq->last_used_idx & (vq->split.vring.num - 1)); in virtqueue_get_buf_ctx_split()
854 vq->last_used_idx++; in virtqueue_get_buf_ctx_split()
861 cpu_to_virtio16(_vq->vdev, vq->last_used_idx)); in virtqueue_get_buf_ctx_split()
896 u16 last_used_idx; in virtqueue_enable_cb_prepare_split() local
913 last_used_idx = vq->last_used_idx); in virtqueue_enable_cb_prepare_split()
915 return last_used_idx; in virtqueue_enable_cb_prepare_split()
918 static bool virtqueue_poll_split(struct virtqueue *_vq, unsigned int last_used_idx) in virtqueue_poll_split() argument
922 return (u16)last_used_idx != virtio16_to_cpu(_vq->vdev, in virtqueue_poll_split()
946 bufs = (u16)(vq->split.avail_idx_shadow - vq->last_used_idx) * 3 / 4; in virtqueue_enable_cb_delayed_split()
950 cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs)); in virtqueue_enable_cb_delayed_split()
953 - vq->last_used_idx) > bufs)) { in virtqueue_enable_cb_delayed_split()
1259 static bool packed_used_wrap_counter(u16 last_used_idx) in packed_used_wrap_counter() argument
1261 return !!(last_used_idx & (1 << VRING_PACKED_EVENT_F_WRAP_CTR)); in packed_used_wrap_counter()
1264 static u16 packed_last_used(u16 last_used_idx) in packed_last_used() argument
1266 return last_used_idx & ~(-(1 << VRING_PACKED_EVENT_F_WRAP_CTR)); in packed_last_used()
1718 u16 last_used_idx; in more_used_packed() local
1721 last_used_idx = READ_ONCE(vq->last_used_idx); in more_used_packed()
1722 last_used = packed_last_used(last_used_idx); in more_used_packed()
1723 used_wrap_counter = packed_used_wrap_counter(last_used_idx); in more_used_packed()
1732 u16 last_used, id, last_used_idx; in virtqueue_get_buf_ctx_packed() local
1752 last_used_idx = READ_ONCE(vq->last_used_idx); in virtqueue_get_buf_ctx_packed()
1753 used_wrap_counter = packed_used_wrap_counter(last_used_idx); in virtqueue_get_buf_ctx_packed()
1754 last_used = packed_last_used(last_used_idx); in virtqueue_get_buf_ctx_packed()
1778 WRITE_ONCE(vq->last_used_idx, last_used); in virtqueue_get_buf_ctx_packed()
1788 cpu_to_le16(vq->last_used_idx)); in virtqueue_get_buf_ctx_packed()
1828 cpu_to_le16(vq->last_used_idx); in virtqueue_enable_cb_prepare_packed()
1845 return vq->last_used_idx; in virtqueue_enable_cb_prepare_packed()
1863 u16 used_idx, wrap_counter, last_used_idx; in virtqueue_enable_cb_delayed_packed() local
1876 last_used_idx = READ_ONCE(vq->last_used_idx); in virtqueue_enable_cb_delayed_packed()
1877 wrap_counter = packed_used_wrap_counter(last_used_idx); in virtqueue_enable_cb_delayed_packed()
1879 used_idx = packed_last_used(last_used_idx) + bufs; in virtqueue_enable_cb_delayed_packed()
1909 last_used_idx = READ_ONCE(vq->last_used_idx); in virtqueue_enable_cb_delayed_packed()
1910 wrap_counter = packed_used_wrap_counter(last_used_idx); in virtqueue_enable_cb_delayed_packed()
1911 used_idx = packed_last_used(last_used_idx); in virtqueue_enable_cb_delayed_packed()
2607 bool virtqueue_poll(struct virtqueue *_vq, unsigned int last_used_idx) in virtqueue_poll() argument
2615 return vq->packed_ring ? virtqueue_poll_packed(_vq, last_used_idx) : in virtqueue_poll()
2616 virtqueue_poll_split(_vq, last_used_idx); in virtqueue_poll()
2633 unsigned int last_used_idx = virtqueue_enable_cb_prepare(_vq); in virtqueue_enable_cb() local
2635 return !virtqueue_poll(_vq, last_used_idx); in virtqueue_enable_cb()