MCPcopy Create free account
hub / github.com/F-Stack/f-stack / virtio_dev_rx

Function virtio_dev_rx

dpdk/lib/vhost/virtio_net.c:1710–1751  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1708}
1709
1710static __rte_always_inline uint32_t
1711virtio_dev_rx(struct virtio_net *dev, struct vhost_virtqueue *vq,
1712 struct rte_mbuf **pkts, uint32_t count)
1713{
1714 uint32_t nb_tx = 0;
1715
1716 VHOST_LOG_DATA(dev->ifname, DEBUG, "%s\n", __func__);
1717 rte_rwlock_read_lock(&vq->access_lock);
1718
1719 if (unlikely(!vq->enabled))
1720 goto out_access_unlock;
1721
1722 vhost_user_iotlb_rd_lock(vq);
1723
1724 if (unlikely(!vq->access_ok)) {
1725 vhost_user_iotlb_rd_unlock(vq);
1726 rte_rwlock_read_unlock(&vq->access_lock);
1727
1728 virtio_dev_vring_translate(dev, vq);
1729 goto out_no_unlock;
1730 }
1731
1732 count = RTE_MIN((uint32_t)MAX_PKT_BURST, count);
1733 if (count == 0)
1734 goto out;
1735
1736 if (vq_is_packed(dev))
1737 nb_tx = virtio_dev_rx_packed(dev, vq, pkts, count);
1738 else
1739 nb_tx = virtio_dev_rx_split(dev, vq, pkts, count);
1740
1741 vhost_queue_stats_update(dev, vq, pkts, nb_tx);
1742
1743out:
1744 vhost_user_iotlb_rd_unlock(vq);
1745
1746out_access_unlock:
1747 rte_rwlock_read_unlock(&vq->access_lock);
1748
1749out_no_unlock:
1750 return nb_tx;
1751}
1752
1753uint16_t
1754rte_vhost_enqueue_burst(int vid, uint16_t queue_id,

Callers 1

rte_vhost_enqueue_burstFunction · 0.85

Calls 5

vq_is_packedFunction · 0.85
virtio_dev_rx_packedFunction · 0.85
virtio_dev_rx_splitFunction · 0.85
vhost_queue_stats_updateFunction · 0.85

Tested by

no test coverage detected