aboutsummaryrefslogtreecommitdiff
path: root/hw/net
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2014-08-25 17:34:30 +0100
committerPeter Maydell <peter.maydell@linaro.org>2014-08-25 17:34:30 +0100
commit3dd359c2d34c6abf385d58da863f337b39702585 (patch)
tree2097c65507985aa466f854093a373d0653572df4 /hw/net
parent33886ebeec0c0ff6253a49253fae0db44c9ed0f3 (diff)
parent40a87c6c9b11ef9c14e0301f76abf0eb2582f08e (diff)
downloadqemu-3dd359c2d34c6abf385d58da863f337b39702585.zip
qemu-3dd359c2d34c6abf385d58da863f337b39702585.tar.gz
qemu-3dd359c2d34c6abf385d58da863f337b39702585.tar.bz2
Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-08-24' into staging
trivial patches for 2014-08-24 # gpg: Signature made Sun 24 Aug 2014 14:28:49 BST using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 6F67 E18E 7C91 C5B1 5514 66A7 BEE5 9D74 A4C3 D7DB * remotes/mjt/tags/trivial-patches-2014-08-24: vmxnet3: Pad short frames to minimum size (60 bytes) libdecnumber: Fix warnings from smatch (missing static, boolean operations) linux-user: fix file descriptor leaks po: Fix Makefile rules for in-tree builds without configuration slirp/misc: Use the GLib memory allocation APIs configure: no need to mkdir QMP dma: axidma: Variablise repeated s->streams[i] sub-expr microblaze: ml605: Get rid of ddr_base variable tests/bios-tables-test: check the value returned by fopen() tcg: dump op count into qemu log util/path: Use the GLib memory allocation routines Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/net')
-rw-r--r--hw/net/vmxnet3.c10
1 files changed, 10 insertions, 0 deletions
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);