summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-12-02 08:33:56 +0000
committerglebius <glebius@FreeBSD.org>2005-12-02 08:33:56 +0000
commit0f4e96e8f512d74d12410da9f27b585e1f37e910 (patch)
treed956ebfefb590dc88cf043ad13774b72c2c9d7e2 /sys/dev
parenta8411b92b7f1bffcd8f6d8f29066bdbd6f0ea5e1 (diff)
downloadFreeBSD-src-0f4e96e8f512d74d12410da9f27b585e1f37e910.zip
FreeBSD-src-0f4e96e8f512d74d12410da9f27b585e1f37e910.tar.gz
On the 82571 and newer chipset the ICR register is meaningful only
if the E1000_ICR_INT_ASSERTED bit is set. Submitted by: Jack Vogel
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/em/if_em.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/em/if_em.c b/sys/dev/em/if_em.c
index 724cbc4..d8bf16b 100644
--- a/sys/dev/em/if_em.c
+++ b/sys/dev/em/if_em.c
@@ -1050,7 +1050,10 @@ em_intr(void *arg)
for (;;) {
reg_icr = E1000_READ_REG(&adapter->hw, ICR);
- if (reg_icr == 0)
+ if (adapter->hw.mac_type >= em_82571 &&
+ (reg_icr & E1000_ICR_INT_ASSERTED) == 0)
+ break;
+ else if (reg_icr == 0)
break;
if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
OpenPOWER on IntegriCloud