-static __rte_always_inline void
-virtio_dev_rx_async_submit_split_err(struct virtio_net *dev,
- struct vhost_virtqueue *vq, uint16_t queue_id,
- uint16_t last_idx, uint16_t shadow_idx)
-{
- uint16_t start_idx, pkts_idx, vq_size;
- uint64_t *async_pending_info;
-
- pkts_idx = vq->async_pkts_idx;
- async_pending_info = vq->async_pending_info;
- vq_size = vq->size;
- start_idx = virtio_dev_rx_async_get_info_idx(pkts_idx,
- vq_size, vq->async_pkts_inflight_n);
-
- while (likely((start_idx & (vq_size - 1)) != pkts_idx)) {
- uint64_t n_seg =
- async_pending_info[(start_idx) & (vq_size - 1)] >>
- ASYNC_PENDING_INFO_N_SFT;
-
- while (n_seg)
- n_seg -= vq->async_ops.check_completed_copies(dev->vid,
- queue_id, 0, 1);
- }
-
- vq->async_pkts_inflight_n = 0;
- vq->batch_copy_nb_elems = 0;
-
- vq->shadow_used_idx = shadow_idx;
- vq->last_avail_idx = last_idx;
-}
-