Lines Matching refs:vap

66 ieee80211_power_vattach(struct ieee80211vap *vap)
68 if (vap->iv_opmode == IEEE80211_M_HOSTAP ||
69 vap->iv_opmode == IEEE80211_M_IBSS) {
71 vap->iv_update_ps = ieee80211_update_ps;
72 vap->iv_set_tim = ieee80211_set_tim;
74 vap->iv_node_ps = ieee80211_node_pwrsave;
75 vap->iv_sta_ps = ieee80211_sta_pwrsave;
79 ieee80211_power_latevattach(struct ieee80211vap *vap)
85 if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
86 vap->iv_tim_len = howmany(vap->iv_max_aid,8) * sizeof(uint8_t);
87 vap->iv_tim_bitmap = (uint8_t *) IEEE80211_MALLOC(vap->iv_tim_len,
90 if (vap->iv_tim_bitmap == NULL) {
93 vap->iv_tim_len = 0;
99 ieee80211_power_vdetach(struct ieee80211vap *vap)
101 if (vap->iv_tim_bitmap != NULL) {
102 IEEE80211_FREE(vap->iv_tim_bitmap, M_80211_POWER);
103 vap->iv_tim_bitmap = NULL;
233 struct ieee80211vap *vap = ni->ni_vap;
243 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
262 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
273 ieee80211_update_ps(struct ieee80211vap *vap, int nsta)
276 KASSERT(vap->iv_opmode == IEEE80211_M_HOSTAP ||
277 vap->iv_opmode == IEEE80211_M_IBSS,
278 ("operating mode %u", vap->iv_opmode));
287 struct ieee80211vap *vap = ni->ni_vap;
292 KASSERT(vap->iv_opmode == IEEE80211_M_HOSTAP ||
293 vap->iv_opmode == IEEE80211_M_IBSS,
294 ("operating mode %u", vap->iv_opmode));
297 KASSERT(aid < vap->iv_max_aid,
298 ("bogus aid %u, max %u", aid, vap->iv_max_aid));
301 changed = (set != (isset(vap->iv_tim_bitmap, aid) != 0));
304 setbit(vap->iv_tim_bitmap, aid);
305 vap->iv_ps_pending++;
307 clrbit(vap->iv_tim_bitmap, aid);
308 vap->iv_ps_pending--;
310 /* NB: we know vap is in RUN state so no need to check */
311 vap->iv_update_beacon(vap, IEEE80211_BEACON_TIM);
327 struct ieee80211vap *vap = ni->ni_vap;
336 IEEE80211_NOTE(vap, IEEE80211_MSG_ANY, ni,
340 if (ieee80211_msg_dumppkts(vap))
400 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
403 if (qlen == 1 && vap->iv_set_tim != NULL)
404 vap->iv_set_tim(ni, 1);
410 * Move frames from the ps q to the vap's send queue
420 struct ieee80211vap *vap = ni->ni_vap;
425 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
431 /* XXX could dispatch through vap and check M_ENCAP */
471 (void) ieee80211_vap_xmitpkt(vap, m);
481 struct ieee80211vap *vap = ni->ni_vap;
487 vap->iv_ps_sta++;
491 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
492 "power save mode on, %u sta's in ps mode", vap->iv_ps_sta);
495 vap->iv_update_ps(vap, vap->iv_ps_sta);
498 vap->iv_ps_sta--;
502 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
503 "power save mode off, %u sta's in ps mode", vap->iv_ps_sta);
506 if (vap->iv_set_tim != NULL)
507 vap->iv_set_tim(ni, 0);
510 vap->iv_update_ps(vap, vap->iv_ps_sta);
521 ieee80211_sta_pwrsave(struct ieee80211vap *vap, int enable)
523 struct ieee80211_node *ni = vap->iv_bss;
528 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,
556 ieee80211_sta_tim_notify(struct ieee80211vap *vap, int set)
558 struct ieee80211com *ic = vap->iv_ic;
570 IEEE80211_LOCK(vap->iv_ic);
571 if (set == 1 && vap->iv_state == IEEE80211_S_SLEEP) {
572 ieee80211_new_state_locked(vap, IEEE80211_S_RUN, 0);
573 IEEE80211_DPRINTF(vap, IEEE80211_MSG_POWER,
579 IEEE80211_DPRINTF(vap, IEEE80211_MSG_POWER,
580 "%s: wake up from bgscan vap sleep\n",
587 vap->iv_sta_ps(vap, 0);
589 IEEE80211_UNLOCK(vap->iv_ic);
598 ieee80211_sta_ps_timer_check(struct ieee80211vap *vap)
600 struct ieee80211com *ic = vap->iv_ic;
605 if (! (vap->iv_caps & IEEE80211_C_SWSLEEP))
608 if (vap->iv_opmode != IEEE80211_M_STA)
612 if (vap->iv_state != IEEE80211_S_RUN)
615 IEEE80211_DPRINTF(vap, IEEE80211_MSG_POWER,
621 if (! (vap->iv_flags & IEEE80211_F_PMGTON))
633 if ((vap->iv_bss->ni_flags & IEEE80211_NODE_PWR_MGT) == 0)
634 vap->iv_sta_ps(vap, 1);
642 ieee80211_new_state_locked(vap, IEEE80211_S_SLEEP, 0);
644 IEEE80211_DPRINTF(vap, IEEE80211_MSG_POWER,