aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rs.c3
-rw-r--r--include/net/mac80211.h6
-rw-r--r--net/mac80211/agg-tx.c7
-rw-r--r--net/mac80211/debugfs_sta.c3
-rw-r--r--net/mac80211/driver-trace.h10
5 files changed, 11 insertions, 18 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index cf4a95bae4ff..40933a5de027 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -313,8 +313,7 @@ static int rs_tl_turn_on_agg_for_tid(struct iwl_priv *priv,
313 */ 313 */
314 IWL_DEBUG_HT(priv, "Fail start Tx agg on tid: %d\n", 314 IWL_DEBUG_HT(priv, "Fail start Tx agg on tid: %d\n",
315 tid); 315 tid);
316 ieee80211_stop_tx_ba_session(sta, tid, 316 ieee80211_stop_tx_ba_session(sta, tid);
317 WLAN_BACK_INITIATOR);
318 } 317 }
319 } else 318 } else
320 IWL_ERR(priv, "Fail finding valid aggregation tid: %d\n", tid); 319 IWL_ERR(priv, "Fail finding valid aggregation tid: %d\n", tid);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 74b9b49ddfae..2e728611c572 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2345,16 +2345,14 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2345 * ieee80211_stop_tx_ba_session - Stop a Block Ack session. 2345 * ieee80211_stop_tx_ba_session - Stop a Block Ack session.
2346 * @sta: the station whose BA session to stop 2346 * @sta: the station whose BA session to stop
2347 * @tid: the TID to stop BA. 2347 * @tid: the TID to stop BA.
2348 * @initiator: if indicates initiator DELBA frame will be sent.
2349 * 2348 *
2350 * Return: error if no sta with matching da found, success otherwise 2349 * Return: negative error if the TID is invalid, or no aggregation active
2351 * 2350 *
2352 * Although mac80211/low level driver/user space application can estimate 2351 * Although mac80211/low level driver/user space application can estimate
2353 * the need to stop aggregation on a certain RA/TID, the session level 2352 * the need to stop aggregation on a certain RA/TID, the session level
2354 * will be managed by the mac80211. 2353 * will be managed by the mac80211.
2355 */ 2354 */
2356int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid, 2355int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid);
2357 enum ieee80211_back_parties initiator);
2358 2356
2359/** 2357/**
2360 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. 2358 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate.
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index c163d0a149f4..feb15c4a1fad 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -538,14 +538,13 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
538 return ret; 538 return ret;
539} 539}
540 540
541int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, 541int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid)
542 enum ieee80211_back_parties initiator)
543{ 542{
544 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); 543 struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
545 struct ieee80211_sub_if_data *sdata = sta->sdata; 544 struct ieee80211_sub_if_data *sdata = sta->sdata;
546 struct ieee80211_local *local = sdata->local; 545 struct ieee80211_local *local = sdata->local;
547 546
548 trace_api_stop_tx_ba_session(pubsta, tid, initiator); 547 trace_api_stop_tx_ba_session(pubsta, tid);
549 548
550 if (!local->ops->ampdu_action) 549 if (!local->ops->ampdu_action)
551 return -EINVAL; 550 return -EINVAL;
@@ -553,7 +552,7 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
553 if (tid >= STA_TID_NUM) 552 if (tid >= STA_TID_NUM)
554 return -EINVAL; 553 return -EINVAL;
555 554
556 return __ieee80211_stop_tx_ba_session(sta, tid, initiator); 555 return __ieee80211_stop_tx_ba_session(sta, tid, WLAN_BACK_INITIATOR);
557} 556}
558EXPORT_SYMBOL(ieee80211_stop_tx_ba_session); 557EXPORT_SYMBOL(ieee80211_stop_tx_ba_session);
559 558
diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c
index e763f1529ddb..9f140612224a 100644
--- a/net/mac80211/debugfs_sta.c
+++ b/net/mac80211/debugfs_sta.c
@@ -210,8 +210,7 @@ static ssize_t sta_agg_status_write(struct file *file, const char __user *userbu
210 if (start) 210 if (start)
211 ret = ieee80211_start_tx_ba_session(&sta->sta, tid); 211 ret = ieee80211_start_tx_ba_session(&sta->sta, tid);
212 else 212 else
213 ret = ieee80211_stop_tx_ba_session(&sta->sta, tid, 213 ret = ieee80211_stop_tx_ba_session(&sta->sta, tid);
214 WLAN_BACK_RECIPIENT);
215 } else { 214 } else {
216 __ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, 3); 215 __ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, 3);
217 ret = 0; 216 ret = 0;
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h
index 577460da2ea1..6b90630151ab 100644
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -876,25 +876,23 @@ TRACE_EVENT(api_start_tx_ba_cb,
876); 876);
877 877
878TRACE_EVENT(api_stop_tx_ba_session, 878TRACE_EVENT(api_stop_tx_ba_session,
879 TP_PROTO(struct ieee80211_sta *sta, u16 tid, u16 initiator), 879 TP_PROTO(struct ieee80211_sta *sta, u16 tid),
880 880
881 TP_ARGS(sta, tid, initiator), 881 TP_ARGS(sta, tid),
882 882
883 TP_STRUCT__entry( 883 TP_STRUCT__entry(
884 STA_ENTRY 884 STA_ENTRY
885 __field(u16, tid) 885 __field(u16, tid)
886 __field(u16, initiator)
887 ), 886 ),
888 887
889 TP_fast_assign( 888 TP_fast_assign(
890 STA_ASSIGN; 889 STA_ASSIGN;
891 __entry->tid = tid; 890 __entry->tid = tid;
892 __entry->initiator = initiator;
893 ), 891 ),
894 892
895 TP_printk( 893 TP_printk(
896 STA_PR_FMT " tid:%d initiator:%d", 894 STA_PR_FMT " tid:%d",
897 STA_PR_ARG, __entry->tid, __entry->initiator 895 STA_PR_ARG, __entry->tid
898 ) 896 )
899); 897);
900 898