Fix from Olof Johansson to avoid overwriting valid tx ring entries. diff -urN linux-2.5/drivers/net/e1000/e1000_main.c ameslab-2.5/drivers/net/e1000/e1000_main.c --- linux-2.5/drivers/net/e1000/e1000_main.c 2004-03-09 14:32:14.000000000 +1100 +++ ameslab-2.5/drivers/net/e1000/e1000_main.c 2004-02-27 00:45:41.000000000 +1100 @@ -1582,7 +1582,7 @@ i = tx_ring->next_to_use; - while(len) { + while(len && count < E1000_DESC_UNUSED(&adapter->tx_ring)) { buffer_info = &tx_ring->buffer_info[i]; size = min(len, max_per_txd); #ifdef NETIF_F_TSO @@ -1619,7 +1619,7 @@ len = frag->size; offset = frag->page_offset; - while(len) { + while(len && count < E1000_DESC_UNUSED(&adapter->tx_ring)) { buffer_info = &tx_ring->buffer_info[i]; size = min(len, max_per_txd); #ifdef NETIF_F_TSO