aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/agg-rx.c')
-rw-r--r--net/mac80211/agg-rx.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index bd06799e2e69..3bbbcaf1ec0b 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -7,6 +7,7 @@
7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
9 * Copyright 2007-2010, Intel Corporation 9 * Copyright 2007-2010, Intel Corporation
10 * Copyright(c) 2015 Intel Deutschland GmbH
10 * 11 *
11 * This program is free software; you can redistribute it and/or modify 12 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as 13 * it under the terms of the GNU General Public License version 2 as
@@ -61,6 +62,14 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
61{ 62{
62 struct ieee80211_local *local = sta->local; 63 struct ieee80211_local *local = sta->local;
63 struct tid_ampdu_rx *tid_rx; 64 struct tid_ampdu_rx *tid_rx;
65 struct ieee80211_ampdu_params params = {
66 .sta = &sta->sta,
67 .action = IEEE80211_AMPDU_RX_STOP,
68 .tid = tid,
69 .amsdu = false,
70 .timeout = 0,
71 .ssn = 0,
72 };
64 73
65 lockdep_assert_held(&sta->ampdu_mlme.mtx); 74 lockdep_assert_held(&sta->ampdu_mlme.mtx);
66 75
@@ -78,8 +87,7 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
78 initiator == WLAN_BACK_RECIPIENT ? "recipient" : "inititator", 87 initiator == WLAN_BACK_RECIPIENT ? "recipient" : "inititator",
79 (int)reason); 88 (int)reason);
80 89
81 if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP, 90 if (drv_ampdu_action(local, sta->sdata, &params))
82 &sta->sta, tid, NULL, 0, false))
83 sdata_info(sta->sdata, 91 sdata_info(sta->sdata,
84 "HW problem - can not stop rx aggregation for %pM tid %d\n", 92 "HW problem - can not stop rx aggregation for %pM tid %d\n",
85 sta->sta.addr, tid); 93 sta->sta.addr, tid);
@@ -259,6 +267,15 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
259{ 267{
260 struct ieee80211_local *local = sta->sdata->local; 268 struct ieee80211_local *local = sta->sdata->local;
261 struct tid_ampdu_rx *tid_agg_rx; 269 struct tid_ampdu_rx *tid_agg_rx;
270 struct ieee80211_ampdu_params params = {
271 .sta = &sta->sta,
272 .action = IEEE80211_AMPDU_RX_START,
273 .tid = tid,
274 .amsdu = false,
275 .timeout = timeout,
276 .ssn = start_seq_num,
277 };
278
262 int i, ret = -EOPNOTSUPP; 279 int i, ret = -EOPNOTSUPP;
263 u16 status = WLAN_STATUS_REQUEST_DECLINED; 280 u16 status = WLAN_STATUS_REQUEST_DECLINED;
264 281
@@ -301,7 +318,10 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
301 if (buf_size > sta->sta.max_rx_aggregation_subframes) 318 if (buf_size > sta->sta.max_rx_aggregation_subframes)
302 buf_size = sta->sta.max_rx_aggregation_subframes; 319 buf_size = sta->sta.max_rx_aggregation_subframes;
303 320
304 ht_dbg(sta->sdata, "AddBA Req buf_size=%d\n", buf_size); 321 params.buf_size = buf_size;
322
323 ht_dbg(sta->sdata, "AddBA Req buf_size=%d for %pM\n",
324 buf_size, sta->sta.addr);
305 325
306 if (sta->ampdu_mlme.tid_rx[tid]) { 326 if (sta->ampdu_mlme.tid_rx[tid]) {
307 ht_dbg_ratelimited(sta->sdata, 327 ht_dbg_ratelimited(sta->sdata,
@@ -346,8 +366,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
346 for (i = 0; i < buf_size; i++) 366 for (i = 0; i < buf_size; i++)
347 __skb_queue_head_init(&tid_agg_rx->reorder_buf[i]); 367 __skb_queue_head_init(&tid_agg_rx->reorder_buf[i]);
348 368
349 ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START, 369 ret = drv_ampdu_action(local, sta->sdata, &params);
350 &sta->sta, tid, &start_seq_num, 0, false);
351 ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n", 370 ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n",
352 sta->sta.addr, tid, ret); 371 sta->sta.addr, tid, ret);
353 if (ret) { 372 if (ret) {