diff options
Diffstat (limited to 'net/mac80211/sta_info.h')
-rw-r--r-- | net/mac80211/sta_info.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 786bbd3103b1..16864a6045b4 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -102,8 +102,18 @@ struct tid_ampdu_tx { | |||
102 | * @buf_size: buffer size for incoming A-MPDUs | 102 | * @buf_size: buffer size for incoming A-MPDUs |
103 | * @timeout: reset timer value (in TUs). | 103 | * @timeout: reset timer value (in TUs). |
104 | * @dialog_token: dialog token for aggregation session | 104 | * @dialog_token: dialog token for aggregation session |
105 | * @rcu_head: RCU head used for freeing this struct | ||
106 | * | ||
107 | * This structure is protected by RCU and the per-station | ||
108 | * spinlock. Assignments to the array holding it must hold | ||
109 | * the spinlock, only the RX path can access it under RCU | ||
110 | * lock-free. The RX path, since it is single-threaded, | ||
111 | * can even modify the structure without locking since the | ||
112 | * only other modifications to it are done when the struct | ||
113 | * can not yet or no longer be found by the RX path. | ||
105 | */ | 114 | */ |
106 | struct tid_ampdu_rx { | 115 | struct tid_ampdu_rx { |
116 | struct rcu_head rcu_head; | ||
107 | struct sk_buff **reorder_buf; | 117 | struct sk_buff **reorder_buf; |
108 | unsigned long *reorder_time; | 118 | unsigned long *reorder_time; |
109 | struct timer_list session_timer; | 119 | struct timer_list session_timer; |
@@ -118,8 +128,7 @@ struct tid_ampdu_rx { | |||
118 | /** | 128 | /** |
119 | * struct sta_ampdu_mlme - STA aggregation information. | 129 | * struct sta_ampdu_mlme - STA aggregation information. |
120 | * | 130 | * |
121 | * @tid_active_rx: TID's state in Rx session state machine. | 131 | * @tid_rx: aggregation info for Rx per TID -- RCU protected |
122 | * @tid_rx: aggregation info for Rx per TID | ||
123 | * @tid_state_tx: TID's state in Tx session state machine. | 132 | * @tid_state_tx: TID's state in Tx session state machine. |
124 | * @tid_tx: aggregation info for Tx per TID | 133 | * @tid_tx: aggregation info for Tx per TID |
125 | * @addba_req_num: number of times addBA request has been sent. | 134 | * @addba_req_num: number of times addBA request has been sent. |
@@ -127,7 +136,6 @@ struct tid_ampdu_rx { | |||
127 | */ | 136 | */ |
128 | struct sta_ampdu_mlme { | 137 | struct sta_ampdu_mlme { |
129 | /* rx */ | 138 | /* rx */ |
130 | bool tid_active_rx[STA_TID_NUM]; | ||
131 | struct tid_ampdu_rx *tid_rx[STA_TID_NUM]; | 139 | struct tid_ampdu_rx *tid_rx[STA_TID_NUM]; |
132 | /* tx */ | 140 | /* tx */ |
133 | u8 tid_state_tx[STA_TID_NUM]; | 141 | u8 tid_state_tx[STA_TID_NUM]; |