Skip site navigation (1)Skip section navigation (2)
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon1iHpjx37=RDOqFPthLv5nTTyjmkOR246nBQ4VxwhVOA>