delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2002/03/12/11:54:23

X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f
Message-ID: <271DBBEEA095D511B80D009027DE7D67DABEB8@mcoexc01.mlm.maxtor.com>
From: "Dykstra, Sean" <Sean_Dykstra AT maxtor DOT com>
To: "'djgpp AT delorie DOT com'" <djgpp AT delorie DOT com>
Subject: Interrupt conflict - network card and ATA controller card
Date: Tue, 12 Mar 2002 09:51:10 -0700
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2653.19)
Reply-To: djgpp AT delorie DOT com

Sorry about the last message, got a new machine and it had HTML on by
default!

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!  
 
  

- Raw text -


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