Lines Matching defs:ic

95 static void ieee80211_node_table_init(struct ieee80211com *ic,
107 ieee80211_node_attach(struct ieee80211com *ic)
110 ieee80211_ageq_init(&ic->ic_stageq, ic->ic_max_keyix * 8,
112 ieee80211_node_table_init(ic, &ic->ic_sta, "station",
113 IEEE80211_INACT_INIT, ic->ic_max_keyix);
114 callout_init(&ic->ic_inact, CALLOUT_MPSAFE);
115 callout_reset(&ic->ic_inact, IEEE80211_INACT_WAIT*hz,
116 ieee80211_node_timeout, ic);
118 ic->ic_node_alloc = node_alloc;
119 ic->ic_node_free = node_free;
120 ic->ic_node_cleanup = node_cleanup;
121 ic->ic_node_age = node_age;
122 ic->ic_node_drain = node_age; /* NB: same as age */
123 ic->ic_node_getrssi = node_getrssi;
124 ic->ic_node_getsignal = node_getsignal;
125 ic->ic_node_getmimoinfo = node_getmimoinfo;
131 ic->ic_flags_ext |= IEEE80211_FEXT_INACT; /* inactivity processing */
135 ieee80211_node_detach(struct ieee80211com *ic)
138 callout_drain(&ic->ic_inact);
139 ieee80211_node_table_cleanup(&ic->ic_sta);
140 ieee80211_ageq_cleanup(&ic->ic_stageq);
191 struct ieee80211com *ic = vap->iv_ic;
193 ieee80211_node_table_reset(&ic->ic_sta, vap);
278 struct ieee80211com *ic = ni->ni_ic;
291 ni->ni_htrates = *ieee80211_get_suphtrates(ic, chan);
308 ni->ni_rates = *ieee80211_get_suprates(ic, chan);
325 struct ieee80211com *ic = vap->iv_ic;
331 ieee80211_chan2ieee(ic, chan));
333 ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr);
343 ni->ni_intval = ic->ic_bintval;
346 if (ic->ic_phytype == IEEE80211_T_FH) {
378 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
379 ic->ic_bsschan->ic_freq != chan->ic_freq &&
380 IEEE80211_IS_CHAN_CACDONE(ic->ic_bsschan))
381 ieee80211_dfs_cac_clear(ic, ic->ic_bsschan);
382 ic->ic_bsschan = chan;
384 ic->ic_curmode = ieee80211_chan2mode(chan);
424 struct ieee80211com *ic = vap->iv_ic;
427 ieee80211_node_table_reset(&ic->ic_sta, vap);
429 ieee80211_reset_erp(ic);
431 ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr);
437 ni->ni_intval = ic->ic_bintval;
463 struct ieee80211com *ic = ni->ni_ic;
466 if (isclr(ic->ic_chan_active, ieee80211_chan2ieee(ic, ni->ni_chan)))
503 struct ieee80211com *ic = ni->ni_ic;
508 if (isclr(ic->ic_chan_active, ieee80211_chan2ieee(ic, ni->ni_chan)))
539 ieee80211_chan2ieee(ic, ni->ni_chan), fail & 0x01 ? '!' : ' ');
572 struct ieee80211com *ic = ni->ni_ic;
594 ic->ic_flags&IEEE80211_F_SHPREAMBLE ? "short" : "long",
595 ic->ic_flags&IEEE80211_F_SHSLOT ? "short" : "long",
596 ic->ic_flags&IEEE80211_F_USEPROT ? ", protection" : ""
606 gethtadjustflags(struct ieee80211com *ic)
613 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
638 ieee80211_sync_curchan(struct ieee80211com *ic)
642 c = ieee80211_ht_adjust_channel(ic, ic->ic_curchan, gethtadjustflags(ic));
643 if (c != ic->ic_curchan) {
644 ic->ic_curchan = c;
645 ic->ic_curmode = ieee80211_chan2mode(ic->ic_curchan);
646 ic->ic_rt = ieee80211_get_ratetable(ic->ic_curchan);
647 IEEE80211_UNLOCK(ic);
648 ic->ic_set_channel(ic);
649 ieee80211_radiotap_chan_change(ic);
650 IEEE80211_LOCK(ic);
659 ieee80211_setupcurchan(struct ieee80211com *ic, struct ieee80211_channel *c)
661 if (ic->ic_htcaps & IEEE80211_HTC_HT) {
662 int flags = gethtadjustflags(ic);
670 c = ieee80211_ht_adjust_channel(ic, c, flags);
672 ic->ic_bsschan = ic->ic_curchan = c;
673 ic->ic_curmode = ieee80211_chan2mode(ic->ic_curchan);
674 ic->ic_rt = ieee80211_get_ratetable(ic->ic_curchan);
682 ieee80211_setcurchan(struct ieee80211com *ic, struct ieee80211_channel *c)
684 ieee80211_setupcurchan(ic, c);
685 ieee80211_runtask(ic, &ic->ic_chan_task);
689 ieee80211_update_chw(struct ieee80211com *ic)
692 ieee80211_setupcurchan(ic, ic->ic_curchan);
693 ieee80211_runtask(ic, &ic->ic_chw_task);
704 struct ieee80211com *ic = selbs->ni_ic;
734 ieee80211_setcurchan(ic, selbs->ni_chan);
740 ieee80211_reset_erp(ic);
766 struct ieee80211com *ic = vap->iv_ic;
769 ni = ieee80211_alloc_node(&ic->ic_sta, vap, se->se_macaddr);
861 struct ieee80211com *ic = ni->ni_ic;
863 ic->ic_node_cleanup(ni);
989 struct ieee80211com *ic = ni->ni_ic;
1019 ieee80211_ageq_drain_node(&ic->ic_stageq, ni);
1068 struct ieee80211com *ic = ni->ni_ic;
1071 ic->ic_node_cleanup(ni);
1147 struct ieee80211com *ic = nt->nt_ic;
1151 ni = ic->ic_node_alloc(vap, macaddr);
1162 hash = IEEE80211_NODE_HASH(ic, macaddr);
1166 ni->ni_txpower = ic->ic_txpowlimit; /* max power */
1167 ni->ni_txparms = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)];
1183 ni->ni_ic = ic;
1204 struct ieee80211com *ic = vap->iv_ic;
1207 ni = ic->ic_node_alloc(vap, macaddr);
1215 ni->ni_ic = ic; /* NB: needed to set channel */
1241 struct ieee80211com *ic = vap->iv_ic;
1244 ni = ieee80211_alloc_node(&ic->ic_sta, vap, macaddr);
1268 struct ieee80211com *ic = vap->iv_ic;
1272 ni = ieee80211_alloc_node(&ic->ic_sta, vap, bssid);
1296 if ((ic->ic_htcaps & IEEE80211_HTC_HT) &&
1309 c = ieee80211_find_channel(ic,
1436 struct ieee80211com *ic = vap->iv_ic;
1459 if (ic->ic_newassoc != NULL)
1460 ic->ic_newassoc(ni, 1);
1553 struct ieee80211com *ic = vap->iv_ic;
1560 if (ic->ic_newassoc != NULL)
1561 ic->ic_newassoc(ni, 1);
1591 ieee80211_find_rxnode_debug(struct ieee80211com *ic,
1594 ieee80211_find_rxnode(struct ieee80211com *ic,
1601 nt = &ic->ic_sta;
1619 ieee80211_find_rxnode_withkey_debug(struct ieee80211com *ic,
1623 ieee80211_find_rxnode_withkey(struct ieee80211com *ic,
1630 nt = &ic->ic_sta;
1803 struct ieee80211com *ic = ni->ni_ic;
1804 struct ieee80211_node_table *nt = &ic->ic_sta;
1900 ieee80211_node_table_init(struct ieee80211com *ic,
1904 struct ifnet *ifp = ic->ic_ifp;
1906 nt->nt_ic = ic;
1919 if_printf(ic->ic_ifp,
1994 ieee80211_timeout_stations(struct ieee80211com *ic)
1996 struct ieee80211_node_table *nt = &ic->ic_sta;
2060 ic->ic_node_age(ni);
2139 ieee80211_drain(struct ieee80211com *ic)
2141 struct ieee80211_node_table *nt = &ic->ic_sta;
2179 ic->ic_node_drain(ni);
2190 struct ieee80211com *ic = arg;
2201 if ((ic->ic_flags & IEEE80211_F_CSAPENDING) == 0) {
2202 ieee80211_scan_timeout(ic);
2203 ieee80211_timeout_stations(ic);
2204 ieee80211_ageq_age(&ic->ic_stageq, IEEE80211_INACT_WAIT);
2206 IEEE80211_LOCK(ic);
2207 ieee80211_erp_timeout(ic);
2208 ieee80211_ht_timeout(ic);
2209 IEEE80211_UNLOCK(ic);
2211 callout_reset(&ic->ic_inact, IEEE80211_INACT_WAIT*hz,
2212 ieee80211_node_timeout, ic);
2380 ieee80211_notify_erp_locked(struct ieee80211com *ic)
2384 IEEE80211_LOCK_ASSERT(ic);
2386 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
2392 ieee80211_notify_erp(struct ieee80211com *ic)
2394 IEEE80211_LOCK(ic);
2395 ieee80211_notify_erp_locked(ic);
2396 IEEE80211_UNLOCK(ic);
2405 struct ieee80211com *ic = ni->ni_ic;
2407 IEEE80211_LOCK_ASSERT(ic);
2417 ic->ic_longslotsta++;
2420 ic->ic_longslotsta);
2422 if (!IEEE80211_IS_CHAN_108G(ic->ic_bsschan)) {
2428 ieee80211_set_shortslottime(ic, 0);
2437 ic->ic_nonerpsta++;
2440 ic->ic_nonerpsta);
2448 ic->ic_flags |= IEEE80211_F_USEBARKER;
2449 ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE;
2455 if (ic->ic_protmode != IEEE80211_PROT_NONE &&
2456 ic->ic_nonerpsta == 1 &&
2457 (ic->ic_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0) {
2460 ic->ic_flags |= IEEE80211_F_USEPROT;
2461 ieee80211_notify_erp_locked(ic);
2470 struct ieee80211com *ic = ni->ni_ic;
2493 IEEE80211_LOCK(ic);
2496 ic->ic_sta_assoc++;
2498 if (IEEE80211_IS_CHAN_HT(ic->ic_bsschan))
2500 if (IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan) &&
2501 IEEE80211_IS_CHAN_FULL(ic->ic_bsschan))
2503 IEEE80211_UNLOCK(ic);
2512 ic->ic_flags & IEEE80211_F_SHPREAMBLE ? "short" : "long",
2513 ic->ic_flags & IEEE80211_F_SHSLOT ? "short" : "long",
2514 ic->ic_flags & IEEE80211_F_USEPROT ? ", protection" : "",
2531 if (ic->ic_newassoc != NULL)
2532 ic->ic_newassoc(ni, newassoc);
2542 disable_protection(struct ieee80211com *ic)
2544 KASSERT(ic->ic_nonerpsta == 0 &&
2545 (ic->ic_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0,
2546 ("%d non ERP stations, flags 0x%x", ic->ic_nonerpsta,
2547 ic->ic_flags_ext));
2549 ic->ic_flags &= ~IEEE80211_F_USEPROT;
2551 if (ic->ic_caps & IEEE80211_C_SHPREAMBLE) {
2552 ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
2553 ic->ic_flags &= ~IEEE80211_F_USEBARKER;
2555 ieee80211_notify_erp_locked(ic);
2564 struct ieee80211com *ic = ni->ni_ic;
2566 IEEE80211_LOCK_ASSERT(ic);
2568 KASSERT(IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan),
2569 ("not in 11g, bss %u:0x%x", ic->ic_bsschan->ic_freq,
2570 ic->ic_bsschan->ic_flags));
2576 KASSERT(ic->ic_longslotsta > 0,
2577 ("bogus long slot station count %d", ic->ic_longslotsta));
2578 ic->ic_longslotsta--;
2581 ic->ic_longslotsta);
2582 if (ic->ic_longslotsta == 0) {
2587 if ((ic->ic_caps & IEEE80211_C_SHSLOT) &&
2588 ic->ic_opmode != IEEE80211_M_IBSS) {
2593 ieee80211_set_shortslottime(ic, 1);
2601 KASSERT(ic->ic_nonerpsta > 0,
2602 ("bogus non-ERP station count %d", ic->ic_nonerpsta));
2603 ic->ic_nonerpsta--;
2605 "non-ERP station leaves, count now %d%s", ic->ic_nonerpsta,
2606 (ic->ic_flags_ext & IEEE80211_FEXT_NONERP_PR) ?
2608 if (ic->ic_nonerpsta == 0 &&
2609 (ic->ic_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0) {
2612 disable_protection(ic);
2626 ieee80211_erp_timeout(struct ieee80211com *ic)
2629 IEEE80211_LOCK_ASSERT(ic);
2631 if ((ic->ic_flags_ext & IEEE80211_FEXT_NONERP_PR) &&
2632 time_after(ticks, ic->ic_lastnonerp + IEEE80211_NONERP_PRESENT_AGE)) {
2637 ic->ic_flags_ext &= ~IEEE80211_FEXT_NONERP_PR;
2638 if (ic->ic_nonerpsta == 0)
2639 disable_protection(ic);
2650 struct ieee80211com *ic = ni->ni_ic;
2675 IEEE80211_LOCK(ic);
2679 ic->ic_sta_assoc--;
2681 if (IEEE80211_IS_CHAN_HT(ic->ic_bsschan))
2683 if (IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan) &&
2684 IEEE80211_IS_CHAN_FULL(ic->ic_bsschan))
2686 IEEE80211_UNLOCK(ic);
2779 struct ieee80211com *ic = vap->iv_ic;
2788 ieee80211_iterate_nodes(&ic->ic_sta, get_adhoc_rssi, &info);
2791 ieee80211_iterate_nodes(&ic->ic_sta, get_hostap_rssi, &info);
2795 ieee80211_iterate_nodes(&ic->ic_sta, get_mesh_rssi, &info);
2802 info.rssi_total = ic->ic_node_getrssi(vap->iv_bss);