737 Commits

Author SHA1 Message Date
bschmidt
14dd7e3bfc Instead of always returning 0 to a scan request, indicate if there is
one running already.

MFC after:	1 month
2011-01-30 14:05:21 +00:00
bschmidt
df7538722d Change return code semantics of start_scan_locked(). Instead of reporting
if a scan is running, report if a scan has been started. The return value
itself is not (yet) used anywhere in the tree and it is also not exported
to userspace.

MFC after:	1 month
2011-01-30 14:00:50 +00:00
bschmidt
e03ae5f207 Honor the IEEE80211_SCAN_BGSCAN flag, which makes it possible to actually
request a background scan using IEEE80211_IOC_SCAN_BGSCAN.

MFC after:	1 month
2011-01-30 11:23:59 +00:00
bschmidt
7276c51686 Jump to the next element and not to an arbitrary point. frm[1] contains
the element's data length, frm[2] is the first byte of the element's data.

Submitted by:	Monthadar Al Jaberi <monthadar at gmail.com>
MFC after:	1 week
2011-01-19 17:40:58 +00:00
mdf
0086ff603f Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need
to rely on the format string.  For SYSCTL_PROC instances that I
noticed a discrepancy between the CTLTYPE and the format specifier,
fix the CTLTYPE.
2011-01-18 21:14:13 +00:00
bschmidt
c0217db66a Pull ieee80211_ratectl_node_init() calls from drivers into net80211.
This fixes hostap mode for at least ral(4) and run(4), because there is
no sufficient call into drivers which could be used initialize the node
related ratectl variables.

MFC after:	3 days
2011-01-17 20:15:15 +00:00
mdf
5e41205b16 sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly.
Commit the net* piece.
2011-01-12 19:53:50 +00:00
bschmidt
b040c9742c The meshid element is memcpy()'ed into se_meshid if included in either
beacon or probe-response frames. Fix the condition by checking for the
the array's content instead of the always existing array itself.

Reviewed by:	rpaulo, stefanf
MFC after:	3 days
2010-11-22 19:01:47 +00:00
bschmidt
c6127cd462 The ni_rctls checks are used to verify that a ratectl algo has set up
its internal data. This has been used to bypass missing calls in drivers
which do not use the ratectl framework correctly. Issue is, not all algos
use that variable, or even have internal data, therefore valid calls are
not done. Fix this by removing the checks, all driver issues should be
resolved.

MFC after:	1 week
2010-11-14 09:59:52 +00:00
bschmidt
9c06f52570 Some device drivers calculate various timing related things based on
the currently selected rate. The calculations of course need a valid
rate. To make that possible before any call to node_rate() is done,
initialize ni_txrate on none_node_init() calls.

MFC after:	1 week
2010-11-13 14:59:54 +00:00
bschmidt
5fd0b74a4c Instead of using the AMRR ratectl algo as default for drivers which have
the IEEE80211_C_RATECTL flag set, default to NONE for all drivers. Only if
a driver calls ieee80211_ratectl_init() check if the NONE algo is still
selected and try to use AMRR in that case. Drivers are still free to use
any other algo by calling ieee80211_ratectl_set() prior to the
ieee80211_ratectl_init() call.

After this change it is now safe to assume that a ratectl algo is always
available and selected, which renders the IEEE80211_C_RATECTL flag pretty
much useless. Therefore revert r211314 and 211546.

Reviewed by:	rpaulo
MFC after:	2 weeks
2010-11-06 18:17:20 +00:00
bschmidt
3160add3b2 Fix an undefined behaviour if the desired ratectl algo is not available.
This can happen if the algos are built as modules but are not loaded. If
the selected ratectl algo is not available, try to load it (The load
module functions does nothing currently). Add a dummy ratectl algo which
always selects the first available rate. Use that one if the desired algo
is not available.

MFC after:	1 week
2010-10-19 18:49:26 +00:00
adrian
0b4711038c Fix background roaming to actually work in AUTO roaming mode.
IEEE80211_F_BGSCAN is a vap flag, not a channel flag. So although bgscan
occured, sta_roam_check() would never be called.
2010-10-01 09:18:30 +00:00
bschmidt
f75ce6f82b Wrap remaining ieee80211_ratectl_node_init() calls missed in r211314.
MFC after:	1 week
2010-08-21 11:06:21 +00:00
bschmidt
267bcceb3d Introduce IEEE80211_C_RATECTL, drivers which use the ratectl framework
should set this capability.

MFC after:	2 weeks
2010-08-14 20:12:10 +00:00
bschmidt
d5905923b3 Initialize ni_txrate after txparams have been setup. Some drivers
calculate various things prior to association based on ni_txrate and
rely on it being nonzero.

PR:		kern/149185
MFC after:	2 weeks
2010-08-14 09:29:42 +00:00
bschmidt
3b1f97758a - Introduce IEEE80211_KEY_NOREPLAY, a per-key flag to ignore replay
violations.
- Use SIOCGIFMEDIA to determine VAP's opmode, cache it and set
  IEEE80211_KEY_NOREPLAY for AHDEMO and IBSS.

