freebsd with flexible iflib nic queues
Go to file
Adrian Chadd fee842aa2a Overhaul the iwn(4) scan infrastructure to be slightly more "correct"
for these chipsets.

* Correctly set the active/passive flag in the scan request - this is
  NOT a "is the channel active|passive"; it's to do with whether we
  have an SSID to actively scan for or not.  The firmware takes care
  of the active/passive setup of the channel.

* Calculate the active/passive dwell time based on the beacon interval
  and the channel mode, rather than using a hard coded value.

* For now, hardcode the scan service_time.  It's defined as:

  31:22 - number of beacon intervals to come back onto the home channel
          for;
  0:21  - time (microseconds) to come back onto the home channel for.

  When doing an active scan when the NIC is active (whether we're associated
  or not - it only matters if we've setup the NIC to a destination or not)
  this determines how much time to stay on the home channel for when
  scanning.  We can tune this based on the amount of active traffic.

  For now it's 4 beacon intervals and 100 microseconds.

* Fix the "good crc threshold" setting.  It differs based on the NIC
  firmware.  Some older firmware required a workaround; the later
  firmware instead treats the field as a flag.

* Enforce that we are not sending a scan command if one is already
  pending.  Any time this is done is a bug and it absolutely needs
  to be fixed - so be very loud.

* Add the SCAN flag to a few debug messages that are scan related but
  only occuring under STATE.

Now, this does get noisy when you're scanning in an actively busy 2GHz
network as the firmware (for reason I don't quite yet understand) seems
hell bent on staying on some passive channels longer than it should.
However, it should eventually recover and complete the scan.

This is a work in progress; please let me know if things get stuck or
if things improve!

Tested:

* intel centrino 2200
* intel centrino 2230
* intel 6200
* intel 5100
* intel 4965 (gets upset, but that's a known issue)

Obtained from:	linux iwlwifi
2013-12-02 03:59:45 +00:00
bin test: Simplify the code by unifying op_num and op_type. 2013-12-01 17:00:57 +00:00
cddl MFV r258371,r258372: 4101 metaslab_debug should allow for fine-grained control 2013-11-28 19:37:22 +00:00
contrib libcpp: Merge fixes from upstream 2013-12-02 03:47:08 +00:00
crypto MFV r257952: 2013-11-11 09:19:58 +00:00
etc Create /var/cache with mode 0755 instead of 0750. 2013-11-26 20:03:25 +00:00
games Refresh the tips for the new pkg system. 2013-10-03 11:51:15 +00:00
gnu gcc: Missing makefile changes for r258501. 2013-11-24 04:08:47 +00:00
include Replace Sun Industry Standards Source License for Sun RPC code with a 2013-11-25 19:08:38 +00:00
kerberos5 Clean up the Kerberos build by turning libheimipcc and libheimipcs into 2013-09-10 18:40:43 +00:00
lib chmod(2): Document S_ISVTX following SUSv3/SUSv4. 2013-12-01 12:24:57 +00:00
libexec Build and install the atf tests. 2013-11-08 14:33:41 +00:00
release Use standard CLEANFILES/CLEANDIRS and clean target in bsd.obj.mk. 2013-12-01 15:24:35 +00:00
rescue - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
sbin Remove trailing backslash. 2013-12-01 09:52:38 +00:00
secure Unbreak the WITHOUT_KERBEROS build and try to reduce the odds of a 2013-09-23 20:35:54 +00:00
share Move my simple logging API to a separate library. It is now already used 2013-12-01 09:41:06 +00:00
sys Overhaul the iwn(4) scan infrastructure to be slightly more "correct" 2013-12-02 03:59:45 +00:00
tests Install category Kyuafiles from their category directories. 2013-11-08 14:29:06 +00:00
tools Add package additions support for pkgng by adding a new function cust_pkgng(): 2013-11-28 11:06:18 +00:00
usr.bin Import svn-1.8.5. This contains a user-visible fix for svn:externals 2013-11-25 17:52:16 +00:00
usr.sbin Sort function output on name of the function. 2013-11-30 23:47:18 +00:00
COPYRIGHT Happy New Year 2013! 2012-12-31 11:22:55 +00:00
LOCKS Explicitly require Security Officer's approval for kernel PRNG bits. 2013-09-17 14:19:05 +00:00
MAINTAINERS pkg_install has been removed on 20131031. 2013-11-09 16:20:42 +00:00
Makefile Remove the armv6eb architecture as it is unused, and almost certainly 2013-09-22 07:30:17 +00:00
Makefile.inc1 Move my simple logging API to a separate library. It is now already used 2013-12-01 09:41:06 +00:00
ObsoleteFiles.inc One more BIND remnant: /etc/mtree/BIND.chroot.dist 2013-11-19 13:32:24 +00:00
README Vendor import of OpenSSH 6.4p1. 2013-11-11 09:13:37 +00:00
UPDATING Also mention that drill(1) can be used, now that nslookup and dig are no 2013-11-29 08:22:48 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html