From owner-freebsd-current@FreeBSD.ORG Sun May 16 21:08:18 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A3A5616A4CE for ; Sun, 16 May 2004 21:08:18 -0700 (PDT) Received: from acelere.net (acelere.net [12.104.134.130]) by mx1.FreeBSD.org (Postfix) with ESMTP id 09F9043D2F for ; Sun, 16 May 2004 21:08:18 -0700 (PDT) (envelope-from jamesb@acelere.net) Received: from acelere.net (colossus.acelere.net [192.168.0.111]) by acelere.net (8.12.3/8.12.3) with ESMTP id i4H48G6F055477 for ; Sun, 16 May 2004 21:08:17 -0700 (PDT) (envelope-from jamesb@acelere.net) From: "James Bowman" To: freebsd-current@freebsd.org Date: Sun, 16 May 2004 21:08:16 -0600 Message-Id: <20040516210816.M45998@acelere.net> X-Mailer: Open WebMail 1.64 20020415 X-OriginatingIP: 192.168.0.105 (jamesb) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Subject: hostap TX fix in 5.x [Fwd: Re: wi hostap speed] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: jamesb@acelere.net List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2004 04:08:18 -0000 I spent a few hours tinkering (tampering?) with this driver, and have not exactly a fix, but a clear indication of what the problem is. Verified (using the quick hack below): download speed geoes up from 170 kbytes/sec to 470 kbytes/sec, which is what I'd expect on an 11Mbps network. If anyone's interested, here it is: The Intersil manual on page 4-28 says that transmit packets need to have their TxRate field filled in with 10,20,55 or 110, depending on the transmission speed. The 4.X driver sets the field tx_frame.wi_tx_rate in function wihap_check_tx(), called from wi_start(). The 5.X driver calls this field frmhdr.wi_tx_rate, but leaves it zero. If you want to run at 11MBps, add a line frmhdr.wi_tx_rate = 110; in wi_start(), just before the call to wi_write_bap(). (Obviously, this is just a cheesy hack. The real code would have to find the actual tx rate. I just want to point out where the problem lies).