mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 09:11:07 -04:00
On slow machines interrupts could be lost, so check for pending
interrupts in a loop. Tested by: Andrew Gordon <arg-bsd@arg1.demon.co.uk>
This commit is contained in:
parent
dcd88dc271
commit
bb83e7583e
1 changed files with 18 additions and 11 deletions
|
|
@ -974,18 +974,25 @@ avma1pp2_intr(void *xsc)
|
|||
/* was there an interrupt from this card ? */
|
||||
if ((stat & ASL_IRQ_Pending) == 0)
|
||||
return; /* no */
|
||||
/* interrupts are high active */
|
||||
if (stat & ASL_IRQ_TIMER)
|
||||
NDBGL1(L1_H_IRQ, "timer interrupt ???");
|
||||
if (stat & ASL_IRQ_HSCX)
|
||||
/* For slow machines loop as long as an interrupt is active */
|
||||
for (; ((stat & ASL_IRQ_Pending) != 0) ;)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "HSCX");
|
||||
avma1pp2_hscx_int_handler(sc);
|
||||
}
|
||||
if (stat & ASL_IRQ_ISAC)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "ISAC");
|
||||
ifpi2_isacsx_intr(sc);
|
||||
/* interrupts are high active */
|
||||
if (stat & ASL_IRQ_TIMER)
|
||||
NDBGL1(L1_H_IRQ, "timer interrupt ???");
|
||||
if (stat & ASL_IRQ_HSCX)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "HSCX");
|
||||
avma1pp2_hscx_int_handler(sc);
|
||||
}
|
||||
if (stat & ASL_IRQ_ISAC)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "ISAC");
|
||||
ifpi2_isacsx_intr(sc);
|
||||
}
|
||||
stat = bus_space_read_1(btag, bhandle, STAT0_OFFSET);
|
||||
NDBGL1(L1_H_IRQ, "stat %x", stat);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue