|
@@ -126,6 +126,8 @@ enum ieee80211_agg_stop_reason {
|
|
AGG_STOP_DESTROY_STA,
|
|
AGG_STOP_DESTROY_STA,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+struct sta_info;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct tid_ampdu_tx - TID aggregation information (Tx).
|
|
* struct tid_ampdu_tx - TID aggregation information (Tx).
|
|
*
|
|
*
|
|
@@ -133,8 +135,10 @@ enum ieee80211_agg_stop_reason {
|
|
* @session_timer: check if we keep Tx-ing on the TID (by timeout value)
|
|
* @session_timer: check if we keep Tx-ing on the TID (by timeout value)
|
|
* @addba_resp_timer: timer for peer's response to addba request
|
|
* @addba_resp_timer: timer for peer's response to addba request
|
|
* @pending: pending frames queue -- use sta's spinlock to protect
|
|
* @pending: pending frames queue -- use sta's spinlock to protect
|
|
|
|
+ * @sta: station we are attached to
|
|
* @dialog_token: dialog token for aggregation session
|
|
* @dialog_token: dialog token for aggregation session
|
|
* @timeout: session timeout value to be filled in ADDBA requests
|
|
* @timeout: session timeout value to be filled in ADDBA requests
|
|
|
|
+ * @tid: TID number
|
|
* @state: session state (see above)
|
|
* @state: session state (see above)
|
|
* @last_tx: jiffies of last tx activity
|
|
* @last_tx: jiffies of last tx activity
|
|
* @stop_initiator: initiator of a session stop
|
|
* @stop_initiator: initiator of a session stop
|
|
@@ -158,6 +162,7 @@ struct tid_ampdu_tx {
|
|
struct timer_list session_timer;
|
|
struct timer_list session_timer;
|
|
struct timer_list addba_resp_timer;
|
|
struct timer_list addba_resp_timer;
|
|
struct sk_buff_head pending;
|
|
struct sk_buff_head pending;
|
|
|
|
+ struct sta_info *sta;
|
|
unsigned long state;
|
|
unsigned long state;
|
|
unsigned long last_tx;
|
|
unsigned long last_tx;
|
|
u16 timeout;
|
|
u16 timeout;
|
|
@@ -169,6 +174,7 @@ struct tid_ampdu_tx {
|
|
u16 failed_bar_ssn;
|
|
u16 failed_bar_ssn;
|
|
bool bar_pending;
|
|
bool bar_pending;
|
|
bool amsdu;
|
|
bool amsdu;
|
|
|
|
+ u8 tid;
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -181,12 +187,14 @@ struct tid_ampdu_tx {
|
|
* @reorder_time: jiffies when skb was added
|
|
* @reorder_time: jiffies when skb was added
|
|
* @session_timer: check if peer keeps Tx-ing on the TID (by timeout value)
|
|
* @session_timer: check if peer keeps Tx-ing on the TID (by timeout value)
|
|
* @reorder_timer: releases expired frames from the reorder buffer.
|
|
* @reorder_timer: releases expired frames from the reorder buffer.
|
|
|
|
+ * @sta: station we are attached to
|
|
* @last_rx: jiffies of last rx activity
|
|
* @last_rx: jiffies of last rx activity
|
|
* @head_seq_num: head sequence number in reordering buffer.
|
|
* @head_seq_num: head sequence number in reordering buffer.
|
|
* @stored_mpdu_num: number of MPDUs in reordering buffer
|
|
* @stored_mpdu_num: number of MPDUs in reordering buffer
|
|
* @ssn: Starting Sequence Number expected to be aggregated.
|
|
* @ssn: Starting Sequence Number expected to be aggregated.
|
|
* @buf_size: buffer size for incoming A-MPDUs
|
|
* @buf_size: buffer size for incoming A-MPDUs
|
|
* @timeout: reset timer value (in TUs).
|
|
* @timeout: reset timer value (in TUs).
|
|
|
|
+ * @tid: TID number
|
|
* @rcu_head: RCU head used for freeing this struct
|
|
* @rcu_head: RCU head used for freeing this struct
|
|
* @reorder_lock: serializes access to reorder buffer, see below.
|
|
* @reorder_lock: serializes access to reorder buffer, see below.
|
|
* @auto_seq: used for offloaded BA sessions to automatically pick head_seq_and
|
|
* @auto_seq: used for offloaded BA sessions to automatically pick head_seq_and
|
|
@@ -208,6 +216,7 @@ struct tid_ampdu_rx {
|
|
u64 reorder_buf_filtered;
|
|
u64 reorder_buf_filtered;
|
|
struct sk_buff_head *reorder_buf;
|
|
struct sk_buff_head *reorder_buf;
|
|
unsigned long *reorder_time;
|
|
unsigned long *reorder_time;
|
|
|
|
+ struct sta_info *sta;
|
|
struct timer_list session_timer;
|
|
struct timer_list session_timer;
|
|
struct timer_list reorder_timer;
|
|
struct timer_list reorder_timer;
|
|
unsigned long last_rx;
|
|
unsigned long last_rx;
|
|
@@ -216,6 +225,7 @@ struct tid_ampdu_rx {
|
|
u16 ssn;
|
|
u16 ssn;
|
|
u16 buf_size;
|
|
u16 buf_size;
|
|
u16 timeout;
|
|
u16 timeout;
|
|
|
|
+ u8 tid;
|
|
u8 auto_seq:1,
|
|
u8 auto_seq:1,
|
|
removed:1,
|
|
removed:1,
|
|
started:1;
|
|
started:1;
|
|
@@ -447,7 +457,6 @@ struct ieee80211_sta_rx_stats {
|
|
* plus one for non-QoS frames)
|
|
* plus one for non-QoS frames)
|
|
* @tid_seq: per-TID sequence numbers for sending to this STA
|
|
* @tid_seq: per-TID sequence numbers for sending to this STA
|
|
* @ampdu_mlme: A-MPDU state machine state
|
|
* @ampdu_mlme: A-MPDU state machine state
|
|
- * @timer_to_tid: identity mapping to ID timers
|
|
|
|
* @mesh: mesh STA information
|
|
* @mesh: mesh STA information
|
|
* @debugfs_dir: debug filesystem directory dentry
|
|
* @debugfs_dir: debug filesystem directory dentry
|
|
* @dead: set to true when sta is unlinked
|
|
* @dead: set to true when sta is unlinked
|
|
@@ -554,7 +563,6 @@ struct sta_info {
|
|
* Aggregation information, locked with lock.
|
|
* Aggregation information, locked with lock.
|
|
*/
|
|
*/
|
|
struct sta_ampdu_mlme ampdu_mlme;
|
|
struct sta_ampdu_mlme ampdu_mlme;
|
|
- u8 timer_to_tid[IEEE80211_NUM_TIDS];
|
|
|
|
|
|
|
|
#ifdef CONFIG_MAC80211_DEBUGFS
|
|
#ifdef CONFIG_MAC80211_DEBUGFS
|
|
struct dentry *debugfs_dir;
|
|
struct dentry *debugfs_dir;
|