Lines Matching refs:ic

259 ieee80211_proto_attach(struct ieee80211com *ic)
264 hdrlen = ic->ic_headroom
275 ic->ic_protmode = IEEE80211_PROT_CTSONLY;
277 TASK_INIT(&ic->ic_parent_task, 0, parent_updown, ic);
278 TASK_INIT(&ic->ic_mcast_task, 0, update_mcast, ic);
279 TASK_INIT(&ic->ic_promisc_task, 0, update_promisc, ic);
280 TASK_INIT(&ic->ic_chan_task, 0, update_channel, ic);
281 TASK_INIT(&ic->ic_bmiss_task, 0, beacon_miss, ic);
282 TASK_INIT(&ic->ic_chw_task, 0, update_chw, ic);
283 TASK_INIT(&ic->ic_wme_task, 0, update_wme, ic);
284 TASK_INIT(&ic->ic_restart_task, 0, restart_vaps, ic);
286 ic->ic_wme.wme_hipri_switch_hysteresis =
290 ic->ic_send_mgmt = ieee80211_send_mgmt;
291 ic->ic_raw_xmit = null_raw_xmit;
293 ieee80211_adhoc_attach(ic);
294 ieee80211_sta_attach(ic);
295 ieee80211_wds_attach(ic);
296 ieee80211_hostap_attach(ic);
298 ieee80211_mesh_attach(ic);
300 ieee80211_monitor_attach(ic);
304 ieee80211_proto_detach(struct ieee80211com *ic)
306 ieee80211_monitor_detach(ic);
308 ieee80211_mesh_detach(ic);
310 ieee80211_hostap_detach(ic);
311 ieee80211_wds_detach(ic);
312 ieee80211_adhoc_detach(ic);
313 ieee80211_sta_detach(ic);
324 struct ieee80211com *ic = vap->iv_ic;
329 ifp->if_hdrlen = ic->ic_headroom
337 callout_init_mtx(&vap->iv_swbmiss, IEEE80211_LOCK_OBJ(ic), 0);
348 if (isclr(ic->ic_modecaps, i))
351 const struct ieee80211_rateset *rs = &ic->ic_sup_rates[i];
389 ic->ic_vattach[vap->iv_opmode](vap);
545 ieee80211_dump_pkt(struct ieee80211com *ic,
595 off = ieee80211_anyhdrspace(ic, wh);
634 struct ieee80211com *ic = ni->ni_ic;
677 ieee80211_get_suphtrates(ic, ni->ni_chan);
679 srs = ieee80211_get_suprates(ic, ni->ni_chan);
753 ieee80211_reset_erp(struct ieee80211com *ic)
755 ic->ic_flags &= ~IEEE80211_F_USEPROT;
756 ic->ic_nonerpsta = 0;
757 ic->ic_longslotsta = 0;
763 ieee80211_set_shortslottime(ic,
764 IEEE80211_IS_CHAN_A(ic->ic_curchan) ||
765 IEEE80211_IS_CHAN_HT(ic->ic_curchan) ||
766 (IEEE80211_IS_CHAN_ANYG(ic->ic_curchan) &&
767 ic->ic_opmode == IEEE80211_M_HOSTAP &&
768 (ic->ic_caps & IEEE80211_C_SHSLOT)));
772 if (IEEE80211_IS_CHAN_A(ic->ic_curchan) ||
773 (ic->ic_caps & IEEE80211_C_SHPREAMBLE)) {
774 ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
775 ic->ic_flags &= ~IEEE80211_F_USEBARKER;
777 ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE;
778 ic->ic_flags |= IEEE80211_F_USEBARKER;
786 ieee80211_set_shortslottime(struct ieee80211com *ic, int onoff)
789 ic->ic_flags |= IEEE80211_F_SHSLOT;
791 ic->ic_flags &= ~IEEE80211_F_SHSLOT;
793 if (ic->ic_updateslot != NULL)
794 ic->ic_updateslot(ic);
1025 struct ieee80211com *ic = vap->iv_ic;
1026 struct ieee80211_wme_state *wme = &ic->ic_wme;
1032 IEEE80211_LOCK_ASSERT(ic);
1034 if ((ic->ic_caps & IEEE80211_C_WME) == 0 || ic->ic_nrunning > 1)
1052 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC)
1053 mode = ieee80211_chan2mode(ic->ic_bsschan);
1077 if (ic->ic_opmode == IEEE80211_M_HOSTAP) {
1103 struct ieee80211com *ic = vap->iv_ic;
1105 IEEE80211_LOCK(ic);
1107 IEEE80211_UNLOCK(ic);
1130 struct ieee80211com *ic = vap->iv_ic;
1131 struct ieee80211_wme_state *wme = &ic->ic_wme;
1164 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC)
1165 mode = ieee80211_chan2mode(ic->ic_bsschan);
1235 ic->ic_sta_assoc < 2 && (wme->wme_flags & WME_F_AGGRMODE) != 0) {
1276 ieee80211_runtask(ic, &ic->ic_wme_task);
1288 struct ieee80211com *ic = vap->iv_ic;
1290 if (ic->ic_caps & IEEE80211_C_WME) {
1291 IEEE80211_LOCK(ic);
1293 IEEE80211_UNLOCK(ic);
1300 struct ieee80211com *ic = arg;
1302 ic->ic_parent(ic);
1308 struct ieee80211com *ic = arg;
1310 ic->ic_update_mcast(ic);
1316 struct ieee80211com *ic = arg;
1318 ic->ic_update_promisc(ic);
1324 struct ieee80211com *ic = arg;
1326 ic->ic_set_channel(ic);
1327 ieee80211_radiotap_chan_change(ic);
1333 struct ieee80211com *ic = arg;
1338 ic->ic_update_chw(ic);
1344 struct ieee80211com *ic = arg;
1349 ic->ic_wme.wme_update(ic);
1355 struct ieee80211com *ic = arg;
1357 ieee80211_suspend_all(ic);
1358 ieee80211_resume_all(ic);
1367 ieee80211_waitfor_parent(struct ieee80211com *ic)
1369 taskqueue_block(ic->ic_tq);
1370 ieee80211_draintask(ic, &ic->ic_parent_task);
1371 ieee80211_draintask(ic, &ic->ic_mcast_task);
1372 ieee80211_draintask(ic, &ic->ic_promisc_task);
1373 ieee80211_draintask(ic, &ic->ic_chan_task);
1374 ieee80211_draintask(ic, &ic->ic_bmiss_task);
1375 ieee80211_draintask(ic, &ic->ic_chw_task);
1376 ieee80211_draintask(ic, &ic->ic_wme_task);
1377 taskqueue_unblock(ic->ic_tq);
1394 struct ieee80211com *ic = vap->iv_ic;
1397 IEEE80211_IS_CHAN_NOADHOC(ic->ic_curchan)) ||
1399 IEEE80211_IS_CHAN_NOHOSTAP(ic->ic_curchan)))
1410 struct ieee80211com *ic = vap->iv_ic;
1412 ic->ic_curchan = &ic->ic_channels[0];
1424 struct ieee80211com *ic = vap->iv_ic;
1426 IEEE80211_LOCK_ASSERT(ic);
1430 "start running, %d vaps running\n", ic->ic_nrunning);
1446 if (ic->ic_nrunning++ == 0) {
1454 "%s: up parent %s\n", __func__, ic->ic_name);
1455 ieee80211_runtask(ic, &ic->ic_parent_task);
1521 ieee80211_start_all(struct ieee80211com *ic)
1525 IEEE80211_LOCK(ic);
1526 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1531 IEEE80211_UNLOCK(ic);
1544 struct ieee80211com *ic = vap->iv_ic;
1547 IEEE80211_LOCK_ASSERT(ic);
1550 "stop running, %d vaps running\n", ic->ic_nrunning);
1555 if (--ic->ic_nrunning == 0) {
1558 "down parent %s\n", ic->ic_name);
1559 ieee80211_runtask(ic, &ic->ic_parent_task);
1567 struct ieee80211com *ic = vap->iv_ic;
1569 IEEE80211_LOCK(ic);
1571 IEEE80211_UNLOCK(ic);
1578 ieee80211_stop_all(struct ieee80211com *ic)
1582 IEEE80211_LOCK(ic);
1583 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1588 IEEE80211_UNLOCK(ic);
1590 ieee80211_waitfor_parent(ic);
1598 ieee80211_suspend_all(struct ieee80211com *ic)
1602 IEEE80211_LOCK(ic);
1603 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1610 IEEE80211_UNLOCK(ic);
1612 ieee80211_waitfor_parent(ic);
1619 ieee80211_resume_all(struct ieee80211com *ic)
1623 IEEE80211_LOCK(ic);
1624 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1632 IEEE80211_UNLOCK(ic);
1639 ieee80211_restart_all(struct ieee80211com *ic)
1645 taskqueue_enqueue(taskqueue_thread, &ic->ic_restart_task);
1649 ieee80211_beacon_miss(struct ieee80211com *ic)
1651 IEEE80211_LOCK(ic);
1652 if ((ic->ic_flags & IEEE80211_F_SCAN) == 0) {
1654 ieee80211_runtask(ic, &ic->ic_bmiss_task);
1656 IEEE80211_UNLOCK(ic);
1662 struct ieee80211com *ic = arg;
1665 IEEE80211_LOCK(ic);
1666 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1677 IEEE80211_UNLOCK(ic);
1684 struct ieee80211com *ic = vap->iv_ic;
1686 IEEE80211_LOCK(ic);
1691 IEEE80211_UNLOCK(ic);
1703 struct ieee80211com *ic = vap->iv_ic;
1705 IEEE80211_LOCK_ASSERT(ic);
1710 if (ic->ic_flags & IEEE80211_F_SCAN) {
1724 ieee80211_runtask(ic, &vap->iv_swbmiss_task);
1744 ieee80211_csa_startswitch(struct ieee80211com *ic,
1749 IEEE80211_LOCK_ASSERT(ic);
1751 ic->ic_csa_newchan = c;
1752 ic->ic_csa_mode = mode;
1753 ic->ic_csa_count = count;
1754 ic->ic_flags |= IEEE80211_F_CSAPENDING;
1755 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1764 ieee80211_notify_csa(ic, c, mode, count);
1773 csa_completeswitch(struct ieee80211com *ic)
1777 ic->ic_csa_newchan = NULL;
1778 ic->ic_flags &= ~IEEE80211_F_CSAPENDING;
1780 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1797 ieee80211_csa_completeswitch(struct ieee80211com *ic)
1801 IEEE80211_LOCK_ASSERT(ic);
1803 KASSERT(ic->ic_flags & IEEE80211_F_CSAPENDING, ("csa not pending"));
1805 ieee80211_setcurchan(ic, ic->ic_csa_newchan);
1806 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1808 vap->iv_bss->ni_chan = ic->ic_curchan;
1810 csa_completeswitch(ic);
1819 ieee80211_csa_cancelswitch(struct ieee80211com *ic)
1821 IEEE80211_LOCK_ASSERT(ic);
1823 csa_completeswitch(ic);
1833 struct ieee80211com *ic = vap0->iv_ic;
1836 IEEE80211_LOCK(ic);
1845 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1848 IEEE80211_UNLOCK(ic);
1860 struct ieee80211com *ic = vap0->iv_ic;
1863 IEEE80211_LOCK_ASSERT(ic);
1870 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1876 IEEE80211_LOCK_ASSERT(ic);
1891 struct ieee80211com *ic = vap0->iv_ic;
1894 IEEE80211_LOCK_ASSERT(ic);
1901 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1911 IEEE80211_LOCK_ASSERT(ic);
1923 struct ieee80211com *ic = vap->iv_ic;
1927 IEEE80211_LOCK(ic);
1943 IEEE80211_LOCK_ASSERT(ic);
1969 IEEE80211_LOCK_ASSERT(ic);
2013 * XXX TODO: ic/vap queue flush
2017 IEEE80211_UNLOCK(ic);
2051 struct ieee80211com *ic = vap->iv_ic;
2056 IEEE80211_LOCK_ASSERT(ic);
2095 TAILQ_FOREACH(vp, &ic->ic_vaps, iv_next) {
2171 IEEE80211_IS_CHAN_DFS(ic->ic_bsschan) &&
2173 !IEEE80211_IS_CHAN_CACDONE(ic->ic_bsschan)) {
2203 ieee80211_runtask(ic, &vap->iv_nstate_task);
2211 struct ieee80211com *ic = vap->iv_ic;
2214 IEEE80211_LOCK(ic);
2216 IEEE80211_UNLOCK(ic);