Subject: Re: kern/34834: ste driver generates packet burst after timeout
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Michael van Elst <mlelstv@serpens.de>
List: netbsd-bugs
Date: 07/30/2007 22:20:03
The following reply was made to PR kern/34834; it has been noted by GNATS.

From: Michael van Elst <mlelstv@serpens.de>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/34834: ste driver generates packet burst after timeout
Date: Tue, 31 Jul 2007 00:15:16 +0200

 I haven't found the reason for the packet bursts, but for the
 device timeouts.
 
 When the ste chip receives an interrupt, then all corresponding
 interrupt sources are masked in the interrupt enable register
 (by virtue of reading the IntStatusAck register). When the driver
 has completed the interrupt handling the interrupts are enabled again.
 
 The problem is that another interrupt condition might be met while
 that specific interrupt source is disabled. Enabling that interrupt
 source will not cause the interrupt signal to be posted.
 
 As a workaround I have added a loop to the interrupt handler that
 continues handling interrupts until no interrupt is pending.
 
 I haven't encountered a device timeout since then.
 
 -- 
                                 Michael van Elst
 Internet: mlelstv@serpens.de
                                 "A potential Snark may lurk in every tree."