mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
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>
This commit is contained in:
parent
786fd2b0f8
commit
d32fcad366
5 changed files with 10 additions and 10 deletions
|
@ -40,7 +40,7 @@ typedef struct NetSocketState {
|
|||
unsigned int index;
|
||||
unsigned int packet_len;
|
||||
unsigned int send_index; /* number of bytes sent (only SOCK_STREAM) */
|
||||
uint8_t buf[4096];
|
||||
uint8_t buf[NET_BUFSIZE];
|
||||
struct sockaddr_in dgram_dst; /* contains inet host and port destination iff connectionless (SOCK_DGRAM) */
|
||||
IOHandler *send_fn; /* differs between SOCK_STREAM/SOCK_DGRAM */
|
||||
bool read_poll; /* waiting to receive data? */
|
||||
|
@ -146,7 +146,7 @@ static void net_socket_send(void *opaque)
|
|||
NetSocketState *s = opaque;
|
||||
int size, err;
|
||||
unsigned l;
|
||||
uint8_t buf1[4096];
|
||||
uint8_t buf1[NET_BUFSIZE];
|
||||
const uint8_t *buf;
|
||||
|
||||
size = qemu_recv(s->fd, buf1, sizeof(buf1), 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue