From owner-freebsd-net@FreeBSD.ORG Mon Sep 17 20:00:06 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 341B4106566C; Mon, 17 Sep 2012 20:00:06 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from mail-vc0-f182.google.com (mail-vc0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id A04788FC12; Mon, 17 Sep 2012 20:00:05 +0000 (UTC) Received: by vcbfw7 with SMTP id fw7so10084967vcb.13 for ; Mon, 17 Sep 2012 13:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=99N203WNO8g663yBKCvNWcuikw1dpnjCrZtP1EJU/WA=; b=o0Lei7KQR0SO4aVRqUDNhO0yUpMlqZlK8VgiR+Rk6IHLzs/d0nwAB0QnHMkiC2iu4X Q2vOQmTfP0gXWkNl9Z2JbDUeIwSuf1yUaKbK2qQj8a1oAs3pjXT3JjfDaMC+SQ0esRw3 hUNKWSglgkrXbF2sMUjuz6qJdS8rl2niore7crh5ohvSXeyVOy5iY+gNOpwODecZXkYw Ks+Iej5pkH3ftF6oRuwEhobPVYr6BvlEU1X88fNYHFahF2uidLv2Mexf7uXCvfF5cToY WCGGmxxyAQJsLAuVtTnKFrwP1UWeWDHM9d6UenODTN5UmpqbqIIldjMcT6M1lGfBGkCD BuFg== MIME-Version: 1.0 Received: by 10.52.33.165 with SMTP id s5mr3911436vdi.51.1347912004746; Mon, 17 Sep 2012 13:00:04 -0700 (PDT) Received: by 10.58.68.8 with HTTP; Mon, 17 Sep 2012 13:00:04 -0700 (PDT) In-Reply-To: <201209171503.12517.jhb@freebsd.org> References: <201209171316.45029.jhb@freebsd.org> <201209171503.12517.jhb@freebsd.org> Date: Mon, 17 Sep 2012 13:00:04 -0700 Message-ID: From: Jack Vogel To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-net@freebsd.org, Adrian Chadd , Ryan Stone Subject: Re: What's the latest on fixing IFF_DRV_OACTIVE/if_start/etc? X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2012 20:00:06 -0000 So, you mean having them create their own buf ring I assume? Would be easy enough to hack some code and try it if someone is so inclined? Jack On Mon, Sep 17, 2012 at 12:03 PM, John Baldwin wrote: > On Monday, September 17, 2012 1:45:12 pm Adrian Chadd wrote: > > On 17 September 2012 10:16, John Baldwin 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.. > > Eh? For virtual interfaces, if_transmit introduces less overhead than > using if_start (no locking, queueing, dequeueing, etc.). I expect that > to be a net win for smaller boards. > > > 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? > > That could work, but I generally think if_transmit is a better route for > these sorts of things. That turns these interfaces into simple filters > rather than building up their own queue, etc. > > -- > John Baldwin > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >