Lines Matching refs: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 if (isclr(vap->iv_ic->ic_modecaps, mode))
131 vap->iv_txparms[mode].ucastrate = rate;
132 vap->iv_txparms[mode].mcastrate = rate;
148 ieee80211_tdma_vattach(struct ieee80211vap *vap)
152 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
153 ("not a tdma vap, caps 0x%x", vap->iv_caps));
161 vap->iv_caps &= ~IEEE80211_C_TDMA;
172 settxparms(vap, IEEE80211_MODE_11A, TDMA_TXRATE_11A_DEFAULT);
173 settxparms(vap, IEEE80211_MODE_11B, TDMA_TXRATE_11B_DEFAULT);
174 settxparms(vap, IEEE80211_MODE_11G, TDMA_TXRATE_11G_DEFAULT);
175 settxparms(vap, IEEE80211_MODE_TURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
176 settxparms(vap, IEEE80211_MODE_TURBO_G, TDMA_TXRATE_TURBO_DEFAULT);
177 settxparms(vap, IEEE80211_MODE_STURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
178 settxparms(vap, IEEE80211_MODE_11NA, TDMA_TXRATE_11NA_DEFAULT);
179 settxparms(vap, IEEE80211_MODE_11NG, TDMA_TXRATE_11NG_DEFAULT);
180 settxparms(vap, IEEE80211_MODE_HALF, TDMA_TXRATE_HALF_DEFAULT);
181 settxparms(vap, IEEE80211_MODE_QUARTER, TDMA_TXRATE_QUARTER_DEFAULT);
183 setackpolicy(vap->iv_ic, 1); /* disable ACK's */
185 ts->tdma_opdetach = vap->iv_opdetach;
186 vap->iv_opdetach = tdma_vdetach;
187 ts->tdma_newstate = vap->iv_newstate;
188 vap->iv_newstate = tdma_newstate;
189 vap->iv_bmiss = tdma_beacon_miss;
190 ts->tdma_recv_mgmt = vap->iv_recv_mgmt;
191 vap->iv_recv_mgmt = tdma_recv_mgmt;
193 vap->iv_tdma = ts;
197 tdma_vdetach(struct ieee80211vap *vap)
199 struct ieee80211_tdma_state *ts = vap->iv_tdma;
205 ts->tdma_opdetach(vap);
206 IEEE80211_FREE(vap->iv_tdma, M_80211_VAP);
207 vap->iv_tdma = NULL;
209 setackpolicy(vap->iv_ic, 0); /* enable ACK's */
215 struct ieee80211vap *vap = arg;
217 if (ni->ni_vap == vap && ni != vap->iv_bss)
225 tdma_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
227 struct ieee80211_tdma_state *ts = vap->iv_tdma;
228 struct ieee80211com *ic = vap->iv_ic;
234 ostate = vap->iv_state;
235 IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s -> %s (%d)\n",
239 if (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS)
240 callout_stop(&vap->iv_swbmiss);
248 vap->iv_state = nstate; /* state transition */
249 ieee80211_cancel_scan(vap); /* background scan */
252 ieee80211_iterate_nodes(&ic->ic_sta, sta_leave, vap);
254 if (vap->iv_flags_ext & IEEE80211_FEXT_SCANREQ) {
255 ieee80211_check_scan(vap,
256 vap->iv_scanreq_flags,
257 vap->iv_scanreq_duration,
258 vap->iv_scanreq_mindwell,
259 vap->iv_scanreq_maxdwell,
260 vap->iv_scanreq_nssid, vap->iv_scanreq_ssid);
261 vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
263 ieee80211_check_scan_current(vap);
266 status = ts->tdma_newstate(vap, nstate, arg);
270 (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS) &&
272 vap->iv_des_chan == IEEE80211_CHAN_ANYC) {
280 vap->iv_swbmiss_period = IEEE80211_TU_TO_TICKS(
281 2 * vap->iv_bmissthreshold * ts->tdma_bintval *
283 vap->iv_swbmiss_count = 0;
284 callout_reset(&vap->iv_swbmiss, vap->iv_swbmiss_period,
285 ieee80211_swbmiss, vap);
291 tdma_beacon_miss(struct ieee80211vap *vap)
293 struct ieee80211_tdma_state *ts = vap->iv_tdma;
295 IEEE80211_LOCK_ASSERT(vap->iv_ic);
297 KASSERT((vap->iv_ic->ic_flags & IEEE80211_F_SCAN) == 0, ("scanning"));
298 KASSERT(vap->iv_state == IEEE80211_S_RUN,
299 ("wrong state %d", vap->iv_state));
301 IEEE80211_DPRINTF(vap,
304 vap->iv_opmode, ieee80211_state_name[vap->iv_state]);
306 callout_stop(&vap->iv_swbmiss);
309 ieee80211_notify_node_leave(vap->iv_bss);
316 ieee80211_scan_assoc_fail(vap, vap->iv_bss->ni_macaddr,
322 ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
330 struct ieee80211vap *vap = ni->ni_vap;
331 struct ieee80211_tdma_state *ts = vap->iv_tdma;
347 IEEE80211_DISCARD(vap,
351 vap->iv_stats.is_rx_mgtdiscard++;
354 if (ni == vap->iv_bss &&
360 ni = ieee80211_add_neighbor(vap, wh, &scan);
373 vap->iv_stats.is_rx_beacon++;
385 vap->iv_swbmiss_count++;
409 tdma_update(struct ieee80211vap *vap, const struct ieee80211_tdma_param *tdma,
412 struct ieee80211_tdma_state *ts = vap->iv_tdma;
415 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
416 ("not a tdma vap, caps 0x%x", vap->iv_caps));
487 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);
489 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
501 if (vap->iv_state == IEEE80211_S_RUN)
502 vap->iv_ic->ic_tdma_update(ni, tdma, update);
508 ieee80211_notify_node_leave(vap->iv_bss);
523 struct ieee80211vap *vap = ni->ni_vap;
524 struct ieee80211_tdma_state *ts = vap->iv_tdma;
529 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
530 ("not a tdma vap, caps 0x%x", vap->iv_caps));
533 IEEE80211_DISCARD_IE(vap,
539 IEEE80211_DISCARD_IE(vap,
552 IEEE80211_DISCARD_IE(vap,
561 if (vap->iv_state == IEEE80211_S_RUN) {
564 IEEE80211_NOTE(vap, IEEE80211_MSG_TDMA, ni,
582 (void) tdma_update(vap, tdma, ni, 0);
601 IEEE80211_DPRINTF(vap, IEEE80211_MSG_DOT1X,
607 le64toh(ni->ni_tstamp.tsf) > vap->iv_bss->ni_tstamp.tsf) {
614 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
618 vap->iv_bss->ni_tstamp.tsf);
621 (void) tdma_update(vap, tdma, ni, 1);
628 ieee80211_tdma_getslot(struct ieee80211vap *vap)
630 struct ieee80211_tdma_state *ts = vap->iv_tdma;
632 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
633 ("not a tdma vap, caps 0x%x", vap->iv_caps));
643 struct ieee80211vap *vap = ni->ni_vap;
645 if (vap->iv_caps & IEEE80211_C_TDMA) {
648 struct ieee80211_tdma_state *ts = vap->iv_tdma;
654 (void) tdma_update(vap, tdma, ni, 1);
661 if ((vap->iv_flags & IEEE80211_F_WME) &&
672 ieee80211_add_tdma(uint8_t *frm, struct ieee80211vap *vap)
687 const struct ieee80211_tdma_state *ts = vap->iv_tdma;
690 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
691 ("not a tdma vap, caps 0x%x", vap->iv_caps));
712 ieee80211_tdma_update_beacon(struct ieee80211vap *vap,
715 struct ieee80211_tdma_state *ts = vap->iv_tdma;
717 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
718 ("not a tdma vap, caps 0x%x", vap->iv_caps));
721 (void) ieee80211_add_tdma(bo->bo_tdma, vap);
740 ts->tdma_count = vap->iv_bmissthreshold-1;
746 tdma_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
748 struct ieee80211_tdma_state *ts = vap->iv_tdma;
750 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
774 tdma_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
776 struct ieee80211_tdma_state *ts = vap->iv_tdma;
778 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
825 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);