Browse Source

[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>
tags/v1.20.1
Michael Brown 11 years ago
parent
commit
0c5e3df6d9
1 changed files with 1 additions and 1 deletions
  1. 1
    1
      src/drivers/net/intel.c

+ 1
- 1
src/drivers/net/intel.c View File

@@ -700,7 +700,7 @@ static void intel_poll ( struct net_device *netdev ) {
700 700
 		intel_poll_tx ( netdev );
701 701
 
702 702
 	/* Poll for RX completions, if applicable */
703
-	if ( icr & INTEL_IRQ_RXT0 )
703
+	if ( icr & ( INTEL_IRQ_RXT0 | INTEL_IRQ_RXO ) )
704 704
 		intel_poll_rx ( netdev );
705 705
 
706 706
 	/* Report receive overruns */

Loading…
Cancel
Save