Commit febd4f29 authored by Don Fry's avatar Don Fry Committed by Jeff Garzik

[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.
parent d6258fcd
...@@ -1452,11 +1452,12 @@ pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1452,11 +1452,12 @@ pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev)
status = 0x8300; status = 0x8300;
entry = (lp->cur_tx - lp->dirty_tx) & TX_RING_MOD_MASK; entry = (lp->cur_tx - lp->dirty_tx) & TX_RING_MOD_MASK;
if ((lp->ltint) && if ((lp->ltint) &&
((entry == TX_RING_SIZE/2) || ((entry == TX_RING_SIZE/3) ||
(entry == (TX_RING_SIZE*2)/3) ||
(entry >= TX_RING_SIZE-2))) (entry >= TX_RING_SIZE-2)))
{ {
/* Enable Successful-TxDone interrupt if we have /* 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, * but not yet cleaned up. Thus, most of the time,
* we will not enable Successful-TxDone interrupts. * we will not enable Successful-TxDone interrupts.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment