Lines Matching defs:vap

114 static void tdma_vdetach(struct ieee80211vap *vap);
116 static void tdma_beacon_miss(struct ieee80211vap *vap);
119 static int tdma_update(struct ieee80211vap *vap,
126 settxparms(struct ieee80211vap *vap, enum ieee80211_phymode mode, int rate)
128 vap->iv_txparms[mode].ucastrate = rate;
129 vap->iv_txparms[mode].mcastrate = rate;
145 ieee80211_tdma_vattach(struct ieee80211vap *vap)
149 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
150 ("not a tdma vap, caps 0x%x", vap->iv_caps));
157 vap->iv_caps &= ~IEEE80211_C_TDMA;
168 settxparms(vap, IEEE80211_MODE_11A, TDMA_TXRATE_11A_DEFAULT);
169 settxparms(vap, IEEE80211_MODE_11B, TDMA_TXRATE_11B_DEFAULT);
170 settxparms(vap, IEEE80211_MODE_11G, TDMA_TXRATE_11G_DEFAULT);
171 settxparms(vap, IEEE80211_MODE_TURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
172 settxparms(vap, IEEE80211_MODE_TURBO_G, TDMA_TXRATE_TURBO_DEFAULT);
173 settxparms(vap, IEEE80211_MODE_STURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
174 settxparms(vap, IEEE80211_MODE_11NA, TDMA_TXRATE_11NA_DEFAULT);
175 settxparms(vap, IEEE80211_MODE_11NG, TDMA_TXRATE_11NG_DEFAULT);
176 settxparms(vap, IEEE80211_MODE_HALF, TDMA_TXRATE_HALF_DEFAULT);
177 settxparms(vap, IEEE80211_MODE_QUARTER, TDMA_TXRATE_QUARTER_DEFAULT);
179 setackpolicy(vap->iv_ic, 1); /* disable ACK's */
181 ts->tdma_opdetach = vap->iv_opdetach;
182 vap->iv_opdetach = tdma_vdetach;
183 ts->tdma_newstate = vap->iv_newstate;
184 vap->iv_newstate = tdma_newstate;
185 vap->iv_bmiss = tdma_beacon_miss;
186 ts->tdma_recv_mgmt = vap->iv_recv_mgmt;
187 vap->iv_recv_mgmt = tdma_recv_mgmt;
189 vap->iv_tdma = ts;
193 tdma_vdetach(struct ieee80211vap *vap)
195 struct ieee80211_tdma_state *ts = vap->iv_tdma;
201 ts->tdma_opdetach(vap);
202 free(vap->iv_tdma, M_80211_VAP);
203 vap->iv_tdma = NULL;
205 setackpolicy(vap->iv_ic, 0); /* enable ACK's */
211 struct ieee80211vap *vap = arg;
213 if (ni->ni_vap == vap && ni != vap->iv_bss)
221 tdma_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
223 struct ieee80211_tdma_state *ts = vap->iv_tdma;
224 struct ieee80211com *ic = vap->iv_ic;
230 ostate = vap->iv_state;
231 IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s -> %s (%d)\n",
235 if (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS)
236 callout_stop(&vap->iv_swbmiss);
244 vap->iv_state = nstate; /* state transition */
245 ieee80211_cancel_scan(vap); /* background scan */
248 ieee80211_iterate_nodes(&ic->ic_sta, sta_leave, vap);
250 if (vap->iv_flags_ext & IEEE80211_FEXT_SCANREQ) {
251 ieee80211_check_scan(vap,
252 vap->iv_scanreq_flags,
253 vap->iv_scanreq_duration,
254 vap->iv_scanreq_mindwell,
255 vap->iv_scanreq_maxdwell,
256 vap->iv_scanreq_nssid, vap->iv_scanreq_ssid);
257 vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
259 ieee80211_check_scan_current(vap);
262 status = ts->tdma_newstate(vap, nstate, arg);
266 (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS) &&
268 vap->iv_des_chan == IEEE80211_CHAN_ANYC) {
276 vap->iv_swbmiss_period = IEEE80211_TU_TO_TICKS(
277 2 * vap->iv_bmissthreshold * ts->tdma_bintval *
279 vap->iv_swbmiss_count = 0;
280 callout_reset(&vap->iv_swbmiss, vap->iv_swbmiss_period,
281 ieee80211_swbmiss, vap);
287 tdma_beacon_miss(struct ieee80211vap *vap)
289 struct ieee80211_tdma_state *ts = vap->iv_tdma;
291 IEEE80211_LOCK_ASSERT(vap->iv_ic);
293 KASSERT((vap->iv_ic->ic_flags & IEEE80211_F_SCAN) == 0, ("scanning"));
294 KASSERT(vap->iv_state == IEEE80211_S_RUN,
295 ("wrong state %d", vap->iv_state));
297 IEEE80211_DPRINTF(vap,
300 vap->iv_opmode, ieee80211_state_name[vap->iv_state]);
302 callout_stop(&vap->iv_swbmiss);
305 ieee80211_notify_node_leave(vap->iv_bss);
312 ieee80211_scan_assoc_fail(vap, vap->iv_bss->ni_macaddr,
318 ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
326 struct ieee80211vap *vap = ni->ni_vap;
327 struct ieee80211_tdma_state *ts = vap->iv_tdma;
342 IEEE80211_DISCARD(vap,
347 vap->iv_stats.is_rx_mgtdiscard++;
350 if (ni == vap->iv_bss &&
356 ni = ieee80211_add_neighbor(vap, wh, &scan);
369 vap->iv_stats.is_rx_beacon++;
381 vap->iv_swbmiss_count++;
405 tdma_update(struct ieee80211vap *vap, const struct ieee80211_tdma_param *tdma,
408 struct ieee80211_tdma_state *ts = vap->iv_tdma;
411 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
412 ("not a tdma vap, caps 0x%x", vap->iv_caps));
483 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);
485 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
497 if (vap->iv_state == IEEE80211_S_RUN)
498 vap->iv_ic->ic_tdma_update(ni, tdma, update);
504 ieee80211_notify_node_leave(vap->iv_bss);
519 struct ieee80211vap *vap = ni->ni_vap;
520 struct ieee80211_tdma_state *ts = vap->iv_tdma;
525 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
526 ("not a tdma vap, caps 0x%x", vap->iv_caps));
529 IEEE80211_DISCARD_IE(vap,
535 IEEE80211_DISCARD_IE(vap,
548 IEEE80211_DISCARD_IE(vap,
557 if (vap->iv_state == IEEE80211_S_RUN) {
560 IEEE80211_NOTE(vap, IEEE80211_MSG_TDMA, ni,
578 (void) tdma_update(vap, tdma, ni, 0);
597 IEEE80211_DPRINTF(vap, IEEE80211_MSG_DOT1X,
603 le64toh(ni->ni_tstamp.tsf) > vap->iv_bss->ni_tstamp.tsf) {
610 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
614 vap->iv_bss->ni_tstamp.tsf);
617 (void) tdma_update(vap, tdma, ni, 1);
624 ieee80211_tdma_getslot(struct ieee80211vap *vap)
626 struct ieee80211_tdma_state *ts = vap->iv_tdma;
628 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
629 ("not a tdma vap, caps 0x%x", vap->iv_caps));
639 struct ieee80211vap *vap = ni->ni_vap;
641 if (vap->iv_caps & IEEE80211_C_TDMA) {
644 struct ieee80211_tdma_state *ts = vap->iv_tdma;
650 (void) tdma_update(vap, tdma, ni, 1);
657 if ((vap->iv_flags & IEEE80211_F_WME) &&
668 ieee80211_add_tdma(uint8_t *frm, struct ieee80211vap *vap)
683 const struct ieee80211_tdma_state *ts = vap->iv_tdma;
686 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
687 ("not a tdma vap, caps 0x%x", vap->iv_caps));
708 ieee80211_tdma_update_beacon(struct ieee80211vap *vap,
711 struct ieee80211_tdma_state *ts = vap->iv_tdma;
713 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
714 ("not a tdma vap, caps 0x%x", vap->iv_caps));
717 (void) ieee80211_add_tdma(bo->bo_tdma, vap);
736 ts->tdma_count = vap->iv_bmissthreshold-1;
742 tdma_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
744 struct ieee80211_tdma_state *ts = vap->iv_tdma;
746 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
770 tdma_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
772 struct ieee80211_tdma_state *ts = vap->iv_tdma;
774 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
821 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);