xref: /netbsd/sys/net80211/CHANGES (revision 6550d01e)
1***
2*** Summary of changes between 2005-05-18 and 2005-11-01.
3***
4*** % setenv TZ UTC
5*** % cvs -d freebsdanoncvs@anoncvs.freebsd.org:/home/ncvs co src
6*** % cd src/sys/net80211/
7*** % cvs2cl --follow trunk --hide-filenames --no-indent --no-wrap \
8***      -f CHANGES -l '-d 2005-05-18<=2005-11-01'
9***
10
112005-08-30 14:27  avatar
12
13Properly set ic_curchan before calling back to device driver to do channel
14switching(ifconfig devX channel Y).  This fix should make channel changing
15works again in monitor mode.
16
17Submitted by:	sam
18X-MFC-With:	other ic_curchan changes
19
202005-08-13 17:50  sam
21
22revert 1.64: we cannot use the channel characteristics to decide when to
23do 11g erp sta accounting because b/g channels show up as false positives
24when operating in 11b.
25
26Noticed by:	Michal Mertl
27
282005-08-13 17:31  sam
29
30Extend acl support to pass ioctl requests through and use this to
31add support for getting the current policy setting and collecting
32the list of mac addresses in the acl table.
33
34Submitted by:	Michal Mertl (original version)
35MFC after:	2 weeks
36
372005-08-10 17:42  sam
38
39Don't use ic_curmode to decide when to do 11g station accounting,
40use the station channel properties.  Fixes assert failure/bogus
41operation when an ap is operating in 11a and has associated stations
42then switches to 11g.
43
44Noticed by:	Michal Mertl
45Reviewed by:	avatar
46MFC after:	2 weeks
47
482005-08-10 16:22  sam
49
50Clarify/fix handling of the current channel:
51o add ic_curchan and use it uniformly for specifying the current
52  channel instead of overloading ic->ic_bss->ni_chan (or in some
53  drivers ic_ibss_chan)
54o add ieee80211_scanparams structure to encapsulate scanning-related
55  state captured for rx frames
56o move rx beacon+probe response frame handling into separate routines
57o change beacon+probe response handling to treat the scan table
58  more like a scan cache--look for an existing entry before adding
59  a new one; this combined with ic_curchan use corrects handling of
60  stations that were previously found at a different channel
61o move adhoc neighbor discovery by beacon+probe response frames to
62  a new ieee80211_add_neighbor routine
63
64Reviewed by:	avatar
65Tested by:	avatar, Michal Mertl
66MFC after:	2 weeks
67
682005-08-09 10:19  rwatson
69
70Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and
71IFF_DRV_RUNNING, as well as the move from ifnet.if_flags to
72ifnet.if_drv_flags.  Device drivers are now responsible for
73synchronizing access to these flags, as they are in if_drv_flags.  This
74helps prevent races between the network stack and device driver in
75maintaining the interface flags field.
76
77Many __FreeBSD__ and __FreeBSD_version checks maintained and continued;
78some less so.
79
80Reviewed by:	pjd, bz
81MFC after:	7 days
82
832005-08-08 18:46  sam
84
85Split crypto tx+rx key indices and add a key index -> node mapping table:
86
87Crypto changes:
88o change driver/net80211 key_alloc api to return tx+rx key indices; a
89  driver can leave the rx key index set to IEEE80211_KEYIX_NONE or set
90  it to be the same as the tx key index (the former disables use of
91  the key index in building the keyix->node mapping table and is the
92  default setup for naive drivers by null_key_alloc)
93o add cs_max_keyid to crypto state to specify the max h/w key index a
94  driver will return; this is used to allocate the key index mapping
95  table and to bounds check table loookups
96o while here introduce ieee80211_keyix (finally) for the type of a h/w
97  key index
98o change crypto notifiers for rx failures to pass the rx key index up
99  as appropriate (michael failure, replay, etc.)
100
101Node table changes:
102o optionally allocate a h/w key index to node mapping table for the
103  station table using the max key index setting supplied by drivers
104  (note the scan table does not get a map)
105o defer node table allocation to lateattach so the driver has a chance
106  to set the max key id to size the key index map
107o while here also defer the aid bitmap allocation
108o add new ieee80211_find_rxnode_withkey api to find a sta/node entry
109  on frame receive with an optional h/w key index to use in checking
110  mapping table; also updates the map if it does a hash lookup and the
111  found node has a rx key index set in the unicast key; note this work
112  is separated from the old ieee80211_find_rxnode call so drivers do
113  not need to be aware of the new mechanism
114o move some node table manipulation under the node table lock to close
115  a race on node delete
116o add ieee80211_node_delucastkey to do the dirty work of deleting
117  unicast key state for a node (deletes any key and handles key map
118  references)
119
120Ath driver:
121o nuke private sc_keyixmap mechansim in favor of net80211 support
122o update key alloc api
123
124These changes close several race conditions for the ath driver operating
125in ap mode.  Other drivers should see no change.  Station mode operation
126for ath no longer uses the key index map but performance tests show no
127noticeable change and this will be fixed when the scan table is eliminated
128with the new scanning support.
129
130Tested by:	Michal Mertl, avatar, others
131Reviewed by:	avatar, others
132MFC after:	2 weeks
133
1342005-08-08 05:49  sam
135
136use ieee80211_iterate_nodes to retrieve station data; the previous
137code walked the list w/o locking
138
139MFC after:	1 week
140
1412005-08-08 03:30  sam
142
143Cleanup beacon/listen interval handling:
144o separate configured beacon interval from listen interval; this
145  avoids potential use of one value for the other (e.g. setting
146  powersavesleep to 0 clobbers the beacon interval used in hostap
147  or ibss mode)
148o bounds check the beacon interval received in probe response and
149  beacon frames and drop frames with bogus settings; not clear
150  if we should instead clamp the value as any alteration would
151  result in mismatched sta+ap configuration and probably be more
152  confusing (don't want to log to the console but perhaps ok with
153  rate limiting)
154o while here up max beacon interval to reflect WiFi standard
155
156Noticed by:	Martin <nakal@nurfuerspam.de>
157MFC after:	1 week
158
1592005-08-06 04:57  sam
160
161fix debug msg typo
162
163MFC after:	3 days
164
1652005-08-06 04:56  sam
166
167Fix handling of frames sent prior to a station being authorized
168when operating in ap mode.  Previously we allocated a node from the
169station table, sent the frame (using the node), then released the
170reference that "held the frame in the table".  But while the frame
171was in flight the node might be reclaimed which could lead to
172problems.  The solution is to add an ieee80211_tmp_node routine
173that crafts a node that does exist in a table and so isn't ever
174reclaimed; it exists only so long as the associated frame is in flight.
175
176MFC after:	5 days
177
1782005-07-31 06:12  sam
179
180close a race between reclaiming a node when a station is inactive
181and sending the null data frame used to probe inactive stations
182
183MFC after:	5 days
184
1852005-07-27 04:41  sam
186
187when bridging internally bypass the bss node as traffic to it
188must follow the normal input path
189
190Submitted by:	Michal Mertl
191MFC after:	5 days
192
1932005-07-27 02:53  sam
194
195bandaid ni_fails handling so ap's with association failures are
196reconsidered after a bit; a proper fix involves more changes to
197the scanning infrastructure
198
199Reviewed by:	avatar, David Young
200MFC after:	5 days
201
2022005-07-23 00:16  sam
203
204the AREF flag is only meaningful in ap mode; adhoc neighbors now
205are timed out of the sta/neighbor table
206
2072005-07-22 23:25  sam
208
209o move inactivity-related debug msgs under IEEE80211_MSG_INACT
210o probe inactive neighbors in adhoc mode (they don't have an
211  association id so previously were being timed out)
212
213MFC after:	3 days
214
2152005-07-22 21:11  sam
216
217split xmit of probe request frame out into a separate routine that
218takes explicit parameters; this will be needed when scanning is
219decoupled from the state machine to do bg scanning
220
221MFC after:	3 days
222
2232005-07-22 20:48  sam
224
225split 802.11 frame xmit setup code into ieee80211_send_setup
226
227MFC after:	3 days
228
2292005-07-22 17:57  sam
230
231simplify ic_newassoc callback
232
233MFC after:	3 days
234
2352005-07-22 17:54  sam
236
237simplify ieee80211_ibss_merge api
238
239MFC after:	3 days
240
2412005-07-22 17:50  sam
242
243add stats we know we'll need soon and some spare fields for future expansion
244
245MFC after:	3 days
246
2472005-07-22 17:45  sam
248
249simplify tim callback api
250
251MFC after:	3 days
252
2532005-07-22 17:42  sam
254
255don't include 802.3 header in min frame length calculation as it may
256not be present for a frag; fixes problem with small (fragmented) frames
257being dropped
258
259Obtained from:	Atheros
260MFC after:	3 days
261
2622005-07-22 17:36  sam
263
264simplify ieee80211_node_authorize and ieee80211_node_unauthorize api's
265
266MFC after:	3 days
267
2682005-07-22 17:31  sam
269
270simplifiy ieee80211_send_nulldata api
271
272MFC after:	3 days
273
2742005-07-22 17:29  sam
275
276simplify rate set api's by removing ic parameter (implicit in node reference)
277
278MFC after:	3 days
279
2802005-07-22 17:21  sam
281
282reject association requests with a wpa/rsn ie when wpa/rsn is not
283configured on the ap; previously we either ignored the ie or (possibly)
284failed an assertion
285
286Obtained from:	Atheros
287MFC after:	3 days
288
2892005-07-22 17:16  sam
290
291missed one in last commit; add device name to discard msgs
292
2932005-07-22 17:13  sam
294
295include device name in discard msgs
296
2972005-07-22 17:12  sam
298
299add diag msgs for frames discarded because the direction field is wrong
300
3012005-07-22 17:08  sam
302
303split data frame delivery out to a new function ieee80211_deliver_data
304
3052005-07-22 17:00  sam
306
307o add IEEE80211_IOC_FRAGTHRESHOLD for getting+setting the
308  tx fragmentation threshold
309o fix bounds checking on IEEE80211_IOC_RTSTHRESHOLD
310
311MFC after:	3 days
312
3132005-07-22 16:55  sam
314
315o add IEEE80211_FRAG_DEFAULT
316o move default settings for RTS and frag thresholds to ieee80211_var.h
317
3182005-07-22 16:50  sam
319
320diff reduction against p4: define IEEE80211_FIXED_RATE_NONE and use
321it instead of -1
322
3232005-07-22 16:37  sam
324
325add flags missed in last merge
326
3272005-07-22 16:36  sam
328
329Diff reduction against p4:
330o add ic_flags_ext for eventual extention of ic_flags
331o define/reserve flag+capabilities bits for superg,
332  bg scan, and roaming support
333o refactor debug msg macros
334
335MFC after:	3 days
336
3372005-07-22 05:17  sam
338
339send a response when an auth request is denied due to an acl;
340might be better to silently ignore the frame but this way we
341give stations a chance of figuring out what's wrong
342
3432005-07-22 05:15  sam
344
345remove excess whitespace
346
3472005-07-22 04:55  sam
348
349use IF_HANDOFF when bridging frames internally so if_start gets
350called; fixes communication between associated sta's
351
352MFC after:	3 days
353
3542005-07-11 03:06  sam
355
356Handle encrypt of arbitarily fragmented mbuf chains: previously
357we bailed if we couldn't collect the 16-bytes of data required
358for an aes block cipher in 2 mbufs; now we deal with it.  While
359here make space accounting signed so a sanity check does the
360right thing for malformed mbuf chains.
361
362Approved by:	re (scottl)
363
3642005-07-11 03:00  sam
365
366nuke assert that duplicates real check
367
368Reviewed by:	avatar
369Approved by:	re (scottl)
370
3712005-07-09 23:15  sam
372
373Change default key allocation method to do the right thing for
374legacy parts (i.e. those that have 4 global key slots).  We
375blindly assign unicast keys to key slot 0.  Devices that need
376alternate allocation logic must override this method.
377
378Reviewed by:	avatar
379Approved by:	re (scottl)
380
3812005-07-08 22:49  sam
382
383correct check for high priority wme traffic
384
385Noticed by:	Ralf Assmann
386Reviewed by:	apatti
387Approved by:	re (scottl)
388
3892005-07-08 16:36  sam
390
391fix another instance of the MORE_DATA bit handling for frames on the
392power save queue (missed in previous commit)
393
394Submitted by:	Bruno Randolf
395Approved by:	re (scottl)
396
3972005-07-06 15:38  sam
398
399add "pureg" mode for ap operation: reject association requests from
40011b-only stations when operating in 11g
401
402Reviewed by:	avatar
403Approved by:	re (scottl)
404
4052005-07-06 01:55  sam
406
407Fix handling of data frames queued for a station in power save mode:
408don't mark the MORE_DATA bit when taking it off the ps queue, there's
409no 802.11 header then; we must wait to do this at encap time so
410mark the mbuf instead.
411
412Reviewed by:	avatar
413Approved by:	re (scottl)
414Obtained from:	Atheros
415
4162005-07-06 01:51  sam
417
418Fix race condition in handling node reference counts for authenticating
419stations in ap mode.  Track when a node's first auth frame is
420received and use this to decide whether or not to bump the refcnt.
421This insures we only ever bump the refcnt once.
422
423Reviewed by:	avatar
424Approved by:	re (scottl)
425
4262005-07-06 01:31  avatar
427
428Only update the scan entry state based on newly received frames.
429This fixes duplicative BSS entries(memory leaks as well) listed in
430"ifconfig dev list scan" when a station fails to associate with an AP.
431
432Reviewed by:	sam
433Approved by:	re (scottl)
434
4352005-07-05 18:05  sam
436
437remove auto-add of IEEE80211_KEY_GROUP; all the apps that need to
438set it have been fixed
439
440Reviewed by:	avatar
441Approved by:	re (scottl)
442
4432005-07-05 17:35  sam
444
445o when setting a wpa key, hold a ref on the bss node;
446  fixes a ref cnt leak
447o make unicast key handling on delete identical to set
448o change legacy wep key api to reset the 802.11 state
449  machine for backwards compatibility
450
451Reviewed by:	avatar
452Approved by:	re (scottl)
453
4542005-07-04 01:29  sam
455
456when operating in ap mode, explicitly drop associated/authenticated
457stations when transitioning to INIT state (e.g. as a result of
458changing state at the 802.11 level)
459
460Approved by:	re (scottl)
461
4622005-06-13 21:01  sam
463
464revert 1.53; it breaks ibss merge
465
466Noticed by:	Bruno Randolf
467Approved by:	re (dwhite)
468
4692005-06-10 21:30  sam
470
471don't look at the wme ie in a beacon unless we negotiated use
472
4732005-06-10 16:49  brooks
474
475Stop embedding struct ifnet at the top of driver softcs. Instead the
476struct ifnet or the layer 2 common structure it was embedded in have
477been replaced with a struct ifnet pointer to be filled by a call to the
478new function, if_alloc(). The layer 2 common structure is also allocated
479via if_alloc() based on the interface type. It is hung off the new
480struct ifnet member, if_l2com.
481
482This change removes the size of these structures from the kernel ABI and
483will allow us to better manage them as interfaces come and go.
484
485Other changes of note:
486 - Struct arpcom is no longer referenced in normal interface code.
487   Instead the Ethernet address is accessed via the IFP2ENADDR() macro.
488   To enforce this ac_enaddr has been renamed to _ac_enaddr.
489 - The second argument to ether_ifattach is now always the mac address
490   from driver private storage rather than sometimes being ac_enaddr.
491
492Reviewed by:	sobomax, sam
493
4942005-06-10 16:14  sam
495
496validate the bssid for non-data frames too when operating in
497adhoc/ahdemo/hostap modes
498
4992005-06-10 16:11  sam
500
501o fix wpa w/ wme: don't strip the QoS header on recv as tkip requires
502  it; instead pass the space occupied by the header down into the
503  crypto modules (except in the demic case which needs it only when
504  doing int in s/w)
505o while here fix defrag to strip the header from 2nd and later frames
506o teach decap code how to handle 4-address frames
507
5082005-06-10 05:04  sam
509
510mark stations authorized during recv processing instead of doing it
511as a side effect of sending an auth success frame; sending mgmt
512frames should not have side effects
513
5142005-06-10 04:42  sam
515
516move AID implementation defines from the protocol definitions to
517where they are used
518
5192005-06-10 04:37  sam
520
521accept diassoc frame in ASSOC state
522
5232005-06-10 01:48  sam
524
525pull some debug msgs up so they're seen more often
526
5272005-06-10 01:47  sam
528
529kick the state machine when we receive failure notice from an ap (when
530operating in sta mode); this speeds up the state machine, previously
531we were acting on a timeout
532
5332005-06-10 01:43  sam
534
535discard open auth requests in adhoc mode
536
5372005-06-10 01:41  sam
538
539reject open auth requests when shared key auth is configured
540
541Obtained from:	Atheros
542
5432005-06-10 01:40  sam
544
545add ieee80211_send_error to encapsulate an idiom
546
5472005-06-10 01:38  sam
548
549o always check if ic_set_tim is !NULL before using it
550o add missing call to clear tim after flushing ps q
551
5522005-06-10 01:35  sam
553
554mark state for protection only when operating in 11g
555
5562005-06-10 01:33  sam
557
558don't reject station based on the PRIVACY bit in the capabilities;
559the 802.11 spec says not to
560
561Obtained from:	Atheros
562
5632005-06-10 01:31  sam
564
565correct checks for rate set compatibility
566
5672005-06-10 01:29  sam
568
569record tstamp from beacons received in station mode when associated;
570this is needed by drivers that want to resync their timers based on
571the tsf of the last recv'd beacon frame
572
5732005-06-09 04:05  sam
574
575o collect dtim period+count from beacons in station mode so drivers
576  can better program beacon timers
577o leave placeholder in com structure for future ap/adhoc mode tim support
578
579Reviewed by:	avatar
580
5812005-06-07 23:37  sam
582
583Change the MLME ASSOCIATE ioctl to accept either a ssid, a bssid,
584or a bssid+ssid. This is needed for later versions of wpa_supplicant
585and for forthcoming addons to wpa_supplicant.
586
587Note this is an api change and applications must be rebuilt.
588
5892005-06-07 23:31  sam
590
591Don't clock the state machine in various cases when roaming is set
592to manual; this helps keep wpa_supplicant in sync.
593
5942005-06-07 00:08  sam
595
596WPA/802.11i interoperability fixes:
597o only include capabilities word in the WPA ie when non-zero and
598  not preauth
599o always include the capabilities in the RSN ie
600
601Obtained from:	Atheros
602
6032005-06-06 04:04  sam
604
605add force flag to enmic/demic crypto api for use in xmit fragmentation
606and h/w mic verification
607
608Reviewed by:	avatar
609
610