1
From 428ee27143824bc868a301bb46d9cc34e76a17b6 Mon Sep 17 00:00:00 2001
2
From: Tomas Winkler <tomas.winkler@intel.com>
3
Date: Sat, 30 Jun 2007 08:20:07 +0800
4
Subject: [PATCH] mac80211: [HT] IEEE 802.11n RX aggregation API and MLME
6
Add IEEE 802.11n RX aggregation API and MLME
8
Signed-of-by: Tomas Winkler <tomas.winkler@intel.com>
9
Signed-of-by: Zhu Yi <yi.zhu@intel.com>
11
include/net/mac80211.h | 13 +++++++++++++
12
net/mac80211/sta_info.h | 13 +++++++++++++
13
2 files changed, 26 insertions(+), 0 deletions(-)
15
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
16
index fcaa7fa..28f098e 100644
17
--- a/include/net/mac80211.h
18
+++ b/include/net/mac80211.h
19
@@ -760,6 +760,19 @@ struct ieee80211_ops {
20
* requests to stop the aggregation - recipient (0) or initiator (1)
22
int (*ht_tx_agg_stop)(struct ieee80211_hw *hw, u8 *da, u16 tid, int generator);
24
+ /* move to Rx aggregation for a certain DA/TID.
25
+ * If aggregation can not be started on a certain TID return error,
26
+ * else return success */
27
+ int (*ht_rx_agg_start)(struct ieee80211_hw *hw, u8 *da, u16 tid, u16 start_seq_num);
29
+ /* stop Rx aggregation for a certain DA/TID.
30
+ * If aggregation can not be stopped on a certain TID return error,
31
+ * else return success. generator field gives the HW an indication who
32
+ * requests to stop the aggregation - recipient (0) or initiator (1)
34
+ int (*ht_rx_agg_stop)(struct ieee80211_hw *hw, u8 *da, u16 tid, int generator);
38
/* Allocate a new hardware device. This must be called once for each
39
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
40
index 48ebc76..78a50bc 100644
41
--- a/net/mac80211/sta_info.h
42
+++ b/net/mac80211/sta_info.h
43
@@ -49,11 +49,24 @@ struct tid_ht_agg_info_tx {
44
struct timer_list addba_resp_timer; /* check if peer responds to addba request */
47
+struct tid_ht_agg_info_rx {
48
+ enum ht_agg_state state;
53
+ struct sk_buff** reordering_buf;
54
+ u16 stored_mpdu_num; /* number of mpdus in reordering buffer */
55
+ struct timer_list session_timer; /* check if peer keeps Tx-ing on the TID */
59
struct sta_ht_agg_info {
60
u8 dialog_token_allocator;
61
struct tid_ht_agg_info_tx tid_agg_info_tx[STA_TID_NUM];
62
+ struct tid_ht_agg_info_rx tid_agg_info_rx[STA_TID_NUM];
63
spinlock_t agg_data_lock_tx;
64
+ spinlock_t agg_data_lock_rx;