Device driver using DMA to slow

Andre van Huysteen (avh@inetsys.alt.za)
Wed, 19 Feb 97 15:25 GMT


Hallo

Linux version 2.1.26
PC - Pentium 133Mhz with PCI and AT Busses.

Using an AT bus card with DMA channels 1 & 3.

I wrote this device driver for the purpose to implement X.25 on Linux.

When I am tranmitting a HDLC frame through the SCC at 64Kbps, using DMA
I get underruns on the SCC which is not allowed. Basically the DMA does
not service the SCC request fast enough.

This ONLY happens when the disk gets accesses while transmitting the
frame, which means the DMA gets blocked which is not allowed.

Disabling the timer interrupt while transmitting the HDLC frame solves
the SCC underrun problem, but it slows down the system and the real time
clock looses time.

Do you know a better solution:

1. To speed up DMA on a AT bus card,

or

2. a system call to prevent time slicing but updates the real time clock
and block IDE/SCSI access while tranmitting a frame.

PS
This problem does not seem to happen on a 486 which is not using
PCI slots but we have to use a Pentium processor which only comes
with PCI & AT slots.

Thankyou

Andre