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:
Bill Paul 1998-05-26 23:42:24 +00:00
parent cabb97dcbf
commit d31f26f41e

View File

@ -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;