Lines Matching refs:ic

61 ieee80211_input(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in,  in ieee80211_input()  argument
85 IEEE80211_LOCK(ic); in ieee80211_input()
90 hdrspace = ieee80211_hdrspace(ic, wh); /* optimize */ in ieee80211_input()
123 IEEE80211_LOCK(ic); in ieee80211_input()
124 if (!(ic->ic_flags & IEEE80211_F_SCAN)) { in ieee80211_input()
125 switch (ic->ic_opmode) { in ieee80211_input()
151 if (!IEEE80211_ADDR_EQ(bssid, ic->ic_bss->in_bssid) && in ieee80211_input()
163 if (in == ic->ic_bss && in ieee80211_input()
164 ic->ic_opmode != IEEE80211_M_HOSTAP && in ieee80211_input()
170 in = ieee80211_fakeup_adhoc_node(&ic->ic_sta, in ieee80211_input()
188 ic->ic_wme.wme_hipri_traffic++; in ieee80211_input()
208 ic->ic_stats.is_rx_dups++; in ieee80211_input()
217 hdrspace = ieee80211_hdrspace(ic, wh); in ieee80211_input()
223 switch (ic->ic_opmode) { in ieee80211_input()
232 IEEE80211_ADDR_EQ(wh->i_addr3, ic->ic_macaddr)) { in ieee80211_input()
256 ic->ic_opmode); in ieee80211_input()
271 IEEE80211_UNLOCK(ic); in ieee80211_input()
276 IEEE80211_LOCK(ic); in ieee80211_input()
284 if ((ic->ic_flags & IEEE80211_F_PRIVACY) == 0) { in ieee80211_input()
290 ic->ic_stats.is_wep_errors++; in ieee80211_input()
293 key = ieee80211_crypto_decap(ic, mp, hdrspace); in ieee80211_input()
296 ic->ic_stats.is_wep_errors++; in ieee80211_input()
320 mp = ieee80211_defrag(ic, in, mp, hdrspace); in ieee80211_input()
331 if (key != NULL && !ieee80211_crypto_demic(ic, key, mp, 0)) { in ieee80211_input()
346 ic->ic_stats.is_rx_frags++; in ieee80211_input()
347 ic->ic_stats.is_rx_bytes += len; in ieee80211_input()
348 IEEE80211_UNLOCK(ic); in ieee80211_input()
349 mac_rx(ic->ic_mach, NULL, mp); in ieee80211_input()
367 ic->ic_stats.is_wep_errors++; in ieee80211_input()
370 if ((ic->ic_flags & IEEE80211_F_PRIVACY) == 0) { in ieee80211_input()
377 ic->ic_stats.is_wep_errors++; in ieee80211_input()
380 hdrspace = ieee80211_hdrspace(ic, wh); in ieee80211_input()
381 key = ieee80211_crypto_decap(ic, mp, hdrspace); in ieee80211_input()
389 IEEE80211_UNLOCK(ic); in ieee80211_input()
390 ic->ic_recv_mgmt(ic, mp, in, subtype, rssi, rstamp); in ieee80211_input()
394 if (ic->ic_opmode == IEEE80211_M_HOSTAP) { in ieee80211_input()
410 IEEE80211_UNLOCK(ic); in ieee80211_input()
426 ieee80211_defrag(ieee80211com_t *ic, struct ieee80211_node *in, mblk_t *mp, in ieee80211_defrag() argument
554 ieee80211_auth_open(ieee80211com_t *ic, struct ieee80211_frame *wh, in ieee80211_auth_open() argument
557 IEEE80211_LOCK_ASSERT(ic); in ieee80211_auth_open()
563 if (ic->ic_opmode == IEEE80211_M_STA) { in ieee80211_auth_open()
564 if (ic->ic_state != IEEE80211_S_AUTH || in ieee80211_auth_open()
568 IEEE80211_UNLOCK(ic); in ieee80211_auth_open()
572 if (in != ic->ic_bss) in ieee80211_auth_open()
574 ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); in ieee80211_auth_open()
577 ieee80211_new_state(ic, IEEE80211_S_ASSOC, in ieee80211_auth_open()
580 IEEE80211_LOCK(ic); in ieee80211_auth_open()
583 "bad operating mode %u", ic->ic_opmode); in ieee80211_auth_open()
611 ieee80211_auth_shared(ieee80211com_t *ic, struct ieee80211_frame *wh, in ieee80211_auth_shared() argument
622 IEEE80211_LOCK_ASSERT(ic); in ieee80211_auth_shared()
665 switch (ic->ic_opmode) { in ieee80211_auth_shared()
667 if (ic->ic_state != IEEE80211_S_AUTH) in ieee80211_auth_shared()
681 if (in != ic->ic_bss) in ieee80211_auth_shared()
685 IEEE80211_UNLOCK(ic); in ieee80211_auth_shared()
686 ieee80211_new_state(ic, IEEE80211_S_ASSOC, in ieee80211_auth_shared()
688 IEEE80211_LOCK(ic); in ieee80211_auth_shared()
694 IEEE80211_UNLOCK(ic); in ieee80211_auth_shared()
695 IEEE80211_SEND_MGMT(ic, in, IEEE80211_FC0_SUBTYPE_AUTH, in ieee80211_auth_shared()
697 IEEE80211_LOCK(ic); in ieee80211_auth_shared()
709 ic->ic_opmode); in ieee80211_auth_shared()
714 if (ic->ic_opmode == IEEE80211_M_STA) { in ieee80211_auth_shared()
720 if (ic->ic_state == IEEE80211_S_AUTH) { in ieee80211_auth_shared()
721 IEEE80211_UNLOCK(ic); in ieee80211_auth_shared()
722 ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); in ieee80211_auth_shared()
723 IEEE80211_LOCK(ic); in ieee80211_auth_shared()
783 ieee80211_parse_wmeparams(struct ieee80211com *ic, uint8_t *frm, in ieee80211_parse_wmeparams() argument
787 struct ieee80211_wme_state *wme = &ic->ic_wme; in ieee80211_parse_wmeparams()
826 ieee80211_recv_beacon(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in, in ieee80211_recv_beacon() argument
829 ieee80211_impl_t *im = ic->ic_private; in ieee80211_recv_beacon()
839 ic->ic_beaconmiss = 0; /* clear beacon miss counter */ in ieee80211_recv_beacon()
849 if (!((ic->ic_flags & IEEE80211_F_SCAN) || in ieee80211_recv_beacon()
850 (ic->ic_opmode == IEEE80211_M_STA && in->in_associd != 0) || in ieee80211_recv_beacon()
851 ic->ic_opmode == IEEE80211_M_IBSS)) { in ieee80211_recv_beacon()
880 scan.bchan = ieee80211_chan2ieee(ic, ic->ic_curchan); in ieee80211_recv_beacon()
903 if (ic->ic_phytype == IEEE80211_T_FH) { in ieee80211_recv_beacon()
911 if (ic->ic_phytype != IEEE80211_T_FH) { in ieee80211_recv_beacon()
952 else if (ic->ic_flags_ext & IEEE80211_FEXT_HTCOMPAT) { in ieee80211_recv_beacon()
980 if (ieee80211_isclr(ic->ic_chan_active, scan.chan)) { in ieee80211_recv_beacon()
988 ic->ic_phytype != IEEE80211_T_FH) { in ieee80211_recv_beacon()
1003 ic->ic_phytype, scan.bchan, scan.chan); in ieee80211_recv_beacon()
1039 if (ic->ic_opmode == IEEE80211_M_STA && in ieee80211_recv_beacon()
1041 (!(ic->ic_flags & IEEE80211_F_SCAN) || in ieee80211_recv_beacon()
1061 ieee80211_set_shortslottime(ic, in ieee80211_recv_beacon()
1062 ic->ic_curmode == IEEE80211_MODE_11A || in ieee80211_recv_beacon()
1069 ieee80211_parse_wmeparams(ic, scan.wme, wh) > 0) { in ieee80211_recv_beacon()
1070 ieee80211_wme_updateparams(ic); in ieee80211_recv_beacon()
1076 if (in->in_chan != ic->ic_curchan) { in ieee80211_recv_beacon()
1082 ieee80211_setcurchan(ic, in->in_chan); in ieee80211_recv_beacon()
1092 if (ic->ic_flags & IEEE80211_F_SCAN) { in ieee80211_recv_beacon()
1093 ieee80211_add_scan(ic, &scan, wh, subtype, rssi, in ieee80211_recv_beacon()
1101 if (ic->ic_flags & IEEE80211_F_SCAN) { in ieee80211_recv_beacon()
1102 ieee80211_add_scan(ic, &scan, wh, subtype, rssi, rstamp); in ieee80211_recv_beacon()
1106 if (ic->ic_opmode == IEEE80211_M_IBSS && in ieee80211_recv_beacon()
1112 in = ieee80211_add_neighbor(ic, wh, &scan); in ieee80211_recv_beacon()
1135 ieee80211_recv_mgmt(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in, in ieee80211_recv_mgmt() argument
1155 IEEE80211_LOCK(ic); in ieee80211_recv_mgmt()
1162 ieee80211_recv_beacon(ic, mp, in, subtype, rssi, rstamp); in ieee80211_recv_mgmt()
1166 if (ic->ic_opmode == IEEE80211_M_STA || in ieee80211_recv_mgmt()
1167 ic->ic_state != IEEE80211_S_RUN || in ieee80211_recv_mgmt()
1201 IEEE80211_VERIFY_SSID(ic->ic_bss, ssid, break); in ieee80211_recv_mgmt()
1202 if (ic->ic_flags & IEEE80211_F_HIDESSID) { in ieee80211_recv_mgmt()
1212 if (in == ic->ic_bss) { in ieee80211_recv_mgmt()
1213 if (ic->ic_opmode != IEEE80211_M_IBSS) { in ieee80211_recv_mgmt()
1214 in = ieee80211_tmp_node(ic, wh->i_addr2); in ieee80211_recv_mgmt()
1224 in = ieee80211_fakeup_adhoc_node(&ic->ic_sta, in ieee80211_recv_mgmt()
1249 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()
1250 IEEE80211_SEND_MGMT(ic, in, in ieee80211_recv_mgmt()
1252 IEEE80211_LOCK(ic); in ieee80211_recv_mgmt()
1280 if (ic->ic_flags & IEEE80211_F_COUNTERM) { in ieee80211_recv_mgmt()
1288 ieee80211_auth_shared(ic, wh, frm + 6, efrm, in, in ieee80211_recv_mgmt()
1292 ieee80211_auth_open(ic, wh, in, seq, status); in ieee80211_recv_mgmt()
1303 if (ic->ic_opmode != IEEE80211_M_STA || in ieee80211_recv_mgmt()
1304 ic->ic_state != IEEE80211_S_ASSOC) in ieee80211_recv_mgmt()
1320 in = ic->ic_bss; in ieee80211_recv_mgmt()
1328 in = ieee80211_find_node(&ic->ic_scan, wh->i_addr2); in ieee80211_recv_mgmt()
1371 else if (ic->ic_flags_ext & in ieee80211_recv_mgmt()
1403 if (in != ic->ic_bss) in ieee80211_recv_mgmt()
1405 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()
1406 ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); in ieee80211_recv_mgmt()
1413 ieee80211_parse_wmeparams(ic, wme, wh) >= 0) { in ieee80211_recv_mgmt()
1415 ieee80211_wme_updateparams(ic); in ieee80211_recv_mgmt()
1422 if ((ic->ic_htcaps & IEEE80211_HTC_HT) && in ieee80211_recv_mgmt()
1429 if (in->in_chan != ic->ic_curchan) { in ieee80211_recv_mgmt()
1435 ieee80211_setcurchan(ic, in->in_chan); in ieee80211_recv_mgmt()
1441 if (ic->ic_curmode == IEEE80211_MODE_11A || in ieee80211_recv_mgmt()
1443 ic->ic_flags |= IEEE80211_F_SHPREAMBLE; in ieee80211_recv_mgmt()
1444 ic->ic_flags &= ~IEEE80211_F_USEBARKER; in ieee80211_recv_mgmt()
1446 ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE; in ieee80211_recv_mgmt()
1447 ic->ic_flags |= IEEE80211_F_USEBARKER; in ieee80211_recv_mgmt()
1449 ieee80211_set_shortslottime(ic, in ieee80211_recv_mgmt()
1450 ic->ic_curmode == IEEE80211_MODE_11A || in ieee80211_recv_mgmt()
1458 if (ic->ic_curmode == IEEE80211_MODE_11G && in ieee80211_recv_mgmt()
1460 ic->ic_flags |= IEEE80211_F_USEPROT; in ieee80211_recv_mgmt()
1462 ic->ic_flags &= ~IEEE80211_F_USEPROT; in ieee80211_recv_mgmt()
1465 ic->ic_flags&IEEE80211_F_SHPREAMBLE ? "short" : "long", in ieee80211_recv_mgmt()
1466 ic->ic_flags&IEEE80211_F_SHSLOT ? "short" : "long", in ieee80211_recv_mgmt()
1467 ic->ic_flags&IEEE80211_F_USEPROT ? ", protection" : "", in ieee80211_recv_mgmt()
1469 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()
1470 ieee80211_new_state(ic, IEEE80211_S_RUN, subtype); in ieee80211_recv_mgmt()
1474 if (ic->ic_state == IEEE80211_S_SCAN) in ieee80211_recv_mgmt()
1486 switch (ic->ic_opmode) { in ieee80211_recv_mgmt()
1488 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()
1489 ieee80211_new_state(ic, IEEE80211_S_AUTH, in ieee80211_recv_mgmt()
1498 if (ic->ic_state != IEEE80211_S_RUN && in ieee80211_recv_mgmt()
1499 ic->ic_state != IEEE80211_S_ASSOC && in ieee80211_recv_mgmt()
1500 ic->ic_state != IEEE80211_S_AUTH) in ieee80211_recv_mgmt()
1511 switch (ic->ic_opmode) { in ieee80211_recv_mgmt()
1513 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()
1514 ieee80211_new_state(ic, IEEE80211_S_ASSOC, in ieee80211_recv_mgmt()
1523 if (ic->ic_state != IEEE80211_S_RUN && in ieee80211_recv_mgmt()
1524 ic->ic_state != IEEE80211_S_ASSOC && in ieee80211_recv_mgmt()
1525 ic->ic_state != IEEE80211_S_AUTH) in ieee80211_recv_mgmt()
1570 ic->ic_recv_action(in, frm, efrm); in ieee80211_recv_mgmt()
1579 IEEE80211_UNLOCK(ic); in ieee80211_recv_mgmt()