Approved by:	rpaulo (mentor)
2010-07-01 20:50:12 +00:00
ed
b561e7e4e1 Remove GNU-style struct initialization.
Spotted by:	clang
Approved by:	rpaulo
2010-06-12 07:02:43 +00:00
avatar
fb3bba8d11 Fixing compilation bustage by adding the missing && back. 2010-06-11 01:32:42 +00:00
rpaulo
826b4773a0 Some odd APs send beacons on the same TX queue as non-beacons. This breaks
802.11 duplicate detection. Upon looking at the standard, we discover
that 802.11-2007 says:
"A receiving QoS STA is also required to keep only the most recent
cache entry per<Address 2, TID, sequence-number>  triple, storing only
the most recently received fragment number for that triple. A receiving
STA may omit tuples obtained from broadcast/multicast or ATIM frames
from the cache."

To fix this, we just disable duplicate detection for multicast/broadcast
frames.

Reviewed by:	sam
MFC after:	4 weeks
Obtained from:	DragonFly
2010-06-10 20:58:34 +00:00
rpaulo
8d7910925e Add missing braces.
Submitted by:	sam
MFC after:	3 days
2010-06-10 20:40:38 +00:00
rpaulo
e5a26a05f9 Fix resource leaks in ieee80211_ioctl_setchanlist() in case of error.
Found with:	Coverity Prevent(tm)
CID:		4115
MFC after:	3 days
2010-06-01 14:20:58 +00:00
rpaulo
3fbf954047 Compare the address of the array, not the array.
Found with:	Coverity Prevent(tm)
CID:		3690
MFC after:	3 days
2010-06-01 14:17:08 +00:00
rpaulo
9e7e3d48a9 Don't reference null pointer in hwmp_recv_preq().
Found with:	Coverity Prevent(tm)
CID:		3912
MFC after:	3 days
2010-06-01 14:13:59 +00:00
rpaulo
6ae6854355 Properly initialize stack variable sr in setmlme_assoc_adhoc().
Found with:	Coverity Prevent(tm)
CID		4365
MFC after:	3 days
2010-06-01 14:04:00 +00:00
sobomax
213eac1f2c Add new tunable 'net.link.ifqmaxlen' to set default send interface
queue length. The default value for this parameter is 50, which is
quite low for many of today's uses and the only way to modify this
parameter right now is to edit if_var.h file. Also add read-only
sysctl with the same name, so that it's possible to retrieve the
current value.

MFC after:	1 month
2010-05-03 07:32:50 +00:00
rpaulo
37a9ab0c67 Decrement rxa_pad due to the addition of rxa_private. 2010-04-29 15:19:11 +00:00
rpaulo
60e1354e61 Add a private field to struct ieee80211_rx_ampdu do hold driver specific
data.

Sponsored by:	iXsystems, inc
2010-04-28 14:59:05 +00:00
rpaulo
8b879379b5 Add ic_rxstream and ic_txstream. These variables hold the number of RX
streams and the number of TX streams respectively.

Obtained from:	//depot/user/rpaulo/80211n/...
Sponsored by:	iXsystems, inc.
2010-04-28 13:42:13 +00:00
rpaulo
98a310d904 When in the RUN -> AUTH -> RUN FSM transition happens, we'll call the
ratectl_node_init() functions and since ni_rtctls was already
malloc'ed() we will panic. Fix this by using the already malloc'ed
pointer.

Found by:	bschmidt
Reviewed by:	bschmidt
2010-04-28 13:25:53 +00:00
rpaulo
1a94039c1d Fix typo. No functional change.
Obtained from:	DragonFlyBSD
2010-04-28 10:58:50 +00:00
rpaulo
a3b4a561d7 Make this code a little more portable by wrapping the mtx calls into
macros.

MFC after:	1 week
2010-04-14 18:29:40 +00:00
bschmidt
a98b1eb99d Add WPA-None support:
* WPA-None requires ap_scan=2:
  The major difference between ap_scan=1 (default) and 2 is, that no
  IEEE80211_IOC_SCAN* ioctls/functions are called, though, there is a
  dependency on those. For example the call to wpa_driver_bsd_scan()
  sets the interface UP, this never happens, therefore the interface
  must be marked up in wpa_driver_bsd_associate(). IEEE80211_IOC_SSID
  also is not called, which means that the SSID has not been set prior
  to the IEEE80211_MLME_ASSOC call.
* WPA-None has no support for sequence number updates, it doesn't make
  sense to check for replay violations..
* I had some crashes right after the switch to RUN state, issue is
  that sc->sc_lastrs was not yet defined.

