Writing the checksum in the packet needs room for 2 bytes, not 1 byte.
Fixes: 96cb6711939e ("net/virtio: support Rx checksum offload")
Fixes: 0eaf7fc2fe8e ("net/virtio: separate AVX Rx/Tx")
Cc: [email protected]
Signed-off-by: Morten Brørup <[email protected]>
---
drivers/net/virtio/virtio_rxtx.c | 2 +-
drivers/net/virtio/virtio_rxtx_packed.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index edecd2011f..1afb68bc69 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -955,7 +955,7 @@ virtio_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr
*hdr)
if (likely(csum != 0xffff))
csum = ~csum;
off = hdr->csum_offset + hdr->csum_start;
- if (rte_pktmbuf_data_len(m) >= off + 1)
+ if (rte_pktmbuf_data_len(m) >= off + sizeof(uint16_t))
*rte_pktmbuf_mtod_offset(m, uint16_t *,
off) = csum;
}
diff --git a/drivers/net/virtio/virtio_rxtx_packed.h
b/drivers/net/virtio/virtio_rxtx_packed.h
index f7cc60bb51..6501ede3f0 100644
--- a/drivers/net/virtio/virtio_rxtx_packed.h
+++ b/drivers/net/virtio/virtio_rxtx_packed.h
@@ -185,7 +185,7 @@ virtio_vec_rx_offload(struct rte_mbuf *m, struct
virtio_net_hdr *hdr)
if (likely(csum != 0xffff))
csum = ~csum;
off = hdr->csum_offset + hdr->csum_start;
- if (rte_pktmbuf_data_len(m) >= off + 1)
+ if (rte_pktmbuf_data_len(m) >= off + sizeof(uint16_t))
*rte_pktmbuf_mtod_offset(m, uint16_t *,
off) = csum;
}
--
2.43.0