Head segment data_len field is wrongly summed with the length
of all the segments of the chain, whereas it should be the
length of of the first segment only.

Fixes: a76290c8f1cf ("net/virtio: implement Rx path for packed queues")
Cc: [email protected]

Reported-by: Yaroslav Brustinov <[email protected]>
Reviewed-by: David Marchand <[email protected]>
Signed-off-by: Maxime Coquelin <[email protected]>
---
 drivers/net/virtio/virtio_rxtx.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index acee4fcc07..358cc86627 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -1875,7 +1875,6 @@ virtio_recv_mergeable_pkts_packed(void *rx_queue,
                        rxm->data_len = (uint16_t)(len[i]);
 
                        rx_pkts[nb_rx]->pkt_len += (uint32_t)(len[i]);
-                       rx_pkts[nb_rx]->data_len += (uint16_t)(len[i]);
 
                        if (prev)
                                prev->next = rxm;
@@ -1912,7 +1911,6 @@ virtio_recv_mergeable_pkts_packed(void *rx_queue,
                                prev->next = rxm;
                                prev = rxm;
                                rx_pkts[nb_rx]->pkt_len += len[extra_idx];
-                               rx_pkts[nb_rx]->data_len += len[extra_idx];
                                extra_idx += 1;
                        }
                        seg_res -= rcv_cnt;
-- 
2.21.0

Reply via email to