Skip to content

Commit

Permalink
[intel] Poll RX queue if hardware reports RX overflow
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mcb30 committed Oct 28, 2012
1 parent c4ee23e commit 0c5e3df
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/drivers/net/intel.c
Expand Up @@ -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 */
Expand Down

0 comments on commit 0c5e3df

Please sign in to comment.