aboutsummaryrefslogtreecommitdiff
path: root/hw/net/net_rx_pkt.h
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki@daynix.com>2023-02-23 19:20:08 +0900
committerJason Wang <jasowang@redhat.com>2023-03-10 15:35:38 +0800
commitffbd2dbd8e647b68406179697c06d2668438b789 (patch)
tree4c71cb5af8144620a45549e1f99133047a888a79 /hw/net/net_rx_pkt.h
parentaac8f89dba870bb263d05bb84c3d64e0204be092 (diff)
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>
Diffstat (limited to 'hw/net/net_rx_pkt.h')
-rw-r--r--hw/net/net_rx_pkt.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/net/net_rx_pkt.h b/hw/net/net_rx_pkt.h
index 7277907a22..8b69ddb2da 100644
--- a/hw/net/net_rx_pkt.h
+++ b/hw/net/net_rx_pkt.h
@@ -313,6 +313,14 @@ void net_rx_pkt_set_vhdr_iovec(struct NetRxPkt *pkt,
const struct iovec *iov, int iovcnt);
/**
+ * unset vhdr data from packet context
+ *
+ * @pkt: packet
+ *
+ */
+void net_rx_pkt_unset_vhdr(struct NetRxPkt *pkt);
+
+/**
* save packet type in packet context
*
* @pkt: packet