summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vmx/virtio.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2017-06-17 19:47:04 +0000
committeraiju <devnull@localhost>2017-06-17 19:47:04 +0000
commitcbcd9b1d718bb827432c944620fac09847c6abc0 (patch)
treeea9b4cc4fda34100b871662aa6401ef9c8855db1 /sys/src/cmd/vmx/virtio.c
parent31d14c316a73766057a02d57fd08d890a25d4783 (diff)
vmx: VESA support and other misc I/O improvements
Diffstat (limited to 'sys/src/cmd/vmx/virtio.c')
-rw-r--r--sys/src/cmd/vmx/virtio.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/src/cmd/vmx/virtio.c b/sys/src/cmd/vmx/virtio.c
index eba5313ce..345c94b3c 100644
--- a/sys/src/cmd/vmx/virtio.c
+++ b/sys/src/cmd/vmx/virtio.c
@@ -365,7 +365,7 @@ mkviodev(u16int devid, u32int pciclass, u32int subid)
d = emalloc(sizeof(VIODev));
d->pci = mkpcidev(allocbdf(), devid << 16 | 0x1AF4, pciclass << 8, 1);
d->pci->subid = subid << 16;
- mkpcibar(d->pci, 1, 256, vioio, d);
+ mkpcibar(d->pci, BARIO, 0, 256, vioio, d);
return d;
}
@@ -501,9 +501,14 @@ vionetwproc(void *vp)
continue;
}
if(len < 14){
- vmerror("virtio net: ignoring short packet (length=%d)", len);
+ /* openbsd ends up sending lots of zero length packets sometimes */
+ if(len != 0)
+ vmerror("virtio net: ignoring short packet (length=%d)", len);
vioputbuf(vb);
continue;
+ }else if(len < 60){ /* openbsd doesn't seem to know about ethernet minimum packet lengths either */
+ memset(txbuf + len, 0, 60 - len);
+ len = 60;
}
rc = write(v->net.writefd, txbuf, len);
vioputbuf(vb);