delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2002/03/10/04:56:50

X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f
From: "Sean Dykstra" <sdykstra AT sprynet DOT com>
To: <djgpp AT delorie DOT com>
Subject: Interrupt conflict - network card and ATA controller card
Date: Sun, 10 Mar 2002 02:56:16 -0700
Message-ID: <000001c1c819$d4a05720$a634fea9@hpsean>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.2627
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600
Reply-To: djgpp AT delorie DOT com

This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C1C7DF.28417F20
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hello!
 
I am having a problem with interrupt handling when a real mode ISR has
been installed for a network card and that network card exists at the
same IRQ as an add-in ATA controller card.  The ATA controller card does
not have a system drive on it, we are simply doing some low level tests
with it.  We are taking over the interrupt for the ATA controller card
and not for the network card.  I have tried hooking and chaining the
interrupt and I get the same results - if the user does a write to the
network drive, occasionally I will get random files appearing on the
network card that weren't there before, and sometimes I get GPF's.  On
some systems the program will lock up as soon as I get an ATA interrupt.
The really odd part is that most of the time it works (even if I don't
chain - if I just hook, it usually works, network and all!)  Also, if I
induce artificial delays between user commands to the network drive and
ATA controller commands, this seems to alleviate the problem.  Also, if
I never log onto the network, the program always works!
 
I have the entire application locked into memory using the crt0 startup
flags.  I am using CWSDPMI as the DPMI host.  It appears that the
problem occurs just after a write to the network drive, and we get an
interrupt for the ATA controller card.  The network drivers are using
real mode interrupts, and I am thinking that perhaps the network card is
in the middle of sending a data packet at the same time an ATA interrupt
occurs.  
 
This 'appears' to only occur on systems that have a network card with an
IRQ at the same address as the ATA IRQ.  I have tested this on around 40
systems, and only those that have shared the interrupt between the ATA
controller and the network card have seen the problem so far.  
 
I have only installed a protected mode interrupt for my ATA controller.
Do I need a real-mode version?  Do I need to do something to make sure
the real-mode ISR for the network card gets called? (other than
chaining?)  Are there protected mode DOS drivers for ethernet cards?
Any other ideas?  I am sure someone must have seen this type of problem,
with the extensive use of allegro out there.  (I am not using allegro).
 
Thanks in advance for any help!  So far DJGPP has been a great tool, and
I would hate to hit a roadblock now!  
 
 

------=_NextPart_000_0001_01C1C7DF.28417F20
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<TITLE>Message</TITLE>

<META content=3D"MSHTML 5.50.4522.1800" name=3DGENERATOR></HEAD>
<BODY>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2>Hello!</FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial size=3D2>I am =
having a=20
problem with interrupt handling when a real mode ISR has been installed =
for a=20
network card and that network card exists at the same IRQ as an add-in =
ATA=20
controller card.&nbsp; The ATA controller card does not have a system =
drive on=20
it, we are simply doing some low level tests with it.&nbsp; We are =
taking over=20
the interrupt for the ATA controller card and not for the network =
card.&nbsp; I=20
have tried hooking and chaining the&nbsp;interrupt and I get the same =
results -=20
if the user does a write to the network drive, occasionally I will get =
random=20
files appearing on the network card that weren't there before, and =
sometimes I=20
get GPF's.&nbsp; On some systems the program will lock up as soon as I =
get an=20
ATA interrupt.&nbsp; The really odd part is that most of the time it =
works (even=20
if I don't chain - if I just hook, it usually works, network and =
all!)&nbsp;=20
Also, if I induce artificial delays between user commands to the network =
drive=20
and ATA controller commands, this seems to&nbsp;alleviate the =
problem.&nbsp;=20
Also, if I never log onto the network, the program always=20
works!</FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial size=3D2>I have =
the entire=20
application locked into memory using the crt0 startup flags.&nbsp; I am =
using=20
CWSDPMI as the DPMI host.&nbsp; It appears that the problem occurs just =
after a=20
write to the network drive, and we get an interrupt for the ATA =
controller=20
card.&nbsp; The network drivers&nbsp;are using real mode interrupts, and =
I am=20
thinking that perhaps the network card is in the middle of sending a =
data packet=20
at the same time an ATA interrupt occurs.&nbsp; </FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial size=3D2>This =
'appears' to=20
only occur on systems that have a network card with an IRQ at the same =
address=20
as the ATA IRQ.&nbsp; I have tested this on around 40 systems, and only =
those=20
that have shared the interrupt between the ATA controller and the =
network card=20
have seen the problem so far.&nbsp; </FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial size=3D2>I have =
only=20
installed a protected mode interrupt for my ATA controller.&nbsp; Do I =
need a=20
real-mode version?&nbsp; Do I need to do something to make sure the =
real-mode=20
ISR for the network card gets called? (other than chaining?)&nbsp; Are =
there=20
protected mode DOS drivers for ethernet cards?&nbsp;&nbsp; Any other=20
ideas?&nbsp; I am sure someone must have seen this type of problem, with =
the=20
extensive use of allegro out there.&nbsp; (I am not using=20
allegro).</FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial size=3D2>Thanks =
in advance=20
for any help!&nbsp; So far DJGPP has been a great tool, and I would hate =
to hit=20
a roadblock now!&nbsp; </FONT></SPAN></DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D990163609-10032002><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</DIV></BODY></HTML>

------=_NextPart_000_0001_01C1C7DF.28417F20--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019