Subject: Re: DS3100 ethernet spl problem fixed
To: Arne H. Juul <arnej@pvv.unit.no>
From: Ted Lemon <mellon@fugue.com>
List: port-pmax
Date: 12/30/1995 19:56:24
Arne writes:
> A related issue:  Currently, on executing network (lance) interrupts
> on 3100, all other interrupts except hardclock are disabled.

Jason writes:
> malloc() amnd free() operate at splimp, and thus it needs to block bio 
> interrupts so that putccdbuf() isn't called during another free() or 
> malloc() operation.  It's reasonable to assume that other drivers may 
> call malloc() and/or free() at interrupt time.

Why don't malloc() and free() operate at splhigh()?   It makes no
sense to me that disk interrupts should necessarily be blocked while
processing ethernet interrupts.   I suppose it might be the right
thing from a performance perspective, or it might not, but the two
seem sufficiently unrelated that the choice ought to be made based on
performance issues, not because disk drivers might call malloc().

Also, it seems bad that tty interrupts are blocked during processing
of lance interrupts.   Obviously we need to avoid corrupting network
data structures when a tty interrupt completes an incoming packet, but
maybe a better solution would be for the ppp line discipline to flag
an incoming packet as done but actually do the queuing at softint
level.   I used to get significant silo overflow errors on my 5000/25
if I was doing heavy ethernet traffic while doing something with the
serial port.   Veddy, veddy bad, IMHO.

			       _MelloN_