summaryrefslogtreecommitdiffstats
path: root/drivers/staging/otus/80211core/wlan.h
blob: 26c18b837cfced36c8bc95ac1f5e0bf02427cfa6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
/*
 * Copyright (c) 2007-2008 Atheros Communications Inc.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
/*                                                                      */
/*  Module Name : wlan_defs.h                                           */
/*                                                                      */
/*  Abstract                                                            */
/*      This module contains WLAN definitions.                          */
/*                                                                      */
/*  NOTES                                                               */
/*      None                                                            */
/*                                                                      */
/************************************************************************/

#ifndef _WLAN_H
#define _WLAN_H


#define ZM_EXTERNAL_ALLOC_BUF               0
#define ZM_INTERNAL_ALLOC_BUF               1

#define ZM_SIZE_OF_CTRL_SET                 8
#define ZM_SIZE_OF_IV                       4
#define ZM_SIZE_OF_EXT_IV                   4
#define ZM_SIZE_OF_MIC                      8
#define ZM_SIZE_OF_CCX_MIC                  8
#define ZM_SIZE_OF_WLAN_DATA_HEADER         24
#define ZM_SIZE_OF_QOS_CTRL                 2

/* Header definition */
#define ZM_SIZE_OF_WLAN_WDS_HEADER          32
#define ZM_SIZE_OF_SNAP_HEADER              8

#define ZM_WLAN_HEADER_A1_OFFSET            4
#define ZM_WLAN_HEADER_A2_OFFSET            10
#define ZM_WLAN_HEADER_A3_OFFSET            16
#define ZM_WLAN_HEADER_A4_OFFSET            24
#define ZM_WLAN_HEADER_IV_OFFSET            24
#define ZM_SIZE_OF_WLAN_DATA_HEADER         24

/* Port definition */
#define ZM_PORT_DISABLED                    0
#define ZM_PORT_ENABLED                     1

/* Frame Type */
#define ZM_WLAN_MANAGEMENT_FRAME            0x0
#define ZM_WLAN_CONTROL_FRAME               0x4
#define ZM_WLAN_DATA_FRAME                  0x8

/* Frame Subtype */
#define ZM_WLAN_FRAME_TYPE_ASOCREQ          0x00
#define ZM_WLAN_FRAME_TYPE_ASOCRSP          0x10
#define ZM_WLAN_FRAME_TYPE_REASOCREQ        0x20
#define ZM_WLAN_FRAME_TYPE_REASOCRSP        0x30
#define ZM_WLAN_FRAME_TYPE_PROBEREQ         0x40
#define ZM_WLAN_FRAME_TYPE_PROBERSP         0x50
/* 0x60, 0x70 => Reserved */
#define ZM_WLAN_FRAME_TYPE_BEACON           0x80
#define ZM_WLAN_FRAME_TYPE_ATIM             0x90
#define ZM_WLAN_FRAME_TYPE_DISASOC          0xA0
#define ZM_WLAN_FRAME_TYPE_AUTH             0xB0
#define ZM_WLAN_FRAME_TYPE_DEAUTH           0xC0
#define ZM_WLAN_FRAME_TYPE_ACTION			0xD0

/* Frame type and subtype */
#define ZM_WLAN_FRAME_TYPE_NULL             0x48
#define ZM_WLAN_FRAME_TYPE_BAR              0x84
#define ZM_WLAN_FRAME_TYPE_BA               0x94
#define ZM_WLAN_FRAME_TYPE_PSPOLL           0xA4
#define ZM_WLAN_FRAME_TYPE_RTS              0xB4
#define ZM_WLAN_FRAME_TYPE_CTS              0xC4
#define ZM_WLAN_FRAME_TYPE_QOS_NULL         0xC8

/* action frame */
#define ZM_WLAN_SPECTRUM_MANAGEMENT_ACTION_FRAME    0
#define ZM_WLAN_QOS_ACTION_FRAME            1
#define ZM_WLAN_DLS_ACTION_FRAME            2
#define ZM_WLAN_BLOCK_ACK_ACTION_FRAME      3
/* block ack action frame*/
#define ZM_WLAN_ADDBA_REQUEST_FRAME         0
#define ZM_WLAN_ADDBA_RESPONSE_FRAME        1
#define ZM_WLAN_DELBA_FRAME                 2

