Re: [Qemu-devel] hw/serial.c: Xmit fifo never used

2010-05-28 Thread Paul Brook
 The problem is that this path is never used as tsr_retry is never  0
 initially. So if qemu_chr_write() fails, we never try again but drop

qemu_chr_write is a blocking interface. It should only fail if an 
unrecoverable error occurs. In that case there's noting useful we can do, and 
no reason to retry.

Paul



[Qemu-devel] hw/serial.c: Xmit fifo never used

2010-05-26 Thread Frank Mehnert
Hi,

the xmit fifo of the serial device is never used. If qemu_chr_write()
fails (interface currently not able to send characters) then the
transmit_timer should be engaged to try to send the current character
from the fifo again after some time. The code is

} else if (qemu_chr_write(s-chr, s-tsr, 1) != 1) {
if ((s-tsr_retry  0)  (s-tsr_retry = MAX_XMIT_RETRY)) {
s-tsr_retry++;
qemu_mod_timer(s-transmit_timer,
   new_xmit_ts + s-char_transmit_time);
return;
}
...
}

The problem is that this path is never used as tsr_retry is never  0
initially. So if qemu_chr_write() fails, we never try again but drop
the character.

I assume the correct condition would be '= 0', that is

...
if ((s-tsr_retry = 0)  (s-tsr_retry = MAX_XMIT_RETRY)) {
s-tsr_retry++;
...

Kind regards,

Frank
-- 
Dr.-Ing. Frank Mehnert

Sitz der Gesellschaft:
Sun Microsystems GmbH, Sonnenallee 1, 85551 Kirchheim-Heimstetten
Amtsgericht München: HRB 161028
Geschäftsführer: Jürgen Kunz


signature.asc
Description: This is a digitally signed message part.