aboutsummaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2012-10-25 16:09:09 -0700
committerMichael Brown <mcb30@ipxe.org>2012-10-28 18:53:23 +0000
commit0c5e3df6d91961e05844678e70902f0537cb2a22 (patch)
tree5654f5d8514267767948f2514464dbac9d0b9b15 /src/drivers
parentc4ee23e7c6421016400eb76d28a3e2d12617c8ea (diff)
downloadipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.zip
ipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.tar.gz
ipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.tar.bz2
[intel] Poll RX queue if hardware reports RX overflow
The Intel NIC emulation in some versions of VMware seems to suffer from a flaw whereby the Interrupt Cause Register (ICR) fails to assert the usual "packet received" bit (ICR.RXT0) if a receive overflow (ICR.RXO) has also occurred. Work around this flaw by polling for completed descriptors whenever either ICR.RXT0 or ICR.RXO is asserted. Reported-by: Miroslav Halas <miroslav.halas@bankofamerica.com> Debugged-by: Miroslav Halas <miroslav.halas@bankofamerica.com> Tested-by: Miroslav Halas <miroslav.halas@bankofamerica.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/net/intel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c
index 0811ed9..399b535 100644
--- a/src/drivers/net/intel.c
+++ b/src/drivers/net/intel.c
@@ -700,7 +700,7 @@ static void intel_poll ( struct net_device *netdev ) {
intel_poll_tx ( netdev );
/* Poll for RX completions, if applicable */
- if ( icr & INTEL_IRQ_RXT0 )
+ if ( icr & ( INTEL_IRQ_RXT0 | INTEL_IRQ_RXO ) )
intel_poll_rx ( netdev );
/* Report receive overruns */