> /* Callback function that's called when the guest sends us data */ > static void flush_buf(VirtIOSerialPort *port, const uint8_t *buf, size_t > len) { > VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); > + int ret; > > - qemu_chr_write(vcon->chr, buf, len); > + ret = qemu_chr_write(vcon->chr, buf, len); > + if (ret == -EAGAIN) { > + virtio_serial_throttle_port(port, true); > + } > }
This looks wrong. It will loose data in the case of a partial write (i.e. ret < len) Paul