[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/11] vmxnet3: Pad short frames to minimum size (60
From: |
Michael Tokarev |
Subject: |
[Qemu-devel] [PULL 11/11] vmxnet3: Pad short frames to minimum size (60 bytes) |
Date: |
Sun, 24 Aug 2014 17:31:02 +0400 |
From: Ben Draper <address@hidden>
When running VMware ESXi under qemu-kvm the guest discards frames
that are too short. Short ARP Requests will be dropped, this prevents
guests on the same bridge as VMware ESXi from communicating. This patch
simply adds the padding on the network device itself.
Signed-off-by: Ben Draper <address@hidden>
Reviewed-by: Dmitry Fleytman <address@hidden>
Cc: address@hidden
Signed-off-by: Michael Tokarev <address@hidden>
---
hw/net/vmxnet3.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 791321f..f246fa1 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -34,6 +34,7 @@
#define PCI_DEVICE_ID_VMWARE_VMXNET3_REVISION 0x1
#define VMXNET3_MSIX_BAR_SIZE 0x2000
+#define MIN_BUF_SIZE 60
#define VMXNET3_BAR0_IDX (0)
#define VMXNET3_BAR1_IDX (1)
@@ -1871,12 +1872,21 @@ vmxnet3_receive(NetClientState *nc, const uint8_t *buf,
size_t size)
{
VMXNET3State *s = qemu_get_nic_opaque(nc);
size_t bytes_indicated;
+ uint8_t min_buf[MIN_BUF_SIZE];
if (!vmxnet3_can_receive(nc)) {
VMW_PKPRN("Cannot receive now");
return -1;
}
+ /* Pad to minimum Ethernet frame length */
+ if (size < sizeof(min_buf)) {
+ memcpy(min_buf, buf, size);
+ memset(&min_buf[size], 0, sizeof(min_buf) - size);
+ buf = min_buf;
+ size = sizeof(min_buf);
+ }
+
if (s->peer_has_vhdr) {
vmxnet_rx_pkt_set_vhdr(s->rx_pkt, (struct virtio_net_hdr *)buf);
buf += sizeof(struct virtio_net_hdr);
--
1.7.10.4
- [Qemu-devel] [PULL 00/11] Trivial patches for 2014-08-24, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 09/11] linux-user: fix file descriptor leaks, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 03/11] tests/bios-tables-test: check the value returned by fopen(), Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 06/11] configure: no need to mkdir QMP, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 02/11] tcg: dump op count into qemu log, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 10/11] libdecnumber: Fix warnings from smatch (missing static, boolean operations), Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 01/11] util/path: Use the GLib memory allocation routines, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 07/11] slirp/misc: Use the GLib memory allocation APIs, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 11/11] vmxnet3: Pad short frames to minimum size (60 bytes),
Michael Tokarev <=
- [Qemu-devel] [PULL 08/11] po: Fix Makefile rules for in-tree builds without configuration, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 05/11] dma: axidma: Variablise repeated s->streams[i] sub-expr, Michael Tokarev, 2014/08/24
- [Qemu-devel] [PULL 04/11] microblaze: ml605: Get rid of ddr_base variable, Michael Tokarev, 2014/08/24
- Re: [Qemu-devel] [PULL 00/11] Trivial patches for 2014-08-24, Peter Maydell, 2014/08/25