diff -r 08060693df37 -r 16aacb421bd4 devices/e1000/e1000_main-2.6.18-ethercat.c --- a/devices/e1000/e1000_main-2.6.18-ethercat.c Mon Jan 26 10:30:53 2009 +0000 +++ b/devices/e1000/e1000_main-2.6.18-ethercat.c Mon Jan 26 10:34:53 2009 +0000 @@ -25,6 +25,8 @@ e1000-devel Mailing List Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + vim: noexpandtab + *******************************************************************************/ #include "e1000-2.6.18-ethercat.h" @@ -465,8 +467,14 @@ * next_to_use != next_to_clean */ for (i = 0; i < adapter->num_rx_queues; i++) { struct e1000_rx_ring *ring = &adapter->rx_ring[i]; - adapter->alloc_rx_buf(adapter, ring, - E1000_DESC_UNUSED(ring)); + if (adapter->ecdev) { + /* fill rx ring completely! */ + adapter->alloc_rx_buf(adapter, ring, ring->count); + } else { + /* this one leaves the last ring element unallocated! */ + adapter->alloc_rx_buf(adapter, ring, + E1000_DESC_UNUSED(ring)); + } } adapter->tx_queue_len = netdev->tx_queue_len; @@ -2170,7 +2178,14 @@ /* No need to loop, because 82542 supports only 1 queue */ struct e1000_rx_ring *ring = &adapter->rx_ring[0]; e1000_configure_rx(adapter); - adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); + if (adapter->ecdev) { + /* fill rx ring completely! */ + adapter->alloc_rx_buf(adapter, ring, ring->count); + } else { + /* this one leaves the last ring element unallocated! */ + adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); + } + } }