/* Element ID */
#define ZM_WLAN_EID_SSID                    0
#define ZM_WLAN_EID_SUPPORT_RATE            1
#define ZM_WLAN_EID_FH                      2
#define ZM_WLAN_EID_DS                      3
#define ZM_WLAN_EID_CFS                     4
#define ZM_WLAN_EID_TIM                     5
#define ZM_WLAN_EID_IBSS                    6
#define ZM_WLAN_EID_COUNTRY                 7
/* reserved 8-15 */
#define ZM_WLAN_EID_CHALLENGE               16
/* reserved 17-31 */
#define ZM_WLAN_EID_POWER_CONSTRAINT        32
#define ZM_WLAN_EID_POWER_CAPABILITY        33
#define ZM_WLAN_EID_TPC_REQUEST             34
#define ZM_WLAN_EID_TPC_REPORT              35
#define ZM_WLAN_EID_SUPPORTED_CHANNELS      36
#define ZM_WLAN_EID_CHANNEL_SWITCH_ANNOUNCE 37
#define ZM_WLAN_EID_MEASUREMENT_REQUEST     38
#define ZM_WLAN_EID_MEASUREMENT_REPORT      39
#define ZM_WLAN_EID_QUIET                   40
#define ZM_WLAN_EID_IBSS_DFS                41
#define ZM_WLAN_EID_ERP                     42
#define ZM_WLAN_PREN2_EID_HTCAPABILITY      45
#define ZM_WLAN_EID_RSN_IE                  48
#define ZM_WLAN_EID_EXTENDED_RATE           50
#define ZM_WLAN_EID_HT_CAPABILITY           51
#define ZM_WLAN_EID_EXTENDED_HT_CAPABILITY  52
#define ZM_WLAN_EID_NEW_EXT_CHANNEL_OFFSET  53
#define ZM_WLAN_PREN2_EID_HTINFORMATION     61
#define ZM_WLAN_PREN2_EID_SECONDCHOFFSET    62
#ifdef ZM_ENABLE_CENC
#define ZM_WLAN_EID_CENC_IE                 68
#endif //ZM_ENABLE_CENC
#define ZM_WLAN_EID_VENDOR_PRIVATE          221     /* Vendor private space; must demux OUI */
#define ZM_WLAN_EID_WPA_IE                  221
#define ZM_WLAN_EID_WPS_IE                  221
#define ZM_WLAN_EID_WIFI_IE                 221

/* ERP information element */
#define ZM_WLAN_NON_ERP_PRESENT_BIT         0x1
#define ZM_WLAN_USE_PROTECTION_BIT          0x2
#define ZM_WLAN_BARKER_PREAMBLE_MODE_BIT    0x4

/* Channel frequency, in MHz */
#define ZM_CH_G_1                          2412
#define ZM_CH_G_2                          2417
#define ZM_CH_G_3                          2422
#define ZM_CH_G_4                          2427
#define ZM_CH_G_5                          2432
#define ZM_CH_G_6                          2437
#define ZM_CH_G_7                          2442
#define ZM_CH_G_8                          2447
#define ZM_CH_G_9                          2452
#define ZM_CH_G_10                         2457
#define ZM_CH_G_11                         2462
#define ZM_CH_G_12                         2467
#define ZM_CH_G_13                         2472
#define ZM_CH_G_14                         2484
#define ZM_CH_A_184                        4920
#define ZM_CH_A_188                        4940
#define ZM_CH_A_192                        4960
#define ZM_CH_A_196                        4980
#define ZM_CH_A_8                          5040
#define ZM_CH_A_12                         5060
#define ZM_CH_A_16                         5080
#define ZM_CH_A_36                         5180
#define ZM_CH_A_40                         5200
#define ZM_CH_A_44                         5220
#define ZM_CH_A_48                         5240
#define ZM_CH_A_52                         5260
#define ZM_CH_A_56                         5280
#define ZM_CH_A_60                         5300
#define ZM_CH_A_64                         5320
#define ZM_CH_A_100                        5500
#define ZM_CH_A_104                        5520
#define ZM_CH_A_108                        5540
#define ZM_CH_A_112                        5560
#define ZM_CH_A_116                        5580
#define ZM_CH_A_120                        5600
#define ZM_CH_A_124                        5620
#define ZM_CH_A_128                        5640
#define ZM_CH_A_132                        5660
#define ZM_CH_A_136                        5680
#define ZM_CH_A_140                        5700
#define ZM_CH_A_149                        5745
#define ZM_CH_A_153                        5765
#define ZM_CH_A_157                        5785
#define ZM_CH_A_161                        5805
#define ZM_CH_A_165                        5825


