svn commit: r225686 - head/sys/dev/iwn
Adrian Chadd
adrian at FreeBSD.org
Tue Sep 20 04:30:24 UTC 2011
Author: adrian
Date: Tue Sep 20 04:30:23 2011
New Revision: 225686
URL: http://svn.freebsd.org/changeset/base/225686
Log:
Manually set the channel when using monitor mode - the firmware
doesn't select it automatically.
Submitted by: nox
Reviewed by: bschmidt
Approved by: re
PR: kern/160815
Modified:
head/sys/dev/iwn/if_iwn.c
Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c Tue Sep 20 04:20:55 2011 (r225685)
+++ head/sys/dev/iwn/if_iwn.c Tue Sep 20 04:30:23 2011 (r225686)
@@ -6952,12 +6952,24 @@ iwn_set_channel(struct ieee80211com *ic)
const struct ieee80211_channel *c = ic->ic_curchan;
struct ifnet *ifp = ic->ic_ifp;
struct iwn_softc *sc = ifp->if_softc;
+ int error;
IWN_LOCK(sc);
sc->sc_rxtap.wr_chan_freq = htole16(c->ic_freq);
sc->sc_rxtap.wr_chan_flags = htole16(c->ic_flags);
sc->sc_txtap.wt_chan_freq = htole16(c->ic_freq);
sc->sc_txtap.wt_chan_flags = htole16(c->ic_flags);
+
+ /*
+ * Only need to set the channel in Monitor mode. AP scanning and auth
+ * are already taken care of by their respective firmware commands.
+ */
+ if (ic->ic_opmode == IEEE80211_M_MONITOR) {
+ error = iwn_config(sc);
+ if (error != 0)
+ device_printf(sc->sc_dev,
+ "%s: error %d settting channel\n", __func__, error);
+ }
IWN_UNLOCK(sc);
}
More information about the svn-src-all
mailing list