From 0014abfcc412e5ed4440bb2577345b8c5a67e9dd Mon Sep 17 00:00:00 2001 From: Gleb Smirnoff Date: Thu, 22 Dec 2005 09:09:39 +0000 Subject: [PATCH] Add a quirk to fix resume on some laptops. Reported by: joe Reported by: Huang wen hui Reported by: Jacques Garrigue PR: kern/89825 --- sys/dev/em/if_em.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sys/dev/em/if_em.c b/sys/dev/em/if_em.c index 8f8f465571e..081a24332f6 100644 --- a/sys/dev/em/if_em.c +++ b/sys/dev/em/if_em.c @@ -1048,6 +1048,15 @@ em_intr(void *arg) else if (reg_icr == 0) break; + /* + * XXX: some laptops trigger several spurious interrupts + * on em(4) when in the resume cycle. The ICR register + * reports all-ones value in this case. Processing such + * interrupts would lead to a freeze. I don't know why. + */ + if (reg_icr == 0xffffffff) + break; + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { em_process_receive_interrupts(adapter, -1); em_clean_transmit_interrupts(adapter);