staging: __FUNCTION__ is gcc-specific, use __func__
[deliverable/linux.git] / drivers / staging / otus / 80211core / struct.h
1 /*
2 * Copyright (c) 2007-2008 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #ifndef _STRUCT_H
18 #define _STRUCT_H
19
20 #include "../oal_marc.h"
21
22 #define ZM_SW_LOOP_BACK 0 /* 1=>enable, 0=>disable */
23 #define ZM_PCI_LOOP_BACK 0 /* 1=>enable, 0=>disable */
24 #define ZM_PROTOCOL_RESPONSE_SIMULATION 0
25
26 #define ZM_RX_FRAME_SIZE 1600
27
28 extern const u8_t zg11bRateTbl[4];
29 extern const u8_t zg11gRateTbl[8];
30
31 #define ZM_DRIVER_CORE_MAJOR_VERSION 1
32 #define ZM_DRIVER_CORE_MINOR_VERSION 1
33 #define ZM_DRIVER_CORE_BRANCH_MAJOR_VERSION 3
34 #define ZM_DRIVER_CORE_BRANCH_MINOR_VERSION 39
35
36 #ifndef ZM_VTXQ_SIZE
37 #define ZM_VTXQ_SIZE 1024 //2^N
38 #endif
39
40 #define ZM_VTXQ_SIZE_MASK (ZM_VTXQ_SIZE-1)
41 #define ZM_VMMQ_SIZE 8 //2^N
42 #define ZM_VMMQ_SIZE_MASK (ZM_VMMQ_SIZE-1)
43
44 #include "cagg.h"
45
46 #define ZM_AGG_POOL_SIZE 20
47 #define ZM_RATE_TABLE_SIZE 32
48
49 #define ZM_MAX_BUF_DISCRETE_NUMBER 5
50
51
52
53
54
55
56
57
58
59 /**********************************************************************************/
60 /* IBSS macros */
61 /**********************************************************************************/
62 #define ZM_IBSS_PEER_ALIVE_COUNTER 4
63
64 /**********************************************************************************/
65 /* BIT mapping related macros */
66 /**********************************************************************************/
67
68 #define ZM_BIT_0 0x1
69 #define ZM_BIT_1 0x2
70 #define ZM_BIT_2 0x4
71 #define ZM_BIT_3 0x8
72 #define ZM_BIT_4 0x10
73 #define ZM_BIT_5 0x20
74 #define ZM_BIT_6 0x40
75 #define ZM_BIT_7 0x80
76 #define ZM_BIT_8 0x100
77 #define ZM_BIT_9 0x200
78 #define ZM_BIT_10 0x400
79 #define ZM_BIT_11 0x800
80 #define ZM_BIT_12 0x1000
81 #define ZM_BIT_13 0x2000
82 #define ZM_BIT_14 0x4000
83 #define ZM_BIT_15 0x8000
84 #define ZM_BIT_16 0x10000
85 #define ZM_BIT_17 0x20000
86 #define ZM_BIT_18 0x40000
87 #define ZM_BIT_19 0x80000
88 #define ZM_BIT_20 0x100000
89 #define ZM_BIT_21 0x200000
90 #define ZM_BIT_22 0x400000
91 #define ZM_BIT_23 0x800000
92 #define ZM_BIT_24 0x1000000
93 #define ZM_BIT_25 0x2000000
94 #define ZM_BIT_26 0x4000000
95 #define ZM_BIT_27 0x8000000
96 #define ZM_BIT_28 0x10000000
97 #define ZM_BIT_29 0x20000000 //WPA support
98 #define ZM_BIT_30 0x40000000
99 #define ZM_BIT_31 0x80000000
100
101
102 /**********************************************************************************/
103 /* MAC address related macros */
104 /**********************************************************************************/
105 #define ZM_MAC_BYTE_TO_WORD(macb, macw) macw[0] = macb[0] + (macb[1] << 8); \
106 macw[1] = macb[2] + (macb[3] << 8); \
107 macw[2] = macb[4] + (macb[5] << 8);
108
109 #define ZM_MAC_WORD_TO_BYTE(macw, macb) macb[0] = (u8_t) (macw[0] & 0xff); \
110 macb[1] = (u8_t) (macw[0] >> 8); \
111 macb[2] = (u8_t) (macw[1] & 0xff); \
112 macb[3] = (u8_t) (macw[1] >> 8); \
113 macb[4] = (u8_t) (macw[2] & 0xff); \
114 macb[5] = (u8_t) (macw[2] >> 8);
115
116 #define ZM_MAC_0(macw) ((u8_t)(macw[0] & 0xff))
117 #define ZM_MAC_1(macw) ((u8_t)(macw[0] >> 8))
118 #define ZM_MAC_2(macw) ((u8_t)(macw[1] & 0xff))
119 #define ZM_MAC_3(macw) ((u8_t)(macw[1] >> 8))
120 #define ZM_MAC_4(macw) ((u8_t)(macw[2] & 0xff))
121 #define ZM_MAC_5(macw) ((u8_t)(macw[2] >> 8))
122
123 #define ZM_IS_MULTICAST_OR_BROADCAST(mac) (mac[0] & 0x01)
124 #define ZM_IS_MULTICAST(mac) ((mac[0] & 0x01) && (((u8_t)mac[0]) != 0xFF))
125
126 #define ZM_MAC_EQUAL(mac1, mac2) ((mac1[0]==mac2[0])&&(mac1[1]==mac2[1])&&(mac1[2]==mac2[2]))
127 #define ZM_MAC_NOT_EQUAL(mac1, mac2) ((mac1[0]!=mac2[0])||(mac1[1]!=mac2[1])||(mac1[2]!=mac2[2]))
128 /**********************************************************************************/
129 /* MAC address related mac'ros (end) */
130 /**********************************************************************************/
131 #define ZM_BYTE_TO_WORD(A, B) ((A<<8)+B)
132 #define ZM_ROL32( A, n ) \
133 ( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) )
134 #define ZM_ROR32( A, n ) ZM_ROL32( (A), 32-(n) )
135 #define ZM_LO8(v16) ((u8_t)((v16) & 0xFF))
136 #define ZM_HI8(v16) ((u8_t)(((v16)>>8)&0xFF))
137
138 #ifdef ZM_ENABLE_BUFFER_TRACE
139 extern void zfwBufTrace(zdev_t* dev, zbuf_t *buf, u8_t *functionName);
140 #define ZM_BUFFER_TRACE(dev, buf) zfwBufTrace(dev, buf, __func__);
141 #else
142 #define ZM_BUFFER_TRACE(dev, buf)
143 #endif
144
145 /* notification events to heart beat function */
146 #define ZM_BSSID_LIST_SCAN 0x01
147
148 /* CAM mode */
149 #define ZM_CAM_AP 0x1
150 #define ZM_CAM_STA 0x2
151 #define ZM_CAM_HOST 0x4
152
153 /* finite state machine for adapter */
154 #define ZM_STA_STATE_DISCONNECT 1
155 #define ZM_STA_STATE_CONNECTING 2
156 #define ZM_STA_STATE_CONNECTED 3
157
158 /* Event definitions for finite state machine */
159 #define ZM_EVENT_TIMEOUT_SCAN 0x0000
160 #define ZM_EVENT_TIMEOUT_BG_SCAN 0x0001
161 #define ZN_EVENT_TIMEOUT_RECONNECT 0x0002
162 #define ZM_EVENT_TIMEOUT_INIT_SCAN 0x0003
163 #define ZM_EVENT_TIMEOUT_AUTH 0x0004
164 #define ZM_EVENT_TIMEOUT_ASSO 0x0005
165 #define ZM_EVENT_TIMEOUT_AUTO_SCAN 0x0006
166 #define ZM_EVENT_TIMEOUT_MIC_FAIL 0x0007
167 #define ZM_EVENT_TIMEOUT_CHECK_AP 0x0008
168 #define ZM_EVENT_CONNECT 0x0009
169 #define ZM_EVENT_INIT_SCAN 0x000a
170 #define ZM_EVENT_SCAN 0x000b
171 #define ZM_EVENT_BG_SCAN 0x000c
172 #define ZM_EVENT_DISCONNECT 0x000d
173 #define ZM_EVENT_WPA_MIC_FAIL 0x000e
174 #define ZM_EVENT_AP_ALIVE 0x000f
175 #define ZM_EVENT_CHANGE_TO_AP 0x0010
176 #define ZM_EVENT_CHANGE_TO_STA 0x0011
177 #define ZM_EVENT_IDLE 0x0012
178 #define ZM_EVENT_AUTH 0x0013
179 #define ZM_EVENT_ASSO_RSP 0x0014
180 #define ZM_EVENT_WPA_PK_OK 0x0015
181 #define ZM_EVENT_WPA_GK_OK 0x0016
182 #define ZM_EVENT_RCV_BEACON 0x0017
183 #define ZM_EVENT_RCV_PROBE_RSP 0x0018
184 #define ZM_EVENT_SEND_DATA 0x0019
185 #define ZM_EVENT_AUTO_SCAN 0x001a
186 #define ZM_EVENT_MIC_FAIL1 0x001d
187 #define ZM_EVENT_MIC_FAIL2 0x001e
188 #define ZM_EVENT_IBSS_MONITOR 0x001f
189 #define ZM_EVENT_IN_SCAN 0x0020
190 #define ZM_EVENT_CM_TIMER 0x0021
191 #define ZM_EVENT_CM_DISCONNECT 0x0022
192 #define ZM_EVENT_CM_BLOCK_TIMER 0x0023
193 #define ZM_EVENT_TIMEOUT_ADDBA 0x0024
194 #define ZM_EVENT_TIMEOUT_PERFORMANCE 0x0025
195 #define ZM_EVENT_SKIP_COUNTERMEASURE 0x0026
196 #define ZM_EVENT_NONE 0xffff
197
198 /* Actions after call finite state machine */
199 #define ZM_ACTION_NONE 0x0000
200 #define ZM_ACTION_QUEUE_DATA 0x0001
201 #define ZM_ACTION_DROP_DATA 0x0002
202
203 /* Timers for finite state machine */
204 #define ZM_TICK_ZERO 0
205 #define ZM_TICK_INIT_SCAN_END 8
206 #define ZM_TICK_NEXT_BG_SCAN 50
207 #define ZM_TICK_BG_SCAN_END 8
208 #define ZM_TICK_AUTH_TIMEOUT 4
209 #define ZM_TICK_ASSO_TIMEOUT 4
210 #define ZM_TICK_AUTO_SCAN 300
211 #define ZM_TICK_MIC_FAIL_TIMEOUT 6000
212 #define ZM_TICK_CHECK_AP1 150
213 #define ZM_TICK_CHECK_AP2 350
214 #define ZM_TICK_CHECK_AP3 250
215 #define ZM_TICK_IBSS_MONITOR 160
216 #define ZM_TICK_IN_SCAN 4
217 #define ZM_TICK_CM_TIMEOUT 6000
218 #define ZM_TICK_CM_DISCONNECT 200
219 #define ZM_TICK_CM_BLOCK_TIMEOUT 6000
220
221 /* Fix bug#33338 Counter Measure Issur */
222 #ifdef NDIS_CM_FOR_XP
223 #define ZM_TICK_CM_TIMEOUT_OFFSET 2160
224 #define ZM_TICK_CM_DISCONNECT_OFFSET 72
225 #define ZM_TICK_CM_BLOCK_TIMEOUT_OFFSET 2160
226 #else
227 #define ZM_TICK_CM_TIMEOUT_OFFSET 0
228 #define ZM_TICK_CM_DISCONNECT_OFFSET 0
229 #define ZM_TICK_CM_BLOCK_TIMEOUT_OFFSET 0
230 #endif
231
232 #define ZM_TIME_ACTIVE_SCAN 30 //ms
233 #define ZM_TIME_PASSIVE_SCAN 110 //ms
234
235 /* finite state machine for BSS connect */
236 #define ZM_STA_CONN_STATE_NONE 0
237 #define ZM_STA_CONN_STATE_AUTH_OPEN 1
238 #define ZM_STA_CONN_STATE_AUTH_SHARE_1 2
239 #define ZM_STA_CONN_STATE_AUTH_SHARE_2 3
240 #define ZM_STA_CONN_STATE_ASSOCIATE 4
241 #define ZM_STA_CONN_STATE_SSID_NOT_FOUND 5
242 #define ZM_STA_CONN_STATE_AUTH_COMPLETED 6
243
244 /* finite state machine for WPA handshaking */
245 #define ZM_STA_WPA_STATE_INIT 0
246 #define ZM_STA_WPA_STATE_PK_OK 1
247 #define ZM_STA_WPA_STATE_GK_OK 2
248
249 /* various timers */
250 #define ZM_INTERVAL_CONNECT_TIMEOUT 20 /* 200 milisecond */
251
252 /* IBSS definitions */
253 #define ZM_IBSS_PARTNER_LOST 0
254 #define ZM_IBSS_PARTNER_ALIVE 1
255 #define ZM_IBSS_PARTNER_CHECK 2
256
257 #define ZM_BCMC_ARRAY_SIZE 16 /* Must be 2^N */
258 #define ZM_UNI_ARRAY_SIZE 16 /* Must be 2^N */
259
260 #define ZM_MAX_DEFRAG_ENTRIES 4 /* 2^N */
261 #define ZM_DEFRAG_AGING_TIME_SEC 5 /* 5 seconds */
262
263 #define ZM_MAX_WPAIE_SIZE 128
264 /* WEP related definitions */
265 #define ZM_USER_KEY_DEFAULT 64
266 #define ZM_USER_KEY_PK 0 /* Pairwise Key */
267 #define ZM_USER_KEY_GK 1 /* Group Key */
268 /* AP WLAN Type */
269 #define ZM_WLAN_TYPE_PURE_B 2
270 #define ZM_WLAN_TYPE_PURE_G 1
271 #define ZM_WLAN_TYPE_MIXED 0
272
273 /* HAL State */
274 #define ZM_HAL_STATE_INIT 0
275 #define ZM_HAL_STATE_RUNNING 1
276
277 /* AP Capability */
278 #define ZM_All11N_AP 0x01
279 #define ZM_XR_AP 0x02
280 #define ZM_SuperG_AP 0x04
281
282 /* MPDU Density */
283 #define ZM_MPDU_DENSITY_NONE 0
284 #define ZM_MPDU_DENSITY_1_8US 1
285 #define ZM_MPDU_DENSITY_1_4US 2
286 #define ZM_MPDU_DENSITY_1_2US 3
287 #define ZM_MPDU_DENSITY_1US 4
288 #define ZM_MPDU_DENSITY_2US 5
289 #define ZM_MPDU_DENSITY_4US 6
290 #define ZM_MPDU_DENSITY_8US 7
291
292 /* Software Encryption */
293 #define ZM_SW_TKIP_ENCRY_EN 0x01
294 #define ZM_SW_TKIP_DECRY_EN 0x02
295 #define ZM_SW_WEP_ENCRY_EN 0x04
296 #define ZM_SW_WEP_DECRY_EN 0x08
297
298 /* Default Support Rate */
299 #define ZM_DEFAULT_SUPPORT_RATE_ZERO 0x0
300 #define ZM_DEFAULT_SUPPORT_RATE_DISCONNECT 0x1
301 #define ZM_DEFAULT_SUPPORT_RATE_IBSS_B 0x2
302 #define ZM_DEFAULT_SUPPORT_RATE_IBSS_AG 0x3
303
304 /* security related definitions */
305 struct zsTkipSeed
306 {
307 u8_t tk[32]; /* key */
308 u8_t ta[6];
309 u16_t ttak[5];
310 u16_t ppk[6];
311 u16_t iv16,iv16tmp;
312 u32_t iv32,iv32tmp;
313 };
314
315 struct zsMicVar
316 {
317 u32_t k0, k1; // Key
318 u32_t left, right; // Current state
319 u32_t m; // Message accumulator (single word)
320 u16_t nBytes; // # bytes in M
321 };
322
323 struct zsDefragEntry
324 {
325 u8_t fragCount;
326 u8_t addr[6];
327 u16_t seqNum;
328 zbuf_t* fragment[8];
329 u32_t tick;
330 };
331
332 struct zsDefragList
333 {
334 struct zsDefragEntry defragEntry[ZM_MAX_DEFRAG_ENTRIES];
335 u8_t replaceNum;
336 };
337
338 #define ZM_MAX_OPPOSITE_COUNT 16
339 #define ZM_MAX_TX_SAMPLES 15
340 #define ZM_TX_RATE_DOWN_CRITERIA 80
341 #define ZM_TX_RATE_UP_CRITERIA 200
342
343
344 #define ZM_MAX_PROBE_HIDDEN_SSID_SIZE 2
345 struct zsSsidList
346 {
347 u8_t ssid[32];
348 u8_t ssidLen;
349 };
350
351 struct zsWrapperSetting
352 {
353 u8_t bDesiredBssid;
354 u8_t desiredBssid[6];
355 u16_t bssid[3];
356 u8_t ssid[32];
357 u8_t ssidLen;
358 u8_t authMode;
359 u8_t wepStatus;
360 u8_t encryMode;
361 u8_t wlanMode;
362 u16_t frequency;
363 u16_t beaconInterval;
364 u8_t dtim;
365 u8_t preambleType;
366 u16_t atimWindow;
367
368 struct zsSsidList probingSsidList[ZM_MAX_PROBE_HIDDEN_SSID_SIZE];
369
370 u8_t dropUnencryptedPkts;
371 u8_t ibssJoinOnly;
372 u32_t adhocMode;
373 u8_t countryIsoName[4];
374 u16_t autoSetFrequency;
375
376 /* AP */
377 u8_t bRateBasic;
378 u8_t gRateBasic;
379 u32_t nRateBasic;
380 u8_t bgMode;
381
382 /* Common */
383 u8_t staWmeEnabled;
384 u8_t staWmeQosInfo;
385 u8_t apWmeEnabled;
386
387
388 /* rate information: added in the future */
389 };
390
391 struct zsWrapperFeatureCtrl
392 {
393 u8_t bIbssGMode;
394 };
395
396 #define ZM_MAX_PS_STA 16
397 #define ZM_PS_QUEUE_SIZE 32
398
399 struct zsStaPSEntity
400 {
401 u8_t bUsed;
402 u8_t macAddr[6];
403 u8_t bDataQueued;
404 };
405
406 struct zsStaPSList
407 {
408 u8_t count;
409 struct zsStaPSEntity entity[ZM_MAX_PS_STA];
410 };
411
412 #define ZM_MAX_TIMER_COUNT 32
413
414 /* double linked list */
415 struct zsTimerEntry
416 {
417 u16_t event;
418 u32_t timer;
419 struct zsTimerEntry *pre;
420 struct zsTimerEntry *next;
421 };
422
423 struct zsTimerList
424 {
425 u8_t freeCount;
426 struct zsTimerEntry list[ZM_MAX_TIMER_COUNT];
427 struct zsTimerEntry *head;
428 struct zsTimerEntry *tail;
429 };
430
431 /* Multicast list */
432 #define ZM_MAX_MULTICAST_LIST_SIZE 64
433
434 struct zsMulticastAddr
435 {
436 u8_t addr[6];
437 };
438
439 struct zsMulticastList
440 {
441 u8_t size;
442 struct zsMulticastAddr macAddr[ZM_MAX_MULTICAST_LIST_SIZE];
443 };
444
445 enum ieee80211_cwm_mode {
446 CWM_MODE20,
447 CWM_MODE2040,
448 CWM_MODE40,
449 CWM_MODEMAX
450
451 };
452
453 enum ieee80211_cwm_extprotspacing {
454 CWM_EXTPROTSPACING20,
455 CWM_EXTPROTSPACING25,
456 CWM_EXTPROTSPACINGMAX
457 };
458
459 enum ieee80211_cwm_width {
460 CWM_WIDTH20,
461 CWM_WIDTH40
462 };
463
464 enum ieee80211_cwm_extprotmode {
465 CWM_EXTPROTNONE, /* no protection */
466 CWM_EXTPROTCTSONLY, /* CTS to self */
467 CWM_EXTPROTRTSCTS, /* RTS-CTS */
468 CWM_EXTPROTMAX
469 };
470
471 struct ieee80211_cwm {
472
473 /* Configuration */
474 enum ieee80211_cwm_mode cw_mode; /* CWM mode */
475 u8_t cw_extoffset; /* CWM Extension Channel Offset */
476 enum ieee80211_cwm_extprotmode cw_extprotmode; /* CWM Extension Channel Protection Mode */
477 enum ieee80211_cwm_extprotspacing cw_extprotspacing;/* CWM Extension Channel Protection Spacing */
478 u32_t cw_enable; /* CWM State Machine Enabled */
479 u32_t cw_extbusythreshold;/* CWM Extension Channel Busy Threshold */
480
481 /* State */
482 enum ieee80211_cwm_width cw_width; /* CWM channel width */
483 };
484
485
486 /* AP : STA database structure */
487 struct zsStaTable
488 {
489 u32_t time; /* tick time */
490 //u32_t phyCtrl; /* Tx PHY CTRL */
491 u16_t addr[3]; /* STA MAC address */
492 u16_t state; /* aut/asoc */
493 //u16_t retry; /* Retry count */
494 struct zsRcCell rcCell;
495
496 u8_t valid; /* Valid flag : 1=>valid */
497 u8_t psMode; /* STA power saving mode */
498 u8_t staType; /* 0=>11b, 1=>11g, 2=>11n */
499 u8_t qosType; /* 0=>Legacy, 1=>WME */
500 u8_t qosInfo; /* WME QoS info */
501 u8_t vap; /* Virtual AP ID */
502 u8_t encryMode; /* Encryption type for this STA */
503 u8_t keyIdx;
504 struct zsMicVar txMicKey;
505 struct zsMicVar rxMicKey;
506 u16_t iv16;
507 u32_t iv32;
508 #ifdef ZM_ENABLE_CENC
509 /* CENC */
510 u8_t cencKeyIdx;
511 u32_t txiv[4];
512 u32_t rxiv[4];
513 #endif //ZM_ENABLE_CENC
514 };
515
516 struct zdStructWds
517 {
518 u8_t wdsBitmap; /* Set bit-N to 1 to enable WDS */
519 u8_t encryMode[ZM_MAX_WDS_SUPPORT]; /* WDS encryption mode */
520 u16_t macAddr[ZM_MAX_WDS_SUPPORT][3]; /* WDS neighbor MAC address */
521 };
522
523 // htcapinfo 16bits
524 #define HTCAP_AdvCodingCap 0x0001
525 #define HTCAP_SupChannelWidthSet 0x0002
526 #define HTCAP_DynamicSMPS 0x0004
527 #define HTCAP_SMEnabled 0x000C
528 #define HTCAP_GreenField 0x0010
529 #define HTCAP_ShortGIfor20MHz 0x0020
530 #define HTCAP_ShortGIfor40MHz 0x0040
531 #define HTCAP_TxSTBC 0x0080
532 #define HTCAP_RxOneStream 0x0100
533 #define HTCAP_RxTwoStream 0x0200
534 #define HTCAP_RxThreeStream 0x0300
535 #define HTCAP_DelayedBlockACK 0x0400
536 #define HTCAP_MaxAMSDULength 0x0800
537 #define HTCAP_DSSSandCCKin40MHz 0x1000
538 #define HTCAP_PSMPSup 0x2000
539 #define HTCAP_STBCControlFrameSup 0x4000
540 #define HTCAP_LSIGTXOPProtectionSUP 0x8000
541 // Ampdu HT Parameter Info 8bits
542 #define HTCAP_MaxRxAMPDU0 0x00
543 #define HTCAP_MaxRxAMPDU1 0x01
544 #define HTCAP_MaxRxAMPDU2 0x02
545 #define HTCAP_MaxRxAMPDU3 0x03
546 // PCO 8bits
547 #define HTCAP_PCO 0x01
548 #define HTCAP_TransmissionTime1 0x02
549 #define HTCAP_TransmissionTime2 0x04
550 #define HTCAP_TransmissionTime3 0x06
551 // MCS FeedBack 8bits
552 #define HTCAP_PlusHTCSupport 0x04
553 #define HTCAP_RDResponder 0x08
554 // TX Beamforming 0 8bits
555 #define HTCAP_TxBFCapable 0x01
556 #define HTCAP_RxStaggeredSoundCap 0x02
557 #define HTCAP_TxStaggeredSoundCap 0x04
558 #define HTCAP_RxZLFCapable 0x08
559 #define HTCAP_TxZLFCapable 0x10
560 #define HTCAP_ImplicitTxBFCapable 0x20
561 // Tx Beamforming 1 8bits
562 #define HTCAP_ExplicitCSITxBFCap 0x01
563 #define HTCAP_ExpUncompSteerMatrCap 0x02
564 // Antenna Selection Capabilities 8bits
565 #define HTCAP_AntennaSelectionCap 0x01
566 #define HTCAP_ExplicitCSITxASCap 0x02
567 #define HTCAP_AntennaIndFeeTxASCap 0x04
568 #define HTCAP_ExplicitCSIFeedbackCap 0x08
569 #define HTCAP_AntennaIndFeedbackCap 0x10
570 #define HTCAP_RxASCap 0x20
571 #define HTCAP_TxSoundPPDUsCap 0x40
572
573
574
575 struct zsHTCapability
576 {
577 u8_t ElementID;
578 u8_t Length;
579 // HT Capability Info
580 u16_t HtCapInfo;
581 u8_t AMPDUParam;
582 u8_t MCSSet[16]; //16 bytes
583 // Extended HT Capability Info
584 u8_t PCO;
585 u8_t MCSFeedBack;
586
587 u8_t TxBFCap[4];
588 u8_t AselCap;
589 };
590
591 union zuHTCapability
592 {
593 struct zsHTCapability Data;
594 u8_t Byte[28];
595 };
596
597 //channelinfo 8bits
598 #define ExtHtCap_ExtChannelOffsetAbove 0x01
599 #define ExtHtCap_ExtChannelOffsetBelow 0x03
600 #define ExtHtCap_RecomTxWidthSet 0x04
601 #define ExtHtCap_RIFSMode 0x08
602 #define ExtHtCap_ControlAccessOnly 0x10
603 //operatinginfo 16bits
604 #define ExtHtCap_NonGFDevicePresent 0x0004
605 //beaconinfo 16bits
606 #define ExtHtCap_DualBeacon 0x0040
607 #define ExtHtCap_DualSTBCProtection 0x0080
608 #define ExtHtCap_SecondaryBeacon 0x0100
609 #define ExtHtCap_LSIGTXOPProtectFullSup 0x0200
610 #define ExtHtCap_PCOActive 0x0400
611 #define ExtHtCap_PCOPhase 0x0800
612
613
614 struct zsExtHTCapability
615 {
616 u8_t ElementID;
617 u8_t Length;
618 u8_t ControlChannel;
619 u8_t ChannelInfo;
620 u16_t OperatingInfo;
621 u16_t BeaconInfo;
622 // Supported MCS Set
623 u8_t MCSSet[16];
624 };
625
626 union zuExtHTCapability
627 {
628 struct zsExtHTCapability Data;
629 u8_t Byte[24];
630 };
631
632 struct InformationElementSta {
633 struct zsHTCapability HtCap;
634 struct zsExtHTCapability HtInfo;
635 };
636
637 struct InformationElementAp {
638 struct zsHTCapability HtCap;
639 };
640
641 #define ZM_MAX_FREQ_REQ_QUEUE 32
642 typedef void (*zfpFreqChangeCompleteCb)(zdev_t* dev);
643
644 struct zsWlanDevFreqControl
645 {
646 u16_t freqReqQueue[ZM_MAX_FREQ_REQ_QUEUE];
647 u8_t freqReqBw40[ZM_MAX_FREQ_REQ_QUEUE];
648 u8_t freqReqExtOffset[ZM_MAX_FREQ_REQ_QUEUE];
649 zfpFreqChangeCompleteCb freqChangeCompCb[ZM_MAX_FREQ_REQ_QUEUE];
650 u8_t freqReqQueueHead;
651 u8_t freqReqQueueTail;
652 };
653
654 struct zsWlanDevAp
655 {
656 u16_t protectedObss; /* protected overlap BSS */
657 u16_t staAgingTimeSec; /* in second, STA will be deathed if it does not */
658 /* active for this long time */
659 u16_t staProbingTimeSec;/* in second, STA will be probed if it does not */
660 /* active for this long time */
661 u8_t authSharing; /* authentication on going*/
662 u8_t bStaAssociated; /* 11b STA associated */
663 u8_t gStaAssociated; /* 11g STA associated */
664 u8_t nStaAssociated; /* 11n STA associated */
665 u16_t protectionMode; /* AP protection mode flag */
666 u16_t staPowerSaving; /* Set associated power saving STA count */
667
668
669
670 zbuf_t* uniArray[ZM_UNI_ARRAY_SIZE]; /* array to store unicast frames */
671 u16_t uniHead;
672 u16_t uniTail;
673
674 /* HT Capability Info */
675 union zuHTCapability HTCap; //CWYang(+)
676
677 /* Extended HT Capability Info */
678 union zuExtHTCapability ExtHTCap; //CWYang(+)
679
680 /* STA table */
681 struct zsStaTable staTable[ZM_MAX_STA_SUPPORT];
682
683 /* WDS */
684 struct zdStructWds wds;
685 /* WPA */
686 u8_t wpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_WPAIE_SIZE];
687 u8_t wpaLen[ZM_MAX_AP_SUPPORT];
688 u8_t stawpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_WPAIE_SIZE];
689 u8_t stawpaLen[ZM_MAX_AP_SUPPORT];
690 u8_t wpaSupport[ZM_MAX_AP_SUPPORT];
691
692 //struct zsTkipSeed bcSeed;
693 u8_t bcKeyIndex[ZM_MAX_AP_SUPPORT];
694 u8_t bcHalKeyIdx[ZM_MAX_AP_SUPPORT];
695 struct zsMicVar bcMicKey[ZM_MAX_AP_SUPPORT];
696 u16_t iv16[ZM_MAX_AP_SUPPORT];
697 u32_t iv32[ZM_MAX_AP_SUPPORT];
698
699 #ifdef ZM_ENABLE_CENC
700 /* CENC */
701 u32_t txiv[ZM_MAX_AP_SUPPORT][4];
702 #endif //ZM_ENABLE_CENC
703
704 /* Virtual AP */
705 u8_t beaconCounter;
706 u8_t vapNumber;
707 u8_t apBitmap; /* Set bit-N to 1 to enable VAP */
708 u8_t hideSsid[ZM_MAX_AP_SUPPORT];
709 u8_t authAlgo[ZM_MAX_AP_SUPPORT];
710 u8_t ssid[ZM_MAX_AP_SUPPORT][32]; /* SSID */
711 u8_t ssidLen[ZM_MAX_AP_SUPPORT]; /* SSID length */
712 u8_t encryMode[ZM_MAX_AP_SUPPORT];
713 u8_t wepStatus[ZM_MAX_AP_SUPPORT];
714 u16_t capab[ZM_MAX_AP_SUPPORT]; /* Capability */
715 u8_t timBcmcBit[ZM_MAX_AP_SUPPORT]; /* BMCM bit of TIM */
716 u8_t wlanType[ZM_MAX_AP_SUPPORT];
717
718 /* Array to store BC or MC frames */
719 zbuf_t* bcmcArray[ZM_MAX_AP_SUPPORT][ZM_BCMC_ARRAY_SIZE];
720 u16_t bcmcHead[ZM_MAX_AP_SUPPORT];
721 u16_t bcmcTail[ZM_MAX_AP_SUPPORT];
722
723 u8_t qosMode; /* 1=>WME */
724 u8_t uapsdEnabled;
725 struct zsQueue* uapsdQ;
726
727 u8_t challengeText[128];
728
729 struct InformationElementAp ie[ZM_MAX_STA_SUPPORT];
730
731
732 };
733
734 #define ZM_MAX_BLOCKING_AP_LIST_SIZE 4 /* 2^N */
735 struct zsBlockingAp
736 {
737 u8_t addr[6];
738 u8_t weight;
739 };
740
741 #define ZM_SCAN_MGR_SCAN_NONE 0
742 #define ZM_SCAN_MGR_SCAN_INTERNAL 1
743 #define ZM_SCAN_MGR_SCAN_EXTERNAL 2
744
745 struct zsWlanDevStaScanMgr
746 {
747 u8_t scanReqs[2];
748 u8_t currScanType;
749 u8_t scanStartDelay;
750 };
751
752 #define ZM_PS_MSG_STATE_ACTIVE 0
753 #define ZM_PS_MSG_STATE_SLEEP 1
754 #define ZM_PS_MSG_STATE_T1 2
755 #define ZM_PS_MSG_STATE_T2 3
756 #define ZM_PS_MSG_STATE_S1 4
757
758 #define ZM_PS_MAX_SLEEP_PERIODS 3 // The number of beacon periods
759
760 struct zsWlanDevStaPSMgr
761 {
762 u8_t state;
763 u8_t isSleepAllowed;
764 u8_t maxSleepPeriods;
765 u8_t ticks;
766 u32_t lastTxUnicastFrm;
767 u32_t lastTxMulticastFrm;
768 u32_t lastTxBroadcastFrm;
769 u8_t tempWakeUp; /*enable when wake up but still in ps mode */
770 u16_t sleepAllowedtick;
771 };
772
773 struct zsWlanDevSta
774 {
775 u32_t beaconTxCnt; /* Transmitted beacon counter (in IBSS) */
776 u8_t txBeaconInd; /* In IBSS mode, true means that we just transmit a beacon during
777 last beacon period.
778 */
779 u16_t beaconCnt; /* receive beacon count, will be perodically reset */
780 u16_t bssid[3]; /* BSSID of connected AP */
781 u8_t ssid[32]; /* SSID */
782 u8_t ssidLen; /* SSID length */
783 u8_t mTxRate; /* Tx rate for multicast */
784 u8_t uTxRate; /* Tx rate for unicast */
785 u8_t mmTxRate; /* Tx rate for management frame */
786 u8_t bChannelScan;
787 u8_t bScheduleScan;
788
789 u8_t InternalScanReq;
790 u16_t activescanTickPerChannel;
791 u16_t passiveScanTickPerChannel;
792 u16_t scanFrequency;
793 u32_t connPowerInHalfDbm;
794
795 u16_t currentFrequency;
796 u16_t currentBw40;
797 u16_t currentExtOffset;
798
799 u8_t bPassiveScan;
800
801 struct zsBlockingAp blockingApList[ZM_MAX_BLOCKING_AP_LIST_SIZE];
802
803 //struct zsBssInfo bssInfoPool[ZM_MAX_BSS];
804 struct zsBssInfo* bssInfoArray[ZM_MAX_BSS];
805 struct zsBssList bssList;
806 u8_t bssInfoArrayHead;
807 u8_t bssInfoArrayTail;
808 u8_t bssInfoFreeCount;
809
810 u8_t authMode;
811 u8_t currentAuthMode;
812 u8_t wepStatus;
813 u8_t encryMode;
814 u8_t keyId;
815 #ifdef ZM_ENABLE_IBSS_WPA2PSK
816 u8_t ibssWpa2Psk;
817 #endif
818 #ifdef ZM_ENABLE_CENC
819 u8_t cencKeyId; //CENC
820 #endif //ZM_ENABLE_CENC
821 u8_t dropUnencryptedPkts;
822 u8_t ibssJoinOnly;
823 u8_t adapterState;
824 u8_t oldAdapterState;
825 u8_t connectState;
826 u8_t connectRetry;
827 u8_t wpaState;
828 u8_t wpaIe[ZM_MAX_IE_SIZE + 2];
829 u8_t rsnIe[ZM_MAX_IE_SIZE + 2];
830 u8_t challengeText[255+2];
831 u8_t capability[2];
832 //u8_t connectingHiddenAP;
833 //u8_t scanWithSSID;
834 u16_t aid;
835 u32_t mgtFrameCount;
836 u8_t bProtectionMode;
837 u32_t NonNAPcount;
838 u8_t RTSInAGGMode;
839 u32_t connectTimer;
840 u16_t atimWindow;
841 u8_t desiredBssid[6];
842 u8_t bDesiredBssid;
843 struct zsTkipSeed txSeed;
844 struct zsTkipSeed rxSeed[4];
845 struct zsMicVar txMicKey;
846 struct zsMicVar rxMicKey[4];
847 u16_t iv16;
848 u32_t iv32;
849 struct zsOppositeInfo oppositeInfo[ZM_MAX_OPPOSITE_COUNT];
850 u8_t oppositeCount;
851 u8_t bssNotFoundCount; /* sitesurvey for search desired ISBB threshold */
852 u16_t rxBeaconCount;
853 u8_t beaconMissState;
854 u32_t rxBeaconTotal;
855 u8_t bIsSharedKey;
856 u8_t connectTimeoutCount;
857
858 u8_t recvAtim;
859
860 /* ScanMgr Control block */
861 struct zsWlanDevStaScanMgr scanMgr;
862 struct zsWlanDevStaPSMgr psMgr;
863
864 // The callback would be called if receiving an unencrypted packets but
865 // the station is in encrypted mode. The wrapper could decide whether
866 // to drop the packet by its OS setting.
867 zfpStaRxSecurityCheckCb pStaRxSecurityCheckCb;
868
869 /* WME */
870 u8_t apWmeCapability; //bit-0 => a WME AP
871 //bit-7 => a UAPSD AP
872 u8_t wmeParameterSetCount;
873
874 u8_t wmeEnabled;
875 #define ZM_STA_WME_ENABLE_BIT 0x1
876 #define ZM_STA_UAPSD_ENABLE_BIT 0x2
877 u8_t wmeQosInfo;
878
879 u8_t wmeConnected;
880 u8_t qosInfo;
881 struct zsQueue* uapsdQ;
882
883 /* countermeasures */
884 u8_t cmMicFailureCount;
885 u8_t cmDisallowSsidLength;
886 u8_t cmDisallowSsid[32];
887
888 /* power-saving mode */
889 u8_t powerSaveMode;
890 zbuf_t* staPSDataQueue[ZM_PS_QUEUE_SIZE];
891 u8_t staPSDataCount;
892
893 /* IBSS power-saving mode */
894 /* record the STA which has entered the PS mode */
895 struct zsStaPSList staPSList;
896 /* queue the data of the PS STAs */
897 zbuf_t* ibssPSDataQueue[ZM_PS_QUEUE_SIZE];
898 u8_t ibssPSDataCount;
899 u8_t ibssPrevPSDataCount;
900 u8_t bIbssPSEnable;
901 /* BIT_15: ON/OFF, BIT_0~14: Atim Timer */
902 u16_t ibssAtimTimer;
903
904 /* WPA2 */
905 struct zsPmkidInfo pmkidInfo;
906
907 /* Multicast list related objects */
908 struct zsMulticastList multicastList;
909
910 /* XP packet filter feature : */
911 /* 1=>enable: All multicast address packets, not just the ones enumerated in the multicast address list. */
912 /* 0=>disable */
913 u8_t bAllMulticast;
914
915 /* reassociation flag */
916 u8_t connectByReasso;
917 u8_t failCntOfReasso;
918
919 /* for HT configure control setting */
920 u8_t preambleTypeHT; /* HT: 0 Mixed mode 1 Green field */
921 u8_t htCtrlBandwidth;
922 u8_t htCtrlSTBC;
923 u8_t htCtrlSG;
924 u8_t defaultTA;
925
926 u8_t connection_11b;
927
928 u8_t EnableHT;
929 u8_t SG40;
930 u8_t HT2040;
931 /* for WPA setting */
932 u8_t wpaSupport;
933 u8_t wpaLen;
934
935 /* IBSS related objects */
936 u8_t ibssDelayedInd;
937 struct zsPartnerNotifyEvent ibssDelayedIndEvent;
938 u8_t ibssPartnerStatus;
939
940 u8_t bAutoReconnect;
941
942 u8_t flagFreqChanging;
943 u8_t flagKeyChanging;
944 struct zsBssInfo ibssBssDesc;
945 u8_t ibssBssIsCreator;
946 u16_t ibssReceiveBeaconCount;
947 u8_t ibssSiteSurveyStatus;
948
949 u8_t disableProbingWithSsid;
950 #ifdef ZM_ENABLE_CENC
951 /* CENC */
952 u8_t cencIe[ZM_MAX_IE_SIZE + 2];
953 #endif //ZM_ENABLE_CENC
954 u32_t txiv[4]; //Tx PN Sequence
955 u32_t rxiv[4]; //Rx PN Sequence
956 u32_t rxivGK[4];//Broadcast Rx PN Sequence
957 u8_t wepKey[4][32]; // For Software WEP
958 u8_t SWEncryMode[4];
959
960 /* 802.11d */
961 u8_t b802_11D;
962
963 /* 802.11h */
964 u8_t TPCEnable;
965 u8_t DFSEnable;
966 u8_t DFSDisableTx;
967
968 /* Owl AP */
969 u8_t athOwlAp;
970
971 /* Enable BA response in driver */
972 u8_t enableDrvBA;
973
974 /* HT Capability Info */
975 union zuHTCapability HTCap; //CWYang(+)
976
977 /* Extended HT Capability Info */
978 union zuExtHTCapability ExtHTCap; //CWYang(+)
979
980 struct InformationElementSta ie;
981
982 #define ZM_CACHED_FRAMEBODY_SIZE 200
983 u8_t asocReqFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
984 u16_t asocReqFrameBodySize;
985 u8_t asocRspFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
986 u16_t asocRspFrameBodySize;
987 u8_t beaconFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
988 u16_t beaconFrameBodySize;
989
990 u8_t ac0PriorityHigherThanAc2;
991 u8_t SWEncryptEnable;
992
993 u8_t leapEnabled;
994
995 u32_t TotalNumberOfReceivePackets;
996 u32_t TotalNumberOfReceiveBytes;
997 u32_t avgSizeOfReceivePackets;
998
999 u32_t ReceivedPacketRateCounter;
1000 u32_t ReceivedPktRatePerSecond;
1001
1002 /* #2 Record the sequence number to determine whether the unicast frame is separated by RIFS or not */
1003 #define ZM_RIFS_STATE_DETECTING 0
1004 #define ZM_RIFS_STATE_DETECTED 1
1005 #define ZM_RIFS_TIMER_TIMEOUT 4480 // <Driver time>4480ms <Real time>7s
1006 u8_t rifsState;
1007 u8_t rifsLikeFrameCnt;
1008 u16_t rifsLikeFrameSequence[3];
1009 u32_t rifsTimer;
1010 u32_t rifsCount;
1011
1012 /* RX filter desired by upper layers. Note this contains some bits which must be filtered
1013 by sw since the hw supports only a subset of possible filter actions.= */
1014 u32_t osRxFilter;
1015
1016 u8_t bSafeMode;
1017
1018 u32_t ibssAdditionalIESize;
1019 u8_t ibssAdditionalIE[256];
1020 }; //struct zsWlanDevSta
1021
1022 #define ZM_CMD_QUEUE_SIZE 256 //Roger Check, test 64 when ready
1023
1024 #define ZM_OID_READ 1
1025 #define ZM_OID_WRITE 2
1026 #define ZM_OID_INTERNAL_WRITE 3
1027 #define ZM_CMD_SET_FREQUENCY 4
1028 #define ZM_CMD_SET_KEY 5
1029 #define ZM_CWM_READ 6
1030 #define ZM_MAC_READ 7
1031 #define ZM_ANI_READ 8
1032 #define ZM_EEPROM_READ 9
1033 #define ZM_EEPROM_WRITE 0x0A
1034 #define ZM_OID_CHAN 0x30
1035 #define ZM_OID_SYNTH 0x32
1036 #define ZM_OID_TALLY 0x81
1037 #define ZM_OID_TALLY_APD 0x82
1038
1039 #define ZM_OID_DKTX_STATUS 0x92
1040 #define ZM_OID_FLASH_CHKSUM 0xD0
1041 #define ZM_OID_FLASH_READ 0xD1
1042 #define ZM_OID_FLASH_PROGRAM 0xD2
1043 #define ZM_OID_FW_DL_INIT 0xD3
1044
1045 /* Driver to Firmware OID */
1046 #define ZM_CMD_ECHO 0x80
1047 #define ZM_CMD_TALLY 0x81
1048 #define ZM_CMD_TALLY_APD 0x82
1049 #define ZM_CMD_CONFIG 0x83
1050 #define ZM_CMD_RREG 0x00
1051 #define ZM_CMD_WREG 0x01
1052 #define ZM_CMD_RMEM 0x02
1053 #define ZM_CMD_WMEM 0x03
1054 #define ZM_CMD_BITAND 0x04
1055 #define ZM_CMD_BITOR 0x05
1056 #define ZM_CMD_EKEY 0x28
1057 #define ZM_CMD_DKEY 0x29
1058 #define ZM_CMD_FREQUENCY 0x30
1059 #define ZM_CMD_RF_INIT 0x31
1060 #define ZM_CMD_SYNTH 0x32
1061 #define ZM_CMD_FREQ_STRAT 0x33
1062 #define ZM_CMD_RESET 0x90
1063 #define ZM_CMD_DKRESET 0x91
1064 #define ZM_CMD_DKTX_STATUS 0x92
1065 #define ZM_CMD_FDC 0xA0
1066 #define ZM_CMD_WREEPROM 0xB0
1067 #define ZM_CMD_WFLASH 0xB0
1068 #define ZM_CMD_FLASH_ERASE 0xB1
1069 #define ZM_CMD_FLASH_PROG 0xB2
1070 #define ZM_CMD_FLASH_CHKSUM 0xB3
1071 #define ZM_CMD_FLASH_READ 0xB4
1072 #define ZM_CMD_FW_DL_INIT 0xB5
1073 #define ZM_CMD_MEM_WREEPROM 0xBB
1074
1075
1076 /* duplicate filter table column */
1077 #define ZM_FILTER_TABLE_COL 2 /* 2^n */
1078 /* duplicate filter table Row */
1079 #define ZM_FILTER_TABLE_ROW 8 /* 2^n */
1080
1081 /* duplicate filter table structure */
1082 struct zsRxFilter
1083 {
1084 u16_t addr[3];
1085 u16_t seq;
1086 u8_t up;
1087 };
1088
1089 struct zsWlanDev
1090 {
1091 /* AP global variables */
1092 struct zsWlanDevAp ap;
1093 /* STA global variables */
1094 struct zsWlanDevSta sta;
1095 /* save wrapper setting */
1096 struct zsWrapperSetting ws;
1097 /* features determined by wrapper (vendor) */
1098 struct zsWrapperFeatureCtrl wfc;
1099 /* Traffic Monitor tally */
1100 struct zsTrafTally trafTally;
1101 /* Communication tally */
1102 struct zsCommTally commTally;
1103 /* Duplicate frame filter table */
1104 struct zsRxFilter rxFilterTbl[ZM_FILTER_TABLE_COL][ZM_FILTER_TABLE_ROW];
1105 /* Regulatory table */
1106 struct zsRegulationTable regulationTable;
1107
1108 /* */
1109 struct zsWlanDevFreqControl freqCtrl;
1110
1111 enum devState state;
1112
1113 u8_t halState;
1114 u8_t wlanMode; /* AP/INFRASTRUCTURE/IBSS/PSEUDO */
1115 u16_t macAddr[3]; /* MAC address */
1116 u16_t beaconInterval; /* beacon Interval */
1117 u8_t dtim; /* DTIM period */
1118 u8_t CurrentDtimCount;
1119 u8_t preambleType;
1120 u8_t preambleTypeInUsed;
1121 u8_t maxTxPower2; /* 2.4 GHz Max Tx power (Unit: 0.5 dBm) */
1122 u8_t maxTxPower5; /* 5 GHz Max Tx power (Unit: 0.5 dBm) */
1123 u8_t connectMode;
1124 u32_t supportMode;
1125
1126 u8_t bRate; /* 11b Support Rate bit map */
1127 u8_t bRateBasic; /* 11b Basic Rate bit map */
1128 u8_t gRate; /* 11g Support Rate bit map */
1129 u8_t gRateBasic; /* 11g Basic Rate bit map */
1130 /* channel index point to the item in regulation table */
1131 u8_t channelIndex;
1132
1133 /* channel management */
1134 u8_t BandWidth40;
1135 u8_t ExtOffset; //1 above, 3 below, 0 not present
1136 u16_t frequency; /* operation frequency */
1137
1138 u8_t erpElement; /* ERP information element data */
1139
1140 u8_t disableSelfCts; /* set to 1 to disable Self-CTS */
1141 u8_t bgMode;
1142
1143 /* private test flag */
1144 u32_t enableProtectionMode; /* force enable/disable self cts */
1145 u32_t checksumTest; /* OTUS checksum test 1=>zero checksum 0=>normal */
1146 u32_t rxPacketDump; /* rx packet dump */
1147
1148 u8_t enableAggregation; /* force enable/disable A-MSPU */
1149 u8_t enableWDS; /* force enable/disable WDS testing */
1150 u8_t enableTxPathMode; /* OTUS special testing mode 1=>diable, 0=>enable: ZM_SYSTEM_TEST_MODE */
1151 u8_t enableHALDbgInfo; /* */
1152
1153 u32_t forceTxTPC; /* force tx packet send TPC */
1154
1155 u16_t seq[4];
1156 u16_t mmseq;
1157
1158 /* driver core time tick */
1159 u32_t tick;
1160 u16_t tickIbssSendBeacon;
1161 u16_t tickIbssReceiveBeacon;
1162
1163 /* RTS threshold */
1164 u16_t rtsThreshold;
1165
1166 /* fragmentation threshold, 256 <= value <= 2346, 0=disabled */
1167 u16_t fragThreshold;
1168
1169 /* Tx Rate */
1170 u16_t txMCS;
1171 u16_t txMT;
1172 u32_t CurrentTxRateKbps; //CWYang(+)
1173 /* Rx Rate */
1174 u32_t CurrentRxRateKbps; //Janet(+)
1175 u8_t CurrentRxRateUpdated;
1176 u8_t modulationType;
1177 u8_t rxInfo;
1178 u16_t rateField;
1179
1180 /* timer related objects */
1181 struct zsTimerList timerList;
1182 u8_t bTimerReady;
1183
1184 /* for defragmentation */
1185 struct zsDefragList defragTable;
1186
1187 /* Data struct for Interface Dependent Layer */
1188 //struct zsIdlStruct idlStruct;
1189
1190 /* Signal Strength/Quality Related Parameters */
1191 u8_t SignalStrength; //CWYang(+)
1192 u8_t SignalQuality; //CWYang(+)
1193
1194
1195
1196 /* QoS */
1197 zbuf_t* vtxq[4][ZM_VTXQ_SIZE];
1198 u16_t vtxqHead[4];
1199 u16_t vtxqTail[4];
1200 u16_t qosDropIpFrag[4];
1201
1202 /* Management Tx queue */
1203 zbuf_t* vmmq[ZM_VMMQ_SIZE];
1204 u16_t vmmqHead;
1205 u16_t vmmqTail;
1206
1207 u8_t vtxqPushing;
1208
1209 /*
1210 * add by honda
1211 * 1. Aggregate queues
1212 * 2. STA's associated information and queue number
1213 * 3. rx aggregation re-ordering queue
1214 */
1215 struct aggQueue *aggQPool[ZM_AGG_POOL_SIZE];
1216 u8_t aggInitiated;
1217 u8_t addbaComplete;
1218 u8_t addbaCount;
1219 u8_t aggState;
1220 u8_t destLock;
1221 struct aggSta aggSta[ZM_MAX_STA_SUPPORT];
1222 struct agg_tid_rx *tid_rx[ZM_AGG_POOL_SIZE];
1223 struct aggTally agg_tal;
1224 struct destQ destQ;
1225 struct baw_enabler *baw_enabler;
1226 struct ieee80211_cwm cwm;
1227 u16_t reorder;
1228 u16_t seq_debug;
1229 /* rate control */
1230 u32_t txMPDU[ZM_RATE_TABLE_SIZE];
1231 u32_t txFail[ZM_RATE_TABLE_SIZE];
1232 u32_t PER[ZM_RATE_TABLE_SIZE];
1233 u16_t probeCount;
1234 u16_t probeSuccessCount;
1235 u16_t probeInterval;
1236 u16_t success_probing;
1237 /*
1238 * end of add by honda
1239 */
1240
1241 /* airopeek sniffer mode for upper sw */
1242 u32_t swSniffer; /* window: airoPeek */
1243 u32_t XLinkMode;
1244
1245 /* MDK mode */
1246 /* init by 0=>normal driver 1=>MDK driver */
1247 u32_t modeMDKEnable;
1248
1249 u32_t heartBeatNotification;
1250
1251 /* pointer for HAL Plus private memory */
1252 void* hpPrivate;
1253
1254 /* for WPA setting */
1255 //u8_t wpaSupport[ZM_MAX_AP_SUPPORT];
1256 //u8_t wpaLen[ZM_MAX_AP_SUPPORT];
1257 //u8_t wpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_IE_SIZE];
1258
1259 struct zsLedStruct ledStruct;
1260
1261 /* ani flag */
1262 u8_t aniEnable;
1263 u16_t txq_threshold;
1264
1265 //Skip Mic Error Check
1266 u8_t TKIP_Group_KeyChanging;
1267
1268 u8_t dynamicSIFSEnable;
1269
1270 u8_t queueFlushed;
1271
1272 u16_t (*zfcbAuthNotify)(zdev_t* dev, u16_t* macAddr);
1273 u16_t (*zfcbAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body, u16_t bodySize, u16_t port);
1274 u16_t (*zfcbDisAsocNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
1275 u16_t (*zfcbApConnectNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
1276 void (*zfcbConnectNotify)(zdev_t* dev, u16_t status, u16_t* bssid);
1277 void (*zfcbScanNotify)(zdev_t* dev, struct zsScanResult* result);
1278 void (*zfcbMicFailureNotify)(zdev_t* dev, u16_t* addr, u16_t status);
1279 void (*zfcbApMicFailureNotify)(zdev_t* dev, u8_t* addr, zbuf_t* buf);
1280 void (*zfcbIbssPartnerNotify)(zdev_t* dev, u16_t status, struct zsPartnerNotifyEvent *event);
1281 void (*zfcbMacAddressNotify)(zdev_t* dev, u8_t* addr);
1282 void (*zfcbSendCompleteIndication)(zdev_t* dev, zbuf_t* buf);
1283 void (*zfcbRecvEth)(zdev_t* dev, zbuf_t* buf, u16_t port);
1284 void (*zfcbRecv80211)(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo);
1285 void (*zfcbRestoreBufData)(zdev_t* dev, zbuf_t* buf);
1286 #ifdef ZM_ENABLE_CENC
1287 u16_t (*zfcbCencAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body,
1288 u16_t bodySize, u16_t port);
1289 #endif //ZM_ENABLE_CENC
1290 u8_t (*zfcbClassifyTxPacket)(zdev_t* dev, zbuf_t* buf);
1291 void (*zfcbHwWatchDogNotify)(zdev_t* dev);
1292 };
1293
1294
1295 struct zsWlanKey
1296 {
1297 u8_t key;
1298 };
1299
1300
1301 /* These macros are defined here for backward compatibility */
1302 /* Please leave them alone */
1303 /* For Tx packet allocated in upper layer layer */
1304 #define zmw_tx_buf_readb(dev, buf, offset) zmw_buf_readb(dev, buf, offset)
1305 #define zmw_tx_buf_readh(dev, buf, offset) zmw_buf_readh(dev, buf, offset)
1306 #define zmw_tx_buf_writeb(dev, buf, offset, value) zmw_buf_writeb(dev, buf, offset, value)
1307 #define zmw_tx_buf_writeh(dev, buf, offset, value) zmw_buf_writeh(dev, buf, offset, value)
1308
1309 /* For Rx packet allocated in driver */
1310 #define zmw_rx_buf_readb(dev, buf, offset) zmw_buf_readb(dev, buf, offset)
1311 #define zmw_rx_buf_readh(dev, buf, offset) zmw_buf_readh(dev, buf, offset)
1312 #define zmw_rx_buf_writeb(dev, buf, offset, value) zmw_buf_writeb(dev, buf, offset, value)
1313 #define zmw_rx_buf_writeh(dev, buf, offset, value) zmw_buf_writeh(dev, buf, offset, value)
1314
1315 #endif /* #ifndef _STRUCT_H */
This page took 0.058431 seconds and 5 git commands to generate.