Ignore 'invalid' interrupts that occur while the interface is down.
These are probably generated by other PCI devices sharing the TLAN's interrupt. The programmer's guide says to simply re-enable interrupts and return if one of these is detected. Prompted by bug report from: Bill Fenner
This commit is contained in:
parent
cabb97dcbf
commit
d31f26f41e
@ -29,7 +29,7 @@
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_tl.c,v 1.4 1998/05/22 15:32:22 wpaul Exp $
|
||||
* $Id: if_tl.c,v 1.5 1998/05/24 00:56:49 wpaul Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -240,7 +240,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] =
|
||||
"$Id: if_tl.c,v 1.4 1998/05/22 15:32:22 wpaul Exp $";
|
||||
"$Id: if_tl.c,v 1.5 1998/05/24 00:56:49 wpaul Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -1978,6 +1978,16 @@ static void tl_intr(xilist)
|
||||
* doesn't actually belong to us.
|
||||
*/
|
||||
if (ilist->tl_active_phy == TL_PHYS_IDLE) {
|
||||
/*
|
||||
* Exception: if this is an invalid interrupt,
|
||||
* just re-enable interrupts and ignore it. Probably
|
||||
* what's happened is that we got an interrupt meant
|
||||
* for another PCI device that's sharing our IRQ.
|
||||
*/
|
||||
if (ints == TL_INTR_INVALID) {
|
||||
csr->tl_host_cmd |= type;
|
||||
return;
|
||||
}
|
||||
printf("tlc%d: interrupt type %x with all phys idle\n",
|
||||
ilist->tlc_unit, ints);
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user