diff options
author | Michael Brown <mcb30@ipxe.org> | 2012-10-25 16:09:09 -0700 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2012-10-28 18:53:23 +0000 |
commit | 0c5e3df6d91961e05844678e70902f0537cb2a22 (patch) | |
tree | 5654f5d8514267767948f2514464dbac9d0b9b15 /src/drivers | |
parent | c4ee23e7c6421016400eb76d28a3e2d12617c8ea (diff) | |
download | ipxe-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.c | 2 |
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 */ |