summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_node.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2008-10-26 01:04:46 +0000
committersam <sam@FreeBSD.org>2008-10-26 01:04:46 +0000
commitdf1bd7956d87b2f4f2ebdc2a158213f0f9e4af63 (patch)
tree40c4aec4264205ea70874ded60169b7ccb7eca34 /sys/net80211/ieee80211_node.c
parentee9b1738af3926a7f536906cb6e6a1431174522f (diff)
downloadFreeBSD-src-df1bd7956d87b2f4f2ebdc2a158213f0f9e4af63.zip
FreeBSD-src-df1bd7956d87b2f4f2ebdc2a158213f0f9e4af63.tar.gz
New ap-side power save implementation; the main change is to allow drivers
to queue frames previously encapsulated on a separate high priority list that is dispatched before the unencapsulated frames (to preserve order).
Diffstat (limited to 'sys/net80211/ieee80211_node.c')
-rw-r--r--sys/net80211/ieee80211_node.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
index 6bbef44..562d31f 100644
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -904,7 +904,7 @@ node_cleanup(struct ieee80211_node *ni)
/*
* Drain power save queue and, if needed, clear TIM.
*/
- if (ieee80211_node_saveq_drain(ni) != 0 && vap->iv_set_tim != NULL)
+ if (ieee80211_node_psq_drain(ni) != 0 && vap->iv_set_tim != NULL)
vap->iv_set_tim(ni, 0);
ni->ni_associd = 0;
@@ -943,7 +943,7 @@ node_free(struct ieee80211_node *ni)
ic->ic_node_cleanup(ni);
ieee80211_ies_cleanup(&ni->ni_ies);
- IEEE80211_NODE_SAVEQ_DESTROY(ni);
+ ieee80211_psq_cleanup(&ni->ni_psq);
IEEE80211_NODE_WDSQ_DESTROY(ni);
FREE(ni, M_80211_NODE);
}
@@ -958,9 +958,8 @@ node_age(struct ieee80211_node *ni)
/*
* Age frames on the power save queue.
*/
- if (ieee80211_node_saveq_age(ni) != 0 &&
- IEEE80211_NODE_SAVEQ_QLEN(ni) == 0 &&
- vap->iv_set_tim != NULL)
+ if (ieee80211_node_psq_age(ni) != 0 &&
+ ni->ni_psq.psq_len == 0 && vap->iv_set_tim != NULL)
vap->iv_set_tim(ni, 0);
/*
* Age frames on the wds pending queue.
@@ -1031,7 +1030,7 @@ ieee80211_alloc_node(struct ieee80211_node_table *nt,
ni->ni_inact_reload = nt->nt_inact_init;
ni->ni_inact = ni->ni_inact_reload;
ni->ni_ath_defkeyix = 0x7fff;
- IEEE80211_NODE_SAVEQ_INIT(ni, "unknown");
+ ieee80211_psq_init(&ni->ni_psq, "unknown");
IEEE80211_NODE_WDSQ_INIT(ni, "unknown");
IEEE80211_NODE_LOCK(nt);
@@ -1081,7 +1080,7 @@ ieee80211_tmp_node(struct ieee80211vap *vap,
IEEE80211_KEYIX_NONE);
ni->ni_txpower = bss->ni_txpower;
/* XXX optimize away */
- IEEE80211_NODE_SAVEQ_INIT(ni, "unknown");
+ ieee80211_psq_init(&ni->ni_psq, "unknown");
IEEE80211_NODE_WDSQ_INIT(ni, "unknown");
} else {
/* XXX msg */
OpenPOWER on IntegriCloud