--- linux-2.6.18.noarch/drivers/net/e1000/e1000_main.c.orig 2006-11-15 15:11:55.000000000 -0500 +++ linux-2.6.18.noarch/drivers/net/e1000/e1000_main.c 2006-11-15 15:12:10.000000000 -0500 @@ -3714,9 +3714,6 @@ e1000_clean_rx_irq(struct e1000_adapter length = le16_to_cpu(rx_desc->length); - /* adjust length to remove Ethernet CRC */ - length -= 4; - if (unlikely(!(status & E1000_RXD_STAT_EOP))) { /* All receives must fit into a single buffer */ E1000_DBG("%s: Receive packet consumed multiple" @@ -3744,6 +3741,10 @@ e1000_clean_rx_irq(struct e1000_adapter } } + /* adjust length to remove Ethernet CRC, this must be + * done after the TBI_ACCEPT workaround above */ + length -= 4; + /* code added for copybreak, this should improve * performance for small packets with large amounts * of reassembly being done in the stack */