Hi, We have a custom PCI (slave only, very slow) card to do data transfer, and on some systems we are seeing problems with the data source FIFO filling up.
The data rate is 1.7Mb/sec and the FIFO is 96k in size, however it only generates an IRQ when it has 16k of data in it, so it should have ~4.5msec of buffer available once an IRQ is issued. The systems are Supermicro C2SBA+ with Core 2 Duos of varying speeds (~1.5GHz) running FreeBSD 6.2 amd64. The kernel conf is basically GENERIC, although I have also tried compiling out SMP but the problem still persists. The card is not sharing an IRQ with any other card I can see (it has irq 20 and nothing else uses that). Due to the legacy nature of the card the interrupt handler for it is pretty horrible - it reads 16k worth of data out 32 bits at a time doing slave transactions. I can't do bursting because it is reading from a FIFO, and due to the speed of the FIFO & cable runs each read takes several PCI cycles. I did some googling and found http://www.mail-archive.com/freebsd-usb%40freebsd.org/msg04576.html which would seem to indicate we would be OK. Unfortunately it seems that _something_ blocks interrupts for >4 milliseconds, however I have no real idea how to go about finding what it is.. Does anyone have any suggestions? (apart from get a new DAQ card, I know this one already :) Thanks. -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
signature.asc
Description: This is a digitally signed message part.