diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2007-12-25 10:00:32 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:00:58 -0500 |
commit | 5aae2880618471cfa679ca22531b88990bee9bf8 (patch) | |
tree | 2adb74dd47cef2cab50108c6e38cfdb7714a2e3c | |
parent | 1b7d03acbfe9d6f1ecf169e6494c5eca29fa0ed3 (diff) |
mac80211: A-MPDU Rx add MLME structures
This patch adds the needed structures to describe the Rx aggregation MLME per STA
new:
- struct tid_ampdu_rx: TID aggregation information (Rx)
- struct sta_ampdu_mlme: MLME aggregation information for STA
changed:
- struct sta_info: ampdu_mlme added to describe A-MPDU MLME per STA,
and timer_to_tid added to map timer id into TID
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/mac80211/sta_info.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index e1a4ac1d48d7..96fe3ed95038 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -31,6 +31,51 @@ | |||
31 | #define WLAN_STA_WME BIT(9) | 31 | #define WLAN_STA_WME BIT(9) |
32 | #define WLAN_STA_WDS BIT(27) | 32 | #define WLAN_STA_WDS BIT(27) |
33 | 33 | ||
34 | #define STA_TID_NUM 16 | ||
35 | #define ADDBA_RESP_INTERVAL HZ | ||
36 | |||
37 | #define HT_AGG_STATE_INITIATOR_SHIFT (4) | ||
38 | |||
39 | #define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3) | ||
40 | |||
41 | #define HT_AGG_STATE_IDLE (0x0) | ||
42 | #define HT_AGG_STATE_OPERATIONAL (0x7) | ||
43 | |||
44 | /** | ||
45 | * struct tid_ampdu_rx - TID aggregation information (Rx). | ||
46 | * | ||
47 | * @state: TID's state in session state machine. | ||
48 | * @dialog_token: dialog token for aggregation session | ||
49 | * @ssn: Starting Sequence Number expected to be aggregated. | ||
50 | * @buf_size: buffer size for incoming A-MPDUs | ||
51 | * @timeout: reset timer value. | ||
52 | * @head_seq_num: head sequence number in reordering buffer. | ||
53 | * @stored_mpdu_num: number of MPDUs in reordering buffer | ||
54 | * @reorder_buf: buffer to reorder incoming aggregated MPDUs | ||
55 | * @session_timer: check if peer keeps Tx-ing on the TID (by timeout value) | ||
56 | */ | ||
57 | struct tid_ampdu_rx { | ||
58 | u8 state; | ||
59 | u8 dialog_token; | ||
60 | u16 ssn; | ||
61 | u16 buf_size; | ||
62 | u16 timeout; | ||
63 | u16 head_seq_num; | ||
64 | u16 stored_mpdu_num; | ||
65 | struct sk_buff **reorder_buf; | ||
66 | struct timer_list session_timer; | ||
67 | }; | ||
68 | |||
69 | /** | ||
70 | * struct sta_ampdu_mlme - STA aggregation information. | ||
71 | * | ||
72 | * @tid_agg_info_rx: aggregation info for Rx per TID | ||
73 | * @ampdu_rx: for locking sections in aggregation Rx flow | ||
74 | */ | ||
75 | struct sta_ampdu_mlme { | ||
76 | struct tid_ampdu_rx tid_rx[STA_TID_NUM]; | ||
77 | spinlock_t ampdu_rx; | ||
78 | }; | ||
34 | 79 | ||
35 | struct sta_info { | 80 | struct sta_info { |
36 | struct kref kref; | 81 | struct kref kref; |
@@ -101,6 +146,8 @@ struct sta_info { | |||
101 | 146 | ||
102 | struct ieee80211_ht_info ht_info; /* 802.11n HT capabilities | 147 | struct ieee80211_ht_info ht_info; /* 802.11n HT capabilities |
103 | of this STA */ | 148 | of this STA */ |
149 | struct sta_ampdu_mlme ampdu_mlme; | ||
150 | u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */ | ||
104 | 151 | ||
105 | #ifdef CONFIG_MAC80211_DEBUGFS | 152 | #ifdef CONFIG_MAC80211_DEBUGFS |
106 | struct sta_info_debugfsdentries { | 153 | struct sta_info_debugfsdentries { |