Commit e5ebd7db authored by Kevin Wolf's avatar Kevin Wolf

e1000: Acknowledge interrupts explicitly by ICR write

The old e1000 models used to clear the interrupt flags in ICR on read,
but e1000e doesn't do this any more. Just writing the bits back is fine
for both, so let's do just that.

Clearing the bits must be done before actually processing the interrupt
in order to avoid races with new events.
Signed-off-by: Kevin Wolf's avatarKevin Wolf <>
parent f8675858
......@@ -584,6 +584,7 @@ static void e1000_handle_interrupt(struct cdi_device* device)
struct e1000_device* netcard = (struct e1000_device*) device;
uint32_t icr = reg_inl(netcard, REG_INTR_CAUSE);
reg_outl(netcard, REG_INTR_CAUSE, icr);
#ifdef DEBUG
printf("e1000: Interrupt, ICR = %08x\n", icr);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment