From owner-freebsd-wireless@FreeBSD.ORG Wed Oct 31 06:42:36 2012 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1E6026BA; Wed, 31 Oct 2012 06:42:36 +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 D08408FC14; Wed, 31 Oct 2012 06:42:35 +0000 (UTC) Received: by mail-pb0-f54.google.com with SMTP id rp8so806301pbb.13 for ; Tue, 30 Oct 2012 23:42:35 -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=dt5l5MclRcSnB1EKVJHhUdxaDN4rTy4U2FGmJPwu4bU=; b=Ai2MBcLt5LtPhc34L/2bxr7AdJb8p+wmKho/cRGL+/hkp19EC703QNiK1xxJMGRhNK xSA5A5lo4cQUnl/MBo0nF8CpdHtowhB4+fkcLL2SnmLWw2l2pOwmrdjLIunUTwYcnnKC YAR4QdTbCdjTn1KbZXHdayaF6DPee9jgrQnIq3WFuytAV0fC+58M+KoOJ811mkCaeLbs pXrrRj86Ki/2YtP2o88VV6rsbk83PDuySSTe/yhTS2IB4y1R/wD4dOIw03OHR3whasaD mLkVt+oraRPWZGNVIIyVJ/ldPyOuRDxhDwK8JFlQf6X2OaLlmfVXFnIhlXictDTJROQf Gl0Q== MIME-Version: 1.0 Received: by 10.66.73.230 with SMTP id o6mr99340786pav.45.1351665755328; Tue, 30 Oct 2012 23:42:35 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.68.124.130 with HTTP; Tue, 30 Oct 2012 23:42:35 -0700 (PDT) In-Reply-To: References: <508E50A3.1030008@networx.ch> Date: Tue, 30 Oct 2012 23:42:35 -0700 X-Google-Sender-Auth: RHA8otk43RPWLQ4-E6groky9SQo Message-ID: Subject: Re: request for help: 'fixing' the 802.11 TX path From: Adrian Chadd To: PseudoCylon Content-Type: text/plain; charset=ISO-8859-1 Cc: FreeBSD Net , freebsd-wireless@freebsd.org, Andre Oppermann , freebsd-arch@freebsd.org X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Oct 2012 06:42:36 -0000 So I cheaped out for now and just wrapped the ath TX path in a new TX only lock. I'm open to other suggestions about how to make the "queue everything through a taskqueue" work, but unfortunately it seems that I'm defeated by the inner workings of the network stack locking and how that plays with the scheduler. I even tried experimenting with a second taskqueue just for TX but it still suffered from much reduced performance. The annoying thing? Changing the eventtimer to enable periodic+idletick improved performance as well as flipping machdep.idle=spin. I thought that stuff was fixed but alas. So now this is done, I may create a per-VAP TX lock in net80211 in order to serialise raw and normal net80211 TX; that will fix a lot of the the serialisation and state issues that creep up. Then it's off to if_transmit() land. Thanks everyone, Adrian