Date: Thu, 4 Feb 1999 01:07:56 +0200 (EET) From: "Vladimir N.Silyaev" <vns@delta.odessa.ua> To: Emmanuel.Duros@sophia.inria.fr Cc: freebsd-hackers@FreeBSD.ORG Subject: writing network device driver - pb with interrupt levels Message-ID: <199902032307.BAA01247@storage.delta.odessa.ua>
next in thread | raw e-mail | index | archive | help
Hi, >I am writing a driver for a network card and I have a pb with interrupt >levels. >Basically, when I read data from the card it works fine as long as I do >not intensively read from/write to the hard drive. >This card works as follows: >It has a fifo which gets filled with incoming traffic (IP datagrams) and >generates an interrupt when the fifo goes from the an empty to a >non-empty state. [skipped] >This code works fine when there is no read/write on my IDE hard drive. >When writing on the IDE drive, the fifo of the card gets completely >filled and therefore loses bytes. In fact I cannot read data as fast as >it arrives because the CPU is busy with I/O accesses on the IDE >drive. It seems the drive I/O have higher interrupt level than the card >has. (BTW, the code works fine with an SCSI drive instead !?!??!) You can try to use the fast interrupt handlers. This hanlers are working in any splXXX level and of course our handler will be interrupt data transfer cycle with the IDE drive. At this time in the official FreeBSD kernel fast interrupts are used only in the sio and derived from it code. The disadvantage of fast interrupt is a nightmare in syncronization: only via processor level clear/enable interrupt must be used. With best regards, V.Silyaev To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902032307.BAA01247>