Date: Sat, 25 Apr 2009 23:40:20 +0000 (UTC) From: Andrew Thompson <thompsa@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r191504 - user/thompsa/vaptq/sys/net80211 Message-ID: <200904252340.n3PNeKjQ066553@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904252340.n3PNeKjQ066553>