]> git.ipfire.org Git - thirdparty/qemu.git/commit - hw/net/net_tx_pkt.c
e1000e: Perform software segmentation for loopback
authorAkihiko Odaki <akihiko.odaki@daynix.com>
Thu, 23 Feb 2023 10:20:08 +0000 (19:20 +0900)
committerJason Wang <jasowang@redhat.com>
Fri, 10 Mar 2023 07:35:38 +0000 (15:35 +0800)
commitffbd2dbd8e647b68406179697c06d2668438b789
tree4c71cb5af8144620a45549e1f99133047a888a79
parentaac8f89dba870bb263d05bb84c3d64e0204be092
e1000e: Perform software segmentation for loopback

e1000e didn't perform software segmentation for loopback if virtio-net
header is enabled, which is wrong.

To fix the problem, introduce net_tx_pkt_send_custom(), which allows the
caller to specify whether offloading should be assumed or not.

net_tx_pkt_send_custom() also allows the caller to provide a custom
sending function. Packets with virtio-net headers and ones without
virtio-net headers will be provided at the same time so the function
can choose the preferred version. In case of e1000e loopback, it prefers
to have virtio-net headers as they allows to skip the checksum
verification if VIRTIO_NET_HDR_F_DATA_VALID is set.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
hw/net/e1000e_core.c
hw/net/net_rx_pkt.c
hw/net/net_rx_pkt.h
hw/net/net_tx_pkt.c
hw/net/net_tx_pkt.h