struct sta_ampdu_mlme — STA aggregation information.
struct sta_ampdu_mlme { struct mutex mtx; struct tid_ampdu_rx __rcu * tid_rx[IEEE80211_NUM_TIDS]; u8 tid_rx_token[IEEE80211_NUM_TIDS]; unsigned long tid_rx_timer_expired[BITS_TO_LONGS(IEEE80211_NUM_TIDS)]; unsigned long tid_rx_stop_requested[BITS_TO_LONGS(IEEE80211_NUM_TIDS)]; unsigned long tid_rx_manage_offl[BITS_TO_LONGS(2 *IEEE80211_NUM_TIDS)]; unsigned long agg_session_valid[BITS_TO_LONGS(IEEE80211_NUM_TIDS)]; unsigned long unexpected_agg[BITS_TO_LONGS(IEEE80211_NUM_TIDS)]; struct work_struct work; struct tid_ampdu_tx __rcu * tid_tx[IEEE80211_NUM_TIDS]; struct tid_ampdu_tx * tid_start_tx[IEEE80211_NUM_TIDS]; unsigned long last_addba_req_time[IEEE80211_NUM_TIDS]; u8 addba_req_num[IEEE80211_NUM_TIDS]; u8 dialog_token_allocator; };
mutex to protect all TX data (except non-NULL assignments to tid_tx[idx], which are protected by the sta spinlock) tid_start_tx is also protected by sta->lock.
aggregation info for Rx per TID -- RCU protected
dialog tokens for valid aggregation sessions
bitmap indicating on which TIDs the RX timer expired until the work for it runs
bitmap indicating which BA sessions per TID the driver requested to close until the work for it runs
bitmap indicating which BA sessions were requested to be treated as started/stopped due to offloading
bitmap indicating which TID has a rx BA session open on
bitmap indicating which TID already sent a delBA due to unexpected aggregation related frames outside a session
work struct for starting/stopping aggregation
aggregation info for Tx per TID
sessions where start was requested
timestamp of the last addBA request.
number of times addBA request has been sent.
dialog token enumerator for each new session;