Lines Matching defs:ic

123 ieee80211_proto_attach(struct ieee80211com *ic)
125 struct ifnet *ifp = ic->ic_ifp;
128 ifp->if_hdrlen = ic->ic_headroom
139 ic->ic_protmode = IEEE80211_PROT_CTSONLY;
141 TASK_INIT(&ic->ic_parent_task, 0, parent_updown, ifp);
142 TASK_INIT(&ic->ic_mcast_task, 0, update_mcast, ic);
143 TASK_INIT(&ic->ic_promisc_task, 0, update_promisc, ic);
144 TASK_INIT(&ic->ic_chan_task, 0, update_channel, ic);
145 TASK_INIT(&ic->ic_bmiss_task, 0, beacon_miss, ic);
146 TASK_INIT(&ic->ic_chw_task, 0, update_chw, ic);
148 ic->ic_wme.wme_hipri_switch_hysteresis =
152 ic->ic_send_mgmt = ieee80211_send_mgmt;
153 ic->ic_raw_xmit = null_raw_xmit;
155 ieee80211_adhoc_attach(ic);
156 ieee80211_sta_attach(ic);
157 ieee80211_wds_attach(ic);
158 ieee80211_hostap_attach(ic);
160 ieee80211_mesh_attach(ic);
162 ieee80211_monitor_attach(ic);
166 ieee80211_proto_detach(struct ieee80211com *ic)
168 ieee80211_monitor_detach(ic);
170 ieee80211_mesh_detach(ic);
172 ieee80211_hostap_detach(ic);
173 ieee80211_wds_detach(ic);
174 ieee80211_adhoc_detach(ic);
175 ieee80211_sta_detach(ic);
186 struct ieee80211com *ic = vap->iv_ic;
191 ifp->if_hdrlen = ic->ic_ifp->if_hdrlen;
196 callout_init_mtx(&vap->iv_swbmiss, IEEE80211_LOCK_OBJ(ic), 0);
207 const struct ieee80211_rateset *rs = &ic->ic_sup_rates[i];
245 ic->ic_vattach[vap->iv_opmode](vap);
401 ieee80211_dump_pkt(struct ieee80211com *ic,
453 off = ieee80211_anyhdrspace(ic, wh);
493 struct ieee80211com *ic = ni->ni_ic;
536 ieee80211_get_suphtrates(ic, ni->ni_chan);
538 srs = ieee80211_get_suprates(ic, ni->ni_chan);
612 ieee80211_reset_erp(struct ieee80211com *ic)
614 ic->ic_flags &= ~IEEE80211_F_USEPROT;
615 ic->ic_nonerpsta = 0;
616 ic->ic_longslotsta = 0;
622 ieee80211_set_shortslottime(ic,
623 IEEE80211_IS_CHAN_A(ic->ic_curchan) ||
624 IEEE80211_IS_CHAN_HT(ic->ic_curchan) ||
625 (IEEE80211_IS_CHAN_ANYG(ic->ic_curchan) &&
626 ic->ic_opmode == IEEE80211_M_HOSTAP &&
627 (ic->ic_caps & IEEE80211_C_SHSLOT)));
631 if (IEEE80211_IS_CHAN_A(ic->ic_curchan) ||
632 (ic->ic_caps & IEEE80211_C_SHPREAMBLE)) {
633 ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
634 ic->ic_flags &= ~IEEE80211_F_USEBARKER;
636 ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE;
637 ic->ic_flags |= IEEE80211_F_USEBARKER;
645 ieee80211_set_shortslottime(struct ieee80211com *ic, int onoff)
648 ic->ic_flags |= IEEE80211_F_SHSLOT;
650 ic->ic_flags &= ~IEEE80211_F_SHSLOT;
652 if (ic->ic_updateslot != NULL)
653 ic->ic_updateslot(ic->ic_ifp);
884 struct ieee80211com *ic = vap->iv_ic;
885 struct ieee80211_wme_state *wme = &ic->ic_wme;
891 IEEE80211_LOCK_ASSERT(ic);
893 if ((ic->ic_caps & IEEE80211_C_WME) == 0 || ic->ic_nrunning > 1)
911 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC)
912 mode = ieee80211_chan2mode(ic->ic_bsschan);
936 if (ic->ic_opmode == IEEE80211_M_HOSTAP) {
962 struct ieee80211com *ic = vap->iv_ic;
964 IEEE80211_LOCK(ic);
966 IEEE80211_UNLOCK(ic);
989 struct ieee80211com *ic = vap->iv_ic;
990 struct ieee80211_wme_state *wme = &ic->ic_wme;
1023 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC)
1024 mode = ieee80211_chan2mode(ic->ic_bsschan);
1094 ic->ic_sta_assoc < 2 && (wme->wme_flags & WME_F_AGGRMODE) != 0) {
1134 wme->wme_update(ic);
1146 struct ieee80211com *ic = vap->iv_ic;
1148 if (ic->ic_caps & IEEE80211_C_WME) {
1149 IEEE80211_LOCK(ic);
1151 IEEE80211_UNLOCK(ic);
1166 struct ieee80211com *ic = arg;
1167 struct ifnet *parent = ic->ic_ifp;
1169 ic->ic_update_mcast(parent);
1175 struct ieee80211com *ic = arg;
1176 struct ifnet *parent = ic->ic_ifp;
1178 ic->ic_update_promisc(parent);
1184 struct ieee80211com *ic = arg;
1186 ic->ic_set_channel(ic);
1187 ieee80211_radiotap_chan_change(ic);
1193 struct ieee80211com *ic = arg;
1198 ic->ic_update_chw(ic);
1207 ieee80211_waitfor_parent(struct ieee80211com *ic)
1209 taskqueue_block(ic->ic_tq);
1210 ieee80211_draintask(ic, &ic->ic_parent_task);
1211 ieee80211_draintask(ic, &ic->ic_mcast_task);
1212 ieee80211_draintask(ic, &ic->ic_promisc_task);
1213 ieee80211_draintask(ic, &ic->ic_chan_task);
1214 ieee80211_draintask(ic, &ic->ic_bmiss_task);
1215 ieee80211_draintask(ic, &ic->ic_chw_task);
1216 taskqueue_unblock(ic->ic_tq);
1228 struct ieee80211com *ic = vap->iv_ic;
1229 struct ifnet *parent = ic->ic_ifp;
1231 IEEE80211_LOCK_ASSERT(ic);
1235 "start running, %d vaps running\n", ic->ic_nrunning);
1251 if (ic->ic_nrunning++ == 0 &&
1257 ieee80211_runtask(ic, &ic->ic_parent_task);
1324 ieee80211_start_all(struct ieee80211com *ic)
1328 IEEE80211_LOCK(ic);
1329 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1334 IEEE80211_UNLOCK(ic);
1347 struct ieee80211com *ic = vap->iv_ic;
1349 struct ifnet *parent = ic->ic_ifp;
1351 IEEE80211_LOCK_ASSERT(ic);
1354 "stop running, %d vaps running\n", ic->ic_nrunning);
1359 if (--ic->ic_nrunning == 0 &&
1365 ieee80211_runtask(ic, &ic->ic_parent_task);
1373 struct ieee80211com *ic = vap->iv_ic;
1375 IEEE80211_LOCK(ic);
1377 IEEE80211_UNLOCK(ic);
1384 ieee80211_stop_all(struct ieee80211com *ic)
1388 IEEE80211_LOCK(ic);
1389 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1394 IEEE80211_UNLOCK(ic);
1396 ieee80211_waitfor_parent(ic);
1404 ieee80211_suspend_all(struct ieee80211com *ic)
1408 IEEE80211_LOCK(ic);
1409 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1416 IEEE80211_UNLOCK(ic);
1418 ieee80211_waitfor_parent(ic);
1425 ieee80211_resume_all(struct ieee80211com *ic)
1429 IEEE80211_LOCK(ic);
1430 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1438 IEEE80211_UNLOCK(ic);
1442 ieee80211_beacon_miss(struct ieee80211com *ic)
1444 IEEE80211_LOCK(ic);
1445 if ((ic->ic_flags & IEEE80211_F_SCAN) == 0) {
1447 ieee80211_runtask(ic, &ic->ic_bmiss_task);
1449 IEEE80211_UNLOCK(ic);
1455 struct ieee80211com *ic = arg;
1458 IEEE80211_LOCK(ic);
1459 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1470 IEEE80211_UNLOCK(ic);
1477 struct ieee80211com *ic = vap->iv_ic;
1479 IEEE80211_LOCK(ic);
1484 IEEE80211_UNLOCK(ic);
1496 struct ieee80211com *ic = vap->iv_ic;
1498 IEEE80211_LOCK_ASSERT(ic);
1504 if (ic->ic_flags & IEEE80211_F_SCAN) {
1518 ieee80211_runtask(ic, &vap->iv_swbmiss_task);
1538 ieee80211_csa_startswitch(struct ieee80211com *ic,
1543 IEEE80211_LOCK_ASSERT(ic);
1545 ic->ic_csa_newchan = c;
1546 ic->ic_csa_mode = mode;
1547 ic->ic_csa_count = count;
1548 ic->ic_flags |= IEEE80211_F_CSAPENDING;
1549 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1558 ieee80211_notify_csa(ic, c, mode, count);
1567 csa_completeswitch(struct ieee80211com *ic)
1571 ic->ic_csa_newchan = NULL;
1572 ic->ic_flags &= ~IEEE80211_F_CSAPENDING;
1574 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1591 ieee80211_csa_completeswitch(struct ieee80211com *ic)
1595 IEEE80211_LOCK_ASSERT(ic);
1597 KASSERT(ic->ic_flags & IEEE80211_F_CSAPENDING, ("csa not pending"));
1599 ieee80211_setcurchan(ic, ic->ic_csa_newchan);
1600 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1602 vap->iv_bss->ni_chan = ic->ic_curchan;
1604 csa_completeswitch(ic);
1613 ieee80211_csa_cancelswitch(struct ieee80211com *ic)
1615 IEEE80211_LOCK_ASSERT(ic);
1617 csa_completeswitch(ic);
1627 struct ieee80211com *ic = vap0->iv_ic;
1630 IEEE80211_LOCK(ic);
1639 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
1642 IEEE80211_UNLOCK(ic);
1654 struct ieee80211com *ic = vap0->iv_ic;
1657 IEEE80211_LOCK_ASSERT(ic);
1664 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1670 IEEE80211_LOCK_ASSERT(ic);
1685 struct ieee80211com *ic = vap0->iv_ic;
1688 IEEE80211_LOCK_ASSERT(ic);
1695 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
1705 IEEE80211_LOCK_ASSERT(ic);
1717 struct ieee80211com *ic = vap->iv_ic;
1721 IEEE80211_LOCK(ic);
1735 IEEE80211_LOCK_ASSERT(ic);
1757 IEEE80211_LOCK_ASSERT(ic);
1801 * XXX TODO: ic/vap queue flush
1805 IEEE80211_UNLOCK(ic);
1839 struct ieee80211com *ic = vap->iv_ic;
1844 IEEE80211_LOCK_ASSERT(ic);
1872 TAILQ_FOREACH(vp, &ic->ic_vaps, iv_next) {
1948 IEEE80211_IS_CHAN_DFS(ic->ic_bsschan) &&
1950 !IEEE80211_IS_CHAN_CACDONE(ic->ic_bsschan)) {
1980 ieee80211_runtask(ic, &vap->iv_nstate_task);
1988 struct ieee80211com *ic = vap->iv_ic;
1991 IEEE80211_LOCK(ic);
1993 IEEE80211_UNLOCK(ic);