SVR5 and SCO OpenServer
process an MDI device interrupt
and general usage information
about this entry point routine in DDI drivers.
for syntax, context,
and general usage information
about this entry point routine in ODDI drivers.
entry point routine is called
when the network adapter generates an interrupt.
It may also be called if another device
shares this interrupt vector with
the MDI driver.
It is extremely important that an MDI driver
spends a small amount of time in its interrupt handler
so that system performance is not adversely affected.
routine can be called immediately after the
The MDI driver should perform
the following processing:
Additional processing can occur in the
entry point routine
if the service from interrupt algorithm is implemented;
``Increasing transmit performance'' in Developing MDI network adapter drivers.
Check whether the interrupt was generated
by the MDI device or another device that
shares this interrupt.
If the MDI device did not generate the interrupt,
Filter out any frames
based on the destination MAC address.
The destination MAC address must be one of:
If this is a received frame interrupt,
allocate a single STREAMS message block
large enough to hold the received frame
Copy the frame from the adapter into the STREAMS block
function to hand this message to the next module upstream
If the driver is used on a smart-bus system (that is,
PCI, EISA, or MCA),
your interrupt routine can be called if interrupts are shared
with another device. In this case, you must check all
of your devices using the interrupt to see if it is yours.
For DDI 7 drivers, when you find one instance of
your hardware at a particular
interrupt, be sure to keep searching; another instance of your
hardware may also be using that interrupt.
MDI drivers generally should not make use of
a STREAMS read
inbound frames should be passed up at interrupt time.
If a spurious interrupt occurs,
the MDI driver
should increment the count of spurious interrupts
in its statistics structure (see
and exit from the interrupt routine as soon as possible.
Spurious interrupts occur when one of the following is true:
The driver has not been opened.
The driver has not been bound with the
The interrupt was not expected
(in other words, the Interrupt Status Register did not
indicate that anything needed to be done)
To mask interrupts from the network adapter,
MDI drivers should use an appropriate
or the kernel function
Do not use
or the 80?86 STI/CLI instructions.
Do not assume that all interrupts are in the range 0-15 or 0-31.
For example, interrupt numbers can be up to 255 on APIC
PCI machines. It is preferable to store the interrupt in
the per-device structure(s) and search them for interrupt
matches, rather than declaring a static array of interrupt
1, 2, 2.1 running with ddi: 7, 7mp, 8, 8mp.
manual page on OpenServer 6 and the
manual page on UnixWare 7.1.4.
``MAC addresses'' in HDK Technical Reference,
``Spin locks (DDI)'' in HDK Technical Reference
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005