1 *** 2 *** Summary of changes between 2005-05-18 and 2005-11-01. 3 *** 4 *** % setenv TZ UTC 5 *** % cvs -d freebsdanoncvs (a] 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 11 2005-08-30 14:27 avatar 12 13 Properly set ic_curchan before calling back to device driver to do channel 14 switching(ifconfig devX channel Y). This fix should make channel changing 15 works again in monitor mode. 16 17 Submitted by: sam 18 X-MFC-With: other ic_curchan changes 19 20 2005-08-13 17:50 sam 21 22 revert 1.64: we cannot use the channel characteristics to decide when to 23 do 11g erp sta accounting because b/g channels show up as false positives 24 when operating in 11b. 25 26 Noticed by: Michal Mertl 27 28 2005-08-13 17:31 sam 29 30 Extend acl support to pass ioctl requests through and use this to 31 add support for getting the current policy setting and collecting 32 the list of mac addresses in the acl table. 33 34 Submitted by: Michal Mertl (original version) 35 MFC after: 2 weeks 36 37 2005-08-10 17:42 sam 38 39 Don't use ic_curmode to decide when to do 11g station accounting, 40 use the station channel properties. Fixes assert failure/bogus 41 operation when an ap is operating in 11a and has associated stations 42 then switches to 11g. 43 44 Noticed by: Michal Mertl 45 Reviewed by: avatar 46 MFC after: 2 weeks 47 48 2005-08-10 16:22 sam 49 50 Clarify/fix handling of the current channel: 51 o 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) 54 o add ieee80211_scanparams structure to encapsulate scanning-related 55 state captured for rx frames 56 o move rx beacon+probe response frame handling into separate routines 57 o 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 61 o move adhoc neighbor discovery by beacon+probe response frames to 62 a new ieee80211_add_neighbor routine 63 64 Reviewed by: avatar 65 Tested by: avatar, Michal Mertl 66 MFC after: 2 weeks 67 68 2005-08-09 10:19 rwatson 69 70 Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 71 IFF_DRV_RUNNING, as well as the move from ifnet.if_flags to 72 ifnet.if_drv_flags. Device drivers are now responsible for 73 synchronizing access to these flags, as they are in if_drv_flags. This 74 helps prevent races between the network stack and device driver in 75 maintaining the interface flags field. 76 77 Many __FreeBSD__ and __FreeBSD_version checks maintained and continued; 78 some less so. 79 80 Reviewed by: pjd, bz 81 MFC after: 7 days 82 83 2005-08-08 18:46 sam 84 85 Split crypto tx+rx key indices and add a key index -> node mapping table: 86 87 Crypto changes: 88 o 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) 93 o 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 96 o while here introduce ieee80211_keyix (finally) for the type of a h/w 97 key index 98 o change crypto notifiers for rx failures to pass the rx key index up 99 as appropriate (michael failure, replay, etc.) 100 101 Node table changes: 102 o 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) 105 o 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 107 o while here also defer the aid bitmap allocation 108 o 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 114 o move some node table manipulation under the node table lock to close 115 a race on node delete 116 o 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 120 Ath driver: 121 o nuke private sc_keyixmap mechansim in favor of net80211 support 122 o update key alloc api 123 124 These changes close several race conditions for the ath driver operating 125 in ap mode. Other drivers should see no change. Station mode operation 126 for ath no longer uses the key index map but performance tests show no 127 noticeable change and this will be fixed when the scan table is eliminated 128 with the new scanning support. 129 130 Tested by: Michal Mertl, avatar, others 131 Reviewed by: avatar, others 132 MFC after: 2 weeks 133 134 2005-08-08 05:49 sam 135 136 use ieee80211_iterate_nodes to retrieve station data; the previous 137 code walked the list w/o locking 138 139 MFC after: 1 week 140 141 2005-08-08 03:30 sam 142 143 Cleanup beacon/listen interval handling: 144 o 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) 148 o 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) 154 o while here up max beacon interval to reflect WiFi standard 155 156 Noticed by: Martin <nakal (a] nurfuerspam.de> 157 MFC after: 1 week 158 159 2005-08-06 04:57 sam 160 161 fix debug msg typo 162 163 MFC after: 3 days 164 165 2005-08-06 04:56 sam 166 167 Fix handling of frames sent prior to a station being authorized 168 when operating in ap mode. Previously we allocated a node from the 169 station table, sent the frame (using the node), then released the 170 reference that "held the frame in the table". But while the frame 171 was in flight the node might be reclaimed which could lead to 172 problems. The solution is to add an ieee80211_tmp_node routine 173 that crafts a node that does exist in a table and so isn't ever 174 reclaimed; it exists only so long as the associated frame is in flight. 175 176 MFC after: 5 days 177 178 2005-07-31 06:12 sam 179 180 close a race between reclaiming a node when a station is inactive 181 and sending the null data frame used to probe inactive stations 182 183 MFC after: 5 days 184 185 2005-07-27 04:41 sam 186 187 when bridging internally bypass the bss node as traffic to it 188 must follow the normal input path 189 190 Submitted by: Michal Mertl 191 MFC after: 5 days 192 193 2005-07-27 02:53 sam 194 195 bandaid ni_fails handling so ap's with association failures are 196 reconsidered after a bit; a proper fix involves more changes to 197 the scanning infrastructure 198 199 Reviewed by: avatar, David Young 200 MFC after: 5 days 201 202 2005-07-23 00:16 sam 203 204 the AREF flag is only meaningful in ap mode; adhoc neighbors now 205 are timed out of the sta/neighbor table 206 207 2005-07-22 23:25 sam 208 209 o move inactivity-related debug msgs under IEEE80211_MSG_INACT 210 o probe inactive neighbors in adhoc mode (they don't have an 211 association id so previously were being timed out) 212 213 MFC after: 3 days 214 215 2005-07-22 21:11 sam 216 217 split xmit of probe request frame out into a separate routine that 218 takes explicit parameters; this will be needed when scanning is 219 decoupled from the state machine to do bg scanning 220 221 MFC after: 3 days 222 223 2005-07-22 20:48 sam 224 225 split 802.11 frame xmit setup code into ieee80211_send_setup 226 227 MFC after: 3 days 228 229 2005-07-22 17:57 sam 230 231 simplify ic_newassoc callback 232 233 MFC after: 3 days 234 235 2005-07-22 17:54 sam 236 237 simplify ieee80211_ibss_merge api 238 239 MFC after: 3 days 240 241 2005-07-22 17:50 sam 242 243 add stats we know we'll need soon and some spare fields for future expansion 244 245 MFC after: 3 days 246 247 2005-07-22 17:45 sam 248 249 simplify tim callback api 250 251 MFC after: 3 days 252 253 2005-07-22 17:42 sam 254 255 don't include 802.3 header in min frame length calculation as it may 256 not be present for a frag; fixes problem with small (fragmented) frames 257 being dropped 258 259 Obtained from: Atheros 260 MFC after: 3 days 261 262 2005-07-22 17:36 sam 263 264 simplify ieee80211_node_authorize and ieee80211_node_unauthorize api's 265 266 MFC after: 3 days 267 268 2005-07-22 17:31 sam 269 270 simplifiy ieee80211_send_nulldata api 271 272 MFC after: 3 days 273 274 2005-07-22 17:29 sam 275 276 simplify rate set api's by removing ic parameter (implicit in node reference) 277 278 MFC after: 3 days 279 280 2005-07-22 17:21 sam 281 282 reject association requests with a wpa/rsn ie when wpa/rsn is not 283 configured on the ap; previously we either ignored the ie or (possibly) 284 failed an assertion 285 286 Obtained from: Atheros 287 MFC after: 3 days 288 289 2005-07-22 17:16 sam 290 291 missed one in last commit; add device name to discard msgs 292 293 2005-07-22 17:13 sam 294 295 include device name in discard msgs 296 297 2005-07-22 17:12 sam 298 299 add diag msgs for frames discarded because the direction field is wrong 300 301 2005-07-22 17:08 sam 302 303 split data frame delivery out to a new function ieee80211_deliver_data 304 305 2005-07-22 17:00 sam 306 307 o add IEEE80211_IOC_FRAGTHRESHOLD for getting+setting the 308 tx fragmentation threshold 309 o fix bounds checking on IEEE80211_IOC_RTSTHRESHOLD 310 311 MFC after: 3 days 312 313 2005-07-22 16:55 sam 314 315 o add IEEE80211_FRAG_DEFAULT 316 o move default settings for RTS and frag thresholds to ieee80211_var.h 317 318 2005-07-22 16:50 sam 319 320 diff reduction against p4: define IEEE80211_FIXED_RATE_NONE and use 321 it instead of -1 322 323 2005-07-22 16:37 sam 324 325 add flags missed in last merge 326 327 2005-07-22 16:36 sam 328 329 Diff reduction against p4: 330 o add ic_flags_ext for eventual extension of ic_flags 331 o define/reserve flag+capabilities bits for superg, 332 bg scan, and roaming support 333 o refactor debug msg macros 334 335 MFC after: 3 days 336 337 2005-07-22 05:17 sam 338 339 send a response when an auth request is denied due to an acl; 340 might be better to silently ignore the frame but this way we 341 give stations a chance of figuring out what's wrong 342 343 2005-07-22 05:15 sam 344 345 remove excess whitespace 346 347 2005-07-22 04:55 sam 348 349 use IF_HANDOFF when bridging frames internally so if_start gets 350 called; fixes communication between associated sta's 351 352 MFC after: 3 days 353 354 2005-07-11 03:06 sam 355 356 Handle encrypt of arbitarily fragmented mbuf chains: previously 357 we bailed if we couldn't collect the 16-bytes of data required 358 for an aes block cipher in 2 mbufs; now we deal with it. While 359 here make space accounting signed so a sanity check does the 360 right thing for malformed mbuf chains. 361 362 Approved by: re (scottl) 363 364 2005-07-11 03:00 sam 365 366 nuke assert that duplicates real check 367 368 Reviewed by: avatar 369 Approved by: re (scottl) 370 371 2005-07-09 23:15 sam 372 373 Change default key allocation method to do the right thing for 374 legacy parts (i.e. those that have 4 global key slots). We 375 blindly assign unicast keys to key slot 0. Devices that need 376 alternate allocation logic must override this method. 377 378 Reviewed by: avatar 379 Approved by: re (scottl) 380 381 2005-07-08 22:49 sam 382 383 correct check for high priority wme traffic 384 385 Noticed by: Ralf Assmann 386 Reviewed by: apatti 387 Approved by: re (scottl) 388 389 2005-07-08 16:36 sam 390 391 fix another instance of the MORE_DATA bit handling for frames on the 392 power save queue (missed in previous commit) 393 394 Submitted by: Bruno Randolf 395 Approved by: re (scottl) 396 397 2005-07-06 15:38 sam 398 399 add "pureg" mode for ap operation: reject association requests from 400 11b-only stations when operating in 11g 401 402 Reviewed by: avatar 403 Approved by: re (scottl) 404 405 2005-07-06 01:55 sam 406 407 Fix handling of data frames queued for a station in power save mode: 408 don't mark the MORE_DATA bit when taking it off the ps queue, there's 409 no 802.11 header then; we must wait to do this at encap time so 410 mark the mbuf instead. 411 412 Reviewed by: avatar 413 Approved by: re (scottl) 414 Obtained from: Atheros 415 416 2005-07-06 01:51 sam 417 418 Fix race condition in handling node reference counts for authenticating 419 stations in ap mode. Track when a node's first auth frame is 420 received and use this to decide whether or not to bump the refcnt. 421 This insures we only ever bump the refcnt once. 422 423 Reviewed by: avatar 424 Approved by: re (scottl) 425 426 2005-07-06 01:31 avatar 427 428 Only update the scan entry state based on newly received frames. 429 This 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 432 Reviewed by: sam 433 Approved by: re (scottl) 434 435 2005-07-05 18:05 sam 436 437 remove auto-add of IEEE80211_KEY_GROUP; all the apps that need to 438 set it have been fixed 439 440 Reviewed by: avatar 441 Approved by: re (scottl) 442 443 2005-07-05 17:35 sam 444 445 o when setting a wpa key, hold a ref on the bss node; 446 fixes a ref cnt leak 447 o make unicast key handling on delete identical to set 448 o change legacy wep key api to reset the 802.11 state 449 machine for backwards compatibility 450 451 Reviewed by: avatar 452 Approved by: re (scottl) 453 454 2005-07-04 01:29 sam 455 456 when operating in ap mode, explicitly drop associated/authenticated 457 stations when transitioning to INIT state (e.g. as a result of 458 changing state at the 802.11 level) 459 460 Approved by: re (scottl) 461 462 2005-06-13 21:01 sam 463 464 revert 1.53; it breaks ibss merge 465 466 Noticed by: Bruno Randolf 467 Approved by: re (dwhite) 468 469 2005-06-10 21:30 sam 470 471 don't look at the wme ie in a beacon unless we negotiated use 472 473 2005-06-10 16:49 brooks 474 475 Stop embedding struct ifnet at the top of driver softcs. Instead the 476 struct ifnet or the layer 2 common structure it was embedded in have 477 been replaced with a struct ifnet pointer to be filled by a call to the 478 new function, if_alloc(). The layer 2 common structure is also allocated 479 via if_alloc() based on the interface type. It is hung off the new 480 struct ifnet member, if_l2com. 481 482 This change removes the size of these structures from the kernel ABI and 483 will allow us to better manage them as interfaces come and go. 484 485 Other 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 492 Reviewed by: sobomax, sam 493 494 2005-06-10 16:14 sam 495 496 validate the bssid for non-data frames too when operating in 497 adhoc/ahdemo/hostap modes 498 499 2005-06-10 16:11 sam 500 501 o 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) 505 o while here fix defrag to strip the header from 2nd and later frames 506 o teach decap code how to handle 4-address frames 507 508 2005-06-10 05:04 sam 509 510 mark stations authorized during recv processing instead of doing it 511 as a side effect of sending an auth success frame; sending mgmt 512 frames should not have side effects 513 514 2005-06-10 04:42 sam 515 516 move AID implementation defines from the protocol definitions to 517 where they are used 518 519 2005-06-10 04:37 sam 520 521 accept diassoc frame in ASSOC state 522 523 2005-06-10 01:48 sam 524 525 pull some debug msgs up so they're seen more often 526 527 2005-06-10 01:47 sam 528 529 kick the state machine when we receive failure notice from an ap (when 530 operating in sta mode); this speeds up the state machine, previously 531 we were acting on a timeout 532 533 2005-06-10 01:43 sam 534 535 discard open auth requests in adhoc mode 536 537 2005-06-10 01:41 sam 538 539 reject open auth requests when shared key auth is configured 540 541 Obtained from: Atheros 542 543 2005-06-10 01:40 sam 544 545 add ieee80211_send_error to encapsulate an idiom 546 547 2005-06-10 01:38 sam 548 549 o always check if ic_set_tim is !NULL before using it 550 o add missing call to clear tim after flushing ps q 551 552 2005-06-10 01:35 sam 553 554 mark state for protection only when operating in 11g 555 556 2005-06-10 01:33 sam 557 558 don't reject station based on the PRIVACY bit in the capabilities; 559 the 802.11 spec says not to 560 561 Obtained from: Atheros 562 563 2005-06-10 01:31 sam 564 565 correct checks for rate set compatibility 566 567 2005-06-10 01:29 sam 568 569 record tstamp from beacons received in station mode when associated; 570 this is needed by drivers that want to resync their timers based on 571 the tsf of the last recv'd beacon frame 572 573 2005-06-09 04:05 sam 574 575 o collect dtim period+count from beacons in station mode so drivers 576 can better program beacon timers 577 o leave placeholder in com structure for future ap/adhoc mode tim support 578 579 Reviewed by: avatar 580 581 2005-06-07 23:37 sam 582 583 Change the MLME ASSOCIATE ioctl to accept either a ssid, a bssid, 584 or a bssid+ssid. This is needed for later versions of wpa_supplicant 585 and for forthcoming addons to wpa_supplicant. 586 587 Note this is an api change and applications must be rebuilt. 588 589 2005-06-07 23:31 sam 590 591 Don't clock the state machine in various cases when roaming is set 592 to manual; this helps keep wpa_supplicant in sync. 593 594 2005-06-07 00:08 sam 595 596 WPA/802.11i interoperability fixes: 597 o only include capabilities word in the WPA ie when non-zero and 598 not preauth 599 o always include the capabilities in the RSN ie 600 601 Obtained from: Atheros 602 603 2005-06-06 04:04 sam 604 605 add force flag to enmic/demic crypto api for use in xmit fragmentation 606 and h/w mic verification 607 608 Reviewed by: avatar 609 610