From owner-freebsd-net@FreeBSD.ORG Mon Oct 29 09:47:20 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 29337442 for ; Mon, 29 Oct 2012 09:47:20 +0000 (UTC) (envelope-from oppermann@networx.ch) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id 790EA8FC16 for ; Mon, 29 Oct 2012 09:47:18 +0000 (UTC) Received: (qmail 95762 invoked from network); 29 Oct 2012 11:24:15 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 29 Oct 2012 11:24:15 -0000 Message-ID: <508E50A3.1030008@networx.ch> Date: Mon, 29 Oct 2012 10:47:15 +0100 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: Adrian Chadd Subject: Re: request for help: 'fixing' the 802.11 TX path References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: FreeBSD Net , PseudoCylon , freebsd-wireless@freebsd.org, freebsd-arch@freebsd.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 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, 29 Oct 2012 09:47:20 -0000 On 29.10.2012 04:53, Adrian Chadd wrote: > On 28 October 2012 20:43, PseudoCylon wrote: > >> Cannot we just add custom hand off function to ieee80211_start()? > > Yes. That's the general idea. But what I don't want to do is have it > just wake up the driver TX taskqueue - well, unless we have to. > > That means we'll have two context switches for each frame being > transmitted and that as a concept just sucks. > > See my (very recent) email to -wireless - I broke TCP throughput quite > substantially by moving ath(4) TX into the taskqueue. I thought the > problem was _just_ going to be how overlapping, direct dispatch TX > could be preempted by the RX tasklet and TX completion, but there's > obviously more going on. I can't believe that TCP is getting broken by just introducing some additional delay in the TX path. That can't add more than 300ms, can it? There must be something else going on. Most likely either severe packet loss (the m_nextpkt leak you mentioned earlier) or severe packet re-ordering. So don't rule out the TX taskqueue concept quite yet. -- Andre