From owner-freebsd-wireless@FreeBSD.ORG Tue Mar 19 19:39:52 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 301E7BC8 for ; Tue, 19 Mar 2013 19:39:52 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-we0-x232.google.com (mail-we0-x232.google.com [IPv6:2a00:1450:400c:c03::232]) by mx1.freebsd.org (Postfix) with ESMTP id C6319FE0 for ; Tue, 19 Mar 2013 19:39:51 +0000 (UTC) Received: by mail-we0-f178.google.com with SMTP id o45so765653wer.9 for ; Tue, 19 Mar 2013 12:39:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:sender:date:x-google-sender-auth:message-id :subject:from:to:content-type; bh=pkiPMYA3WTqPmAlo1RIkBfABc5SA3fH+01LUu2x/qg4=; b=nEZHj+8py+6uYkz1dVh0Ypvd7pXPNsXWWUdVKO3Yqx1F1PbFg30nGxMaV87YS/6gTW b9K5MEExgreppC52DVGKVPHEEZeNbpWT3+1K65iXQIqJfrl8NBddT3+FKJTIVNVOeqZk IiT/3ZSga0MgPiq/10ljaai6n0tVyBtJ2HssVPUQl9L5rLECCO/LLuXAD1nUr0owAPbc SFtfInCS7BdJ21kamdojA8nrfrVZwIluoFwbvWVbf5bN8wbaEmZU/LIwT1hnIEAHp0mX Lr6COZ3oICXAI4p5GioGc7GK4V8aC0yhI0ZXhrgJvigzWIsML5cEQQs6OW2mcHyaqM8+ jtZA== MIME-Version: 1.0 X-Received: by 10.180.14.233 with SMTP id s9mr5688332wic.25.1363721989821; Tue, 19 Mar 2013 12:39:49 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.216.108.130 with HTTP; Tue, 19 Mar 2013 12:39:49 -0700 (PDT) Date: Tue, 19 Mar 2013 12:39:49 -0700 X-Google-Sender-Auth: KZk63ztH6MHXjRjsgK0k_kl7zMw Message-ID: Subject: update - better EDMA RX support, testing AR9580 From: Adrian Chadd To: freebsd-wireless@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 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: Tue, 19 Mar 2013 19:39:52 -0000 Hi all, I've just committed some new RX handling code. Since the RX FIFO on the AR9380 and later chips is very shallow (128 entries), you have to refill the FIFO much quicker than you can handle frames. So instead of doing it in the RX task (which is shared with the TX completion task and runs at a lower priority than interrupt handling) - I'm now completing buffers and refilling the FIFO in the interrupt thread. I'm then doing the RX frame handling in the deferred path. This way the RX path (and most other things!) will be preempted by the interrupt thread if there's more RX frames to handle, and those will just be pushed into the RX queue. I've tested this with TCP iperf on a 2x2 setup and I now don't get any FIFO full errors. So I'd appreciate it if people would update to today's -HEAD and try it out. Thanks! Adrian