/* AP : STA table => STA Type */
#define ZM_11B_STA                          0x0
#define ZM_11G_STA                          0x2
#define ZM_11N_STA                          0x4

/* AP : timeout */
#define ZM_MS_PER_TICK                      10
#define ZM_TICK_PER_SECOND                  (1000/ZM_MS_PER_TICK)
#define ZM_TICK_PER_MINUTE                  (60*1000/ZM_MS_PER_TICK)
#define ZM_PREAUTH_TIMEOUT_MS               1000 /* 1 sec */
#define ZM_AUTH_TIMEOUT_MS                  1000 /* 1 sec */

/* Error code */
#define ZM_SUCCESS                          0
#define ZM_ERR_TX_PORT_DISABLED             1
#define ZM_ERR_BUFFER_DMA_ADDR              2
#define ZM_ERR_FREE_TXD_EXHAUSTED           3
#define ZM_ERR_TX_BUFFER_UNAVAILABLE        4
#define ZM_ERR_BCMC_PS_BUFFER_UNAVAILABLE   5
#define ZM_ERR_UNI_PS_BUFFER_UNAVAILABLE    6
#define ZM_ERR_EXCEED_PRIORITY_THRESHOLD    7
#define ZM_ERR_VMMQ_FULL                    8
#define ZM_ERR_FLUSH_PS_QUEUE               9
#define ZM_ERR_CMD_INT_MISSED               15 /* Polling cmd int timeout*/
/* Rx */
#define ZM_ERR_RX_FRAME_TYPE                20
#define ZM_ERR_MIN_RX_ENCRYPT_FRAME_LENGTH  21
#define ZM_ERR_MIN_RX_FRAME_LENGTH          22
#define ZM_ERR_MAX_RX_FRAME_LENGTH          23
#define ZM_ERR_RX_DUPLICATE                 24
#define ZM_ERR_RX_SRC_ADDR_IS_OWN_MAC       25
#define ZM_ERR_MIN_RX_PROTOCOL_VERSION      26
#define ZM_ERR_WPA_GK_NOT_INSTALLED         27
#define ZM_ERR_STA_NOT_ASSOCIATED           28
#define ZM_ERR_DATA_BEFORE_CONNECTED        29
#define ZM_ERR_DATA_NOT_ENCRYPTED           30
#define ZM_ERR_DATA_BSSID_NOT_MATCHED       31
#define ZM_ERR_RX_BAR_FRAME                 32
#define ZM_ERR_OUT_OF_ORDER_NULL_DATA       33

/* ZFI */
#define ZM_ERR_INVALID_TX_RATE              40
#define ZM_ERR_WDS_PORT_ID                  41

/* QUEUE */
#define ZM_ERR_QUEUE_FULL                   50
#define ZM_ERR_STA_UAPSD_QUEUE_FULL         51
#define ZM_ERR_AP_UAPSD_QUEUE_FULL          52

/* Maximum Rx frame length */
#if ZM_LARGEPAYLOAD_TEST == 1
#define ZM_WLAN_MAX_RX_SIZE                 16384
#else
#define ZM_WLAN_MAX_RX_SIZE                 8192
#endif

