From owner-freebsd-net@FreeBSD.ORG Mon Jan 17 20:32:44 2011 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 541651065670 for ; Mon, 17 Jan 2011 20:32:44 +0000 (UTC) (envelope-from bschmidt@techwires.net) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id E56BE8FC0A for ; Mon, 17 Jan 2011 20:32:43 +0000 (UTC) Received: by fxm16 with SMTP id 16so6545638fxm.13 for ; Mon, 17 Jan 2011 12:32:43 -0800 (PST) Received: by 10.223.115.11 with SMTP id g11mr5335313faq.64.1295296362858; Mon, 17 Jan 2011 12:32:42 -0800 (PST) Received: from maja.lab.techwires.net (p54B4FA85.dip.t-dialin.net [84.180.250.133]) by mx.google.com with ESMTPS id z1sm1840738fau.45.2011.01.17.12.32.40 (version=SSLv3 cipher=RC4-MD5); Mon, 17 Jan 2011 12:32:40 -0800 (PST) From: Bernhard Schmidt To: freebsd-net@freebsd.org Date: Mon, 17 Jan 2011 21:32:52 +0100 User-Agent: KMail/1.12.4 (FreeBSD/9.0-CURRENT; KDE/4.3.5; amd64; ; ) References: <201012272024.37110.bschmidt@freebsd.org> In-Reply-To: <201012272024.37110.bschmidt@freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201101172132.53027.bschmidt@techwires.net> 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: Mon, 17 Jan 2011 20:32:44 -0000 Hi, no objections so far. If non arise till this weekend, I going to commit this. On Monday 27 December 2010 20:24:36 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. > > Thanks > -- Bernhard