Skip site navigation (1)Skip section navigation (2)
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>