/* PCI DMA test error code */
#define ZM_ERR_INTERRUPT_MISSED             100
#define ZM_ERR_OWN_BIT_NOT_CLEARED          101
#define ZM_ERR_RX_SEQ_NUMBER                102
#define ZM_ERR_RX_LENGTH                    103
#define ZM_ERR_RX_DATA                      104
#define ZM_ERR_RX_DESCRIPTOR_NUM            105
/* Common register test error code */
#define ZM_ERR_REGISTER_ACCESS              110 /* Register R/W test fail*/
#define ZM_ERR_CLEAR_INTERRUPT_FLAG         111
#define ZM_ERR_COMMAND_RESPONSE             112
#define ZM_ERR_INTERRUPT_GENERATE           113
#define ZM_ERR_INTERRUPT_ACK                114
#define ZM_ERR_SCRATCH_ACCESS               115
#define ZM_ERR_INTERRUPT_MASK_ACCESS        116
#define ZM_ERR_SHARE_MEMORY_PCI_ACCESS      117
#define ZM_ERR_SHARE_MEMORY_FW_ACCESS       118
#define ZM_ERR_SHARE_MEMORY_DISABLE         119
#define ZM_ERR_SHARE_MEMORY_TEST_RESPONSE   120

/* Firmware Download error code */
#define ZM_ERR_FIRMWARE_DOWNLOAD_TIMEOUT    150
#define ZM_ERR_FIRMWARE_DOWNLOAD_INT_FLAG   151
#define ZM_ERR_FIRMWARE_READY_TIMEOUT       152
#define ZM_ERR_FIRMWARE_WRONG_TYPE          153

/* Debug */
#define ZM_LV_0     0//Debug level 0, Disable debug message
#define ZM_LV_1     1//Debug level 1, Show minimum information
#define ZM_LV_2     2//Debug level 2, Show medium message
#define ZM_LV_3     3//Debug level 3, Show all

#define ZM_SCANMSG_LEV  ZM_LV_1
#define ZM_TXMSG_LEV    ZM_LV_0//ZM_LV_0
#define ZM_RXMSG_LEV    ZM_LV_0
#define ZM_MMMSG_LEV    ZM_LV_0
#define ZM_DESMSG_LEV   ZM_LV_0//ZM_LV_0
#define ZM_BUFMSG_LEV   ZM_LV_0//ZM_LV_1
#define ZM_INITMSG_LEV  ZM_LV_0

#define zm_msg0_scan(lv, msg) if (ZM_SCANMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_scan(lv, msg, val) if (ZM_SCANMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_scan(lv, msg, val) if (ZM_SCANMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_tx(lv, msg) if (ZM_TXMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_tx(lv, msg, val) if (ZM_TXMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_tx(lv, msg, val) if (ZM_TXMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_rx(lv, msg) if (ZM_RXMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_rx(lv, msg, val) if (ZM_RXMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_rx(lv, msg, val) if (ZM_RXMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_mm(lv, msg) if (ZM_MMMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_mm(lv, msg, val) if (ZM_MMMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_mm(lv, msg, val) if (ZM_MMMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_des(lv, msg) if (ZM_DESMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_des(lv, msg, val) if (ZM_DESMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_des(lv, msg, val) if (ZM_DESMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_buf(lv, msg) if (ZM_BUFMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_buf(lv, msg, val) if (ZM_BUFMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_buf(lv, msg, val) if (ZM_BUFMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define zm_msg0_init(lv, msg) if (ZM_INITMSG_LEV >= lv) \
        {zm_debug_msg0(msg);}
#define zm_msg1_init(lv, msg, val) if (ZM_INITMSG_LEV >= lv) \
        {zm_debug_msg1(msg, val);}
#define zm_msg2_init(lv, msg, val) if (ZM_INITMSG_LEV >= lv) \
        {zm_debug_msg2(msg, val);}

#define ZM_MAX_AP_SUPPORT                   2  /* Must <= 8 */
#define ZM_MAX_WDS_SUPPORT                  6  /* Must <= 6 */
#define ZM_MAX_STA_SUPPORT                  16 /* Must <= 64 */

/* STA table state */
#define ZM_STATE_AUTH                       1
#define ZM_STATE_PREAUTH                    2
#define ZM_STATE_ASOC                       3

/* Rate set */
#define ZM_RATE_SET_CCK                     0
#define ZM_RATE_SET_OFDM                    1

/* HT PT */
#define ZM_PREAMBLE_TYPE_MIXED_MODE         0
#define ZM_PREAMBLE_TYPE_GREEN_FIELD        1

