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>
This commit is contained in:
parent
1b7d03acbf
commit
5aae288061
|
@ -31,6 +31,51 @@
|
||||||
#define WLAN_STA_WME BIT(9)
|
#define WLAN_STA_WME BIT(9)
|
||||||
#define WLAN_STA_WDS BIT(27)
|
#define WLAN_STA_WDS BIT(27)
|
||||||
|
|
||||||
|
#define STA_TID_NUM 16
|
||||||
|
#define ADDBA_RESP_INTERVAL HZ
|
||||||
|
|
||||||
|
#define HT_AGG_STATE_INITIATOR_SHIFT (4)
|
||||||
|
|
||||||
|
#define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3)
|
||||||
|
|
||||||
|
#define HT_AGG_STATE_IDLE (0x0)
|
||||||
|
#define HT_AGG_STATE_OPERATIONAL (0x7)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct tid_ampdu_rx - TID aggregation information (Rx).
|
||||||
|
*
|
||||||
|
* @state: TID's state in session state machine.
|
||||||
|
* @dialog_token: dialog token for aggregation session
|
||||||
|
* @ssn: Starting Sequence Number expected to be aggregated.
|
||||||
|
* @buf_size: buffer size for incoming A-MPDUs
|
||||||
|
* @timeout: reset timer value.
|
||||||
|
* @head_seq_num: head sequence number in reordering buffer.
|
||||||
|
* @stored_mpdu_num: number of MPDUs in reordering buffer
|
||||||
|
* @reorder_buf: buffer to reorder incoming aggregated MPDUs
|
||||||
|
* @session_timer: check if peer keeps Tx-ing on the TID (by timeout value)
|
||||||
|
*/
|
||||||
|
struct tid_ampdu_rx {
|
||||||
|
u8 state;
|
||||||
|
u8 dialog_token;
|
||||||
|
u16 ssn;
|
||||||
|
u16 buf_size;
|
||||||
|
u16 timeout;
|
||||||
|
u16 head_seq_num;
|
||||||
|
u16 stored_mpdu_num;
|
||||||
|
struct sk_buff **reorder_buf;
|
||||||
|
struct timer_list session_timer;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct sta_ampdu_mlme - STA aggregation information.
|
||||||
|
*
|
||||||
|
* @tid_agg_info_rx: aggregation info for Rx per TID
|
||||||
|
* @ampdu_rx: for locking sections in aggregation Rx flow
|
||||||
|
*/
|
||||||
|
struct sta_ampdu_mlme {
|
||||||
|
struct tid_ampdu_rx tid_rx[STA_TID_NUM];
|
||||||
|
spinlock_t ampdu_rx;
|
||||||
|
};
|
||||||
|
|
||||||
struct sta_info {
|
struct sta_info {
|
||||||
struct kref kref;
|
struct kref kref;
|
||||||
|
@ -101,6 +146,8 @@ struct sta_info {
|
||||||
|
|
||||||
struct ieee80211_ht_info ht_info; /* 802.11n HT capabilities
|
struct ieee80211_ht_info ht_info; /* 802.11n HT capabilities
|
||||||
of this STA */
|
of this STA */
|
||||||
|
struct sta_ampdu_mlme ampdu_mlme;
|
||||||
|
u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */
|
||||||
|
|
||||||
#ifdef CONFIG_MAC80211_DEBUGFS
|
#ifdef CONFIG_MAC80211_DEBUGFS
|
||||||
struct sta_info_debugfsdentries {
|
struct sta_info_debugfsdentries {
|
||||||
|
|
Loading…
Reference in a new issue