diff options
author | glebius <glebius@FreeBSD.org> | 2005-12-02 08:33:56 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2005-12-02 08:33:56 +0000 |
commit | 0f4e96e8f512d74d12410da9f27b585e1f37e910 (patch) | |
tree | d956ebfefb590dc88cf043ad13774b72c2c9d7e2 /sys/dev | |
parent | a8411b92b7f1bffcd8f6d8f29066bdbd6f0ea5e1 (diff) | |
download | FreeBSD-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.c | 5 |
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) { |