diff options
author | Scott Feldman <sfeldma@cumulusnetworks.com> | 2013-03-18 11:43:44 -0700 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2013-03-25 11:14:07 +0100 |
commit | d32fcad366e5f45d33dab2ee4de0e5729439680b (patch) | |
tree | 6881ca1e804644a6361a76813318bcf1a36c7d99 /net/net.c | |
parent | 786fd2b0f87baded8c9e55307b99719eea3e016e (diff) | |
download | hqemu-d32fcad366e5f45d33dab2ee4de0e5729439680b.zip hqemu-d32fcad366e5f45d33dab2ee4de0e5729439680b.tar.gz |
net: increase buffer size to accommodate Jumbo frame pkts
Socket buffer sizes were hard-coded to 4K for VDE and socket netdevs. Bump this
up to 68K (ala tap netdev) to handle maximum GSO packet size (64k) plus plenty
of room for the ethernet and virtio_net headers.
Originally, ran into this limitation when using -netdev UDP sockets to connect
VM-to-VM, where VM interface is configure with MTU=9000. (Using virtio_net
NIC model). Test is simple: ping -M do -s 8500 <target>. This test will
attempt to ping with unfragmented packet of given size. Without patch, size
is limited to < 4K (minus protocol hdrs). With patch, ping test works with pkt
size up to 9000 (again, minus protocol hdrs).
v2: per Stefan, increase buf size to (4096+65536) as done in tap and apply
to vde and socket netdevs.
v1: increase buf size to 12K just for -netdev UDP sockets
Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'net/net.c')
-rw-r--r-- | net/net.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -497,7 +497,7 @@ ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size) static ssize_t nc_sendv_compat(NetClientState *nc, const struct iovec *iov, int iovcnt) { - uint8_t buffer[4096]; + uint8_t buffer[NET_BUFSIZE]; size_t offset; offset = iov_to_buf(iov, iovcnt, 0, buffer, sizeof(buffer)); |