Skip to contentSkip to conversation

2.5.x and 8250 UART problems

DISCUSSION [email protected] 3 participants 5 messages Oct 5, 2002

lore
Share & tools
lore
#0 lore raw

I've noticed that 8250 UART based serial port performance is poorer in 2.5.x than 2.4.x and 2.2.x, on a couple of my machines.

The 486 SX-20 with 4 MB RAM, running 2.2.21 reliably achieves about 650 BPS download from another machine, with the port runnnig at 9600 bps. With 2.5.40, many characters are lost at 9600, making, e.g. a ZModem transfer retry for almost every block.

A 486 SX-25 with 8 MB RAM, running 2.4.19 manages about 950 BPS reliably with the port set at 9600 bps. With 2.5.40, there are again a lot of lost characters.

I know these are ancient machines, with rediculously low amounts of memory, but surely 9600 bps should be reliable, even if performance drops to 600-700 BPS, or even lower.

I originally thought that the new kernel was using up memory that was previously available to be used as a buffer, and that extra hard disk access was causing the lost characters, but this doesn't seem to be the case.

Any idea what's causing this? I can send more info and do more tests as required.

John.

#1 lore raw
Quoted 7 lines · On Sat, Oct 05, 2002 at 04:06:45PM +0100, [email protected] wrote:

I've noticed that 8250 UART based serial port performance is poorer in 2.5.x than 2.4.x and 2.2.x, on a couple of my machines.

The 486 SX-20 with 4 MB RAM, running 2.2.21 reliably achieves about 650 BPS download from another machine, with the port runnnig at 9600 bps. With 2.5.40, many characters are lost at 9600, making, e.g. a ZModem transfer retry for almost every block.

Have you tried 'hdparm -u'?

Quoted 1 line
Signature · 3 lines
http://www.PowerDNS.com          Versatile DNS Software & Services
http://www.tk                              the dot in .tk
http://lartc.org           Linux Advanced Routing & Traffic Control HOWTO
#2 lore raw
Quoted 9 lines
Quoted 7 lines

I've noticed that 8250 UART based serial port performance is poorer in 2.5.x than 2.4.x and 2.2.x, on a couple of my machines.

The 486 SX-20 with 4 MB RAM, running 2.2.21 reliably achieves about 650 BPS download from another machine, with the port runnnig at 9600 bps. With 2.5.40, many characters are lost at 9600, making, e.g. a ZModem transfer retry for almost every block.

Have you tried 'hdparm -u'?

Hmmm, I can do, but I thought it was a Bad Thing (tm) for ISA based controllers? I could be wrong...

John.

#3 lore raw
In reply to [email protected]
Quoted 4 lines · On Sat, Oct 05, 2002 at 04:06:45PM +0100, [email protected] wrote:

The 486 SX-20 with 4 MB RAM, running 2.2.21 reliably achieves about 650 BPS download from another machine, with the port runnnig at 9600 bps. With 2.5.40, many characters are lost at 9600, making, e.g. a ZModem transfer retry for almost every block.

Ok, we need to find out where stuff is getting dropped. Dumping /proc/tty/driver/serial is always a good idea when reporting anything like this.

The important thing is the change in the counters. Can you supply the port in question both before and after the zmodem run please?

Thanks.

Signature · 2 lines
Russell King ([email protected])                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html
#4 lore raw
Quoted 4 lines
Quoted 4 lines

The 486 SX-20 with 4 MB RAM, running 2.2.21 reliably achieves about 650 BPS download from another machine, with the port runnnig at 9600 bps. With 2.5.40, many characters are lost at 9600, making, e.g. a ZModem transfer retry for almost every block.

OK, first of all, I was wrong about it being an 8250 UART, I checked, and it is infact a 16540, not that it should make much difference, anyway :-)

Quoted 6 lines

Ok, we need to find out where stuff is getting dropped. Dumping /proc/tty/driver/serial is always a good idea when reporting anything like this.

The important thing is the change in the counters. Can you supply the port in question both before and after the zmodem run please?

OK, here goes, I used RZ on the command line instead of Minicom on the laptop, to maximize available memory.

---

Using 2.2.21 on the 486 laptop:

Laptop, (just booted):

0: uart:16450 port:3F8 irq:4 tx:0 rx:0 CTS|DTR|DSR

Desktop:

1: uart:16550A port:000002F8 irq:3 tx:946840 rx:5516126 RTS|CTS|DTR|DSR

Now transfer a 64K file using Z-modem.

Laptop:

0: uart:16450 port:3F8 irq:4 baud:9600 tx:104 rx:66050 CTS|DSR

Desktop:

1: uart:16550A port:000002F8 irq:3 tx:1012890 rx:5516209 RTS|DTR

---

Using 2.5.40 on the laptop:

Laptop, (just booted):

0: uart:16450 port:000003F8 irq:4 tx:0 rx:0 CTS|DSR

Desktop:

1: uart:16550A port:000002F8 irq:3 tx:1012890 rx:5516209 RTS|DTR

Now transfer a 64K file using Z-modem.

Contrary to what I originally thought, it did drop characters during disk access, but then it seemed to continue, only to drop characters again a second later.

Laptop:

0: uart:16450 port:000003F8 irq:4 tx:230 rx:73291 oe:45 CTS|DSR

Desktop:

1: uart:16550A port:000002F8 irq:3 tx:1086246 rx:5516439 RTS|DTR

---

I am begining to wonder whether it is something straightforward, like the newer kernel being more bloated, and therefore not being cached so well, causing the machine to run generally slower.

I remember seeing dropped characters with a bloated 2.2.13 kernel on that machine.

However, when I upgraded the other laptop from 2.2.x to 2.4.x, I saw an improvement in serial port performance, from an average of ~650 cps to ~950 cps. Although I also upgraded glibc at the same time. Seems like there are a lot of variables, sorry about that! :-)

Hope the above info is helpful. If you need me to do any more tests, or some with the other machine, let me know.

Cheers,

John.