mac80211: clean up ieee80211_stop_tx_ba_session
There's no sense in letting anything but internal mac80211 functions set the initiator to anything but WLAN_BACK_INITIATOR, since WLAN_BACK_RECIPIENT is only valid when we have received a frame from the peer, which we react to directly in mac80211. The debugfs code I recently added got this wrong as well. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
2b2c009ecf
commit
6a8579d0e6
|
@ -313,8 +313,7 @@ static int rs_tl_turn_on_agg_for_tid(struct iwl_priv *priv,
|
|||
*/
|
||||
IWL_DEBUG_HT(priv, "Fail start Tx agg on tid: %d\n",
|
||||
tid);
|
||||
ieee80211_stop_tx_ba_session(sta, tid,
|
||||
WLAN_BACK_INITIATOR);
|
||||
ieee80211_stop_tx_ba_session(sta, tid);
|
||||
}
|
||||
} else
|
||||
IWL_ERR(priv, "Fail finding valid aggregation tid: %d\n", tid);
|
||||
|
|
|
@ -2345,16 +2345,14 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
|
|||
* ieee80211_stop_tx_ba_session - Stop a Block Ack session.
|
||||
* @sta: the station whose BA session to stop
|
||||
* @tid: the TID to stop BA.
|
||||
* @initiator: if indicates initiator DELBA frame will be sent.
|
||||
*
|
||||
* Return: error if no sta with matching da found, success otherwise
|
||||
* Return: negative error if the TID is invalid, or no aggregation active
|
||||
*
|
||||
* Although mac80211/low level driver/user space application can estimate
|
||||
* the need to stop aggregation on a certain RA/TID, the session level
|
||||
* will be managed by the mac80211.
|
||||
*/
|
||||
int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid,
|
||||
enum ieee80211_back_parties initiator);
|
||||
int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid);
|
||||
|
||||
/**
|
||||
* ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate.
|
||||
|
|
|
@ -538,14 +538,13 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
|
||||
enum ieee80211_back_parties initiator)
|
||||
int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid)
|
||||
{
|
||||
struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
|
||||
struct ieee80211_sub_if_data *sdata = sta->sdata;
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
|
||||
trace_api_stop_tx_ba_session(pubsta, tid, initiator);
|
||||
trace_api_stop_tx_ba_session(pubsta, tid);
|
||||
|
||||
if (!local->ops->ampdu_action)
|
||||
return -EINVAL;
|
||||
|
@ -553,7 +552,7 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
|
|||
if (tid >= STA_TID_NUM)
|
||||
return -EINVAL;
|
||||
|
||||
return __ieee80211_stop_tx_ba_session(sta, tid, initiator);
|
||||
return __ieee80211_stop_tx_ba_session(sta, tid, WLAN_BACK_INITIATOR);
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_stop_tx_ba_session);
|
||||
|
||||
|
|
|
@ -210,8 +210,7 @@ static ssize_t sta_agg_status_write(struct file *file, const char __user *userbu
|
|||
if (start)
|
||||
ret = ieee80211_start_tx_ba_session(&sta->sta, tid);
|
||||
else
|
||||
ret = ieee80211_stop_tx_ba_session(&sta->sta, tid,
|
||||
WLAN_BACK_RECIPIENT);
|
||||
ret = ieee80211_stop_tx_ba_session(&sta->sta, tid);
|
||||
} else {
|
||||
__ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, 3);
|
||||
ret = 0;
|
||||
|
|
|
@ -876,25 +876,23 @@ TRACE_EVENT(api_start_tx_ba_cb,
|
|||
);
|
||||
|
||||
TRACE_EVENT(api_stop_tx_ba_session,
|
||||
TP_PROTO(struct ieee80211_sta *sta, u16 tid, u16 initiator),
|
||||
TP_PROTO(struct ieee80211_sta *sta, u16 tid),
|
||||
|
||||
TP_ARGS(sta, tid, initiator),
|
||||
TP_ARGS(sta, tid),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
STA_ENTRY
|
||||
__field(u16, tid)
|
||||
__field(u16, initiator)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
STA_ASSIGN;
|
||||
__entry->tid = tid;
|
||||
__entry->initiator = initiator;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
STA_PR_FMT " tid:%d initiator:%d",
|
||||
STA_PR_ARG, __entry->tid, __entry->initiator
|
||||
STA_PR_FMT " tid:%d",
|
||||
STA_PR_ARG, __entry->tid
|
||||
)
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in New Issue