MOXA linux-2.6.x / linux-2.6.9-uc0 from sdlinux-moxaart.tgz
[linux-2.6.9-moxart.git] / drivers / usb / net / Zydas / zdsorts.h
blobf15394c4440915a57f39ccd44adf3f73569a7f27
1 #ifndef __ZDSORTS_H__
2 #define __ZDSORTS_H__
4 #include "zdtkipseed.h"
5 #include "zdmic.h"
7 #define MAX_MSDU_LNG 1600// only payload
8 #define MAC_HDR_LNG 24 // 802.11, not include A4
9 #define WEP_ADD_LNG 8 // 4 for IV, 4 for ICV
10 #define WDS_ADD_LNG 6 // for Address 4
11 #define IV_LNG 4
12 #define EIV_LNG 4
13 #define ICV_LNG 4
14 #define CRC_LNG 4
15 #define MIC_LNG 8
17 #define MIN_FRAG_LNG 256
18 #define MAX_FRAG_NUM (MAX_MSDU_LNG / (MIN_FRAG_LNG - MAC_HDR_LNG - CRC_LNG))
21 #define MAX_AID 32
22 #define MAX_RECORD (MAX_AID + 1)
23 #define BURST_NUM 64//32
24 #define TXQ_THRESHOLD 48
25 #define MCQ_THRESHOLD 15
26 #define CHAL_TEXT_LEN 128
27 #ifndef HOST_IF_USB
28 #define IDLE_TIMEOUT (10*60*1000*1000) //10 min
29 #else
30 #define IDLE_TIMEOUT (/*10*/HZ*60*100) //10 min //johnson
31 #endif
33 #define RISE_RATE_THRESHOLD 4
34 #define HIGH_RISE_RATE_THRESHOLD 0xff
35 #define AGE_HASH_PERIOD (/*10*/1*60) //10 min //johnson
37 #define LONG_PREAMBLE 0
38 #define SHORT_PREAMBLE 1
40 #define OPEN_SYSTEM 0
41 #define SHARE_KEY 1
42 #define NULL_AUTH 2
45 #define WEP_NOT_USED 0
46 #define AES_USED 4
47 #define WEP64_USED 1
48 #define WEP128_USED 5
49 #define TKIP_USED 2
50 #define WEP256_USED 6
53 #define TO_DS_BIT 0x01
54 #define FROM_DS_BIT 0x02
55 #define MORE_FRAG_BIT 0x04
57 #define PW_SAVE_BIT 0x10
58 #define MORE_DATA_BIT 0x20
59 #define WEP_BIT 0x40
60 #define ORDER_BIT 0x80
62 #define EIV_BIT 0x20
63 #define KEYID_MASK 0xC0
64 #define NON_ERP_PRESENT 0x01
65 #define USE_PROTECTION 0x02
66 #define BARKER_PREAMBLE 0x04
67 //register 0xD40
68 #define MIC_BUSY 0x01
71 typedef enum
73 PSMODE_STA_ACTIVE,
74 PSMODE_POWER_SAVE
75 } PsMode;
78 typedef enum
80 STATION_STATE_NOT_AUTH,
81 STATION_STATE_AUTH_OPEN,
82 STATION_STATE_AUTH_KEY,
83 STATION_STATE_ASOC,
84 STATION_STATE_DIS_ASOC
85 } StationState;
88 typedef struct
90 U8 mac[6];
91 } MacAddr_t;
94 typedef enum
96 EID_SSID = 0,
97 EID_SUPRATES,
98 EID_FHPARMS,
99 EID_DSPARMS,
100 EID_CFPARMS,
101 EID_TIM,
102 EID_IBPARMS,
103 EID_COUNTRY,
104 EID_CTEXT = 0x10,
105 EID_ERP = 0x2A,
106 EID_RSN = 0x30,
107 EID_EXT_RATES = 0x32,
108 EID_ZYDAS = 0xCC,
109 EID_WPA = 0xDD,
110 } ElementID;
111 typedef enum
113 ZDOUI_TURBO = 0x00CC01,
114 ZDOUI_BURST = 0x00CC02,
115 ZDOUI_AMSDU = 0x00CC03
116 } ZYDAS_OUI;
118 typedef struct
120 U8 buf[34]; //Max SSID Length = 32
121 } Element;
124 typedef enum
126 CAP_ESS = 0x01,
127 CAP_IBSS = 0x02,
128 CAP_POLLABLE = 0x04,
129 CAP_POLLREQ = 0x08,
130 CAP_PRIVACY = 0x10,
131 CAP_SHORT_PREAMBLE = 0x20,
132 CAP_PBCC_ENABLE = 0x40,
133 CAP_SHORT_SLOT_TIME = 0x0400,
134 CAP_DSSS_OFDM_BIT = 0x2000
135 } Capability;
138 typedef enum
140 RC_UNSPEC_REASON = 1,
141 RC_AUTH_NOT_VALID,
142 RC_DEAUTH_LEAVE_BSS,
143 RC_INACTIVITY,
144 RC_AP_OVERLOAD,
145 RC_CLASS2_ERROR,
146 RC_CLASS3_ERROR,
147 RC_DISAS_LEAVE_CSS,
148 RC_ASOC_NOT_AUTH,
149 RC_INVALID_IE = 13,
150 RC_MIC_FAIL,
151 RC_4WAY_SHAKE_TIMEOUT,
152 RC_GKEY_UPDATE_TIMEOUT,
153 RC_IE_IMCOMPABILITY,
154 RC_MC_CIPHER_INVALID,
155 RC_UNI_CIPHER_INVALID,
156 RC_AKMP_INVALID,
157 RC_UNSUP_RSNE_VERSION,
158 RC_INVALID_RSNE_CAP,
159 RC_8021X_AUTH_FAIL
160 } ReasonCode;
163 typedef enum
165 SC_SUCCESSFUL = 0,
166 SC_UNSPEC_FAILURE,
167 SC_UNSUP_CAP = 10,
168 SC_REASOC_NO_ASOC,
169 SC_FAIL_OTHER,
170 SC_UNSUPT_ALG,
171 SC_AUTH_OUT_OF_SEQ,
172 SC_CHAL_FAIL,
173 SC_AUTH_TIMEOUT,
174 SC_AP_FULL,
175 SC_UNSUP_RATES,
176 SC_UNSUP_SHORT_SLOT_TIME = 25,
177 SC_UNSUP_ER_PBCC = 26,
178 SC_UNSUP_DSSS_OFDM = 27
179 } StatusCode;
182 typedef enum
184 ST_ASOC_REQ = 0x00,
185 ST_ASOC_RSP = 0x10,
186 ST_REASOC_REQ = 0x20,
187 ST_REASOC_RSP = 0x30,
188 ST_PROBE_REQ = 0x40,
189 ST_PROBE_RSP = 0x50,
190 ST_BEACON = 0x80,
191 ST_ATIM = 0x90,
192 ST_DISASOC = 0xA0,
193 ST_AUTH = 0xB0,
194 ST_DEAUTH = 0xC0,
195 ST_PS_POLL = 0xA4,
196 ST_RTS = 0xB4,
197 ST_CTS = 0xC4,
198 ST_ACK = 0xD4,
199 ST_CFEND = 0xE4,
200 ST_CFEND_ACK = 0xF4,
201 ST_DATA = 0x08,
202 ST_DATA_ACK = 0x18,
203 ST_DATA_POLL = 0x28,
204 ST_DATA_POLL_ACK= 0x38,
205 ST_NULL_FRAME = 0x48
206 } TypeSubtype;
209 typedef struct TrafficMap_s
211 U8 t[(MAX_AID/8)+1];
212 } TrafficMap_t;
215 #define RATEARRAY_NUM 16
216 typedef struct Hash_s
218 struct Hash_s *pNext;
219 U8 mac[6];
220 StationState asoc;
221 StationState auth;
222 PsMode psm;
223 U16 aid;
224 BOOLEAN bValid;
225 BOOLEAN bErpSta;
226 BOOLEAN bJustRiseRate;
227 U8 lsInterval;
228 U8 RxRate;//entry;
229 U8 encryMode;
230 U8 keyLength;
231 U8 pkInstalled;
232 U8 ZydasMode;
233 U8 AlreadyIn;
234 U8 MaxRate;
235 U8 CurrTxRate;
236 U8 ContSuccFrames;
237 U8 Preamble;
238 U8 KeyId;
239 U16 iv16;
240 U32 iv32;
241 U32 ttl;
242 U32 SuccessFrames;
243 U32 FailedFrames;
244 U8 RateArray[RATEARRAY_NUM];// this array is the rate adaption table
245 U8 RateArrayCount;
246 U8 SupportRateArray[RATEARRAY_NUM];
247 U8 SupportRateArrayCount;
248 U8 RiseConditionCount;
249 U8 DownConditionCount;
250 U8 keyContent[16];
251 U8 wepIv[4];
252 U8 vapId;
253 Seedvar TxSeed;
254 Seedvar RxSeed;
255 MICvar TxMicKey;
256 MICvar RxMicKey;
257 #if ZDCONF_LP_SUPPORT == 1
258 U8 Turbo_Burst;
259 U8 Turbo_AMSDU;
260 U8 Turbo_AMSDU_LEN;
261 BOOLEAN LP_CAP;
262 #endif
264 #ifdef HOSTAPD_SUPPORT
265 Element WPAIE;
266 #endif
267 } Hash_t;
270 typedef struct Frame_s
272 U16 HdrLen;
273 U16 bodyLen;
274 U8 header[32]; //include IV, eIV
275 U8 *body;
276 void *fragBuf;
277 } Frame_t;
279 typedef struct FrmDesc_s
281 struct FrmDesc_s *pNext;
282 U8 buffer[160]; //use mbuf to send boradcast
283 Frame_t mpdu[MAX_FRAG_NUM]; //for fragment
284 BOOLEAN bValid;
285 U8 ConfigSet;
286 U8 signalStrength;
287 U8 signalQuality;
288 U8 CalMIC[MIC_LNG+1]; //1~8 for MIC, 9==TRUE ,if used.
289 Hash_t *pHash;
290 //U8 HwMicPhys[12]; // MIC valuse(8). MIC status(4)
291 } FrmDesc_t;
293 #define MAX_COUNTRY_INFO_SIZE 50
294 typedef struct BssInfo_s {
295 MacAddr_t bssid;
296 U16 bcnInterval;
297 U16 cap;
298 Element ssid;
299 Element supRates;
300 Element Phpm;
301 Element IbssParms;
302 Element erp;
303 Element extRates;
304 Element country;
305 #if ZDCONF_LP_SUPPORT == 1
306 Element zdIE_BURST;
307 Element zdIE_AMSDU;
308 #endif
309 #if ZDCONF_SES_SUPPORT == 1
310 BOOLEAN SES_Element_Valid;
311 Element SES_Element;
312 #endif
314 U8 signalStrength;
315 U8 signalQuality;
316 U8 apMode;
317 U16 basicRateMap;
318 U16 supRateMap;
319 U8 WPAIe[128];
320 U8 RSNIe[128];
322 } BssInfo_t;
324 #endif