diff options
author | Michael Brown | 2012-10-26 01:09:09 +0200 |
---|---|---|
committer | Michael Brown | 2012-10-28 19:53:23 +0100 |
commit | 0c5e3df6d91961e05844678e70902f0537cb2a22 (patch) | |
tree | 5654f5d8514267767948f2514464dbac9d0b9b15 /src/drivers/net/intel.c | |
parent | [hermon] Use PCI VPD for non-volatile option storage (diff) | |
download | ipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.tar.gz ipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.tar.xz ipxe-0c5e3df6d91961e05844678e70902f0537cb2a22.zip |
[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/net/intel.c')
-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 0811ed91..399b5354 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 */ |