From owner-freebsd-net@FreeBSD.ORG Tue Dec 28 00:41:19 2010 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7AF5D1065698; Tue, 28 Dec 2010 00:41:19 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id B8BB18FC17; Tue, 28 Dec 2010 00:41:18 +0000 (UTC) Received: by wwf26 with SMTP id 26so8669765wwf.31 for ; Mon, 27 Dec 2010 16:41:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=FbAZqJ2dyL3Y1ps+eUDGU+DtwmREQWa9rSkackDvjR4=; b=WD6MmOwaOdLvwhPTvGL+sko6ilJtJfFbg90iDe9DwTL5E104+njpldKOHn9iLETLrh FOQ7qDIH07KB3TOqLhThWVM4pnbLbYhP7gSsqPedovasT6IU4BRSDHL3K4ZlIGR47/Dh vbZKkVA5nb5Fgt+0C5H2LtN4Ff14Yb5quSzPQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Ml4EpeBqPkLUlm2v5qu3NyzWUPMag1UccurflH+LWUfvCQlwXuUceot//6gaIkmUvY vMPSok1a8DpXp2WFuE4VVFmZJU4JrgzZdpjm/yoCQZmkYf3WD9/8ppIbulSXWwYRKlGY ZqqK5LfK2KjE/FUrdby69tM4jcCgUePWtrYEw= MIME-Version: 1.0 Received: by 10.216.170.133 with SMTP id p5mr13369057wel.89.1293495462140; Mon, 27 Dec 2010 16:17:42 -0800 (PST) Received: by 10.216.12.80 with HTTP; Mon, 27 Dec 2010 16:17:42 -0800 (PST) In-Reply-To: <201012272024.37110.bschmidt@freebsd.org> References: <201012272024.37110.bschmidt@freebsd.org> Date: Mon, 27 Dec 2010 18:17:42 -0600 Message-ID: From: Brandon Gooch To: Bernhard Schmidt Content-Type: text/plain; charset=ISO-8859-1 Cc: Attilio Rao , freebsd-net@freebsd.org, Adrian Chadd Subject: Re: CFT/CFR, possible fix for ifconfig scan hang 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: Tue, 28 Dec 2010 00:41:19 -0000 On Mon, Dec 27, 2010 at 1:24 PM, Bernhard Schmidt wrote: > Hi, > > I recently received some complains about the infamous 'ifconfig scan hang' > issue again. Finally looking into that I noticed a bunch of inconsistences, > the most obvious one is that ifconfig(8) is talking about doing a background > scan by default, which is simply not true according to the implementation. > > Anyways.. the generic use-case which triggers the 'hang' is, if 'ifconfig > scan' is called while a scan is already in progress, net80211 will not start a > new one which means that no scan flags are updated, though, ifconfig will loop > until it receives a notification about the scan being done. This does always > happen after an 'ifconfig up', because net80211 will move the VAP into scan > state by default, with the scan flags set in such a way that a scan is done > until there is something to connect to. This also means that no notifications > about the scan being done are sent to upper layers, because the scan is not > finished.. > > If we successfully moved from scan to run state, how so ever, and now want to > call 'ifconfig scan' we're faced with another issue. Doing a scan while being > associated means we have to move off our current channel, to do this without > loosing any imported frames/information, we make use of the power save > feature. Now if we want to send any traffic while doing the scan, the scan is > temporary suspended, frames are sent, then the scan is restarted after > receiving a beacon and there is no frame to send. For this to work though, we > need to actually request a background scan so appropriate flags are set and > the scan is actually restarted. Without this, we hang until the bgscan timer > fires of at that next bgscanintval. > > I have a patch available which addresses both of the issues. It requests a > background scan by default and also honors the return value of > start_scan_locked(): > - for head > http://techwires.net/~bschmidt/scan_hang_head.diff > - for 8-stable/8.2-*: > http://techwires.net/~bschmidt/scan_hang_stable.diff > > Please test and let me know if it works, or not. > Works here, on 8.2-PRERELEASE #1 r216690 and 9.0-CURRENT #1 r216702. I mucked around for about an hour on both systems with varying configurations (iwn(4) and wpi(4)), and all seemed normal and consistently well-behaved. Thanks Bernhard! -Brandon