From owner-svn-src-user@FreeBSD.ORG Sat Apr 25 23:40:20 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9AD91065672; Sat, 25 Apr 2009 23:40:20 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8DA0E8FC08; Sat, 25 Apr 2009 23:40:20 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n3PNeKmn066554; Sat, 25 Apr 2009 23:40:20 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n3PNeKjQ066553; Sat, 25 Apr 2009 23:40:20 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <200904252340.n3PNeKjQ066553@svn.freebsd.org> From: Andrew Thompson Date: Sat, 25 Apr 2009 23:40:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r191504 - user/thompsa/vaptq/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Apr 2009 23:40:21 -0000 Author: thompsa Date: Sat Apr 25 23:40:20 2009 New Revision: 191504 URL: http://svn.freebsd.org/changeset/base/191504 Log: The vap pointer is cleared in ieee80211_scan_vdetach() so keep a pointer to the ic too. Modified: user/thompsa/vaptq/sys/net80211/ieee80211_scan.c user/thompsa/vaptq/sys/net80211/ieee80211_scan.h Modified: user/thompsa/vaptq/sys/net80211/ieee80211_scan.c ============================================================================== --- user/thompsa/vaptq/sys/net80211/ieee80211_scan.c Sat Apr 25 23:09:39 2009 (r191503) +++ user/thompsa/vaptq/sys/net80211/ieee80211_scan.c Sat Apr 25 23:40:20 2009 (r191504) @@ -115,6 +115,7 @@ ieee80211_scan_attach(struct ieee80211co cv_init(&ss->ss_scan_cv, "scan"); TASK_INIT(&ss->ss_scan_task, 0, scan_task, ss); ic->ic_scan = &ss->base; + ss->base.ss_ic = ic; ic->ic_scan_curchan = scan_curchan; ic->ic_scan_mindwell = scan_mindwell; @@ -327,7 +328,7 @@ channel_type(const struct ieee80211_chan void ieee80211_scan_dump_channels(const struct ieee80211_scan_state *ss) { - struct ieee80211com *ic = ss->ss_vap->iv_ic; + struct ieee80211com *ic = ss->ss_ic; const char *sep; int i; @@ -815,6 +816,8 @@ scan_signal(void *arg) { struct ieee80211_scan_state *ss = (struct ieee80211_scan_state *) arg; + IEEE80211_LOCK_ASSERT(ss->ss_ic); + cv_signal(&SCAN_PRIVATE(ss)->ss_scan_cv); } @@ -825,8 +828,7 @@ scan_signal(void *arg) static void scan_mindwell(struct ieee80211_scan_state *ss) { - struct ieee80211vap *vap = ss->ss_vap; - struct ieee80211com *ic = vap->iv_ic; + struct ieee80211com *ic = ss->ss_ic; IEEE80211_LOCK(ic); scan_signal(ss); @@ -839,13 +841,13 @@ scan_task(void *arg, int pending) #define ISCAN_REP (ISCAN_MINDWELL | ISCAN_DISCARD) struct ieee80211_scan_state *ss = (struct ieee80211_scan_state *) arg; struct ieee80211vap *vap = ss->ss_vap; - struct ieee80211com *ic = vap->iv_ic; + struct ieee80211com *ic = ss->ss_ic; struct ieee80211_channel *chan; unsigned long maxdwell, scanend; int scandone = 0; IEEE80211_LOCK(ic); - if ((ic->ic_flags & IEEE80211_F_SCAN) == 0 || + if (vap == NULL || (ic->ic_flags & IEEE80211_F_SCAN) == 0 || (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_ABORT)) { /* Cancelled before we started */ goto done; Modified: user/thompsa/vaptq/sys/net80211/ieee80211_scan.h ============================================================================== --- user/thompsa/vaptq/sys/net80211/ieee80211_scan.h Sat Apr 25 23:09:39 2009 (r191503) +++ user/thompsa/vaptq/sys/net80211/ieee80211_scan.h Sat Apr 25 23:40:20 2009 (r191504) @@ -90,6 +90,7 @@ struct ieee80211_scan_ssid { */ struct ieee80211_scan_state { struct ieee80211vap *ss_vap; + struct ieee80211com *ss_ic; const struct ieee80211_scanner *ss_ops; /* policy hookup, see below */ void *ss_priv; /* scanner private state */ uint16_t ss_flags;