Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Mar 1999 17:49:02 -0800
From:      Julian Elischer <julian@whistle.com>
To:        Bill Paul <wpaul@skynet.ctr.columbia.edu>
Cc:        Matthew Dillon <dillon@apollo.backplane.com>, hackers@FreeBSD.ORG
Subject:   Re: Gigabit ethernet revisited
Message-ID:  <36F2FE8E.7566F4CF@whistle.com>
References:  <199903200132.UAA04463@skynet.ctr.columbia.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Bill Paul wrote:
>
> The receiving host is under heavy interrupt load. Andrew Gallatin has
> said to me that this is a classic case of livelock, where the system
> is so busy processing interrupts that nothing else is getting done.
> In this case, the NIC is dutifully DMAing all the packets to the host
> and the driver is queing them all to ether_input(), but this is happening
> so often that the other parts of the kernel aren't getting a chance to
> process the packets in time, so the queues fill up and packets get dropped.


I think Andrew might be right..
it could well be livelock.

Matt Thomas implemented a solution for the 100mb dec cards
when 100 was fast. I think that the de drivers responded to the
interrupt and immediatly did SCHEDNETISR() to schedule the rest of
the driver that was running at a lower priority. I don't know if the
if_de driver still does that but is could be worth a look.

The other problem may be that there is just not enough PCI bus 
left for all the cycles needed for the processor to clear out 
the queue. (no wait that doesn't make sense because that would
be memory bus bandwidth..

julian


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36F2FE8E.7566F4CF>