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>
This commit is contained in:
parent
0df3ef45a3
commit
80656c2031
@ -33,13 +33,36 @@
|
|||||||
|
|
||||||
#define STA_TID_NUM 16
|
#define STA_TID_NUM 16
|
||||||
#define ADDBA_RESP_INTERVAL HZ
|
#define ADDBA_RESP_INTERVAL HZ
|
||||||
|
#define HT_AGG_MAX_RETRIES (0x3)
|
||||||
|
|
||||||
#define HT_AGG_STATE_INITIATOR_SHIFT (4)
|
#define HT_AGG_STATE_INITIATOR_SHIFT (4)
|
||||||
|
|
||||||
|
#define HT_ADDBA_REQUESTED_MSK BIT(0)
|
||||||
|
#define HT_ADDBA_DRV_READY_MSK BIT(1)
|
||||||
|
#define HT_ADDBA_RECEIVED_MSK BIT(2)
|
||||||
#define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3)
|
#define HT_AGG_STATE_REQ_STOP_BA_MSK BIT(3)
|
||||||
|
#define HT_AGG_STATE_INITIATOR_MSK BIT(HT_AGG_STATE_INITIATOR_SHIFT)
|
||||||
#define HT_AGG_STATE_IDLE (0x0)
|
#define HT_AGG_STATE_IDLE (0x0)
|
||||||
#define HT_AGG_STATE_OPERATIONAL (0x7)
|
#define HT_AGG_STATE_OPERATIONAL (HT_ADDBA_REQUESTED_MSK | \
|
||||||
|
HT_ADDBA_DRV_READY_MSK | \
|
||||||
|
HT_ADDBA_RECEIVED_MSK)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct tid_ampdu_tx - TID aggregation information (Tx).
|
||||||
|
*
|
||||||
|
* @state: TID's state in session state machine.
|
||||||
|
* @dialog_token: dialog token for aggregation session
|
||||||
|
* @ssn: Starting Sequence Number expected to be aggregated.
|
||||||
|
* @addba_resp_timer: timer for peer's response to addba request
|
||||||
|
* @addba_req_num: number of times addBA request has been sent.
|
||||||
|
*/
|
||||||
|
struct tid_ampdu_tx {
|
||||||
|
u8 state;
|
||||||
|
u8 dialog_token;
|
||||||
|
u16 ssn;
|
||||||
|
struct timer_list addba_resp_timer;
|
||||||
|
u8 addba_req_num;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct tid_ampdu_rx - TID aggregation information (Rx).
|
* struct tid_ampdu_rx - TID aggregation information (Rx).
|
||||||
@ -69,12 +92,18 @@ struct tid_ampdu_rx {
|
|||||||
/**
|
/**
|
||||||
* struct sta_ampdu_mlme - STA aggregation information.
|
* struct sta_ampdu_mlme - STA aggregation information.
|
||||||
*
|
*
|
||||||
* @tid_agg_info_rx: aggregation info for Rx per TID
|
* @tid_rx: aggregation info for Rx per TID
|
||||||
|
* @tid_tx: aggregation info for Tx per TID
|
||||||
* @ampdu_rx: for locking sections in aggregation Rx flow
|
* @ampdu_rx: for locking sections in aggregation Rx flow
|
||||||
|
* @ampdu_tx: for locking sectionsi in aggregation Tx flow
|
||||||
|
* @dialog_token_allocator: dialog token enumerator for each new session;
|
||||||
*/
|
*/
|
||||||
struct sta_ampdu_mlme {
|
struct sta_ampdu_mlme {
|
||||||
struct tid_ampdu_rx tid_rx[STA_TID_NUM];
|
struct tid_ampdu_rx tid_rx[STA_TID_NUM];
|
||||||
|
struct tid_ampdu_tx tid_tx[STA_TID_NUM];
|
||||||
spinlock_t ampdu_rx;
|
spinlock_t ampdu_rx;
|
||||||
|
spinlock_t ampdu_tx;
|
||||||
|
u8 dialog_token_allocator;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sta_info {
|
struct sta_info {
|
||||||
@ -148,6 +177,7 @@ struct sta_info {
|
|||||||
of this STA */
|
of this STA */
|
||||||
struct sta_ampdu_mlme ampdu_mlme;
|
struct sta_ampdu_mlme ampdu_mlme;
|
||||||
u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */
|
u8 timer_to_tid[STA_TID_NUM]; /* convert timer id to tid */
|
||||||
|
u8 tid_to_tx_q[STA_TID_NUM]; /* map tid to tx queue */
|
||||||
|
|
||||||
#ifdef CONFIG_MAC80211_DEBUGFS
|
#ifdef CONFIG_MAC80211_DEBUGFS
|
||||||
struct sta_info_debugfsdentries {
|
struct sta_info_debugfsdentries {
|
||||||
|
Loading…
Reference in New Issue
Block a user