summaryrefslogtreecommitdiffstats
path: root/src/drivers/net
diff options
context:
space:
mode:
authorMichael Brown2010-09-03 17:16:18 +0200
committerMichael Brown2010-09-03 22:29:44 +0200
commita3021ad0e42275f0c0e6c5205746c69ab63b8dfd (patch)
tree791ae8af4e3bbe149c8f2aa90c3232050ff35c97 /src/drivers/net
parent[retry] Hold reference while timer is running and during expiry callback (diff)
downloadipxe-a3021ad0e42275f0c0e6c5205746c69ab63b8dfd.tar.gz
ipxe-a3021ad0e42275f0c0e6c5205746c69ab63b8dfd.tar.xz
ipxe-a3021ad0e42275f0c0e6c5205746c69ab63b8dfd.zip
[rtl8139] Strip CRC from received packets
The rtl8139 driver includes the Ethernet CRC within the received packet. All current protocols ignore trailing garbage, but FCoE requires the frame length to be correct (since the FCoE footer position is calculated from the end of the packet), so fix the driver to strip out the CRC. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net')
-rw-r--r--src/drivers/net/rtl8139.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/drivers/net/rtl8139.c b/src/drivers/net/rtl8139.c
index 208db0975..d5fb178fd 100644
--- a/src/drivers/net/rtl8139.c
+++ b/src/drivers/net/rtl8139.c
@@ -458,6 +458,7 @@ static void rtl_poll ( struct net_device *netdev ) {
rx_len - wrapped_len );
memcpy ( iob_put ( rx_iob, wrapped_len ),
rtl->rx.ring, wrapped_len );
+ iob_unput ( rx_iob, 4 ); /* Strip CRC */
netdev_rx ( netdev, rx_iob );
} else {