X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f From: "Sean Dykstra" To: 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 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0001_01C1C7DF.28417F20" 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 Message
Hello!
 
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.  The ATA controller card does not have a system = drive on=20 it, we are simply doing some low level tests with it.  We are = taking over=20 the interrupt for the ATA controller card and not for the network = card.  I=20 have tried hooking and chaining the 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.  On some systems the program will lock up as soon as I = get an=20 ATA interrupt.  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!) =20 Also, if I induce artificial delays between user commands to the network = drive=20 and ATA controller commands, this seems to alleviate the = problem. =20 Also, if I never log onto the network, the program always=20 works!
 
I have = the entire=20 application locked into memory using the crt0 startup flags.  I am = using=20 CWSDPMI as the DPMI host.  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.  The network drivers 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. 
 
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.  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. 
 
I have = only=20 installed a protected mode interrupt for my ATA controller.  Do I = need a=20 real-mode version?  Do I need to do something to make sure the = real-mode=20 ISR for the network card gets called? (other than chaining?)  Are = there=20 protected mode DOS drivers for ethernet cards?   Any other=20 ideas?  I am sure someone must have seen this type of problem, with = the=20 extensive use of allegro out there.  (I am not using=20 allegro).
 
Thanks = in advance=20 for any help!  So far DJGPP has been a great tool, and I would hate = to hit=20 a roadblock now! 
 
 
------=_NextPart_000_0001_01C1C7DF.28417F20--