lkml.org 
[lkml]   [2000]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 3c59x & Cat 4003 Ethernet Lockups
Alan Cox wrote:
>
> The problem is Don's workaround for too much work leaves the irq floating
> which is not allowed. The 2000 work limit stops false triggers. The real
> cases we see are also all false triggers.
>
> To make it work it would have to kill the 3c59x irq line

Something I was wondering... would the following make sense/be a good
idea in today's net drivers?

netdev_interrupt()

stop card from generating interrupts (IntrMask &= ~(TX|RX))
if (status & (TX|RX))
mark tasklet/softirq
{ handle weird interrupts like RxErr, etc. }

netdev_tasklet()

while (h/w status == Rx or Tx present)
handle rx
handle tx
if (work_count++ == 20)
if (current->need_resched)
schedule()
enable card interrupts (IntrMask |= (TX|RX))



I've always thought that REDUCING not increasing work done in interrupts
was the right way to go...

--
Jeff Garzik | Rule 1:
Building 1024 | There is no cabal.
MandrakeSoft, Inc. |

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:56    [W:0.590 / U:0.180 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site