Date: Tue, 26 Mar 2002 22:21:28 -0800 From: Luigi Rizzo <rizzo@icir.org> To: Archie Cobbs <archie@dellroad.org> Cc: freebsd-net@FreeBSD.ORG Subject: Re: ip_output and ENOBUFS Message-ID: <20020326222128.A16450@iguana.icir.org> In-Reply-To: <200203270610.g2R6A5x39204@arch20m.dellroad.org> References: <20020325145447.A2986@iguana.icir.org> <200203270610.g2R6A5x39204@arch20m.dellroad.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 26, 2002 at 10:10:05PM -0800, Archie Cobbs wrote: > Luigi Rizzo writes: ... > Along those lines, this might be a handy thing to add... > > int if_get_next(struct ifnet *ifp); /* runs at splimp() */ > > This function tries to "get" the next packet scheduled to go > out interface 'ifp' and, if successful, puts it on &ifp->if_snd > (the interface output queue for 'ifp') and returns 1; otherwise, > it returns zero. how is this different from having a longer device queue ? cheers luigi > Then, each device driver can be modified (over time) to invoke > this function when it gets a transmit interrupt and it's output > queue is empty. If the function returns 1, grab the new packet > off the queue and schedule it for transmission. > > Once this is done it becomes much easier to hack together ideas > for queueing and scheduling e.g., a netgraph node that does packet > scheduling. > > I think ALTQ does something like this. It would be nice if it > was generic enough that other mechanisms besides ALTQ (like > netgraph) could also use it. I'm not that familiar with how > ALTQ is implemented. > > -Archie > > __________________________________________________________________________ > Archie Cobbs * Packet Design * http://www.packetdesign.com > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-net" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020326222128.A16450>