Lines Matching refs:vap

116 static void tdma_vdetach(struct ieee80211vap *vap);
118 static void tdma_beacon_miss(struct ieee80211vap *vap);
121 static int tdma_update(struct ieee80211vap *vap,
128 settxparms(struct ieee80211vap *vap, enum ieee80211_phymode mode, int rate)
130 if (isclr(vap->iv_ic->ic_modecaps, mode))
133 vap->iv_txparms[mode].ucastrate = rate;
134 vap->iv_txparms[mode].mcastrate = rate;
150 ieee80211_tdma_vattach(struct ieee80211vap *vap)
154 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
155 ("not a tdma vap, caps 0x%x", vap->iv_caps));
163 vap->iv_caps &= ~IEEE80211_C_TDMA;
174 settxparms(vap, IEEE80211_MODE_11A, TDMA_TXRATE_11A_DEFAULT);
175 settxparms(vap, IEEE80211_MODE_11B, TDMA_TXRATE_11B_DEFAULT);
176 settxparms(vap, IEEE80211_MODE_11G, TDMA_TXRATE_11G_DEFAULT);
177 settxparms(vap, IEEE80211_MODE_TURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
178 settxparms(vap, IEEE80211_MODE_TURBO_G, TDMA_TXRATE_TURBO_DEFAULT);
179 settxparms(vap, IEEE80211_MODE_STURBO_A, TDMA_TXRATE_TURBO_DEFAULT);
180 settxparms(vap, IEEE80211_MODE_11NA, TDMA_TXRATE_11NA_DEFAULT);
181 settxparms(vap, IEEE80211_MODE_11NG, TDMA_TXRATE_11NG_DEFAULT);
182 settxparms(vap, IEEE80211_MODE_HALF, TDMA_TXRATE_HALF_DEFAULT);
183 settxparms(vap, IEEE80211_MODE_QUARTER, TDMA_TXRATE_QUARTER_DEFAULT);
184 settxparms(vap, IEEE80211_MODE_VHT_2GHZ, TDMA_TXRATE_11NG_DEFAULT);
185 settxparms(vap, IEEE80211_MODE_VHT_5GHZ, TDMA_TXRATE_11NA_DEFAULT);
187 setackpolicy(vap->iv_ic, 1); /* disable ACK's */
189 ts->tdma_opdetach = vap->iv_opdetach;
190 vap->iv_opdetach = tdma_vdetach;
191 ts->tdma_newstate = vap->iv_newstate;
192 vap->iv_newstate = tdma_newstate;
193 vap->iv_bmiss = tdma_beacon_miss;
194 ts->tdma_recv_mgmt = vap->iv_recv_mgmt;
195 vap->iv_recv_mgmt = tdma_recv_mgmt;
197 vap->iv_tdma = ts;
201 tdma_vdetach(struct ieee80211vap *vap)
203 struct ieee80211_tdma_state *ts = vap->iv_tdma;
209 ts->tdma_opdetach(vap);
210 IEEE80211_FREE(vap->iv_tdma, M_80211_VAP);
211 vap->iv_tdma = NULL;
213 setackpolicy(vap->iv_ic, 0); /* enable ACK's */
219 struct ieee80211vap *vap = ni->ni_vap;
221 if (ni != vap->iv_bss)
229 tdma_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
231 struct ieee80211_tdma_state *ts = vap->iv_tdma;
232 struct ieee80211com *ic = vap->iv_ic;
238 ostate = vap->iv_state;
239 IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s -> %s (%d)\n",
243 if (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS)
244 callout_stop(&vap->iv_swbmiss);
252 vap->iv_state = nstate; /* state transition */
253 ieee80211_cancel_scan(vap); /* background scan */
256 ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
259 if (vap->iv_flags_ext & IEEE80211_FEXT_SCANREQ) {
260 ieee80211_check_scan(vap,
261 vap->iv_scanreq_flags,
262 vap->iv_scanreq_duration,
263 vap->iv_scanreq_mindwell,
264 vap->iv_scanreq_maxdwell,
265 vap->iv_scanreq_nssid, vap->iv_scanreq_ssid);
266 vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
268 ieee80211_check_scan_current(vap);
271 status = ts->tdma_newstate(vap, nstate, arg);
275 (vap->iv_flags_ext & IEEE80211_FEXT_SWBMISS) &&
277 vap->iv_des_chan == IEEE80211_CHAN_ANYC) {
285 vap->iv_swbmiss_period = IEEE80211_TU_TO_TICKS(
286 2 * vap->iv_bmissthreshold * ts->tdma_bintval *
288 vap->iv_swbmiss_count = 0;
289 callout_reset(&vap->iv_swbmiss, vap->iv_swbmiss_period,
290 ieee80211_swbmiss, vap);
296 tdma_beacon_miss(struct ieee80211vap *vap)
298 struct ieee80211_tdma_state *ts = vap->iv_tdma;
300 IEEE80211_LOCK_ASSERT(vap->iv_ic);
302 KASSERT((vap->iv_ic->ic_flags & IEEE80211_F_SCAN) == 0, ("scanning"));
303 KASSERT(vap->iv_state == IEEE80211_S_RUN,
304 ("wrong state %d", vap->iv_state));
306 IEEE80211_DPRINTF(vap,
309 vap->iv_opmode, ieee80211_state_name[vap->iv_state]);
311 callout_stop(&vap->iv_swbmiss);
314 ieee80211_notify_node_leave(vap->iv_bss);
321 ieee80211_scan_assoc_fail(vap, vap->iv_bss->ni_macaddr,
327 ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
335 struct ieee80211vap *vap = ni->ni_vap;
336 struct ieee80211_tdma_state *ts = vap->iv_tdma;
352 IEEE80211_DISCARD(vap,
356 vap->iv_stats.is_rx_mgtdiscard++;
359 if (ni == vap->iv_bss &&
365 ni = ieee80211_add_neighbor(vap, wh, &scan);
378 vap->iv_stats.is_rx_beacon++;
390 vap->iv_swbmiss_count++;
414 tdma_update(struct ieee80211vap *vap, const struct ieee80211_tdma_param *tdma,
417 struct ieee80211_tdma_state *ts = vap->iv_tdma;
420 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
421 ("not a tdma vap, caps 0x%x", vap->iv_caps));
492 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);
494 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
506 if (vap->iv_state == IEEE80211_S_RUN)
507 vap->iv_ic->ic_tdma_update(ni, tdma, update);
513 ieee80211_notify_node_leave(vap->iv_bss);
528 struct ieee80211vap *vap = ni->ni_vap;
529 struct ieee80211_tdma_state *ts = vap->iv_tdma;
534 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
535 ("not a tdma vap, caps 0x%x", vap->iv_caps));
538 IEEE80211_DISCARD_IE(vap,
544 IEEE80211_DISCARD_IE(vap,
557 IEEE80211_DISCARD_IE(vap,
566 if (vap->iv_state == IEEE80211_S_RUN) {
569 IEEE80211_NOTE(vap, IEEE80211_MSG_TDMA, ni,
587 (void) tdma_update(vap, tdma, ni, 0);
606 IEEE80211_DPRINTF(vap, IEEE80211_MSG_DOT1X,
612 le64toh(ni->ni_tstamp.tsf) > vap->iv_bss->ni_tstamp.tsf) {
619 IEEE80211_DPRINTF(vap, IEEE80211_MSG_TDMA,
623 vap->iv_bss->ni_tstamp.tsf);
626 (void) tdma_update(vap, tdma, ni, 1);
633 ieee80211_tdma_getslot(struct ieee80211vap *vap)
635 struct ieee80211_tdma_state *ts = vap->iv_tdma;
637 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
638 ("not a tdma vap, caps 0x%x", vap->iv_caps));
648 struct ieee80211vap *vap = ni->ni_vap;
650 if (vap->iv_caps & IEEE80211_C_TDMA) {
653 struct ieee80211_tdma_state *ts = vap->iv_tdma;
659 (void) tdma_update(vap, tdma, ni, 1);
666 if ((vap->iv_flags & IEEE80211_F_WME) &&
677 ieee80211_add_tdma(uint8_t *frm, struct ieee80211vap *vap)
692 const struct ieee80211_tdma_state *ts = vap->iv_tdma;
695 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
696 ("not a tdma vap, caps 0x%x", vap->iv_caps));
717 ieee80211_tdma_update_beacon(struct ieee80211vap *vap,
720 struct ieee80211_tdma_state *ts = vap->iv_tdma;
722 KASSERT(vap->iv_caps & IEEE80211_C_TDMA,
723 ("not a tdma vap, caps 0x%x", vap->iv_caps));
726 (void) ieee80211_add_tdma(bo->bo_tdma, vap);
745 ts->tdma_count = vap->iv_bmissthreshold-1;
751 tdma_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
753 struct ieee80211_tdma_state *ts = vap->iv_tdma;
755 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
779 tdma_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
781 struct ieee80211_tdma_state *ts = vap->iv_tdma;
783 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0)
830 ieee80211_beacon_notify(vap, IEEE80211_BEACON_TDMA);