Subject: Re: kern/33445: Fixes for Promise SATA (pdcsata) PCI driver
To: None <gnats-bugs@NetBSD.org>
From: Timo Schoeler <timo.schoeler@riscworks.net>
List: netbsd-bugs
Date: 06/11/2006 15:11:33
>  	Hello Timo.  I think I see your problem.  I was a bit confused about
>  the NetBSD interrupt frame work and wasn't sure if the return value from an
>  interrupt routine mattered.  It does, and your problem is that the revised
>  interrupt routine always claimed all interrupts.  That works fine for
>  non-shared interrupts, but you're sharing interrupts with the fxp1 card and
>  the pdcsata driver, so things went south.
>  	Here's a patch which fixes that issue.  Could you try it and confirm
>  that all is now well?
>  -thanks
>  -Brian
>  
>  Index: pdcsata.c

(patch was here)

hi,

sorry for replying late; i fiddled around a lot and it seems that 
there's a bit voodoo included.

i have one machine in a rack hosting company with nearly the same config 
as the machine here. the remote machine runs 3.0-RELEASE. it's connected 
to a D-Link switch and runs fine, wrt our topic that is i can ping flood 
_from_ that machine without losing packets.

trying it on the (nearly same configured) machine here, i get dropped 
packets with 3.0-RELEASE as well as a 3.0-STABLE from late march and 
3.0-STABLE from yesterday, with your above patch applied.

aldebaran: {5} dmesg | grep fxp0
fxp0 at pci0 dev 7 function 0: i82559 Ethernet, rev 8
fxp0: interrupting at ioapic1 pin 10 (irq 5)
fxp0: May need receiver lock-up workaround
fxp0: Ethernet address 00:10:83:ff:e1:5a
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4

this one is an on board NIC (the machines are HP X-Class, and P-Class, 
respectively). i put a PCI NIC (same chipset, rev 12) into the machine 
and disabled the on board NIC, same problem. when activating both NICs, 
neither NIC can be used (the NIC connected to the switch says 'active', 
but everything above ISO layer three is dead).

at the moment i run the machine with the promise SATA HBA,

pdcsata0: Promise PDC40718 SATA300 controller (rev. 0x02)
pdcsata0: interrupting at ioapic1 pin 2 (irq 11)
pdcsata0: bus-master DMA support present

on board NIC, and an adaptec 29160:

aldebaran: {6} dmesg | grep pin
ioapic0: pa 0xfec00000, version 11, 16 pins
ioapic1: pa 0xfec01000, version 11, 16 pins
ahc1: interrupting at ioapic1 pin 6 (irq 11)
pdcsata0: interrupting at ioapic1 pin 2 (irq 11)
fxp0: interrupting at ioapic1 pin 10 (irq 5)
rccide0: primary channel interrupting at ioapic0 pin 14 (irq 14)

it loses packets on fxp0 when ping flooding _from_ the machine, but runs 
fine for ftp, ssh, and scp, respectively.

pdcsata0 does not seem to lose interrupts, even under heavy load.

timo