/* HT bandwidth */
#define ZM_BANDWIDTH_20MHZ                  0
#define ZM_BANDWIDTH_40MHZ                  1

/* MIC status */
#define ZM_MIC_SUCCESS                      0
#define ZM_MIC_FAILURE                      1

/* ICV status */
#define ZM_ICV_SUCCESS                      0
#define ZM_ICV_FAILURE                      1

/* definition check */
#if (ZM_MAX_AP_SUPPORT > 8)
definition error, ZM_MAX_AP_SUPPORT > 8
#endif
#if (ZM_MAX_AP_SUPPORT > 64)
definition error, ZM_MAX_STA_SUPPORT > 64
#endif

/*  Transmission Rate information */

/* WLAN frame format */
#define ZM_PLCP_HEADER_SIZE          5
#define ZM_ETHERNET_ADDRESS_LENGTH   6
#define ZM_TIMESTAMP_OFFSET          0
#define ZM_BEACON_INTERVAL_OFFSET    8
#define ZM_CAPABILITY_OFFSET        10

/* Reason Code */
/* An unsolicited notification management frame of       */
/* type Disassocation or Deauthentication was generated. */
#ifdef ZM_REASON_CODE
#define ZM_WLAN_REASON_CODE_UNSPECIFIED   1
#define ZM_WLAN_FRAME_DISASOC_DEAUTH_REASON_CODE  24
#endif

