Remove nonsensical limit in the tx done routine. Specifically, the loop will always terminate after processing <= 1 rings worth of frames, as the mcp index is not refetched, so the removed conditional could never be true.
Signed-off-by: Brice Goglin <[EMAIL PROTECTED]> --- drivers/net/myri10ge/myri10ge.c | 6 ------ 1 file changed, 6 deletions(-) Index: linux-2.6.22/drivers/net/myri10ge/myri10ge.c =================================================================== --- linux-2.6.22.orig/drivers/net/myri10ge/myri10ge.c 2007-07-09 01:32:17.000000000 +0200 +++ linux-2.6.22/drivers/net/myri10ge/myri10ge.c 2007-07-12 11:21:29.000000000 +0200 @@ -1059,7 +1059,6 @@ struct myri10ge_tx_buf *tx = &mgp->tx; struct sk_buff *skb; int idx, len; - int limit = 0; while (tx->pkt_done != mcp_index) { idx = tx->done & tx->mask; @@ -1090,11 +1089,6 @@ bus), len, PCI_DMA_TODEVICE); } - - /* limit potential for livelock by only handling - * 2 full tx rings per call */ - if (unlikely(++limit > 2 * tx->mask)) - break; } /* start the queue if we've stopped it */ if (netif_queue_stopped(mgp->dev) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html