]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/vt6656/bssdb.h
staging: vt6656: Fix inconsistent structure packing
[karo-tx-linux.git] / drivers / staging / vt6656 / bssdb.h
1 /*
2  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3  * All rights reserved.
4  *
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.
9  *
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.
14  *
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.
18  *
19  *
20  * File: bssdb.h
21  *
22  * Purpose: Handles the Basic Service Set & Node Database functions
23  *
24  * Author: Lyndon Chen
25  *
26  * Date: July 16, 2002
27  *
28  */
29
30 #ifndef __BSSDB_H__
31 #define __BSSDB_H__
32
33 #include <linux/skbuff.h>
34 #include "80211hdr.h"
35 #include "80211mgr.h"
36 #include "card.h"
37 #include "mib.h"
38
39 /*---------------------  Export Definitions -------------------------*/
40
41 #define MAX_NODE_NUM             64
42 #define MAX_BSS_NUM              42
43 #define LOST_BEACON_COUNT        10   /* 10 sec, XP defined */
44 #define MAX_PS_TX_BUF            32   // sta max power saving tx buf
45 #define ADHOC_LOST_BEACON_COUNT  30   // 30 sec, beacon lost for adhoc only
46 #define MAX_INACTIVE_COUNT       300  // 300 sec, inactive STA node refresh
47
48 #define USE_PROTECT_PERIOD       10   // 10 sec, Use protect mode check period
49 #define ERP_RECOVER_COUNT        30   // 30 sec, ERP support callback check
50 #define BSS_CLEAR_COUNT           1
51
52 #define RSSI_STAT_COUNT          10
53 #define MAX_CHECK_RSSI_COUNT     8
54
55 // STA dwflags
56 #define WLAN_STA_AUTH            BIT0
57 #define WLAN_STA_ASSOC           BIT1
58 #define WLAN_STA_PS              BIT2
59 #define WLAN_STA_TIM             BIT3
60 // permanent; do not remove entry on expiration
61 #define WLAN_STA_PERM            BIT4
62 // If 802.1X is used, this flag is
63 // controlling whether STA is authorized to
64 // send and receive non-IEEE 802.1X frames
65 #define WLAN_STA_AUTHORIZED      BIT5
66
67 #define MAX_WPA_IE_LEN      64
68
69
70 /*---------------------  Export Classes  ----------------------------*/
71
72 /*---------------------  Export Variables  --------------------------*/
73
74
75 /*---------------------  Export Types  ------------------------------*/
76
77 //
78 // IEEE 802.11 Structures and definitions
79 //
80
81 typedef struct tagSERPObject {
82     BOOL    bERPExist;
83     BYTE    byERP;
84 } ERPObject, *PERPObject;
85
86
87 typedef struct tagSRSNCapObject {
88     BOOL    bRSNCapExist;
89     WORD    wRSNCap;
90 } SRSNCapObject, *PSRSNCapObject;
91
92 // BSS info(AP)
93 typedef struct tagKnownBSS {
94     // BSS info
95     BOOL            bActive;
96     BYTE            abyBSSID[WLAN_BSSID_LEN];
97     unsigned int            uChannel;
98     BYTE            abySuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
99     BYTE            abyExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
100     unsigned int            uRSSI;
101     BYTE            bySQ;
102     WORD            wBeaconInterval;
103     WORD            wCapInfo;
104     BYTE            abySSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
105     BYTE            byRxRate;
106
107 //    WORD            wATIMWindow;
108     BYTE            byRSSIStatCnt;
109     signed long            ldBmMAX;
110     signed long            ldBmAverage[RSSI_STAT_COUNT];
111     signed long            ldBmAverRange;
112     //For any BSSID selection improvment
113     BOOL            bSelected;
114
115     //++ WPA informations
116     BOOL            bWPAValid;
117     BYTE            byGKType;
118     BYTE            abyPKType[4];
119     WORD            wPKCount;
120     BYTE            abyAuthType[4];
121     WORD            wAuthCount;
122     BYTE            byDefaultK_as_PK;
123     BYTE            byReplayIdx;
124     //--
125
126     //++ WPA2 informations
127     BOOL            bWPA2Valid;
128     BYTE            byCSSGK;
129     WORD            wCSSPKCount;
130     BYTE            abyCSSPK[4];
131     WORD            wAKMSSAuthCount;
132     BYTE            abyAKMSSAuthType[4];
133
134     //++  wpactl
135     BYTE            byWPAIE[MAX_WPA_IE_LEN];
136     BYTE            byRSNIE[MAX_WPA_IE_LEN];
137     WORD            wWPALen;
138     WORD            wRSNLen;
139
140     // Clear count
141     unsigned int            uClearCount;
142 //    BYTE            abyIEs[WLAN_BEACON_FR_MAXLEN];
143     unsigned int            uIELength;
144     QWORD           qwBSSTimestamp;
145     QWORD           qwLocalTSF;     // local TSF timer
146
147     CARD_PHY_TYPE   eNetworkTypeInUse;
148
149     ERPObject       sERP;
150     SRSNCapObject   sRSNCapObj;
151     BYTE            abyIEs[1024];   // don't move this field !!
152
153 } __attribute__ ((__packed__))
154 KnownBSS , *PKnownBSS;
155
156
157
158 typedef enum tagNODE_STATE {
159     NODE_FREE,
160     NODE_AGED,
161     NODE_KNOWN,
162     NODE_AUTH,
163     NODE_ASSOC
164 } NODE_STATE, *PNODE_STATE;
165
166
167 // STA node info
168 typedef struct tagKnownNodeDB {
169     // STA info
170     BOOL            bActive;
171     BYTE            abyMACAddr[WLAN_ADDR_LEN];
172     BYTE            abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
173     BYTE            abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
174     WORD            wTxDataRate;
175     BOOL            bShortPreamble;
176     BOOL            bERPExist;
177     BOOL            bShortSlotTime;
178     unsigned int            uInActiveCount;
179     WORD            wMaxBasicRate;     //Get from byTopOFDMBasicRate or byTopCCKBasicRate which depends on packetTyp.
180     WORD            wMaxSuppRate;      //Records the highest supported rate getting from SuppRates IE and ExtSuppRates IE in Beacon.
181     WORD            wSuppRate;
182     BYTE            byTopOFDMBasicRate;//Records the highest basic rate in OFDM mode
183     BYTE            byTopCCKBasicRate; //Records the highest basic rate in CCK mode
184
185     // For AP mode
186     struct sk_buff_head sTxPSQueue;
187     WORD            wCapInfo;
188     WORD            wListenInterval;
189     WORD            wAID;
190     NODE_STATE      eNodeState;
191     BOOL            bPSEnable;
192     BOOL            bRxPSPoll;
193     BYTE            byAuthSequence;
194     unsigned long           ulLastRxJiffer;
195     BYTE            bySuppRate;
196     DWORD           dwFlags;
197     WORD            wEnQueueCnt;
198
199     BOOL            bOnFly;
200     unsigned long long       KeyRSC;
201     BYTE            byKeyIndex;
202     DWORD           dwKeyIndex;
203     BYTE            byCipherSuite;
204     DWORD           dwTSC47_16;
205     WORD            wTSC15_0;
206     unsigned int            uWepKeyLength;
207     BYTE            abyWepKey[WLAN_WEPMAX_KEYLEN];
208     //
209     // Auto rate fallback vars
210     BOOL            bIsInFallback;
211     unsigned int            uAverageRSSI;
212     unsigned int            uRateRecoveryTimeout;
213     unsigned int            uRatePollTimeout;
214     unsigned int            uTxFailures;
215     unsigned int            uTxAttempts;
216
217     unsigned int            uTxRetry;
218     unsigned int            uFailureRatio;
219     unsigned int            uRetryRatio;
220     unsigned int            uTxOk[MAX_RATE+1];
221     unsigned int            uTxFail[MAX_RATE+1];
222     unsigned int            uTimeCount;
223
224 } KnownNodeDB, *PKnownNodeDB;
225
226 /*---------------------  Export Functions  --------------------------*/
227
228 PKnownBSS BSSpSearchBSSList(void *hDeviceContext,
229                             PBYTE pbyDesireBSSID,
230                             PBYTE pbyDesireSSID,
231                             CARD_PHY_TYPE ePhyType);
232
233 PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext,
234                               PBYTE abyBSSID,
235                               PWLAN_IE_SSID pSSID);
236
237 void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID);
238
239 BOOL BSSbInsertToBSSList(void *hDeviceContext,
240                          PBYTE abyBSSIDAddr,
241                          QWORD qwTimestamp,
242                          WORD wBeaconInterval,
243                          WORD wCapInfo,
244                          BYTE byCurrChannel,
245                          PWLAN_IE_SSID pSSID,
246                          PWLAN_IE_SUPP_RATES pSuppRates,
247                          PWLAN_IE_SUPP_RATES pExtSuppRates,
248                          PERPObject psERP,
249                          PWLAN_IE_RSN pRSN,
250                          PWLAN_IE_RSN_EXT pRSNWPA,
251                          PWLAN_IE_COUNTRY pIE_Country,
252                          PWLAN_IE_QUIET pIE_Quiet,
253                          unsigned int uIELength,
254                          PBYTE pbyIEs,
255                          void *pRxPacketContext);
256
257 BOOL BSSbUpdateToBSSList(void *hDeviceContext,
258                          QWORD qwTimestamp,
259                          WORD wBeaconInterval,
260                          WORD wCapInfo,
261                          BYTE byCurrChannel,
262                          BOOL bChannelHit,
263                          PWLAN_IE_SSID pSSID,
264                          PWLAN_IE_SUPP_RATES pSuppRates,
265                          PWLAN_IE_SUPP_RATES pExtSuppRates,
266                          PERPObject psERP,
267                          PWLAN_IE_RSN pRSN,
268                          PWLAN_IE_RSN_EXT pRSNWPA,
269                          PWLAN_IE_COUNTRY pIE_Country,
270                          PWLAN_IE_QUIET pIE_Quiet,
271                          PKnownBSS pBSSList,
272                          unsigned int uIELength,
273                          PBYTE pbyIEs,
274                          void *pRxPacketContext);
275
276 BOOL BSSbIsSTAInNodeDB(void *hDeviceContext,
277                        PBYTE abyDstAddr,
278                        unsigned int *puNodeIndex);
279
280 void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex);
281
282 void BSSvUpdateAPNode(void *hDeviceContext,
283                       PWORD pwCapInfo,
284                       PWLAN_IE_SUPP_RATES pItemRates,
285                       PWLAN_IE_SUPP_RATES pExtSuppRates);
286
287 void BSSvSecondCallBack(void *hDeviceContext);
288
289 void BSSvUpdateNodeTxCounter(void *hDeviceContext,
290                              PSStatCounter pStatistic,
291                              BYTE byTSR,
292                              BYTE byPktNO);
293
294 void BSSvRemoveOneNode(void *hDeviceContext,
295                        unsigned int uNodeIndex);
296
297 void BSSvAddMulticastNode(void *hDeviceContext);
298
299 void BSSvClearNodeDBTable(void *hDeviceContext,
300                           unsigned int uStartIndex);
301
302 void BSSvClearAnyBSSJoinRecord(void *hDeviceContext);
303
304 #endif /* __BSSDB_H__ */