f4a1bb2
Index: hw/rtl8139.c
f4a1bb2
===================================================================
f4a1bb2
RCS file: /sources/qemu/qemu/hw/rtl8139.c,v
f4a1bb2
retrieving revision 1.10
f4a1bb2
retrieving revision 1.11
f4a1bb2
diff -u -r1.10 -r1.11
f4a1bb2
--- hw/rtl8139.c	11 Jul 2007 22:48:58 -0000	1.10
f4a1bb2
+++ hw/rtl8139.c	1 Aug 2007 13:10:29 -0000	1.11
f4a1bb2
@@ -53,9 +53,8 @@
f4a1bb2
 /* debug RTL8139 card C+ mode only */
f4a1bb2
 //#define DEBUG_RTL8139CP 1
f4a1bb2
 
f4a1bb2
-/* RTL8139 provides frame CRC with received packet, this feature seems to be
f4a1bb2
-   ignored by most drivers, disabled by default */
f4a1bb2
-//#define RTL8139_CALCULATE_RXCRC 1
f4a1bb2
+/* Calculate CRCs properly on Rx packets */
f4a1bb2
+#define RTL8139_CALCULATE_RXCRC 1
f4a1bb2
 
f4a1bb2
 /* Uncomment to enable on-board timer interrupts */
f4a1bb2
 //#define RTL8139_ONBOARD_TIMER 1
f4a1bb2
@@ -747,7 +746,7 @@
f4a1bb2
         int wrapped = MOD2(s->RxBufAddr + size, s->RxBufferSize);
f4a1bb2
 
f4a1bb2
         /* write packet data */
f4a1bb2
-        if (wrapped && s->RxBufferSize < 65536 && !rtl8139_RxWrap(s))
f4a1bb2
+        if (wrapped && !(s->RxBufferSize < 65536 && rtl8139_RxWrap(s)))
f4a1bb2
         {
f4a1bb2
             DEBUG_PRINT((">>> RTL8139: rx packet wrapped in buffer at %d\n", size-wrapped));
f4a1bb2
 
f4a1bb2
@@ -1023,7 +1022,7 @@
f4a1bb2
 
f4a1bb2
         /* write checksum */
f4a1bb2
 #if defined (RTL8139_CALCULATE_RXCRC)
f4a1bb2
-        val = cpu_to_le32(crc32(~0, buf, size));
f4a1bb2
+        val = cpu_to_le32(crc32(0, buf, size));
f4a1bb2
 #else
f4a1bb2
         val = 0;
f4a1bb2
 #endif
f4a1bb2
@@ -1129,7 +1128,7 @@
f4a1bb2
 
f4a1bb2
         /* write checksum */
f4a1bb2
 #if defined (RTL8139_CALCULATE_RXCRC)
f4a1bb2
-        val = cpu_to_le32(crc32(~0, buf, size));
f4a1bb2
+        val = cpu_to_le32(crc32(0, buf, size));
f4a1bb2
 #else
f4a1bb2
         val = 0;
f4a1bb2
 #endif