em: Fix "Missing Interrupt Following ICR read" errata
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 7 Jul 2012 05:47:43 +0000 (13:47 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 7 Jul 2012 05:50:11 +0000 (13:50 +0800)
commit87ab432b86e453c90716635848e7bad0045bd4f0
tree92cb2f3c5740b30bc853e28cfd139b7a2874d24c
parent4cb541ae0641a5658d7c5d6054559dd37c45ed42
em: Fix "Missing Interrupt Following ICR read" errata

IMS should be set to 0 before reading ICR.  It should be noted that
once IMS is 0, ICR.INT_ASSERTED will not be set, which is not mentioned
in the datasheet.

This errata exists on 82571, 82572, 82573, 82574 and 82583.  And the fix
is needed only if the legacy interrupt is used and the interrupt line is
shared with other devices.

hw.emX.irq.unshared tunable is added to give a hint to the driver that
the legacy interrupt is not shared with other devices.
sys/dev/netif/em/if_em.c
sys/dev/netif/em/if_em.h