From owner-freebsd-net@FreeBSD.ORG Mon Sep 17 23:16:28 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4292F106566B; Mon, 17 Sep 2012 23:16:28 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by mx1.freebsd.org (Postfix) with ESMTP id 0D6298FC12; Mon, 17 Sep 2012 23:16:27 +0000 (UTC) Received: by pbbrp2 with SMTP id rp2so10634335pbb.13 for ; Mon, 17 Sep 2012 16:16:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=Edgzu7ITKZ/e27U8V/9UdaOVog64dNQFPdt8q4bRUB0=; b=OczxPczJuC0Q8ZR4xv4KDNNkj0zoBYDVoA+6nCVJLgLJz+S78enYHE7d5Cmm7MpjCq DgB3b7XZvX6V5cxoZXUZ/SpGVG1FEGKmTR/M92IsPobENuHxT0gVCaPbYN5iN5Jm7MiQ qalk+rf5Hzckpqd68nQ90lH9shC4xqPCVegQDkW5Qmw2hk1p13kfw040vOQhZZELFza8 Cspko+lHb1xzs9CbpnepIDlWXEj6/J5jLqju3T7K1KnIlClMwutEed1/9TfGDBb5k+/V 909/amTeTfDFWWbpoykFGdhKPpL5J3aA1FBEzFS4+ff89L6BYLgDwZhY3Be4lx1lepQV 5TLA== MIME-Version: 1.0 Received: by 10.66.74.196 with SMTP id w4mr22386184pav.32.1347923787647; Mon, 17 Sep 2012 16:16:27 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.68.36.106 with HTTP; Mon, 17 Sep 2012 16:16:27 -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 16:16:27 -0700 X-Google-Sender-Auth: VCcByGSriHpxpb0Oj_geRsBCs_4 Message-ID: From: Adrian Chadd To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-net@freebsd.org, 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 23:16:28 -0000 There's a lot less cache in these boards. Going through the stack trace all the way and back for each packet is actually quite expensive. Then there's the overhead of having if_start() be called multiple times, concurrently, from multiple senders. It's fine for a wifi AP setup where the if_start() is only called once or twice in an overlapping fashion, but sucks with lots of concurrent TCP/UDP contexts all potentially calling if_start() and having them have to clash with each other. I've not sat down and instrumented it all that much, so I'm going to spend much time harping on about it until I have some hard numbers either way. I'm just going by what I see people do to various network stacks when it comes time to try and squeeze high packet rates out of smaller platforms, especially with NAT/bridging/PPPoE in the way. And that tended not to be "complete packet to completion on each frame." adrian