ath9k_htc: Update to upstream's commit d19607454d656cb14d8c16dfbf161eebb542e8fe dated...
[linux-libre-firmware.git] / ath9k_htc / target_firmware / wlan / _ieee80211.h
1 /*-
2  * Copyright (c) 2001 Atsushi Onoe
3  * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission.
16  *
17  * Alternatively, this software may be distributed under the terms of the
18  * GNU General Public License ("GPL") version 2 as published by the Free
19  * Software Foundation.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * $FreeBSD: src/sys/net80211/_ieee80211.h,v 1.2 2004/12/31 22:42:38 sam Exp $
33  * $Id: //depot/sw/branches/fusion_usb/target_firmware/wlan/target/madwifi/net80211/_ieee80211.h#1 $
34  */
35 #ifndef _NET80211__IEEE80211_H_
36 #define _NET80211__IEEE80211_H_
37
38 enum ieee80211_phytype {
39         IEEE80211_T_DS,                 /* direct sequence spread spectrum */
40         IEEE80211_T_FH,                 /* frequency hopping */
41         IEEE80211_T_OFDM,               /* frequency division multiplexing */
42         IEEE80211_T_TURBO,              /* high rate OFDM, aka turbo mode */
43         IEEE80211_T_HT,                 /* HT - full GI */
44         IEEE80211_T_MAX
45 };
46 #define IEEE80211_T_CCK IEEE80211_T_DS  /* more common nomenclature */
47
48 /* XXX nOt really a mode; there are really multiple PHY's */
49 enum ieee80211_phymode {
50         IEEE80211_MODE_11NA     = 0,
51         IEEE80211_MODE_11NG     = 1,
52 };
53 #define IEEE80211_MODE_MAX      (IEEE80211_MODE_11NG+1)
54
55 enum ieee80211_opmode {
56         IEEE80211_M_STA         = 1,    /* infrastructure station */
57         IEEE80211_M_IBSS        = 0,    /* IBSS (adhoc) station */
58         IEEE80211_M_AHDEMO      = 3,    /* Old lucent compatible adhoc demo */
59         IEEE80211_M_HOSTAP      = 6,    /* Software Access Point */
60         IEEE80211_M_MONITOR     = 8,    /* Monitor mode */
61         IEEE80211_M_WDS         = 2     /* WDS link */
62 };
63
64 /*
65  * 802.11g protection mode.
66  */
67 enum ieee80211_protmode {
68         IEEE80211_PROT_NONE     = 0,    /* no protection */
69         IEEE80211_PROT_CTSONLY  = 1,    /* CTS to self */
70         IEEE80211_PROT_RTSCTS   = 2,    /* RTS-CTS */
71 };
72
73 /*
74  * 802.11 rate set.
75  */
76 #define IEEE80211_RATE_SIZE     8               /* 802.11 standard */
77 #define IEEE80211_RATE_MAXSIZE  30              /* max rates we'll handle */
78 #define IEEE80211_HT_RATE_SIZE  128
79
80
81 /*
82  * 11n A-MPDU & A-MSDU limits
83  */
84 #define IEEE80211_AMPDU_LIMIT_MIN           (1 * 1024)
85 #define IEEE80211_AMPDU_LIMIT_MAX           (64 * 1024 - 1)
86 #define IEEE80211_AMPDU_SUBFRAME_MIN        2
87 #define IEEE80211_AMPDU_SUBFRAME_MAX        64
88 #define IEEE80211_AMPDU_SUBFRAME_DEFAULT    32
89 #define IEEE80211_AMSDU_LIMIT_MAX           4096
90
91 struct ieee80211_rateset {
92         a_uint8_t               rs_nrates;
93         a_uint8_t               rs_rates[IEEE80211_RATE_MAXSIZE];
94 };
95
96 #endif /* _NET80211__IEEE80211_H_ */