Approved by:	rpaulo (mentor)
MFC after:	3 weeks
2010-04-10 13:54:00 +00:00
rpaulo
6e781e21db Use M_NOWAIT instead of M_WAITOK to avoid race conditions.
MFC after:	1 month
2010-04-09 12:06:19 +00:00
rpaulo
9c61cd77f5 Swap IEEE80211_RATECTL_TX_SUCCESS/IEEE80211_RATECTL_TX_FAILURE.
Submitted by:	PseudoCylon Furukoshi <moonlightakkiy at yahoo.ca>
MFC after:	1 month
2010-04-09 11:29:16 +00:00
rpaulo
a1efab7703 Prevent foot-shooting in ieee80211_ratectl_node_deinit().
MFC after:	1 month
2010-04-08 13:34:08 +00:00
rpaulo
df400f39ee Fix build.
Pointy hat:	me
MFC after:	1 month
2010-04-07 17:31:56 +00:00
rpaulo
69bf804b50 net80211 rate control framework (net80211 ratectl).
This framework allows drivers to abstract the rate control algorithm and
just feed the framework with the usable parameters. The rate control
framework will now deal with passing the parameters to the selected
algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
no way to select one with ifconfig, yet.
The objective is to have more rate control algorithms in the net80211
stack so all drivers[0] can use it. Ideally, we'll have the well-known
sample rate control algorithm in the net80211 at some point so all
drivers can use it (not just ath).

[0] all drivers that do rate control in software, that is.

Reviewed by:	bschmidt, thompsa, weyongo
MFC after:	1 months
2010-04-07 15:29:13 +00:00
rpaulo
7baff87d11 Constify vap argument of ieee80211_{note,discard}* functions.
MFC after:	1 week
2010-03-31 16:07:36 +00:00
rpaulo
9eaa28fa36 Add a comment explaining the previous commit.
Submitted by:	sam
> Description of fields to fill in above:                     76 columns --|
> PR:            If a GNATS PR is affected by the change.
> Submitted by:  If someone else sent in the change.
> Reviewed by:   If someone else reviewed your modification.
> Approved by:   If you needed approval for this commit.
> Obtained from: If the change is from a third party.
> MFC after:     N [day[s]|week[s]|month[s]].  Request a reminder email.
> Security:      Vulnerability reference (one per line) or description.
> Empty fields above will be automatically removed.

M    ieee80211_hostap.c
2010-03-28 12:55:31 +00:00
rpaulo
0495685db0 When receiving a management frame, pass the mbuf to bpf before calling
iv_recv_mgmt(). iv_recv_mgmt() will generate management frame responses
and pass them to bpf before the management frame that triggered the
response.

PR:		144323
Submitted by:	Alexander Egorenkov <egorenar at gmail.com>
MFC after:	2 weeks
Sponsored by:	iXsystems, inc.
2010-03-23 14:31:31 +00:00
rpaulo
417d4c8dbb Add a new field for extended HT capabilities.
Submitted by:	Alexander Egorenkov <egorenar at gmail.com>
MFC after:	2 weeks
Sponsored by:	iXsystems, inc.
2010-03-23 12:03:09 +00:00
rpaulo
220a864bce Unbreak build by removing a code bit that is only related to other code
in my branch.
2010-03-18 15:28:17 +00:00
rpaulo
1afdf5764e Fix a couple of bugs with 802.11n:
o Process the BAR frame on the adhoc, mesh and sta modes
o Fix the format of the ADDBA reply frame
o Fix references to the spec section numbers

Also, print the all the MCS rates in bootverbose.

Sponsored by:	iXsystems, Inc.
Obtained from:	//depot/user/rpaulo/80211n/...
2010-03-18 11:06:38 +00:00
weongyo
ca2c72ee9b fixes a broken software beacon miss handler. There is a race to check
vap->iv_bmiss_count == 0 in ieee80211_swbmiss because iv_swbmiss_task is
enqueued by taskqueue.

Reviewed by:	rpaulo
2010-03-14 01:57:32 +00:00
bschmidt
3c2fa0128f Ensure that tkip_mixing_phase1() is called after a rekeying event when
useing plain s/w crypto.

Approved by:	rpaulo (mentor)
Reviewed by:	sam
2010-02-08 18:16:59 +00:00
rpaulo
4304f61e8f Revert unwanted changes in revision 203422.
Spotted by:	sam
2010-02-06 19:24:16 +00:00
rpaulo
dcc17451da Avoid a null pointer deref when parsing the meshid.
Found with:	clang static analyzer
2010-02-03 10:12:49 +00:00
rpaulo
adb938921e When taking the AMPDU reorder fastpath, need_tap wasn't being
initialized. Initialize on declaration to avoid this.

Found with:	clang static analyzer
2010-02-03 10:07:43 +00:00
rpaulo
f81c7c34d7 Call ieee80211_radiotap_rx, not ieee80211_radiotap_tx on sta_input()
PR:		143163
Submitted by:	Alexander Egorenkov <egorenar at gmail.com>
MFC after:	3 days
2010-01-25 12:23:51 +00:00