Ethernet Driver

I use QNX4.25 and a NE2000 compatible network card. The network driver I
use is the Net.ether1000. Is this driver interruptible? Does it do
anything that might affect an interrupt like use disable() ?

-Alan

Also, can anyone tell me what the commands are that enable or disable
nested interrupts.

I use QNX4.25 and a NE2000 compatible network card. The network driver I
use is the Net.ether1000. Is this driver interruptible? Does it do
anything that might affect an interrupt like use disable() ?

-Alan

“Alan Larson” <alan_lawson@wintec-inc.c om> wrote in message
news:908cbo$37e$1@inn.qnx.com

I use QNX4.25 and a NE2000 compatible network card. The network driver I
use is the Net.ether1000. Is this driver interruptible?

It does use interrupt.

Does it do anything that might affect an interrupt like use disable() ?

I don’t know about this percicular driver, but general no.

What exactly is your problem.

-Alan

There is no such think (it would mess up the system pretty bad).

“Alan Larson” <alan_lawson@wintec-inc.c om> wrote in message
news:908gbb$5is$1@inn.qnx.com

Also, can anyone tell me what the commands are that enable or disable
nested interrupts.

I use QNX4.25 and a NE2000 compatible network card. The network driver
I
use is the Net.ether1000. Is this driver interruptible? Does it do
anything that might affect an interrupt like use disable() ?

-Alan

I’m trying to track down a latency problem. I have an intermittent latency
that sometime goes as high as 120 microseconds. The latency occurs in an
interrupt handler. I’m tring to determine what is preventing my interrupt
handler from finishing its task quickley. The Interrupt handler I developed
is small and simple, and I am positive it is not causing the problem. I
also ran a test of the interrupt handler in isolation of the other processes
that verified it was working properly. The latency is caused by some other
piece of code. I trying to determine if something is delaying it from
starting. Another possibility is the interrupt handler is being
interrupted. My program uses the network quite a bit so if the network
driver does anything to inhibit an interrupt it might cause the problem.
Unfortunately, I can’t look at the driver’s souce, so I was wondering if
anyone else has had a similiar problem.

-Alan



What exactly is your problem.

Previously, Alan Larson wrote in comp.os.qnx:

Also, can anyone tell me what the commands are that enable or disable
nested interrupts.

A particular interrupt handler could turn off nested interrupts by
immediately doing an “sti” (or is it “clI”) instruction. No QNX
drivers do this, and it is not recommeneded. You can also give a
particular interrupt higher or highest priority by using parameters
to Proc.

Mitchell Schoenbrun --------- maschoen@pobox.com

Can you try a different model of card, PCI based for example.
The architecture of the NE2000 is not the best.

How do you measure latency?

What interrupt are you connected to. You can try option -i of
Proc32 to set your interrupt to highest priority.

“Alan Larson” <alan_lawson@wintec-inc.c om> wrote in message
news:908r0c$bjk$1@inn.qnx.com

I’m trying to track down a latency problem. I have an intermittent
latency
that sometime goes as high as 120 microseconds. The latency occurs in an
interrupt handler. I’m tring to determine what is preventing my interrupt
handler from finishing its task quickley. The Interrupt handler I
developed
is small and simple, and I am positive it is not causing the problem. I
also ran a test of the interrupt handler in isolation of the other
processes
that verified it was working properly. The latency is caused by some
other
piece of code. I trying to determine if something is delaying it from
starting. Another possibility is the interrupt handler is being
interrupted. My program uses the network quite a bit so if the network
driver does anything to inhibit an interrupt it might cause the problem.
Unfortunately, I can’t look at the driver’s souce, so I was wondering if
anyone else has had a similiar problem.

-Alan



What exactly is your problem.


\

The network driver most likely does disable interrupts for
some period of time, although probably not in the interrupt
handler, (i.e. higher priority interrupts can still execute) but
in certain sections at process time. Interrupts would
typically only be disabled for very short periods of
time (sub micro-second).

What I would suspect might be happening is that the network
card is asserting interrupts from multiple sources (e.g. send,
receive, crc error) at one time. The drivers interrupt handler
will typically not exit until all interrupt sources have been
cleared. If your interrupt is a lower priority, then your
handler would indeed be pre-empted.

I think you mentioned that you are using a ne2000 compatible.
You might want to try a DMA based network card since the
window where this situation can occur is much smaller, and if
it does occur the latency introduced would be smaller. Other
things to keep in mind are the PCI bus latency registers, which
must be adjusted appropriately in order to prevent cards from
hogging the PCI bus (PCI video cards are common bus hogs).

QNX is a RTOS but you must also have hardware that can be
operated in a deterministic manner, in order to have a real-time
system. QNX supports many pieces of h/w that are not
real-time compatible (for use at development time, rather than
run-time). It is up to the developer to choose an appropriate
hardware mix, and configure it properly.

“Alan Larson” <alan_lawson@wintec-inc.c om> wrote in message
news:908r0c$bjk$1@inn.qnx.com

I’m trying to track down a latency problem. I have an intermittent
latency
that sometime goes as high as 120 microseconds. The latency occurs in an
interrupt handler. I’m tring to determine what is preventing my interrupt
handler from finishing its task quickley. The Interrupt handler I
developed
is small and simple, and I am positive it is not causing the problem. I
also ran a test of the interrupt handler in isolation of the other
processes
that verified it was working properly. The latency is caused by some
other
piece of code. I trying to determine if something is delaying it from
starting. Another possibility is the interrupt handler is being
interrupted. My program uses the network quite a bit so if the network
driver does anything to inhibit an interrupt it might cause the problem.
Unfortunately, I can’t look at the driver’s souce, so I was wondering if
anyone else has had a similiar problem.

-Alan



What exactly is your problem.


\