Skip to content

Commit

Permalink
mac80211: clean up ieee80211_stop_tx_ba_session
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Jun 3, 2010
1 parent 2b2c009 commit 6a8579d
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 18 deletions.
3 changes: 1 addition & 2 deletions drivers/net/wireless/iwlwifi/iwl-agn-rs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 2 additions & 4 deletions include/net/mac80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
7 changes: 3 additions & 4 deletions net/mac80211/agg-tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -538,22 +538,21 @@ 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;

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);

Expand Down
3 changes: 1 addition & 2 deletions net/mac80211/debugfs_sta.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 4 additions & 6 deletions net/mac80211/driver-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
);

Expand Down

0 comments on commit 6a8579d

Please sign in to comment.