summaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorMichael Brown2011-03-12 13:48:29 +0100
committerMichael Brown2011-03-12 13:48:29 +0100
commitc315ae039424ad53c0a6c01c93eb0444ab8bfb37 (patch)
tree533ca0cc29f95d22b17426d0995ef8d7eece4b0c /src/drivers
parent[bios] Use INT 16,11 instead of INT 16,01 to check for keystrokes (diff)
downloadipxe-c315ae039424ad53c0a6c01c93eb0444ab8bfb37.tar.gz
ipxe-c315ae039424ad53c0a6c01c93eb0444ab8bfb37.tar.xz
ipxe-c315ae039424ad53c0a6c01c93eb0444ab8bfb37.zip
[eepro100] Do not discard short packets
In a virtual environment such as qemu, we can legitimately receive packets less than 64 bytes in length, such as ARP replies. These are currently discarded, causing most IPv4 communication to fail. Fix by ignoring the RFDShort bit when receiving packets. Reported-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/net/eepro100.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/drivers/net/eepro100.c b/src/drivers/net/eepro100.c
index 50214ecc..85840cdf 100644
--- a/src/drivers/net/eepro100.c
+++ b/src/drivers/net/eepro100.c
@@ -808,7 +808,7 @@ static void ifec_rx_process ( struct net_device *netdev )
cur_rx );
DBGIO_HD ( (void*)rfd->packet, 0x30 );
- if ( ( status & RFD_STATUS ) != RFD_OK ) {
+ if ( ( status & ( RFD_STATUS & ~RFDShort ) ) != RFD_OK ) {
DBG ( "Corrupted packet received. "
"Status = %#08hx\n", status );
netdev_rx_err ( netdev, iob, -EINVAL );