aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2008-01-28 07:07:16 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-02-29 15:19:13 -0500
commit80656c20315558a9bc5c5b7f7c6949fa72277afd (patch)
tree72e6ffb8d410f5cd3d33d29a5bf399a576551be4 /net/mac80211
parent0df3ef45a3d7b59cc53ce4e3611033c6e3b51a1b (diff)
mac80211: A-MPDU Tx add MLME structures
This patch adds the needed structures to describe the Tx aggregation MLME per STA new: - struct tid_ampdu_tx: TID aggregation information (Tx) changed: - struct sta_ampdu_mlme: Tx aggregation information per TID and dialog token creator were added - struct sta_info: tid_to_tx_q added for tid<->tx queue mapping Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/sta_info.h36
1 files changed, 33 insertions, 3 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 96fe3ed95038..48a620a4e1a6 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -33,13 +33,36 @@
33 33
34#define STA_TID_NUM 16 34#define STA_TID_NUM 16
35#define ADDBA_RESP_INTERVAL HZ 35#define ADDBA_RESP_INTERVAL HZ
36#define HT_AGG_MAX_RETRIES (0x3)
36 37
37#define HT_AGG_STATE_INITIATOR_SHIFT (4) 38#define HT_AGG_STATE_INITIATOR_SHIFT (4)
38 39
40#define HT_ADDBA_REQUESTED_MSK BIT(0)
41#define HT_ADDBA_DRV_READY_MSK BIT(1)
42#define HT_ADDBA_RECEIVED_MSK BIT(2)
39#define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3) 43#define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3)
40 44#define HT_AGG_STATE_INITIATOR_MSK BIT(HT_AGG_STATE_INITIATOR_SHIFT)
41#define HT_AGG_STATE_IDLE (0x0) 45#define HT_AGG_STATE_IDLE (0x0)
42#define HT_AGG_STATE_OPERATIONAL (0x7) 46#define HT_AGG_STATE_OPERATIONAL (HT_ADDBA_REQUESTED_MSK | \
47 HT_ADDBA_DRV_READY_MSK | \
48 HT_ADDBA_RECEIVED_MSK)
49
50/**
51 * struct tid_ampdu_tx - TID aggregation information (Tx).
52 *
53 * @state: TID's state in session state machine.
54 * @dialog_token: dialog token for aggregation session
55 * @ssn: Starting Sequence Number expected to be aggregated.
56 * @addba_resp_timer: timer for peer's response to addba request
57 * @addba_req_num: number of times addBA request has been sent.
58 */
59struct tid_ampdu_tx {
60 u8 state;
61 u8 dialog_token;
62 u16 ssn;
63 struct timer_list addba_resp_timer;
64 u8 addba_req_num;
65};
43 66
44/** 67/**
45 * struct tid_ampdu_rx - TID aggregation information (Rx). 68 * struct tid_ampdu_rx - TID aggregation information (Rx).
@@ -69,12 +92,18 @@ struct tid_ampdu_rx {
69/** 92/**
70 * struct sta_ampdu_mlme - STA aggregation information. 93 * struct sta_ampdu_mlme - STA aggregation information.
71 * 94 *
72 * @tid_agg_info_rx: aggregation info for Rx per TID 95 * @tid_rx: aggregation info for Rx per TID
96 * @tid_tx: aggregation info for Tx per TID
73 * @ampdu_rx: for locking sections in aggregation Rx flow 97 * @ampdu_rx: for locking sections in aggregation Rx flow
98 * @ampdu_tx: for locking sectionsi in aggregation Tx flow
99 * @dialog_token_allocator: dialog token enumerator for each new session;
74 */ 100 */
75struct sta_ampdu_mlme { 101struct sta_ampdu_mlme {
76 struct tid_ampdu_rx tid_rx[STA_TID_NUM]; 102 struct tid_ampdu_rx tid_rx[STA_TID_NUM];
103 struct tid_ampdu_tx tid_tx[STA_TID_NUM];
77 spinlock_t ampdu_rx; 104 spinlock_t ampdu_rx;
105 spinlock_t ampdu_tx;
106 u8 dialog_token_allocator;
78}; 107};
79 108
80struct sta_info { 109struct sta_info {
@@ -148,6 +177,7 @@ struct sta_info {
148 of this STA */ 177 of this STA */
149 struct sta_ampdu_mlme ampdu_mlme; 178 struct sta_ampdu_mlme ampdu_mlme;
150 u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */ 179 u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */
180 u8 tid_to_tx_q[STA_TID_NUM]; /* map tid to tx queue */
151 181
152#ifdef CONFIG_MAC80211_DEBUGFS 182#ifdef CONFIG_MAC80211_DEBUGFS
153 struct sta_info_debugfsdentries { 183 struct sta_info_debugfsdentries {