diff --git a/src/add-ons/kernel/drivers/network/3com/pci/if_xl.c b/src/add-ons/kernel/drivers/network/3com/pci/if_xl.c index 9ac3d55de0..1ccfcc32ab 100644 --- a/src/add-ons/kernel/drivers/network/3com/pci/if_xl.c +++ b/src/add-ons/kernel/drivers/network/3com/pci/if_xl.c @@ -2286,10 +2286,15 @@ xl_intr(void *arg) } #endif + #ifndef __HAIKU__ while ((status = CSR_READ_2(sc, XL_STATUS)) & XL_INTRS && status != 0xFFFF) { CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_INTR_ACK|(status & XL_INTRS)); +#else + status = atomic_and((int32 *)&sc->xl_intr_status, 0); + if ((status & XL_INTRS) != 0 && status != 0xFFFF) { +#endif if (status & XL_STAT_UP_COMPLETE) { int curpkts;