From febd4f294ad82b31b56e62d6a3a2550137532ad6 Mon Sep 17 00:00:00 2001 From: Don Fry Date: Mon, 8 Mar 2004 11:23:53 -0500 Subject: [PATCH] [PATCH] pcnet32 transmit hang fix The pcnet32 driver will hang after a few frames (<30) with the 79C971 (and probably the 79C972 though I don't have the hardware to prove it). By interrupting slightly more frequently the hang will not occur. --- drivers/net/pcnet32.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index cb07b9e817c7..e8eed4614b38 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c @@ -1452,11 +1452,12 @@ pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev) status = 0x8300; entry = (lp->cur_tx - lp->dirty_tx) & TX_RING_MOD_MASK; if ((lp->ltint) && - ((entry == TX_RING_SIZE/2) || + ((entry == TX_RING_SIZE/3) || + (entry == (TX_RING_SIZE*2)/3) || (entry >= TX_RING_SIZE-2))) { /* Enable Successful-TxDone interrupt if we have - * 1/2 of, or nearly all of, our ring buffer Tx'd + * 1/3, 2/3 or nearly all of, our ring buffer Tx'd * but not yet cleaned up. Thus, most of the time, * we will not enable Successful-TxDone interrupts. */ -- 2.39.5