dm-log-userspace: fix printk format warning
[linux-2.6/mini2440.git] / drivers / staging / vt6655 / bssdb.h
blobd35616d4883d7761ec925789925d7bf7a2e52fe7
1 /*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 * File: bssdb.h
22 * Purpose: Handles the Basic Service Set & Node Database functions
24 * Author: Lyndon Chen
26 * Date: July 16, 2002
30 #ifndef __BSSDB_H__
31 #define __BSSDB_H__
33 //#if !defined(__DEVICE_H__)
34 //#include "device.h"
35 //#endif
36 #include <linux/skbuff.h>
37 #if !defined(__80211HDR_H__)
38 #include "80211hdr.h"
39 #endif
40 #if !defined(__80211MGR_H__)
41 #include "80211mgr.h"
42 #endif
43 #if !defined(__CARD_H__)
44 #include "card.h"
45 #endif
49 /*--------------------- Export Definitions -------------------------*/
51 #define MAX_NODE_NUM 64
52 #define MAX_BSS_NUM 42
53 #define LOST_BEACON_COUNT 10 // 10 sec, XP defined
54 #define MAX_PS_TX_BUF 32 // sta max power saving tx buf
55 #define ADHOC_LOST_BEACON_COUNT 30 // 30 sec, beacon lost for adhoc only
56 #define MAX_INACTIVE_COUNT 300 // 300 sec, inactive STA node refresh
58 #define USE_PROTECT_PERIOD 10 // 10 sec, Use protect mode check period
59 #define ERP_RECOVER_COUNT 30 // 30 sec, ERP support callback check
60 #define BSS_CLEAR_COUNT 1
62 #define RSSI_STAT_COUNT 10
63 #define MAX_CHECK_RSSI_COUNT 8
65 // STA dwflags
66 #define WLAN_STA_AUTH BIT0
67 #define WLAN_STA_ASSOC BIT1
68 #define WLAN_STA_PS BIT2
69 #define WLAN_STA_TIM BIT3
70 // permanent; do not remove entry on expiration
71 #define WLAN_STA_PERM BIT4
72 // If 802.1X is used, this flag is
73 // controlling whether STA is authorized to
74 // send and receive non-IEEE 802.1X frames
75 #define WLAN_STA_AUTHORIZED BIT5
77 #define MAX_RATE 12
79 #define MAX_WPA_IE_LEN 64
82 /*--------------------- Export Classes ----------------------------*/
84 /*--------------------- Export Variables --------------------------*/
87 /*--------------------- Export Types ------------------------------*/
90 // IEEE 802.11 Structures and definitions
93 typedef enum _NDIS_802_11_NETWORK_TYPE
95 Ndis802_11FH,
96 Ndis802_11DS,
97 Ndis802_11OFDM5,
98 Ndis802_11OFDM24,
99 Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound
100 } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
103 typedef struct tagSERPObject {
104 BOOL bERPExist;
105 BYTE byERP;
106 } ERPObject, DEF* PERPObject;
109 typedef struct tagSRSNCapObject {
110 BOOL bRSNCapExist;
111 WORD wRSNCap;
112 } SRSNCapObject, DEF* PSRSNCapObject;
114 // BSS info(AP)
115 #pragma pack(1)
116 typedef struct tagKnownBSS {
117 // BSS info
118 BOOL bActive;
119 BYTE abyBSSID[WLAN_BSSID_LEN];
120 UINT uChannel;
121 BYTE abySuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
122 BYTE abyExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
123 UINT uRSSI;
124 BYTE bySQ;
125 WORD wBeaconInterval;
126 WORD wCapInfo;
127 BYTE abySSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
128 BYTE byRxRate;
129 // WORD wATIMWindow;
130 BYTE byRSSIStatCnt;
131 LONG ldBmMAX;
132 LONG ldBmAverage[RSSI_STAT_COUNT];
133 LONG ldBmAverRange;
134 //For any BSSID selection improvment
135 BOOL bSelected;
137 //++ WPA informations
138 BOOL bWPAValid;
139 BYTE byGKType;
140 BYTE abyPKType[4];
141 WORD wPKCount;
142 BYTE abyAuthType[4];
143 WORD wAuthCount;
144 BYTE byDefaultK_as_PK;
145 BYTE byReplayIdx;
146 //--
148 //++ WPA2 informations
149 BOOL bWPA2Valid;
150 BYTE byCSSGK;
151 WORD wCSSPKCount;
152 BYTE abyCSSPK[4];
153 WORD wAKMSSAuthCount;
154 BYTE abyAKMSSAuthType[4];
156 //++ wpactl
157 BYTE byWPAIE[MAX_WPA_IE_LEN];
158 BYTE byRSNIE[MAX_WPA_IE_LEN];
159 WORD wWPALen;
160 WORD wRSNLen;
162 // Clear count
163 UINT uClearCount;
164 // BYTE abyIEs[WLAN_BEACON_FR_MAXLEN];
165 UINT uIELength;
166 QWORD qwBSSTimestamp;
167 QWORD qwLocalTSF; // local TSF timer
169 // NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
170 CARD_PHY_TYPE eNetworkTypeInUse;
172 ERPObject sERP;
173 SRSNCapObject sRSNCapObj;
174 BYTE abyIEs[1024]; // don't move this field !!
176 }__attribute__ ((__packed__))
177 KnownBSS , DEF* PKnownBSS;
179 //2006-1116-01,<Add> by NomadZhao
180 #pragma pack()
182 typedef enum tagNODE_STATE {
183 NODE_FREE,
184 NODE_AGED,
185 NODE_KNOWN,
186 NODE_AUTH,
187 NODE_ASSOC
188 } NODE_STATE, *PNODE_STATE;
191 // STA node info
192 typedef struct tagKnownNodeDB {
193 // STA info
194 BOOL bActive;
195 BYTE abyMACAddr[WLAN_ADDR_LEN];
196 BYTE abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
197 BYTE abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
198 WORD wTxDataRate;
199 BOOL bShortPreamble;
200 BOOL bERPExist;
201 BOOL bShortSlotTime;
202 UINT uInActiveCount;
203 WORD wMaxBasicRate; //Get from byTopOFDMBasicRate or byTopCCKBasicRate which depends on packetTyp.
204 WORD wMaxSuppRate; //Records the highest supported rate getting from SuppRates IE and ExtSuppRates IE in Beacon.
205 WORD wSuppRate;
206 BYTE byTopOFDMBasicRate;//Records the highest basic rate in OFDM mode
207 BYTE byTopCCKBasicRate; //Records the highest basic rate in CCK mode
209 // For AP mode
210 struct sk_buff_head sTxPSQueue;
211 WORD wCapInfo;
212 WORD wListenInterval;
213 WORD wAID;
214 NODE_STATE eNodeState;
215 BOOL bPSEnable;
216 BOOL bRxPSPoll;
217 BYTE byAuthSequence;
218 ULONG ulLastRxJiffer;
219 BYTE bySuppRate;
220 DWORD dwFlags;
221 WORD wEnQueueCnt;
223 BOOL bOnFly;
224 ULONGLONG KeyRSC;
225 BYTE byKeyIndex;
226 DWORD dwKeyIndex;
227 BYTE byCipherSuite;
228 DWORD dwTSC47_16;
229 WORD wTSC15_0;
230 UINT uWepKeyLength;
231 BYTE abyWepKey[WLAN_WEPMAX_KEYLEN];
233 // Auto rate fallback vars
234 BOOL bIsInFallback;
235 UINT uAverageRSSI;
236 UINT uRateRecoveryTimeout;
237 UINT uRatePollTimeout;
238 UINT uTxFailures;
239 UINT uTxAttempts;
241 UINT uTxRetry;
242 UINT uFailureRatio;
243 UINT uRetryRatio;
244 UINT uTxOk[MAX_RATE+1];
245 UINT uTxFail[MAX_RATE+1];
246 UINT uTimeCount;
248 } KnownNodeDB, DEF* PKnownNodeDB;
251 /*--------------------- Export Functions --------------------------*/
255 PKnownBSS
256 BSSpSearchBSSList(
257 IN HANDLE hDeviceContext,
258 IN PBYTE pbyDesireBSSID,
259 IN PBYTE pbyDesireSSID,
260 IN CARD_PHY_TYPE ePhyType
263 PKnownBSS
264 BSSpAddrIsInBSSList(
265 IN HANDLE hDeviceContext,
266 IN PBYTE abyBSSID,
267 IN PWLAN_IE_SSID pSSID
270 VOID
271 BSSvClearBSSList(
272 IN HANDLE hDeviceContext,
273 IN BOOL bKeepCurrBSSID
276 BOOL
277 BSSbInsertToBSSList(
278 IN HANDLE hDeviceContext,
279 IN PBYTE abyBSSIDAddr,
280 IN QWORD qwTimestamp,
281 IN WORD wBeaconInterval,
282 IN WORD wCapInfo,
283 IN BYTE byCurrChannel,
284 IN PWLAN_IE_SSID pSSID,
285 IN PWLAN_IE_SUPP_RATES pSuppRates,
286 IN PWLAN_IE_SUPP_RATES pExtSuppRates,
287 IN PERPObject psERP,
288 IN PWLAN_IE_RSN pRSN,
289 IN PWLAN_IE_RSN_EXT pRSNWPA,
290 IN PWLAN_IE_COUNTRY pIE_Country,
291 IN PWLAN_IE_QUIET pIE_Quiet,
292 IN UINT uIELength,
293 IN PBYTE pbyIEs,
294 IN HANDLE pRxPacketContext
298 BOOL
299 BSSbUpdateToBSSList(
300 IN HANDLE hDeviceContext,
301 IN QWORD qwTimestamp,
302 IN WORD wBeaconInterval,
303 IN WORD wCapInfo,
304 IN BYTE byCurrChannel,
305 IN BOOL bChannelHit,
306 IN PWLAN_IE_SSID pSSID,
307 IN PWLAN_IE_SUPP_RATES pSuppRates,
308 IN PWLAN_IE_SUPP_RATES pExtSuppRates,
309 IN PERPObject psERP,
310 IN PWLAN_IE_RSN pRSN,
311 IN PWLAN_IE_RSN_EXT pRSNWPA,
312 IN PWLAN_IE_COUNTRY pIE_Country,
313 IN PWLAN_IE_QUIET pIE_Quiet,
314 IN PKnownBSS pBSSList,
315 IN UINT uIELength,
316 IN PBYTE pbyIEs,
317 IN HANDLE pRxPacketContext
321 BOOL
322 BSSDBbIsSTAInNodeDB(
323 IN HANDLE hDeviceContext,
324 IN PBYTE abyDstAddr,
325 OUT PUINT puNodeIndex
328 VOID
329 BSSvCreateOneNode(
330 IN HANDLE hDeviceContext,
331 OUT PUINT puNodeIndex
334 VOID
335 BSSvUpdateAPNode(
336 IN HANDLE hDeviceContext,
337 IN PWORD pwCapInfo,
338 IN PWLAN_IE_SUPP_RATES pItemRates,
339 IN PWLAN_IE_SUPP_RATES pExtSuppRates
343 VOID
344 BSSvSecondCallBack(
345 IN HANDLE hDeviceContext
348 VOID
349 BSSvUpdateNodeTxCounter(
350 IN HANDLE hDeviceContext,
351 IN BYTE byTsr0,
352 IN BYTE byTsr1,
353 IN PBYTE pbyBuffer,
354 IN UINT uFIFOHeaderSize
357 VOID
358 BSSvRemoveOneNode(
359 IN HANDLE hDeviceContext,
360 IN UINT uNodeIndex
363 VOID
364 BSSvAddMulticastNode(
365 IN HANDLE hDeviceContext
369 VOID
370 BSSvClearNodeDBTable(
371 IN HANDLE hDeviceContext,
372 IN UINT uStartIndex
375 VOID
376 BSSvClearAnyBSSJoinRecord(
377 IN HANDLE hDeviceContext
380 #endif //__BSSDB_H__