aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/sta_info.h
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-09-02 08:05:10 -0400
committerJohannes Berg <johannes.berg@intel.com>2014-09-03 07:40:38 -0400
commit4549cf2b1803d29cfd019f7bfeaa784f8f9c558f (patch)
treebf39255e299b752cea30ce8437b9a685b189e5d4 /net/mac80211/sta_info.h
parentd0616613d9cf17919fbd46fa0274db4b0084ad62 (diff)
mac80211: fix offloaded BA session traffic after hw restart
When starting an offloaded BA session it is unknown what starting sequence number should be used. Using last_seq worked in most cases except after hw restart. When hw restart is requested last_seq is (rightfully so) kept unmodified. This ended up with BA sessions being restarted with an aribtrary BA window values resulting in dropped frames until sequence numbers caught up. Instead of last_seq pick seqno of a first Rxed frame of a given BA session. This fixes stalled traffic after hw restart with offloaded BA sessions (currently only ath10k). Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/sta_info.h')
-rw-r--r--net/mac80211/sta_info.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 89c40d5c0633..16dc1d414f69 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -167,6 +167,8 @@ struct tid_ampdu_tx {
167 * @dialog_token: dialog token for aggregation session 167 * @dialog_token: dialog token for aggregation session
168 * @rcu_head: RCU head used for freeing this struct 168 * @rcu_head: RCU head used for freeing this struct
169 * @reorder_lock: serializes access to reorder buffer, see below. 169 * @reorder_lock: serializes access to reorder buffer, see below.
170 * @auto_seq: used for offloaded BA sessions to automatically pick head_seq_and
171 * and ssn.
170 * 172 *
171 * This structure's lifetime is managed by RCU, assignments to 173 * This structure's lifetime is managed by RCU, assignments to
172 * the array holding it must hold the aggregation mutex. 174 * the array holding it must hold the aggregation mutex.
@@ -190,6 +192,7 @@ struct tid_ampdu_rx {
190 u16 buf_size; 192 u16 buf_size;
191 u16 timeout; 193 u16 timeout;
192 u8 dialog_token; 194 u8 dialog_token;
195 bool auto_seq;
193}; 196};
194 197
195/** 198/**