Deleted Added
full compact
ieee80211_ht.c (183249) ieee80211_ht.c (183250)
1/*-
2 * Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include <sys/cdefs.h>
27#ifdef __FreeBSD__
1/*-
2 * Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include <sys/cdefs.h>
27#ifdef __FreeBSD__
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_ht.c 183249 2008-09-21 23:18:36Z sam $");
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_ht.c 183250 2008-09-21 23:20:04Z sam $");
29#endif
30
31/*
32 * IEEE 802.11n protocol support.
33 */
34
35#include "opt_inet.h"
36#include "opt_wlan.h"

--- 1680 unchanged lines hidden (view full) ---

1717 IEEE80211_ACTION_BA_ADDBA_REQUEST, args);
1718}
1719
1720/*
1721 * Terminate an AMPDU tx stream. State is reclaimed
1722 * and the peer notified with a DelBA Action frame.
1723 */
1724void
29#endif
30
31/*
32 * IEEE 802.11n protocol support.
33 */
34
35#include "opt_inet.h"
36#include "opt_wlan.h"

--- 1680 unchanged lines hidden (view full) ---

1717 IEEE80211_ACTION_BA_ADDBA_REQUEST, args);
1718}
1719
1720/*
1721 * Terminate an AMPDU tx stream. State is reclaimed
1722 * and the peer notified with a DelBA Action frame.
1723 */
1724void
1725ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
1725ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
1726 int reason)
1726{
1727 struct ieee80211com *ic = ni->ni_ic;
1728 struct ieee80211vap *vap = ni->ni_vap;
1729 uint16_t args[4];
1730
1731 /* XXX locking */
1732 if (IEEE80211_AMPDU_RUNNING(tap)) {
1733 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
1727{
1728 struct ieee80211com *ic = ni->ni_ic;
1729 struct ieee80211vap *vap = ni->ni_vap;
1730 uint16_t args[4];
1731
1732 /* XXX locking */
1733 if (IEEE80211_AMPDU_RUNNING(tap)) {
1734 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
1734 ni, "%s: stop BA stream for AC %d", __func__, tap->txa_ac);
1735 ni, "%s: stop BA stream for AC %d (reason %d)",
1736 __func__, tap->txa_ac, reason);
1735 vap->iv_stats.is_ampdu_stop++;
1736
1737 ic->ic_addba_stop(ni, tap);
1738 args[0] = WME_AC_TO_TID(tap->txa_ac);
1739 args[1] = IEEE80211_DELBAPS_INIT;
1737 vap->iv_stats.is_ampdu_stop++;
1738
1739 ic->ic_addba_stop(ni, tap);
1740 args[0] = WME_AC_TO_TID(tap->txa_ac);
1741 args[1] = IEEE80211_DELBAPS_INIT;
1740 args[2] = 1; /* XXX reason code */
1742 args[2] = reason; /* XXX reason code */
1741 ieee80211_send_action(ni, IEEE80211_ACTION_CAT_BA,
1742 IEEE80211_ACTION_BA_DELBA, args);
1743 } else {
1744 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
1743 ieee80211_send_action(ni, IEEE80211_ACTION_CAT_BA,
1744 IEEE80211_ACTION_BA_DELBA, args);
1745 } else {
1746 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
1745 ni, "%s: BA stream for AC %d not running",
1746 __func__, tap->txa_ac);
1747 ni, "%s: BA stream for AC %d not running (reason %d)",
1748 __func__, tap->txa_ac, reason);
1747 vap->iv_stats.is_ampdu_stop_failed++;
1748 }
1749}
1750
1751/*
1752 * Transmit a BAR frame to the specified node. The
1753 * BAR contents are drawn from the supplied aggregation
1754 * state associated with the node.

--- 432 unchanged lines hidden ---
1749 vap->iv_stats.is_ampdu_stop_failed++;
1750 }
1751}
1752
1753/*
1754 * Transmit a BAR frame to the specified node. The
1755 * BAR contents are drawn from the supplied aggregation
1756 * state associated with the node.

--- 432 unchanged lines hidden ---