OSDN Git Service

staging: rtl8723bs: update to the latest driver
[android-x86/kernel.git] / drivers / staging / rtl8723bs / include / wlan_bssdef.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  ******************************************************************************/
15 #ifndef __WLAN_BSSDEF_H__
16 #define __WLAN_BSSDEF_H__
17
18
19 #define MAX_IE_SZ       768
20
21
22 #define NDIS_802_11_LENGTH_SSID         32
23 #define NDIS_802_11_LENGTH_RATES        8
24 #define NDIS_802_11_LENGTH_RATES_EX     16
25
26 typedef unsigned char   NDIS_802_11_MAC_ADDRESS[6];
27 typedef unsigned char   NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        /*  Set of 8 data rates */
28 typedef unsigned char   NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  /*  Set of 16 data rates */
29
30 struct ndis_802_11_ssid {
31         u32  SsidLength;
32         u8  Ssid[32];
33 };
34
35 enum NDIS_802_11_NETWORK_TYPE {
36         Ndis802_11FH,
37         Ndis802_11DS,
38         Ndis802_11OFDM5,
39         Ndis802_11OFDM24,
40         Ndis802_11NetworkTypeMax    /*  not a real type, defined as an upper bound */
41 };
42
43 struct ndis_802_11_conf_fh {
44         u32 Length;             /*  Length of structure */
45         u32 HopPattern;         /*  As defined by 802.11, MSB set */
46         u32 HopSet;             /*  to one if non-802.11 */
47         u32 DwellTime;          /*  units are Kusec */
48 };
49
50 /*
51         FW will only save the channel number in DSConfig.
52         ODI Handler will convert the channel number to freq. number.
53 */
54 struct ndis_802_11_conf {
55         u32 Length;             /*  Length of structure */
56         u32 BeaconPeriod;       /*  units are Kusec */
57         u32 ATIMWindow;         /*  units are Kusec */
58         u32 DSConfig;           /*  Frequency, units are kHz */
59         struct ndis_802_11_conf_fh    FHConfig;
60 };
61
62 enum NDIS_802_11_NETWORK_INFRASTRUCTURE {
63         Ndis802_11IBSS,
64         Ndis802_11Infrastructure,
65         Ndis802_11AutoUnknown,
66         Ndis802_11InfrastructureMax,     /*  Not a real value, defined as upper bound */
67         Ndis802_11APMode,
68 };
69
70 struct ndis_802_11_fix_ie {
71         u8  Timestamp[8];
72         u16  BeaconInterval;
73         u16  Capabilities;
74 };
75
76 struct ndis_80211_var_ie {
77         u8  ElementID;
78         u8  Length;
79         u8  data[1];
80 };
81
82 /* Length is the 4 bytes multiples of the sum of
83  * sizeof (NDIS_802_11_MAC_ADDRESS) + 2 +
84  * sizeof (struct ndis_802_11_ssid) + sizeof (u32) +
85  * sizeof (long) + sizeof (enum NDIS_802_11_NETWORK_TYPE) +
86  * sizeof (struct ndis_802_11_conf) + sizeof (NDIS_802_11_RATES_EX) + IELength
87  *
88  * Except for IELength, all other fields are fixed length. Therefore, we can
89  * define a macro to present the partial sum.
90  */
91 enum NDIS_802_11_AUTHENTICATION_MODE {
92         Ndis802_11AuthModeOpen,
93         Ndis802_11AuthModeShared,
94         Ndis802_11AuthModeAutoSwitch,
95         Ndis802_11AuthModeWPA,
96         Ndis802_11AuthModeWPAPSK,
97         Ndis802_11AuthModeWPANone,
98         Ndis802_11AuthModeWAPI,
99         Ndis802_11AuthModeMax   /*  Not a real mode, defined as upper bound */
100 };
101
102 enum NDIS_802_11_WEP_STATUS {
103         Ndis802_11WEPEnabled,
104         Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
105         Ndis802_11WEPDisabled,
106         Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
107         Ndis802_11WEPKeyAbsent,
108         Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
109         Ndis802_11WEPNotSupported,
110         Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
111         Ndis802_11Encryption2Enabled,
112         Ndis802_11Encryption2KeyAbsent,
113         Ndis802_11Encryption3Enabled,
114         Ndis802_11Encryption3KeyAbsent,
115         Ndis802_11_EncrypteionWAPI
116 };
117
118 #define NDIS_802_11_AI_REQFI_CAPABILITIES      1
119 #define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
120 #define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
121
122 #define NDIS_802_11_AI_RESFI_CAPABILITIES      1
123 #define NDIS_802_11_AI_RESFI_STATUSCODE        2
124 #define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
125
126 struct ndis_802_11_ai_reqfi {
127         u16 Capabilities;
128         u16 ListenInterval;
129         NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
130 };
131
132 struct ndis_801_11_ai_resfi {
133         u16 Capabilities;
134         u16 StatusCode;
135         u16 AssociationId;
136 };
137
138 typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
139 {
140     u32                   Length;
141     u16                  AvailableRequestFixedIEs;
142     struct ndis_802_11_ai_reqfi    RequestFixedIEs;
143     u32                   RequestIELength;
144     u32                   OffsetRequestIEs;
145     u16                  AvailableResponseFixedIEs;
146     struct ndis_801_11_ai_resfi    ResponseFixedIEs;
147     u32                   ResponseIELength;
148     u32                   OffsetResponseIEs;
149 } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
150
151 enum NDIS_802_11_RELOAD_DEFAULTS {
152         Ndis802_11ReloadWEPKeys
153 };
154
155
156 /*  Key mapping keys require a BSSID */
157 typedef struct _NDIS_802_11_KEY
158 {
159     u32           Length;             /*  Length of this structure */
160     u32           KeyIndex;
161     u32           KeyLength;          /*  length of key in bytes */
162     NDIS_802_11_MAC_ADDRESS BSSID;
163     unsigned long long KeyRSC;
164     u8           KeyMaterial[32];     /*  variable length depending on above field */
165 } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
166
167 typedef struct _NDIS_802_11_REMOVE_KEY
168 {
169     u32                   Length;        /*  Length of this structure */
170     u32                   KeyIndex;
171     NDIS_802_11_MAC_ADDRESS BSSID;
172 } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
173
174 struct ndis_802_11_wep {
175         u32 Length;        /*  Length of this structure */
176         u32 KeyIndex;      /*  0 is the per-client key, 1-N are the global keys */
177         u32 KeyLength;     /*  length of key in bytes */
178         u8 KeyMaterial[16];/*  variable length depending on above field */
179 };
180
181 /*  mask for authentication/integrity fields */
182 #define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
183 #define NDIS_802_11_AUTH_REQUEST_REAUTH                 0x01
184 #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE              0x02
185 #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR         0x06
186 #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR            0x0E
187
188 /*  MIC check time, 60 seconds. */
189 #define MIC_CHECK_TIME  60000000
190
191 #ifndef Ndis802_11APMode
192 #define Ndis802_11APMode (Ndis802_11InfrastructureMax+1)
193 #endif
194
195 struct wlan_phy_info {
196         u8 SignalStrength;/* in percentage) */
197         u8 SignalQuality;/* in percentage) */
198         u8 Optimum_antenna;  /* for Antenna diversity */
199         u8 Reserved_0;
200 };
201
202 struct wlan_bcn_info {
203         /* these infor get from rtw_get_encrypt_info when
204          * * translate scan to UI */
205         u8 encryp_protocol;/* ENCRYP_PROTOCOL_E: OPEN/WEP/WPA/WPA2/WAPI */
206         int group_cipher; /* WPA/WPA2 group cipher */
207         int pairwise_cipher;/* WPA/WPA2/WEP pairwise cipher */
208         int is_8021x;
209
210         /* bwmode 20/40 and ch_offset UP/LOW */
211         unsigned short  ht_cap_info;
212         unsigned char ht_info_infos_0;
213 };
214
215 /* temporally add #pragma pack for structure alignment issue of
216 *   struct wlan_bssid_ex and get_wlan_bssid_ex_sz()
217 */
218 struct wlan_bssid_ex {
219         u32  Length;
220         NDIS_802_11_MAC_ADDRESS  MacAddress;
221         u8  Reserved[2];/* 0]: IS beacon frame */
222         struct ndis_802_11_ssid  Ssid;
223         u32  Privacy;
224         long  Rssi;/* in dBM, raw data , get from PHY) */
225         enum NDIS_802_11_NETWORK_TYPE  NetworkTypeInUse;
226         struct ndis_802_11_conf  Configuration;
227         enum NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
228         NDIS_802_11_RATES_EX  SupportedRates;
229         struct wlan_phy_info PhyInfo;
230         u32  IELength;
231         u8  IEs[MAX_IE_SZ];     /* timestamp, beacon interval, and capability information) */
232 } __packed;
233
234 __inline  static uint get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss)
235 {
236         return (sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + bss->IELength);
237 }
238
239 struct  wlan_network {
240         struct list_head        list;
241         int     network_type;   /* refer to ieee80211.h for WIRELESS_11A/B/G */
242         int     fixed;                  /*  set to fixed when not to be removed as site-surveying */
243         unsigned long   last_scanned; /* timestamp for the network */
244         int     aid;                    /* will only be valid when a BSS is joinned. */
245         int     join_res;
246         struct wlan_bssid_ex    network; /* must be the last item */
247         struct wlan_bcn_info    BcnInfo;
248 };
249
250 enum VRTL_CARRIER_SENSE {
251     DISABLE_VCS,
252     ENABLE_VCS,
253     AUTO_VCS
254 };
255
256 enum VCS_TYPE {
257     NONE_VCS,
258     RTS_CTS,
259     CTS_TO_SELF
260 };
261
262 #define PWR_CAM 0
263 #define PWR_MINPS 1
264 #define PWR_MAXPS 2
265 #define PWR_UAPSD 3
266 #define PWR_VOIP 4
267
268 enum UAPSD_MAX_SP {
269         NO_LIMIT,
270        TWO_MSDU,
271        FOUR_MSDU,
272        SIX_MSDU
273 };
274
275 #define NUM_PRE_AUTH_KEY 16
276 #define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY
277
278 #endif /* ifndef WLAN_BSSDEF_H_ */