Remove these unnecessary vring descriptor length updating, vhost should not 
change them.
virtio in front end should assign value to desc.len for both rx and tx.

Signed-off-by: Changchun Ouyang <changchun.ouyang at intel.com>
---
 lib/librte_vhost/vhost_rxtx.c | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)

diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c
index 24de6f4..bb56ae1 100644
--- a/lib/librte_vhost/vhost_rxtx.c
+++ b/lib/librte_vhost/vhost_rxtx.c
@@ -135,7 +135,6 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
                 * placed in separate buffers.
                 */
                if (desc->flags & VRING_DESC_F_NEXT) {
-                       desc->len = vq->vhost_hlen;
                        desc = &vq->desc[desc->next];
                        /* Buffer address translation. */
                        buff_addr = gpa_to_vva(dev, desc->addr);
@@ -273,7 +272,6 @@ copy_from_mbuf_to_vring(struct virtio_net *dev, uint16_t 
res_base_idx,
        if (vb_avail == 0) {
                uint32_t desc_idx =
                        vq->buf_vec[vec_idx].desc_idx;
-               vq->desc[desc_idx].len = vq->vhost_hlen;

                if ((vq->desc[desc_idx].flags
                        & VRING_DESC_F_NEXT) == 0) {
@@ -357,7 +355,6 @@ copy_from_mbuf_to_vring(struct virtio_net *dev, uint16_t 
res_base_idx,
                                         */
                                        uint32_t desc_idx =
                                                vq->buf_vec[vec_idx].desc_idx;
-                                       vq->desc[desc_idx].len = vb_offset;

                                        if ((vq->desc[desc_idx].flags &
                                                VRING_DESC_F_NEXT) == 0) {
@@ -392,26 +389,13 @@ copy_from_mbuf_to_vring(struct virtio_net *dev, uint16_t 
res_base_idx,
                                /*
                                 * This whole packet completes.
                                 */
-                               uint32_t desc_idx =
-                                       vq->buf_vec[vec_idx].desc_idx;
-                               vq->desc[desc_idx].len = vb_offset;
-
-                               while (vq->desc[desc_idx].flags &
-                                       VRING_DESC_F_NEXT) {
-                                       desc_idx = vq->desc[desc_idx].next;
-                                        vq->desc[desc_idx].len = 0;
-                               }
-
                                /* Update used ring with desc information */
                                vq->used->ring[cur_idx & (vq->size - 1)].id
                                        = vq->buf_vec[vec_idx].desc_idx;
                                vq->used->ring[cur_idx & (vq->size - 1)].len
                                        = entry_len;
-                               entry_len = 0;
-                               cur_idx++;
                                entry_success++;
-                               seg_avail = 0;
-                               cpy_len = RTE_MIN(vb_avail, seg_avail);
+                               break;
                        }
                }
        }
-- 
1.8.4.2

Reply via email to