summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_hostap.h
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-10-02 17:45:19 +0000
committeradrian <adrian@FreeBSD.org>2012-10-02 17:45:19 +0000
commitb7889929b9889306bae9b98146edb7ac84bdedab (patch)
tree9d46706685e332fdbf0bc395bff936c78059a973 /sys/net80211/ieee80211_hostap.h
parent001794b735018a8bbdbac013a520940cd521bb71 (diff)
downloadFreeBSD-src-b7889929b9889306bae9b98146edb7ac84bdedab.zip
FreeBSD-src-b7889929b9889306bae9b98146edb7ac84bdedab.tar.gz
Migrate the power-save functions to be overridable VAP methods.
This turns ieee80211_node_pwrsave(), ieee80211_sta_pwrsave() and ieee80211_recv_pspoll() into methods. The intent is to let drivers override these and tie into the power save management pathway. For ath(4), this is the beginning of forcing a node software queue to stop and start as needed, as well as supporting "leaking" single frames from the software queue to the hardware. Right now, ieee80211_recv_pspoll() will attempt to transmit a single frame to the hardware (whether it be a data frame on the power-save queue or a NULL data frame) but the driver may have hardware/software queued frames queued up. This initial work is an attempt at providing the hooks required to implement correct behaviour. Allowing ieee80211_node_pwrsave() to be overridden allows the ath(4) driver to pause and unpause the entire software queue for a given node. It doesn't make sense to transmit anything whilst the node is asleep. Please note that there are other corner cases to correctly handle - specifically, setting the MORE data bit correctly on frames to a station, as well as keeping the TIM updated. Those particular issues can be addressed later.
Diffstat (limited to 'sys/net80211/ieee80211_hostap.h')
-rw-r--r--sys/net80211/ieee80211_hostap.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_hostap.h b/sys/net80211/ieee80211_hostap.h
index 87f858d..e08c4a0 100644
--- a/sys/net80211/ieee80211_hostap.h
+++ b/sys/net80211/ieee80211_hostap.h
@@ -32,4 +32,10 @@
*/
void ieee80211_hostap_attach(struct ieee80211com *);
void ieee80211_hostap_detach(struct ieee80211com *);
+
+/*
+ * This method can be overridden
+ */
+void ieee80211_recv_pspoll(struct ieee80211_node *, struct mbuf *);
+
#endif /* !_NET80211_IEEE80211_HOSTAP_H_ */
OpenPOWER on IntegriCloud