change ieee80211_ampdu_stop to take an explicit reason code

This commit is contained in:
Sam Leffler 2008-09-21 23:20:04 +00:00
parent af4ec66eb5
commit 3c1a492e4a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183250
2 changed files with 8 additions and 6 deletions

View File

@ -1722,7 +1722,8 @@ ieee80211_ampdu_request(struct ieee80211_node *ni,
* and the peer notified with a DelBA Action frame.
*/
void
ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
int reason)
{
struct ieee80211com *ic = ni->ni_ic;
struct ieee80211vap *vap = ni->ni_vap;
@ -1731,19 +1732,20 @@ ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
/* XXX locking */
if (IEEE80211_AMPDU_RUNNING(tap)) {
IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
ni, "%s: stop BA stream for AC %d", __func__, tap->txa_ac);
ni, "%s: stop BA stream for AC %d (reason %d)",
__func__, tap->txa_ac, reason);
vap->iv_stats.is_ampdu_stop++;
ic->ic_addba_stop(ni, tap);
args[0] = WME_AC_TO_TID(tap->txa_ac);
args[1] = IEEE80211_DELBAPS_INIT;
args[2] = 1; /* XXX reason code */
args[2] = reason; /* XXX reason code */
ieee80211_send_action(ni, IEEE80211_ACTION_CAT_BA,
IEEE80211_ACTION_BA_DELBA, args);
} else {
IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
ni, "%s: BA stream for AC %d not running",
__func__, tap->txa_ac);
ni, "%s: BA stream for AC %d not running (reason %d)",
__func__, tap->txa_ac, reason);
vap->iv_stats.is_ampdu_stop_failed++;
}
}

View File

@ -183,7 +183,7 @@ void ieee80211_recv_action(struct ieee80211_node *,
int ieee80211_ampdu_request(struct ieee80211_node *,
struct ieee80211_tx_ampdu *);
void ieee80211_ampdu_stop(struct ieee80211_node *,
struct ieee80211_tx_ampdu *);
struct ieee80211_tx_ampdu *, int);
int ieee80211_send_bar(struct ieee80211_node *,
const struct ieee80211_tx_ampdu *);
int ieee80211_send_action(struct ieee80211_node *,