Date: Mon, 17 Sep 2012 10:45:12 -0700 From: Adrian Chadd <adrian@freebsd.org> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-net@freebsd.org, Ryan Stone <rysto32@gmail.com> Subject: Re: What's the latest on fixing IFF_DRV_OACTIVE/if_start/etc? Message-ID: <CAJ-Vmon1iHpjx37=RDOqFPthLv5nTTyjmkOR246nBQ4VxwhVOA@mail.gmail.com> In-Reply-To: <201209171316.45029.jhb@freebsd.org> References: <CAFMmRNzkwbQpUZ3OOoMKVdrz=dePc5fkeX3m-5vXtiWJ7qXwVA@mail.gmail.com> <201209171316.45029.jhb@freebsd.org>
index | next in thread | previous in thread | raw e-mail
On 17 September 2012 10:16, John Baldwin <jhb@freebsd.org> wrote:
> I think for if_bridge the fix is that it no longer uses if_start. :)
:)
> For real hardware you will get some sort of TX completion interrupt that will
> restart the transmit queue. Virtual software-only interfaces such as vlan(4)
> and if_bridge(4) don't have that luxury though, and the best bet for them is
> to probably have them use if_transmit instead. vlan(4) and if_bridge(4) are
> already fixed for that (if_bridge was only fixed a week or so ago in HEAD).
I'm still not convinced that going the if_start route (with
process-to-completion) is going to work well when forwarding gobs of
packets on anything bar ${BIG_IRON}, but that aside..
It may be nice to introduce a virtual TX completion callback? Ie, a
child driver could signal that it's successfully drained its TX queue,
notifying any parent drivers that they can send more?
adrian
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon1iHpjx37=RDOqFPthLv5nTTyjmkOR246nBQ4VxwhVOA>