struct zsWlanManagementFrameHeader
{
    //u8_t      plcpHdr[ZM_PLCP_HEADER_SIZE];
    u8_t        frameCtrl[2];
    u8_t        duration[2];
    u8_t        da[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        sa[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        bssid[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        seqCtrl[2];
    u8_t        body[1];
};

struct zsWlanProbeRspFrameHeader
{
    //u8_t      plcpHdr[ZM_PLCP_HEADER_SIZE];
    u8_t        frameCtrl[2];
    u8_t        duration[2];
    u8_t        da[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        sa[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        bssid[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        seqCtrl[2];
    u8_t        timeStamp[8];
    u8_t        beaconInterval[2];
    u8_t        capability[2];
    u8_t        ssid[ZM_MAX_SSID_LENGTH + 2];   // EID(1) + Length(1) + SSID(32)
} ;

#define zsWlanBeaconFrameHeader zsWlanProbeRspFrameHeader

struct zsWlanAuthFrameHeader
{
    //u8_t      plcpHdr[ZM_PLCP_HEADER_SIZE];
    u8_t        frameCtrl[2];
    u8_t        duration[2];
    u8_t        address1[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        address2[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        address3[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        seqCtrl[2];
    u16_t       algo;
    u16_t       seq;
    u16_t       status;
    u8_t        challengeText[255]; // the first 2 bytes are information ID, length
};

struct zsWlanAssoFrameHeader
{
    //u8_t      plcpHdr[PLCP_HEADER_SIZE];
    u8_t        frameCtrl[2];
    u8_t        duration[2];
    u8_t        address1[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        address2[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        address3[ZM_ETHERNET_ADDRESS_LENGTH];
    u8_t        seqCtrl[2];
    u8_t        capability[2];
    u16_t       status;
    u16_t       aid;
    //u8_t        supportedRates[10];
};

struct zsFrag
{
    zbuf_t* buf[16];
    u16_t bufType[16];
    u16_t seq[16];
    u8_t flag[16];

};

//================================
// Hardware related definitions
//================================
#define ZM_MAC_REG_BASE                         0x1c3000

#define ZM_MAC_REG_ATIM_WINDOW                  (ZM_MAC_REG_BASE + 0x51C)
#define ZM_MAC_REG_BCN_PERIOD                   (ZM_MAC_REG_BASE + 0x520)
#define ZM_MAC_REG_PRETBTT                      (ZM_MAC_REG_BASE + 0x524)

#define ZM_MAC_REG_MAC_ADDR_L                   (ZM_MAC_REG_BASE + 0x610)
#define ZM_MAC_REG_MAC_ADDR_H                   (ZM_MAC_REG_BASE + 0x614)

#define ZM_MAC_REG_GROUP_HASH_TBL_L             (ZM_MAC_REG_BASE + 0x624)
#define ZM_MAC_REG_GROUP_HASH_TBL_H             (ZM_MAC_REG_BASE + 0x628)

#define ZM_MAC_REG_BASIC_RATE                   (ZM_MAC_REG_BASE + 0x630)
#define ZM_MAC_REG_MANDATORY_RATE               (ZM_MAC_REG_BASE + 0x634)
#define ZM_MAC_REG_RTS_CTS_RATE                 (ZM_MAC_REG_BASE + 0x638)
#define ZM_MAC_REG_BACKOFF_PROTECT              (ZM_MAC_REG_BASE + 0x63c)
#define ZM_MAC_REG_RX_THRESHOLD                 (ZM_MAC_REG_BASE + 0x640)
#define ZM_MAC_REG_RX_PE_DELAY                  (ZM_MAC_REG_BASE + 0x64C)

#define ZM_MAC_REG_DYNAMIC_SIFS_ACK             (ZM_MAC_REG_BASE + 0x658)
#define ZM_MAC_REG_SNIFFER                      (ZM_MAC_REG_BASE + 0x674)
#define ZM_MAC_REG_TX_UNDERRUN		            (ZM_MAC_REG_BASE + 0x688)
#define ZM_MAC_REG_RX_TOTAL			            (ZM_MAC_REG_BASE + 0x6A0)
#define ZM_MAC_REG_RX_CRC32			            (ZM_MAC_REG_BASE + 0x6A4)
#define ZM_MAC_REG_RX_CRC16			            (ZM_MAC_REG_BASE + 0x6A8)
#define ZM_MAC_REG_RX_ERR_UNI		            (ZM_MAC_REG_BASE + 0x6AC)
#define ZM_MAC_REG_RX_OVERRUN		            (ZM_MAC_REG_BASE + 0x6B0)
#define ZM_MAC_REG_RX_ERR_MUL		            (ZM_MAC_REG_BASE + 0x6BC)
#define ZM_MAC_REG_TX_RETRY			            (ZM_MAC_REG_BASE + 0x6CC)
#define ZM_MAC_REG_TX_TOTAL			            (ZM_MAC_REG_BASE + 0x6F4)


#define ZM_MAC_REG_ACK_EXTENSION                (ZM_MAC_REG_BASE + 0x690)
#define ZM_MAC_REG_EIFS_AND_SIFS                (ZM_MAC_REG_BASE + 0x698)

#define ZM_MAC_REG_SLOT_TIME                    (ZM_MAC_REG_BASE + 0x6F0)

#define ZM_MAC_REG_ROLL_CALL_TBL_L              (ZM_MAC_REG_BASE + 0x704)
#define ZM_MAC_REG_ROLL_CALL_TBL_H              (ZM_MAC_REG_BASE + 0x708)

#define ZM_MAC_REG_AC0_CW                       (ZM_MAC_REG_BASE + 0xB00)
#define ZM_MAC_REG_AC1_CW                       (ZM_MAC_REG_BASE + 0xB04)
#define ZM_MAC_REG_AC2_CW                       (ZM_MAC_REG_BASE + 0xB08)
#define ZM_MAC_REG_AC3_CW                       (ZM_MAC_REG_BASE + 0xB0C)
#define ZM_MAC_REG_AC4_CW                       (ZM_MAC_REG_BASE + 0xB10)
#define ZM_MAC_REG_AC1_AC0_AIFS                 (ZM_MAC_REG_BASE + 0xB14)
#define ZM_MAC_REG_AC3_AC2_AIFS                 (ZM_MAC_REG_BASE + 0xB18)

#define ZM_MAC_REG_RETRY_MAX                    (ZM_MAC_REG_BASE + 0xB28)

#define ZM_MAC_REG_TXOP_NOT_ENOUGH_INDICATION   (ZM_MAC_REG_BASE + 0xB30)

#define ZM_MAC_REG_AC1_AC0_TXOP                 (ZM_MAC_REG_BASE + 0xB44)
#define ZM_MAC_REG_AC3_AC2_TXOP                 (ZM_MAC_REG_BASE + 0xB48)

#define ZM_MAC_REG_ACK_TABLE                    (ZM_MAC_REG_BASE + 0xC00)

#define ZM_MAC_REG_BCN_ADDR                     (ZM_MAC_REG_BASE + 0xD84)
#define ZM_MAC_REG_BCN_LENGTH                   (ZM_MAC_REG_BASE + 0xD88)

#define ZM_MAC_REG_BCN_PLCP                     (ZM_MAC_REG_BASE + 0xD90)
#define ZM_MAC_REG_BCN_CTRL                     (ZM_MAC_REG_BASE + 0xD94)

#define ZM_MAC_REG_BCN_HT1                      (ZM_MAC_REG_BASE + 0xDA0)
#define ZM_MAC_REG_BCN_HT2                      (ZM_MAC_REG_BASE + 0xDA4)


#define ZM_RX_STATUS_IS_MIC_FAIL(rxStatus) rxStatus->Tail.Data.ErrorIndication & ZM_BIT_6

//================================
//================================

#ifdef ZM_ENABLE_NATIVE_WIFI
#define ZM_80211_FRAME_HEADER_LEN           24
#define ZM_80211_FRAME_TYPE_OFFSET          30    // ZM_80211_FRAME_HEADER_LEN + SNAP
#define ZM_80211_FRAME_IP_OFFSET            32    // ZM_80211_FRAME_HEADER_LEN + SNAP + TYPE
#else
#define ZM_80211_FRAME_HEADER_LEN           14
#define ZM_80211_FRAME_TYPE_OFFSET          12    // ZM_80211_FRAME_HEADER_LEN + SNAP
#define ZM_80211_FRAME_IP_OFFSET            14    // ZM_80211_FRAME_HEADER_LEN + SNAP + TYPE
#endif

#define ZM_BSS_INFO_VALID_BIT      0x01
#define ZM_BSS_INFO_UPDATED_BIT    0x02





#define ZM_ERROR_INDICATION_RX_TIMEOUT      0x01
#define ZM_ERROR_INDICATION_OVERRUN         0x02
#define ZM_ERROR_INDICATION_DECRYPT_ERROR   0x04
#define ZM_ERROR_INDICATION_CRC32_ERROR     0x08
#define ZM_ERROR_INDICATION_ADDR_NOT_MATCH  0x10
#define ZM_ERROR_INDICATION_CRC16_ERROR     0x20
#define ZM_ERROR_INDICATION_MIC_ERROR       0x40

#define ZM_RXMAC_STATUS_MOD_TYPE_CCK        0x00
#define ZM_RXMAC_STATUS_MOD_TYPE_OFDM       0x01
#define ZM_RXMAC_STATUS_MOD_TYPE_HT_OFDM    0x02
#define ZM_RXMAC_STATUS_MOD_TYPE_DL_OFDM    0x03
#define ZM_RXMAC_STATUS_TOTAL_ERROR         0x80





#define ZM_MAX_LED_NUMBER       2

#define ZM_LED_DISABLE_MODE     0x0
#define ZM_LED_LINK_MODE        0x1
#define ZM_LED_LINK_TR_MODE     0x2
#define ZM_LED_TR_ON_MODE       0x3
#define ZM_LED_TR_OFF_MODE      0x4

#define ZM_LED_CTRL_FLAG_ALPHA      0x1

struct zsLedStruct
{
    u32_t   counter;
    u32_t   counter100ms;
    u16_t   ledLinkState;
    u16_t   ledMode[ZM_MAX_LED_NUMBER];
    u32_t   txTraffic;
    u32_t   rxTraffic;
    u8_t    LEDCtrlType;
    u8_t    LEDCtrlFlag;         // Control Flag for vendors
    u8_t    LEDCtrlFlagFromReg;  // Control Flag for vendors in registry
};


//HAL+ capability bits definition
#define ZM_HP_CAP_11N                   0x1
#define ZM_HP_CAP_11N_ONE_TX_STREAM     0x2
#define ZM_HP_CAP_2G                    0x4
#define ZM_HP_CAP_5G                    0x8

#endif /* #ifndef _WLAN_H */
OpenPOWER on IntegriCloud