summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_node.h
diff options
context:
space:
mode:
authordamien <damien@openbsd.org>2009-01-28 18:55:18 +0000
committerdamien <damien@openbsd.org>2009-01-28 18:55:18 +0000
commitec69e05a7853b967e62e2e5011939cf6238bf5b5 (patch)
tree6475b64bf4cea61f6d2ec14260fbefbd870b7061 /sys/net80211/ieee80211_node.h
parentreuse recipient_to_path; ok gilles@ (diff)
downloadwireguard-openbsd-ec69e05a7853b967e62e2e5011939cf6238bf5b5.tar.xz
wireguard-openbsd-ec69e05a7853b967e62e2e5011939cf6238bf5b5.zip
Block Ack agreements are unidirectional.
Maintain state for both originator and recipient roles separately. Do not allocate receive reordering buffer in addba_request(). Test the "initiator" bit in incoming DELBA frames and set it appropriately in outgoing DELBA frames. Separate callbacks for Tx/Rx too. no binary change since all this is #ifdef'ed out.
Diffstat (limited to 'sys/net80211/ieee80211_node.h')
-rw-r--r--sys/net80211/ieee80211_node.h29
1 files changed, 20 insertions, 9 deletions
diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h
index 961ace16a8f..dd259bd129c 100644
--- a/sys/net80211/ieee80211_node.h
+++ b/sys/net80211/ieee80211_node.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_node.h,v 1.38 2009/01/28 17:15:21 damien Exp $ */
+/* $OpenBSD: ieee80211_node.h,v 1.39 2009/01/28 18:55:18 damien Exp $ */
/* $NetBSD: ieee80211_node.h,v 1.9 2004/04/30 22:57:32 dyoung Exp $ */
/*-
@@ -105,12 +105,8 @@ struct ieee80211_rxinfo {
#define IEEE80211_RXI_AMPDU_DONE 0x00000002
/* Block Acknowledgement Record */
-struct ieee80211_ba {
+struct ieee80211_tx_ba {
struct ieee80211_node *ba_ni; /* backpointer for callbacks */
- struct {
- struct mbuf *m;
- struct ieee80211_rxinfo rxi;
- } *ba_buf;
struct timeout ba_to;
int ba_timeout_val;
#define IEEE80211_BA_MIN_TIMEOUT (10 * 1000) /* 10msec */
@@ -126,10 +122,24 @@ struct ieee80211_ba {
u_int16_t ba_winsize;
#define IEEE80211_BA_MAX_WINSZ 128 /* maximum we will accept */
- u_int16_t ba_head;
u_int8_t ba_token;
};
+struct ieee80211_rx_ba {
+ struct ieee80211_node *ba_ni; /* backpointer for callbacks */
+ struct {
+ struct mbuf *m;
+ struct ieee80211_rxinfo rxi;
+ } *ba_buf;
+ struct timeout ba_to;
+ int ba_timeout_val;
+ int ba_state;
+ u_int16_t ba_winstart;
+ u_int16_t ba_winend;
+ u_int16_t ba_winsize;
+ u_int16_t ba_head;
+};
+
/*
* Node specific information. Note that drivers are expected
* to derive from this structure to add device-specific per-node
@@ -208,8 +218,9 @@ struct ieee80211_node {
int ni_sa_query_count;
#ifdef notyet
- /* HT-immediate Block Ack */
- struct ieee80211_ba ni_ba[IEEE80211_NUM_TID];
+ /* Block Ack records */
+ struct ieee80211_tx_ba ni_tx_ba[IEEE80211_NUM_TID];
+ struct ieee80211_rx_ba ni_rx_ba[IEEE80211_NUM_TID];
#endif
/* others */