diff options
| author | 2009-01-28 18:55:18 +0000 | |
|---|---|---|
| committer | 2009-01-28 18:55:18 +0000 | |
| commit | ec69e05a7853b967e62e2e5011939cf6238bf5b5 (patch) | |
| tree | 6475b64bf4cea61f6d2ec14260fbefbd870b7061 /sys/net80211/ieee80211_node.h | |
| parent | reuse recipient_to_path; ok gilles@ (diff) | |
| download | wireguard-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.h | 29 |
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 */ |
