Messages in this thread | | | Date | Sat, 19 Sep 1998 16:23:27 -0700 | From | "David S. Miller" <> | Subject | Re: Today Linus redesigns the networking driver interface (was Re: tulip driver in ...) |
| |
Date: Sat, 19 Sep 1998 18:49:56 -0400 From: "Theodore Y. Ts'o" <tytso@MIT.EDU>
The one thing which the BSD implementations have that we *don't* have is the ability mask just one kind of interrupts (say, serial or networking interrupts) during some critical section of code. The only thing we can do is use cli(), which blocks all interrupts.
I want to emphasize what Ted is saying here.
Yeah Linus, spl's suck, but so does our stuff because the machine is totally catatonic when someone has to block out _any_ kind of interrupt. How come I can't finish a disk block read while I'm in the middle with changing network routing tables? How come I can't receive a few network packets while I push some blocks out to disk? How come the timer can't come in safely during all of this especially of what I'm doing is bh atomic anyways?
(Note that most of the reason I liked ANK's final removal of all explicit cli()'s in the networking was for this reason, and we still have problems, the bubble just has shifted to the bh packet processing architecture now :-)
This is heavily demonstrated by ANK's suggested test of bombing a 100Mbit interface with <=128 byte frames, timer interrupts don't even come in. That shows a fundamental problem with how we do interrupts under high load.
Later, David S. Miller davem@dm.cobaltmicro.com
- 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/
| |