1316 lines
43 KiB
C
1316 lines
43 KiB
C
|
/*
|
||
|
* 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.
|
||
|
*/
|
||
|
|
||
|
#ifndef _STRUCT_H
|
||
|
#define _STRUCT_H
|
||
|
|
||
|
#include "../oal_marc.h"
|
||
|
|
||
|
#define ZM_SW_LOOP_BACK 0 /* 1=>enable, 0=>disable */
|
||
|
#define ZM_PCI_LOOP_BACK 0 /* 1=>enable, 0=>disable */
|
||
|
#define ZM_PROTOCOL_RESPONSE_SIMULATION 0
|
||
|
|
||
|
#define ZM_RX_FRAME_SIZE 1600
|
||
|
|
||
|
extern const u8_t zg11bRateTbl[4];
|
||
|
extern const u8_t zg11gRateTbl[8];
|
||
|
|
||
|
#define ZM_DRIVER_CORE_MAJOR_VERSION 1
|
||
|
#define ZM_DRIVER_CORE_MINOR_VERSION 1
|
||
|
#define ZM_DRIVER_CORE_BRANCH_MAJOR_VERSION 3
|
||
|
#define ZM_DRIVER_CORE_BRANCH_MINOR_VERSION 39
|
||
|
|
||
|
#ifndef ZM_VTXQ_SIZE
|
||
|
#define ZM_VTXQ_SIZE 1024 //2^N
|
||
|
#endif
|
||
|
|
||
|
#define ZM_VTXQ_SIZE_MASK (ZM_VTXQ_SIZE-1)
|
||
|
#define ZM_VMMQ_SIZE 8 //2^N
|
||
|
#define ZM_VMMQ_SIZE_MASK (ZM_VMMQ_SIZE-1)
|
||
|
|
||
|
#include "cagg.h"
|
||
|
|
||
|
#define ZM_AGG_POOL_SIZE 20
|
||
|
#define ZM_RATE_TABLE_SIZE 32
|
||
|
|
||
|
#define ZM_MAX_BUF_DISCRETE_NUMBER 5
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**********************************************************************************/
|
||
|
/* IBSS macros */
|
||
|
/**********************************************************************************/
|
||
|
#define ZM_IBSS_PEER_ALIVE_COUNTER 4
|
||
|
|
||
|
/**********************************************************************************/
|
||
|
/* BIT mapping related macros */
|
||
|
/**********************************************************************************/
|
||
|
|
||
|
#define ZM_BIT_0 0x1
|
||
|
#define ZM_BIT_1 0x2
|
||
|
#define ZM_BIT_2 0x4
|
||
|
#define ZM_BIT_3 0x8
|
||
|
#define ZM_BIT_4 0x10
|
||
|
#define ZM_BIT_5 0x20
|
||
|
#define ZM_BIT_6 0x40
|
||
|
#define ZM_BIT_7 0x80
|
||
|
#define ZM_BIT_8 0x100
|
||
|
#define ZM_BIT_9 0x200
|
||
|
#define ZM_BIT_10 0x400
|
||
|
#define ZM_BIT_11 0x800
|
||
|
#define ZM_BIT_12 0x1000
|
||
|
#define ZM_BIT_13 0x2000
|
||
|
#define ZM_BIT_14 0x4000
|
||
|
#define ZM_BIT_15 0x8000
|
||
|
#define ZM_BIT_16 0x10000
|
||
|
#define ZM_BIT_17 0x20000
|
||
|
#define ZM_BIT_18 0x40000
|
||
|
#define ZM_BIT_19 0x80000
|
||
|
#define ZM_BIT_20 0x100000
|
||
|
#define ZM_BIT_21 0x200000
|
||
|
#define ZM_BIT_22 0x400000
|
||
|
#define ZM_BIT_23 0x800000
|
||
|
#define ZM_BIT_24 0x1000000
|
||
|
#define ZM_BIT_25 0x2000000
|
||
|
#define ZM_BIT_26 0x4000000
|
||
|
#define ZM_BIT_27 0x8000000
|
||
|
#define ZM_BIT_28 0x10000000
|
||
|
#define ZM_BIT_29 0x20000000 //WPA support
|
||
|
#define ZM_BIT_30 0x40000000
|
||
|
#define ZM_BIT_31 0x80000000
|
||
|
|
||
|
|
||
|
/**********************************************************************************/
|
||
|
/* MAC address related macros */
|
||
|
/**********************************************************************************/
|
||
|
#define ZM_MAC_BYTE_TO_WORD(macb, macw) macw[0] = macb[0] + (macb[1] << 8); \
|
||
|
macw[1] = macb[2] + (macb[3] << 8); \
|
||
|
macw[2] = macb[4] + (macb[5] << 8);
|
||
|
|
||
|
#define ZM_MAC_WORD_TO_BYTE(macw, macb) macb[0] = (u8_t) (macw[0] & 0xff); \
|
||
|
macb[1] = (u8_t) (macw[0] >> 8); \
|
||
|
macb[2] = (u8_t) (macw[1] & 0xff); \
|
||
|
macb[3] = (u8_t) (macw[1] >> 8); \
|
||
|
macb[4] = (u8_t) (macw[2] & 0xff); \
|
||
|
macb[5] = (u8_t) (macw[2] >> 8);
|
||
|
|
||
|
#define ZM_MAC_0(macw) ((u8_t)(macw[0] & 0xff))
|
||
|
#define ZM_MAC_1(macw) ((u8_t)(macw[0] >> 8))
|
||
|
#define ZM_MAC_2(macw) ((u8_t)(macw[1] & 0xff))
|
||
|
#define ZM_MAC_3(macw) ((u8_t)(macw[1] >> 8))
|
||
|
#define ZM_MAC_4(macw) ((u8_t)(macw[2] & 0xff))
|
||
|
#define ZM_MAC_5(macw) ((u8_t)(macw[2] >> 8))
|
||
|
|
||
|
#define ZM_IS_MULTICAST_OR_BROADCAST(mac) (mac[0] & 0x01)
|
||
|
#define ZM_IS_MULTICAST(mac) ((mac[0] & 0x01) && (((u8_t)mac[0]) != 0xFF))
|
||
|
|
||
|
#define ZM_MAC_EQUAL(mac1, mac2) ((mac1[0]==mac2[0])&&(mac1[1]==mac2[1])&&(mac1[2]==mac2[2]))
|
||
|
#define ZM_MAC_NOT_EQUAL(mac1, mac2) ((mac1[0]!=mac2[0])||(mac1[1]!=mac2[1])||(mac1[2]!=mac2[2]))
|
||
|
/**********************************************************************************/
|
||
|
/* MAC address related mac'ros (end) */
|
||
|
/**********************************************************************************/
|
||
|
#define ZM_BYTE_TO_WORD(A, B) ((A<<8)+B)
|
||
|
#define ZM_ROL32( A, n ) \
|
||
|
( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) )
|
||
|
#define ZM_ROR32( A, n ) ZM_ROL32( (A), 32-(n) )
|
||
|
#define ZM_LO8(v16) ((u8_t)((v16) & 0xFF))
|
||
|
#define ZM_HI8(v16) ((u8_t)(((v16)>>8)&0xFF))
|
||
|
|
||
|
#ifdef ZM_ENABLE_BUFFER_TRACE
|
||
|
extern void zfwBufTrace(zdev_t* dev, zbuf_t *buf, u8_t *functionName);
|
||
|
#define ZM_BUFFER_TRACE(dev, buf) zfwBufTrace(dev, buf, __func__);
|
||
|
#else
|
||
|
#define ZM_BUFFER_TRACE(dev, buf)
|
||
|
#endif
|
||
|
|
||
|
/* notification events to heart beat function */
|
||
|
#define ZM_BSSID_LIST_SCAN 0x01
|
||
|
|
||
|
/* CAM mode */
|
||
|
#define ZM_CAM_AP 0x1
|
||
|
#define ZM_CAM_STA 0x2
|
||
|
#define ZM_CAM_HOST 0x4
|
||
|
|
||
|
/* finite state machine for adapter */
|
||
|
#define ZM_STA_STATE_DISCONNECT 1
|
||
|
#define ZM_STA_STATE_CONNECTING 2
|
||
|
#define ZM_STA_STATE_CONNECTED 3
|
||
|
|
||
|
/* Event definitions for finite state machine */
|
||
|
#define ZM_EVENT_TIMEOUT_SCAN 0x0000
|
||
|
#define ZM_EVENT_TIMEOUT_BG_SCAN 0x0001
|
||
|
#define ZN_EVENT_TIMEOUT_RECONNECT 0x0002
|
||
|
#define ZM_EVENT_TIMEOUT_INIT_SCAN 0x0003
|
||
|
#define ZM_EVENT_TIMEOUT_AUTH 0x0004
|
||
|
#define ZM_EVENT_TIMEOUT_ASSO 0x0005
|
||
|
#define ZM_EVENT_TIMEOUT_AUTO_SCAN 0x0006
|
||
|
#define ZM_EVENT_TIMEOUT_MIC_FAIL 0x0007
|
||
|
#define ZM_EVENT_TIMEOUT_CHECK_AP 0x0008
|
||
|
#define ZM_EVENT_CONNECT 0x0009
|
||
|
#define ZM_EVENT_INIT_SCAN 0x000a
|
||
|
#define ZM_EVENT_SCAN 0x000b
|
||
|
#define ZM_EVENT_BG_SCAN 0x000c
|
||
|
#define ZM_EVENT_DISCONNECT 0x000d
|
||
|
#define ZM_EVENT_WPA_MIC_FAIL 0x000e
|
||
|
#define ZM_EVENT_AP_ALIVE 0x000f
|
||
|
#define ZM_EVENT_CHANGE_TO_AP 0x0010
|
||
|
#define ZM_EVENT_CHANGE_TO_STA 0x0011
|
||
|
#define ZM_EVENT_IDLE 0x0012
|
||
|
#define ZM_EVENT_AUTH 0x0013
|
||
|
#define ZM_EVENT_ASSO_RSP 0x0014
|
||
|
#define ZM_EVENT_WPA_PK_OK 0x0015
|
||
|
#define ZM_EVENT_WPA_GK_OK 0x0016
|
||
|
#define ZM_EVENT_RCV_BEACON 0x0017
|
||
|
#define ZM_EVENT_RCV_PROBE_RSP 0x0018
|
||
|
#define ZM_EVENT_SEND_DATA 0x0019
|
||
|
#define ZM_EVENT_AUTO_SCAN 0x001a
|
||
|
#define ZM_EVENT_MIC_FAIL1 0x001d
|
||
|
#define ZM_EVENT_MIC_FAIL2 0x001e
|
||
|
#define ZM_EVENT_IBSS_MONITOR 0x001f
|
||
|
#define ZM_EVENT_IN_SCAN 0x0020
|
||
|
#define ZM_EVENT_CM_TIMER 0x0021
|
||
|
#define ZM_EVENT_CM_DISCONNECT 0x0022
|
||
|
#define ZM_EVENT_CM_BLOCK_TIMER 0x0023
|
||
|
#define ZM_EVENT_TIMEOUT_ADDBA 0x0024
|
||
|
#define ZM_EVENT_TIMEOUT_PERFORMANCE 0x0025
|
||
|
#define ZM_EVENT_SKIP_COUNTERMEASURE 0x0026
|
||
|
#define ZM_EVENT_NONE 0xffff
|
||
|
|
||
|
/* Actions after call finite state machine */
|
||
|
#define ZM_ACTION_NONE 0x0000
|
||
|
#define ZM_ACTION_QUEUE_DATA 0x0001
|
||
|
#define ZM_ACTION_DROP_DATA 0x0002
|
||
|
|
||
|
/* Timers for finite state machine */
|
||
|
#define ZM_TICK_ZERO 0
|
||
|
#define ZM_TICK_INIT_SCAN_END 8
|
||
|
#define ZM_TICK_NEXT_BG_SCAN 50
|
||
|
#define ZM_TICK_BG_SCAN_END 8
|
||
|
#define ZM_TICK_AUTH_TIMEOUT 4
|
||
|
#define ZM_TICK_ASSO_TIMEOUT 4
|
||
|
#define ZM_TICK_AUTO_SCAN 300
|
||
|
#define ZM_TICK_MIC_FAIL_TIMEOUT 6000
|
||
|
#define ZM_TICK_CHECK_AP1 150
|
||
|
#define ZM_TICK_CHECK_AP2 350
|
||
|
#define ZM_TICK_CHECK_AP3 250
|
||
|
#define ZM_TICK_IBSS_MONITOR 160
|
||
|
#define ZM_TICK_IN_SCAN 4
|
||
|
#define ZM_TICK_CM_TIMEOUT 6000
|
||
|
#define ZM_TICK_CM_DISCONNECT 200
|
||
|
#define ZM_TICK_CM_BLOCK_TIMEOUT 6000
|
||
|
|
||
|
/* Fix bug#33338 Counter Measure Issur */
|
||
|
#ifdef NDIS_CM_FOR_XP
|
||
|
#define ZM_TICK_CM_TIMEOUT_OFFSET 2160
|
||
|
#define ZM_TICK_CM_DISCONNECT_OFFSET 72
|
||
|
#define ZM_TICK_CM_BLOCK_TIMEOUT_OFFSET 2160
|
||
|
#else
|
||
|
#define ZM_TICK_CM_TIMEOUT_OFFSET 0
|
||
|
#define ZM_TICK_CM_DISCONNECT_OFFSET 0
|
||
|
#define ZM_TICK_CM_BLOCK_TIMEOUT_OFFSET 0
|
||
|
#endif
|
||
|
|
||
|
#define ZM_TIME_ACTIVE_SCAN 30 //ms
|
||
|
#define ZM_TIME_PASSIVE_SCAN 110 //ms
|
||
|
|
||
|
/* finite state machine for BSS connect */
|
||
|
#define ZM_STA_CONN_STATE_NONE 0
|
||
|
#define ZM_STA_CONN_STATE_AUTH_OPEN 1
|
||
|
#define ZM_STA_CONN_STATE_AUTH_SHARE_1 2
|
||
|
#define ZM_STA_CONN_STATE_AUTH_SHARE_2 3
|
||
|
#define ZM_STA_CONN_STATE_ASSOCIATE 4
|
||
|
#define ZM_STA_CONN_STATE_SSID_NOT_FOUND 5
|
||
|
#define ZM_STA_CONN_STATE_AUTH_COMPLETED 6
|
||
|
|
||
|
/* finite state machine for WPA handshaking */
|
||
|
#define ZM_STA_WPA_STATE_INIT 0
|
||
|
#define ZM_STA_WPA_STATE_PK_OK 1
|
||
|
#define ZM_STA_WPA_STATE_GK_OK 2
|
||
|
|
||
|
/* various timers */
|
||
|
#define ZM_INTERVAL_CONNECT_TIMEOUT 20 /* 200 milisecond */
|
||
|
|
||
|
/* IBSS definitions */
|
||
|
#define ZM_IBSS_PARTNER_LOST 0
|
||
|
#define ZM_IBSS_PARTNER_ALIVE 1
|
||
|
#define ZM_IBSS_PARTNER_CHECK 2
|
||
|
|
||
|
#define ZM_BCMC_ARRAY_SIZE 16 /* Must be 2^N */
|
||
|
#define ZM_UNI_ARRAY_SIZE 16 /* Must be 2^N */
|
||
|
|
||
|
#define ZM_MAX_DEFRAG_ENTRIES 4 /* 2^N */
|
||
|
#define ZM_DEFRAG_AGING_TIME_SEC 5 /* 5 seconds */
|
||
|
|
||
|
#define ZM_MAX_WPAIE_SIZE 128
|
||
|
/* WEP related definitions */
|
||
|
#define ZM_USER_KEY_DEFAULT 64
|
||
|
#define ZM_USER_KEY_PK 0 /* Pairwise Key */
|
||
|
#define ZM_USER_KEY_GK 1 /* Group Key */
|
||
|
/* AP WLAN Type */
|
||
|
#define ZM_WLAN_TYPE_PURE_B 2
|
||
|
#define ZM_WLAN_TYPE_PURE_G 1
|
||
|
#define ZM_WLAN_TYPE_MIXED 0
|
||
|
|
||
|
/* HAL State */
|
||
|
#define ZM_HAL_STATE_INIT 0
|
||
|
#define ZM_HAL_STATE_RUNNING 1
|
||
|
|
||
|
/* AP Capability */
|
||
|
#define ZM_All11N_AP 0x01
|
||
|
#define ZM_XR_AP 0x02
|
||
|
#define ZM_SuperG_AP 0x04
|
||
|
|
||
|
/* MPDU Density */
|
||
|
#define ZM_MPDU_DENSITY_NONE 0
|
||
|
#define ZM_MPDU_DENSITY_1_8US 1
|
||
|
#define ZM_MPDU_DENSITY_1_4US 2
|
||
|
#define ZM_MPDU_DENSITY_1_2US 3
|
||
|
#define ZM_MPDU_DENSITY_1US 4
|
||
|
#define ZM_MPDU_DENSITY_2US 5
|
||
|
#define ZM_MPDU_DENSITY_4US 6
|
||
|
#define ZM_MPDU_DENSITY_8US 7
|
||
|
|
||
|
/* Software Encryption */
|
||
|
#define ZM_SW_TKIP_ENCRY_EN 0x01
|
||
|
#define ZM_SW_TKIP_DECRY_EN 0x02
|
||
|
#define ZM_SW_WEP_ENCRY_EN 0x04
|
||
|
#define ZM_SW_WEP_DECRY_EN 0x08
|
||
|
|
||
|
/* Default Support Rate */
|
||
|
#define ZM_DEFAULT_SUPPORT_RATE_ZERO 0x0
|
||
|
#define ZM_DEFAULT_SUPPORT_RATE_DISCONNECT 0x1
|
||
|
#define ZM_DEFAULT_SUPPORT_RATE_IBSS_B 0x2
|
||
|
#define ZM_DEFAULT_SUPPORT_RATE_IBSS_AG 0x3
|
||
|
|
||
|
/* security related definitions */
|
||
|
struct zsTkipSeed
|
||
|
{
|
||
|
u8_t tk[32]; /* key */
|
||
|
u8_t ta[6];
|
||
|
u16_t ttak[5];
|
||
|
u16_t ppk[6];
|
||
|
u16_t iv16,iv16tmp;
|
||
|
u32_t iv32,iv32tmp;
|
||
|
};
|
||
|
|
||
|
struct zsMicVar
|
||
|
{
|
||
|
u32_t k0, k1; // Key
|
||
|
u32_t left, right; // Current state
|
||
|
u32_t m; // Message accumulator (single word)
|
||
|
u16_t nBytes; // # bytes in M
|
||
|
};
|
||
|
|
||
|
struct zsDefragEntry
|
||
|
{
|
||
|
u8_t fragCount;
|
||
|
u8_t addr[6];
|
||
|
u16_t seqNum;
|
||
|
zbuf_t* fragment[8];
|
||
|
u32_t tick;
|
||
|
};
|
||
|
|
||
|
struct zsDefragList
|
||
|
{
|
||
|
struct zsDefragEntry defragEntry[ZM_MAX_DEFRAG_ENTRIES];
|
||
|
u8_t replaceNum;
|
||
|
};
|
||
|
|
||
|
#define ZM_MAX_OPPOSITE_COUNT 16
|
||
|
#define ZM_MAX_TX_SAMPLES 15
|
||
|
#define ZM_TX_RATE_DOWN_CRITERIA 80
|
||
|
#define ZM_TX_RATE_UP_CRITERIA 200
|
||
|
|
||
|
|
||
|
#define ZM_MAX_PROBE_HIDDEN_SSID_SIZE 2
|
||
|
struct zsSsidList
|
||
|
{
|
||
|
u8_t ssid[32];
|
||
|
u8_t ssidLen;
|
||
|
};
|
||
|
|
||
|
struct zsWrapperSetting
|
||
|
{
|
||
|
u8_t bDesiredBssid;
|
||
|
u8_t desiredBssid[6];
|
||
|
u16_t bssid[3];
|
||
|
u8_t ssid[32];
|
||
|
u8_t ssidLen;
|
||
|
u8_t authMode;
|
||
|
u8_t wepStatus;
|
||
|
u8_t encryMode;
|
||
|
u8_t wlanMode;
|
||
|
u16_t frequency;
|
||
|
u16_t beaconInterval;
|
||
|
u8_t dtim;
|
||
|
u8_t preambleType;
|
||
|
u16_t atimWindow;
|
||
|
|
||
|
struct zsSsidList probingSsidList[ZM_MAX_PROBE_HIDDEN_SSID_SIZE];
|
||
|
|
||
|
u8_t dropUnencryptedPkts;
|
||
|
u8_t ibssJoinOnly;
|
||
|
u32_t adhocMode;
|
||
|
u8_t countryIsoName[4];
|
||
|
u16_t autoSetFrequency;
|
||
|
|
||
|
/* AP */
|
||
|
u8_t bRateBasic;
|
||
|
u8_t gRateBasic;
|
||
|
u32_t nRateBasic;
|
||
|
u8_t bgMode;
|
||
|
|
||
|
/* Common */
|
||
|
u8_t staWmeEnabled;
|
||
|
u8_t staWmeQosInfo;
|
||
|
u8_t apWmeEnabled;
|
||
|
|
||
|
|
||
|
/* rate information: added in the future */
|
||
|
};
|
||
|
|
||
|
struct zsWrapperFeatureCtrl
|
||
|
{
|
||
|
u8_t bIbssGMode;
|
||
|
};
|
||
|
|
||
|
#define ZM_MAX_PS_STA 16
|
||
|
#define ZM_PS_QUEUE_SIZE 32
|
||
|
|
||
|
struct zsStaPSEntity
|
||
|
{
|
||
|
u8_t bUsed;
|
||
|
u8_t macAddr[6];
|
||
|
u8_t bDataQueued;
|
||
|
};
|
||
|
|
||
|
struct zsStaPSList
|
||
|
{
|
||
|
u8_t count;
|
||
|
struct zsStaPSEntity entity[ZM_MAX_PS_STA];
|
||
|
};
|
||
|
|
||
|
#define ZM_MAX_TIMER_COUNT 32
|
||
|
|
||
|
/* double linked list */
|
||
|
struct zsTimerEntry
|
||
|
{
|
||
|
u16_t event;
|
||
|
u32_t timer;
|
||
|
struct zsTimerEntry *pre;
|
||
|
struct zsTimerEntry *next;
|
||
|
};
|
||
|
|
||
|
struct zsTimerList
|
||
|
{
|
||
|
u8_t freeCount;
|
||
|
struct zsTimerEntry list[ZM_MAX_TIMER_COUNT];
|
||
|
struct zsTimerEntry *head;
|
||
|
struct zsTimerEntry *tail;
|
||
|
};
|
||
|
|
||
|
/* Multicast list */
|
||
|
#define ZM_MAX_MULTICAST_LIST_SIZE 64
|
||
|
|
||
|
struct zsMulticastAddr
|
||
|
{
|
||
|
u8_t addr[6];
|
||
|
};
|
||
|
|
||
|
struct zsMulticastList
|
||
|
{
|
||
|
u8_t size;
|
||
|
struct zsMulticastAddr macAddr[ZM_MAX_MULTICAST_LIST_SIZE];
|
||
|
};
|
||
|
|
||
|
enum ieee80211_cwm_mode {
|
||
|
CWM_MODE20,
|
||
|
CWM_MODE2040,
|
||
|
CWM_MODE40,
|
||
|
CWM_MODEMAX
|
||
|
|
||
|
};
|
||
|
|
||
|
enum ieee80211_cwm_extprotspacing {
|
||
|
CWM_EXTPROTSPACING20,
|
||
|
CWM_EXTPROTSPACING25,
|
||
|
CWM_EXTPROTSPACINGMAX
|
||
|
};
|
||
|
|
||
|
enum ieee80211_cwm_width {
|
||
|
CWM_WIDTH20,
|
||
|
CWM_WIDTH40
|
||
|
};
|
||
|
|
||
|
enum ieee80211_cwm_extprotmode {
|
||
|
CWM_EXTPROTNONE, /* no protection */
|
||
|
CWM_EXTPROTCTSONLY, /* CTS to self */
|
||
|
CWM_EXTPROTRTSCTS, /* RTS-CTS */
|
||
|
CWM_EXTPROTMAX
|
||
|
};
|
||
|
|
||
|
struct ieee80211_cwm {
|
||
|
|
||
|
/* Configuration */
|
||
|
enum ieee80211_cwm_mode cw_mode; /* CWM mode */
|
||
|
u8_t cw_extoffset; /* CWM Extension Channel Offset */
|
||
|
enum ieee80211_cwm_extprotmode cw_extprotmode; /* CWM Extension Channel Protection Mode */
|
||
|
enum ieee80211_cwm_extprotspacing cw_extprotspacing;/* CWM Extension Channel Protection Spacing */
|
||
|
u32_t cw_enable; /* CWM State Machine Enabled */
|
||
|
u32_t cw_extbusythreshold;/* CWM Extension Channel Busy Threshold */
|
||
|
|
||
|
/* State */
|
||
|
enum ieee80211_cwm_width cw_width; /* CWM channel width */
|
||
|
};
|
||
|
|
||
|
|
||
|
/* AP : STA database structure */
|
||
|
struct zsStaTable
|
||
|
{
|
||
|
u32_t time; /* tick time */
|
||
|
//u32_t phyCtrl; /* Tx PHY CTRL */
|
||
|
u16_t addr[3]; /* STA MAC address */
|
||
|
u16_t state; /* aut/asoc */
|
||
|
//u16_t retry; /* Retry count */
|
||
|
struct zsRcCell rcCell;
|
||
|
|
||
|
u8_t valid; /* Valid flag : 1=>valid */
|
||
|
u8_t psMode; /* STA power saving mode */
|
||
|
u8_t staType; /* 0=>11b, 1=>11g, 2=>11n */
|
||
|
u8_t qosType; /* 0=>Legacy, 1=>WME */
|
||
|
u8_t qosInfo; /* WME QoS info */
|
||
|
u8_t vap; /* Virtual AP ID */
|
||
|
u8_t encryMode; /* Encryption type for this STA */
|
||
|
u8_t keyIdx;
|
||
|
struct zsMicVar txMicKey;
|
||
|
struct zsMicVar rxMicKey;
|
||
|
u16_t iv16;
|
||
|
u32_t iv32;
|
||
|
#ifdef ZM_ENABLE_CENC
|
||
|
/* CENC */
|
||
|
u8_t cencKeyIdx;
|
||
|
u32_t txiv[4];
|
||
|
u32_t rxiv[4];
|
||
|
#endif //ZM_ENABLE_CENC
|
||
|
};
|
||
|
|
||
|
struct zdStructWds
|
||
|
{
|
||
|
u8_t wdsBitmap; /* Set bit-N to 1 to enable WDS */
|
||
|
u8_t encryMode[ZM_MAX_WDS_SUPPORT]; /* WDS encryption mode */
|
||
|
u16_t macAddr[ZM_MAX_WDS_SUPPORT][3]; /* WDS neighbor MAC address */
|
||
|
};
|
||
|
|
||
|
// htcapinfo 16bits
|
||
|
#define HTCAP_AdvCodingCap 0x0001
|
||
|
#define HTCAP_SupChannelWidthSet 0x0002
|
||
|
#define HTCAP_DynamicSMPS 0x0004
|
||
|
#define HTCAP_SMEnabled 0x000C
|
||
|
#define HTCAP_GreenField 0x0010
|
||
|
#define HTCAP_ShortGIfor20MHz 0x0020
|
||
|
#define HTCAP_ShortGIfor40MHz 0x0040
|
||
|
#define HTCAP_TxSTBC 0x0080
|
||
|
#define HTCAP_RxOneStream 0x0100
|
||
|
#define HTCAP_RxTwoStream 0x0200
|
||
|
#define HTCAP_RxThreeStream 0x0300
|
||
|
#define HTCAP_DelayedBlockACK 0x0400
|
||
|
#define HTCAP_MaxAMSDULength 0x0800
|
||
|
#define HTCAP_DSSSandCCKin40MHz 0x1000
|
||
|
#define HTCAP_PSMPSup 0x2000
|
||
|
#define HTCAP_STBCControlFrameSup 0x4000
|
||
|
#define HTCAP_LSIGTXOPProtectionSUP 0x8000
|
||
|
// Ampdu HT Parameter Info 8bits
|
||
|
#define HTCAP_MaxRxAMPDU0 0x00
|
||
|
#define HTCAP_MaxRxAMPDU1 0x01
|
||
|
#define HTCAP_MaxRxAMPDU2 0x02
|
||
|
#define HTCAP_MaxRxAMPDU3 0x03
|
||
|
// PCO 8bits
|
||
|
#define HTCAP_PCO 0x01
|
||
|
#define HTCAP_TransmissionTime1 0x02
|
||
|
#define HTCAP_TransmissionTime2 0x04
|
||
|
#define HTCAP_TransmissionTime3 0x06
|
||
|
// MCS FeedBack 8bits
|
||
|
#define HTCAP_PlusHTCSupport 0x04
|
||
|
#define HTCAP_RDResponder 0x08
|
||
|
// TX Beamforming 0 8bits
|
||
|
#define HTCAP_TxBFCapable 0x01
|
||
|
#define HTCAP_RxStaggeredSoundCap 0x02
|
||
|
#define HTCAP_TxStaggeredSoundCap 0x04
|
||
|
#define HTCAP_RxZLFCapable 0x08
|
||
|
#define HTCAP_TxZLFCapable 0x10
|
||
|
#define HTCAP_ImplicitTxBFCapable 0x20
|
||
|
// Tx Beamforming 1 8bits
|
||
|
#define HTCAP_ExplicitCSITxBFCap 0x01
|
||
|
#define HTCAP_ExpUncompSteerMatrCap 0x02
|
||
|
// Antenna Selection Capabilities 8bits
|
||
|
#define HTCAP_AntennaSelectionCap 0x01
|
||
|
#define HTCAP_ExplicitCSITxASCap 0x02
|
||
|
#define HTCAP_AntennaIndFeeTxASCap 0x04
|
||
|
#define HTCAP_ExplicitCSIFeedbackCap 0x08
|
||
|
#define HTCAP_AntennaIndFeedbackCap 0x10
|
||
|
#define HTCAP_RxASCap 0x20
|
||
|
#define HTCAP_TxSoundPPDUsCap 0x40
|
||
|
|
||
|
|
||
|
|
||
|
struct zsHTCapability
|
||
|
{
|
||
|
u8_t ElementID;
|
||
|
u8_t Length;
|
||
|
// HT Capability Info
|
||
|
u16_t HtCapInfo;
|
||
|
u8_t AMPDUParam;
|
||
|
u8_t MCSSet[16]; //16 bytes
|
||
|
// Extended HT Capability Info
|
||
|
u8_t PCO;
|
||
|
u8_t MCSFeedBack;
|
||
|
|
||
|
u8_t TxBFCap[4];
|
||
|
u8_t AselCap;
|
||
|
};
|
||
|
|
||
|
union zuHTCapability
|
||
|
{
|
||
|
struct zsHTCapability Data;
|
||
|
u8_t Byte[28];
|
||
|
};
|
||
|
|
||
|
//channelinfo 8bits
|
||
|
#define ExtHtCap_ExtChannelOffsetAbove 0x01
|
||
|
#define ExtHtCap_ExtChannelOffsetBelow 0x03
|
||
|
#define ExtHtCap_RecomTxWidthSet 0x04
|
||
|
#define ExtHtCap_RIFSMode 0x08
|
||
|
#define ExtHtCap_ControlAccessOnly 0x10
|
||
|
//operatinginfo 16bits
|
||
|
#define ExtHtCap_NonGFDevicePresent 0x0004
|
||
|
//beaconinfo 16bits
|
||
|
#define ExtHtCap_DualBeacon 0x0040
|
||
|
#define ExtHtCap_DualSTBCProtection 0x0080
|
||
|
#define ExtHtCap_SecondaryBeacon 0x0100
|
||
|
#define ExtHtCap_LSIGTXOPProtectFullSup 0x0200
|
||
|
#define ExtHtCap_PCOActive 0x0400
|
||
|
#define ExtHtCap_PCOPhase 0x0800
|
||
|
|
||
|
|
||
|
struct zsExtHTCapability
|
||
|
{
|
||
|
u8_t ElementID;
|
||
|
u8_t Length;
|
||
|
u8_t ControlChannel;
|
||
|
u8_t ChannelInfo;
|
||
|
u16_t OperatingInfo;
|
||
|
u16_t BeaconInfo;
|
||
|
// Supported MCS Set
|
||
|
u8_t MCSSet[16];
|
||
|
};
|
||
|
|
||
|
union zuExtHTCapability
|
||
|
{
|
||
|
struct zsExtHTCapability Data;
|
||
|
u8_t Byte[24];
|
||
|
};
|
||
|
|
||
|
struct InformationElementSta {
|
||
|
struct zsHTCapability HtCap;
|
||
|
struct zsExtHTCapability HtInfo;
|
||
|
};
|
||
|
|
||
|
struct InformationElementAp {
|
||
|
struct zsHTCapability HtCap;
|
||
|
};
|
||
|
|
||
|
#define ZM_MAX_FREQ_REQ_QUEUE 32
|
||
|
typedef void (*zfpFreqChangeCompleteCb)(zdev_t* dev);
|
||
|
|
||
|
struct zsWlanDevFreqControl
|
||
|
{
|
||
|
u16_t freqReqQueue[ZM_MAX_FREQ_REQ_QUEUE];
|
||
|
u8_t freqReqBw40[ZM_MAX_FREQ_REQ_QUEUE];
|
||
|
u8_t freqReqExtOffset[ZM_MAX_FREQ_REQ_QUEUE];
|
||
|
zfpFreqChangeCompleteCb freqChangeCompCb[ZM_MAX_FREQ_REQ_QUEUE];
|
||
|
u8_t freqReqQueueHead;
|
||
|
u8_t freqReqQueueTail;
|
||
|
};
|
||
|
|
||
|
struct zsWlanDevAp
|
||
|
{
|
||
|
u16_t protectedObss; /* protected overlap BSS */
|
||
|
u16_t staAgingTimeSec; /* in second, STA will be deathed if it does not */
|
||
|
/* active for this long time */
|
||
|
u16_t staProbingTimeSec;/* in second, STA will be probed if it does not */
|
||
|
/* active for this long time */
|
||
|
u8_t authSharing; /* authentication on going*/
|
||
|
u8_t bStaAssociated; /* 11b STA associated */
|
||
|
u8_t gStaAssociated; /* 11g STA associated */
|
||
|
u8_t nStaAssociated; /* 11n STA associated */
|
||
|
u16_t protectionMode; /* AP protection mode flag */
|
||
|
u16_t staPowerSaving; /* Set associated power saving STA count */
|
||
|
|
||
|
|
||
|
|
||
|
zbuf_t* uniArray[ZM_UNI_ARRAY_SIZE]; /* array to store unicast frames */
|
||
|
u16_t uniHead;
|
||
|
u16_t uniTail;
|
||
|
|
||
|
/* HT Capability Info */
|
||
|
union zuHTCapability HTCap; //CWYang(+)
|
||
|
|
||
|
/* Extended HT Capability Info */
|
||
|
union zuExtHTCapability ExtHTCap; //CWYang(+)
|
||
|
|
||
|
/* STA table */
|
||
|
struct zsStaTable staTable[ZM_MAX_STA_SUPPORT];
|
||
|
|
||
|
/* WDS */
|
||
|
struct zdStructWds wds;
|
||
|
/* WPA */
|
||
|
u8_t wpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_WPAIE_SIZE];
|
||
|
u8_t wpaLen[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t stawpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_WPAIE_SIZE];
|
||
|
u8_t stawpaLen[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t wpaSupport[ZM_MAX_AP_SUPPORT];
|
||
|
|
||
|
//struct zsTkipSeed bcSeed;
|
||
|
u8_t bcKeyIndex[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t bcHalKeyIdx[ZM_MAX_AP_SUPPORT];
|
||
|
struct zsMicVar bcMicKey[ZM_MAX_AP_SUPPORT];
|
||
|
u16_t iv16[ZM_MAX_AP_SUPPORT];
|
||
|
u32_t iv32[ZM_MAX_AP_SUPPORT];
|
||
|
|
||
|
#ifdef ZM_ENABLE_CENC
|
||
|
/* CENC */
|
||
|
u32_t txiv[ZM_MAX_AP_SUPPORT][4];
|
||
|
#endif //ZM_ENABLE_CENC
|
||
|
|
||
|
/* Virtual AP */
|
||
|
u8_t beaconCounter;
|
||
|
u8_t vapNumber;
|
||
|
u8_t apBitmap; /* Set bit-N to 1 to enable VAP */
|
||
|
u8_t hideSsid[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t authAlgo[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t ssid[ZM_MAX_AP_SUPPORT][32]; /* SSID */
|
||
|
u8_t ssidLen[ZM_MAX_AP_SUPPORT]; /* SSID length */
|
||
|
u8_t encryMode[ZM_MAX_AP_SUPPORT];
|
||
|
u8_t wepStatus[ZM_MAX_AP_SUPPORT];
|
||
|
u16_t capab[ZM_MAX_AP_SUPPORT]; /* Capability */
|
||
|
u8_t timBcmcBit[ZM_MAX_AP_SUPPORT]; /* BMCM bit of TIM */
|
||
|
u8_t wlanType[ZM_MAX_AP_SUPPORT];
|
||
|
|
||
|
/* Array to store BC or MC frames */
|
||
|
zbuf_t* bcmcArray[ZM_MAX_AP_SUPPORT][ZM_BCMC_ARRAY_SIZE];
|
||
|
u16_t bcmcHead[ZM_MAX_AP_SUPPORT];
|
||
|
u16_t bcmcTail[ZM_MAX_AP_SUPPORT];
|
||
|
|
||
|
u8_t qosMode; /* 1=>WME */
|
||
|
u8_t uapsdEnabled;
|
||
|
struct zsQueue* uapsdQ;
|
||
|
|
||
|
u8_t challengeText[128];
|
||
|
|
||
|
struct InformationElementAp ie[ZM_MAX_STA_SUPPORT];
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
#define ZM_MAX_BLOCKING_AP_LIST_SIZE 4 /* 2^N */
|
||
|
struct zsBlockingAp
|
||
|
{
|
||
|
u8_t addr[6];
|
||
|
u8_t weight;
|
||
|
};
|
||
|
|
||
|
#define ZM_SCAN_MGR_SCAN_NONE 0
|
||
|
#define ZM_SCAN_MGR_SCAN_INTERNAL 1
|
||
|
#define ZM_SCAN_MGR_SCAN_EXTERNAL 2
|
||
|
|
||
|
struct zsWlanDevStaScanMgr
|
||
|
{
|
||
|
u8_t scanReqs[2];
|
||
|
u8_t currScanType;
|
||
|
u8_t scanStartDelay;
|
||
|
};
|
||
|
|
||
|
#define ZM_PS_MSG_STATE_ACTIVE 0
|
||
|
#define ZM_PS_MSG_STATE_SLEEP 1
|
||
|
#define ZM_PS_MSG_STATE_T1 2
|
||
|
#define ZM_PS_MSG_STATE_T2 3
|
||
|
#define ZM_PS_MSG_STATE_S1 4
|
||
|
|
||
|
#define ZM_PS_MAX_SLEEP_PERIODS 3 // The number of beacon periods
|
||
|
|
||
|
struct zsWlanDevStaPSMgr
|
||
|
{
|
||
|
u8_t state;
|
||
|
u8_t isSleepAllowed;
|
||
|
u8_t maxSleepPeriods;
|
||
|
u8_t ticks;
|
||
|
u32_t lastTxUnicastFrm;
|
||
|
u32_t lastTxMulticastFrm;
|
||
|
u32_t lastTxBroadcastFrm;
|
||
|
u8_t tempWakeUp; /*enable when wake up but still in ps mode */
|
||
|
u16_t sleepAllowedtick;
|
||
|
};
|
||
|
|
||
|
struct zsWlanDevSta
|
||
|
{
|
||
|
u32_t beaconTxCnt; /* Transmitted beacon counter (in IBSS) */
|
||
|
u8_t txBeaconInd; /* In IBSS mode, true means that we just transmit a beacon during
|
||
|
last beacon period.
|
||
|
*/
|
||
|
u16_t beaconCnt; /* receive beacon count, will be perodically reset */
|
||
|
u16_t bssid[3]; /* BSSID of connected AP */
|
||
|
u8_t ssid[32]; /* SSID */
|
||
|
u8_t ssidLen; /* SSID length */
|
||
|
u8_t mTxRate; /* Tx rate for multicast */
|
||
|
u8_t uTxRate; /* Tx rate for unicast */
|
||
|
u8_t mmTxRate; /* Tx rate for management frame */
|
||
|
u8_t bChannelScan;
|
||
|
u8_t bScheduleScan;
|
||
|
|
||
|
u8_t InternalScanReq;
|
||
|
u16_t activescanTickPerChannel;
|
||
|
u16_t passiveScanTickPerChannel;
|
||
|
u16_t scanFrequency;
|
||
|
u32_t connPowerInHalfDbm;
|
||
|
|
||
|
u16_t currentFrequency;
|
||
|
u16_t currentBw40;
|
||
|
u16_t currentExtOffset;
|
||
|
|
||
|
u8_t bPassiveScan;
|
||
|
|
||
|
struct zsBlockingAp blockingApList[ZM_MAX_BLOCKING_AP_LIST_SIZE];
|
||
|
|
||
|
//struct zsBssInfo bssInfoPool[ZM_MAX_BSS];
|
||
|
struct zsBssInfo* bssInfoArray[ZM_MAX_BSS];
|
||
|
struct zsBssList bssList;
|
||
|
u8_t bssInfoArrayHead;
|
||
|
u8_t bssInfoArrayTail;
|
||
|
u8_t bssInfoFreeCount;
|
||
|
|
||
|
u8_t authMode;
|
||
|
u8_t currentAuthMode;
|
||
|
u8_t wepStatus;
|
||
|
u8_t encryMode;
|
||
|
u8_t keyId;
|
||
|
#ifdef ZM_ENABLE_IBSS_WPA2PSK
|
||
|
u8_t ibssWpa2Psk;
|
||
|
#endif
|
||
|
#ifdef ZM_ENABLE_CENC
|
||
|
u8_t cencKeyId; //CENC
|
||
|
#endif //ZM_ENABLE_CENC
|
||
|
u8_t dropUnencryptedPkts;
|
||
|
u8_t ibssJoinOnly;
|
||
|
u8_t adapterState;
|
||
|
u8_t oldAdapterState;
|
||
|
u8_t connectState;
|
||
|
u8_t connectRetry;
|
||
|
u8_t wpaState;
|
||
|
u8_t wpaIe[ZM_MAX_IE_SIZE + 2];
|
||
|
u8_t rsnIe[ZM_MAX_IE_SIZE + 2];
|
||
|
u8_t challengeText[255+2];
|
||
|
u8_t capability[2];
|
||
|
//u8_t connectingHiddenAP;
|
||
|
//u8_t scanWithSSID;
|
||
|
u16_t aid;
|
||
|
u32_t mgtFrameCount;
|
||
|
u8_t bProtectionMode;
|
||
|
u32_t NonNAPcount;
|
||
|
u8_t RTSInAGGMode;
|
||
|
u32_t connectTimer;
|
||
|
u16_t atimWindow;
|
||
|
u8_t desiredBssid[6];
|
||
|
u8_t bDesiredBssid;
|
||
|
struct zsTkipSeed txSeed;
|
||
|
struct zsTkipSeed rxSeed[4];
|
||
|
struct zsMicVar txMicKey;
|
||
|
struct zsMicVar rxMicKey[4];
|
||
|
u16_t iv16;
|
||
|
u32_t iv32;
|
||
|
struct zsOppositeInfo oppositeInfo[ZM_MAX_OPPOSITE_COUNT];
|
||
|
u8_t oppositeCount;
|
||
|
u8_t bssNotFoundCount; /* sitesurvey for search desired ISBB threshold */
|
||
|
u16_t rxBeaconCount;
|
||
|
u8_t beaconMissState;
|
||
|
u32_t rxBeaconTotal;
|
||
|
u8_t bIsSharedKey;
|
||
|
u8_t connectTimeoutCount;
|
||
|
|
||
|
u8_t recvAtim;
|
||
|
|
||
|
/* ScanMgr Control block */
|
||
|
struct zsWlanDevStaScanMgr scanMgr;
|
||
|
struct zsWlanDevStaPSMgr psMgr;
|
||
|
|
||
|
// The callback would be called if receiving an unencrypted packets but
|
||
|
// the station is in encrypted mode. The wrapper could decide whether
|
||
|
// to drop the packet by its OS setting.
|
||
|
zfpStaRxSecurityCheckCb pStaRxSecurityCheckCb;
|
||
|
|
||
|
/* WME */
|
||
|
u8_t apWmeCapability; //bit-0 => a WME AP
|
||
|
//bit-7 => a UAPSD AP
|
||
|
u8_t wmeParameterSetCount;
|
||
|
|
||
|
u8_t wmeEnabled;
|
||
|
#define ZM_STA_WME_ENABLE_BIT 0x1
|
||
|
#define ZM_STA_UAPSD_ENABLE_BIT 0x2
|
||
|
u8_t wmeQosInfo;
|
||
|
|
||
|
u8_t wmeConnected;
|
||
|
u8_t qosInfo;
|
||
|
struct zsQueue* uapsdQ;
|
||
|
|
||
|
/* countermeasures */
|
||
|
u8_t cmMicFailureCount;
|
||
|
u8_t cmDisallowSsidLength;
|
||
|
u8_t cmDisallowSsid[32];
|
||
|
|
||
|
/* power-saving mode */
|
||
|
u8_t powerSaveMode;
|
||
|
zbuf_t* staPSDataQueue[ZM_PS_QUEUE_SIZE];
|
||
|
u8_t staPSDataCount;
|
||
|
|
||
|
/* IBSS power-saving mode */
|
||
|
/* record the STA which has entered the PS mode */
|
||
|
struct zsStaPSList staPSList;
|
||
|
/* queue the data of the PS STAs */
|
||
|
zbuf_t* ibssPSDataQueue[ZM_PS_QUEUE_SIZE];
|
||
|
u8_t ibssPSDataCount;
|
||
|
u8_t ibssPrevPSDataCount;
|
||
|
u8_t bIbssPSEnable;
|
||
|
/* BIT_15: ON/OFF, BIT_0~14: Atim Timer */
|
||
|
u16_t ibssAtimTimer;
|
||
|
|
||
|
/* WPA2 */
|
||
|
struct zsPmkidInfo pmkidInfo;
|
||
|
|
||
|
/* Multicast list related objects */
|
||
|
struct zsMulticastList multicastList;
|
||
|
|
||
|
/* XP packet filter feature : */
|
||
|
/* 1=>enable: All multicast address packets, not just the ones enumerated in the multicast address list. */
|
||
|
/* 0=>disable */
|
||
|
u8_t bAllMulticast;
|
||
|
|
||
|
/* reassociation flag */
|
||
|
u8_t connectByReasso;
|
||
|
u8_t failCntOfReasso;
|
||
|
|
||
|
/* for HT configure control setting */
|
||
|
u8_t preambleTypeHT; /* HT: 0 Mixed mode 1 Green field */
|
||
|
u8_t htCtrlBandwidth;
|
||
|
u8_t htCtrlSTBC;
|
||
|
u8_t htCtrlSG;
|
||
|
u8_t defaultTA;
|
||
|
|
||
|
u8_t connection_11b;
|
||
|
|
||
|
u8_t EnableHT;
|
||
|
u8_t SG40;
|
||
|
u8_t HT2040;
|
||
|
/* for WPA setting */
|
||
|
u8_t wpaSupport;
|
||
|
u8_t wpaLen;
|
||
|
|
||
|
/* IBSS related objects */
|
||
|
u8_t ibssDelayedInd;
|
||
|
struct zsPartnerNotifyEvent ibssDelayedIndEvent;
|
||
|
u8_t ibssPartnerStatus;
|
||
|
|
||
|
u8_t bAutoReconnect;
|
||
|
|
||
|
u8_t flagFreqChanging;
|
||
|
u8_t flagKeyChanging;
|
||
|
struct zsBssInfo ibssBssDesc;
|
||
|
u8_t ibssBssIsCreator;
|
||
|
u16_t ibssReceiveBeaconCount;
|
||
|
u8_t ibssSiteSurveyStatus;
|
||
|
|
||
|
u8_t disableProbingWithSsid;
|
||
|
#ifdef ZM_ENABLE_CENC
|
||
|
/* CENC */
|
||
|
u8_t cencIe[ZM_MAX_IE_SIZE + 2];
|
||
|
#endif //ZM_ENABLE_CENC
|
||
|
u32_t txiv[4]; //Tx PN Sequence
|
||
|
u32_t rxiv[4]; //Rx PN Sequence
|
||
|
u32_t rxivGK[4];//Broadcast Rx PN Sequence
|
||
|
u8_t wepKey[4][32]; // For Software WEP
|
||
|
u8_t SWEncryMode[4];
|
||
|
|
||
|
/* 802.11d */
|
||
|
u8_t b802_11D;
|
||
|
|
||
|
/* 802.11h */
|
||
|
u8_t TPCEnable;
|
||
|
u8_t DFSEnable;
|
||
|
u8_t DFSDisableTx;
|
||
|
|
||
|
/* Owl AP */
|
||
|
u8_t athOwlAp;
|
||
|
|
||
|
/* Enable BA response in driver */
|
||
|
u8_t enableDrvBA;
|
||
|
|
||
|
/* HT Capability Info */
|
||
|
union zuHTCapability HTCap; //CWYang(+)
|
||
|
|
||
|
/* Extended HT Capability Info */
|
||
|
union zuExtHTCapability ExtHTCap; //CWYang(+)
|
||
|
|
||
|
struct InformationElementSta ie;
|
||
|
|
||
|
#define ZM_CACHED_FRAMEBODY_SIZE 200
|
||
|
u8_t asocReqFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
|
||
|
u16_t asocReqFrameBodySize;
|
||
|
u8_t asocRspFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
|
||
|
u16_t asocRspFrameBodySize;
|
||
|
u8_t beaconFrameBody[ZM_CACHED_FRAMEBODY_SIZE];
|
||
|
u16_t beaconFrameBodySize;
|
||
|
|
||
|
u8_t ac0PriorityHigherThanAc2;
|
||
|
u8_t SWEncryptEnable;
|
||
|
|
||
|
u8_t leapEnabled;
|
||
|
|
||
|
u32_t TotalNumberOfReceivePackets;
|
||
|
u32_t TotalNumberOfReceiveBytes;
|
||
|
u32_t avgSizeOfReceivePackets;
|
||
|
|
||
|
u32_t ReceivedPacketRateCounter;
|
||
|
u32_t ReceivedPktRatePerSecond;
|
||
|
|
||
|
/* #2 Record the sequence number to determine whether the unicast frame is separated by RIFS or not */
|
||
|
#define ZM_RIFS_STATE_DETECTING 0
|
||
|
#define ZM_RIFS_STATE_DETECTED 1
|
||
|
#define ZM_RIFS_TIMER_TIMEOUT 4480 // <Driver time>4480ms <Real time>7s
|
||
|
u8_t rifsState;
|
||
|
u8_t rifsLikeFrameCnt;
|
||
|
u16_t rifsLikeFrameSequence[3];
|
||
|
u32_t rifsTimer;
|
||
|
u32_t rifsCount;
|
||
|
|
||
|
/* RX filter desired by upper layers. Note this contains some bits which must be filtered
|
||
|
by sw since the hw supports only a subset of possible filter actions.= */
|
||
|
u32_t osRxFilter;
|
||
|
|
||
|
u8_t bSafeMode;
|
||
|
|
||
|
u32_t ibssAdditionalIESize;
|
||
|
u8_t ibssAdditionalIE[256];
|
||
|
}; //struct zsWlanDevSta
|
||
|
|
||
|
#define ZM_CMD_QUEUE_SIZE 256 //Roger Check, test 64 when ready
|
||
|
|
||
|
#define ZM_OID_READ 1
|
||
|
#define ZM_OID_WRITE 2
|
||
|
#define ZM_OID_INTERNAL_WRITE 3
|
||
|
#define ZM_CMD_SET_FREQUENCY 4
|
||
|
#define ZM_CMD_SET_KEY 5
|
||
|
#define ZM_CWM_READ 6
|
||
|
#define ZM_MAC_READ 7
|
||
|
#define ZM_ANI_READ 8
|
||
|
#define ZM_EEPROM_READ 9
|
||
|
#define ZM_EEPROM_WRITE 0x0A
|
||
|
#define ZM_OID_CHAN 0x30
|
||
|
#define ZM_OID_SYNTH 0x32
|
||
|
#define ZM_OID_TALLY 0x81
|
||
|
#define ZM_OID_TALLY_APD 0x82
|
||
|
|
||
|
#define ZM_OID_DKTX_STATUS 0x92
|
||
|
#define ZM_OID_FLASH_CHKSUM 0xD0
|
||
|
#define ZM_OID_FLASH_READ 0xD1
|
||
|
#define ZM_OID_FLASH_PROGRAM 0xD2
|
||
|
#define ZM_OID_FW_DL_INIT 0xD3
|
||
|
|
||
|
/* Driver to Firmware OID */
|
||
|
#define ZM_CMD_ECHO 0x80
|
||
|
#define ZM_CMD_TALLY 0x81
|
||
|
#define ZM_CMD_TALLY_APD 0x82
|
||
|
#define ZM_CMD_CONFIG 0x83
|
||
|
#define ZM_CMD_RREG 0x00
|
||
|
#define ZM_CMD_WREG 0x01
|
||
|
#define ZM_CMD_RMEM 0x02
|
||
|
#define ZM_CMD_WMEM 0x03
|
||
|
#define ZM_CMD_BITAND 0x04
|
||
|
#define ZM_CMD_BITOR 0x05
|
||
|
#define ZM_CMD_EKEY 0x28
|
||
|
#define ZM_CMD_DKEY 0x29
|
||
|
#define ZM_CMD_FREQUENCY 0x30
|
||
|
#define ZM_CMD_RF_INIT 0x31
|
||
|
#define ZM_CMD_SYNTH 0x32
|
||
|
#define ZM_CMD_FREQ_STRAT 0x33
|
||
|
#define ZM_CMD_RESET 0x90
|
||
|
#define ZM_CMD_DKRESET 0x91
|
||
|
#define ZM_CMD_DKTX_STATUS 0x92
|
||
|
#define ZM_CMD_FDC 0xA0
|
||
|
#define ZM_CMD_WREEPROM 0xB0
|
||
|
#define ZM_CMD_WFLASH 0xB0
|
||
|
#define ZM_CMD_FLASH_ERASE 0xB1
|
||
|
#define ZM_CMD_FLASH_PROG 0xB2
|
||
|
#define ZM_CMD_FLASH_CHKSUM 0xB3
|
||
|
#define ZM_CMD_FLASH_READ 0xB4
|
||
|
#define ZM_CMD_FW_DL_INIT 0xB5
|
||
|
#define ZM_CMD_MEM_WREEPROM 0xBB
|
||
|
|
||
|
|
||
|
/* duplicate filter table column */
|
||
|
#define ZM_FILTER_TABLE_COL 2 /* 2^n */
|
||
|
/* duplicate filter table Row */
|
||
|
#define ZM_FILTER_TABLE_ROW 8 /* 2^n */
|
||
|
|
||
|
/* duplicate filter table structure */
|
||
|
struct zsRxFilter
|
||
|
{
|
||
|
u16_t addr[3];
|
||
|
u16_t seq;
|
||
|
u8_t up;
|
||
|
};
|
||
|
|
||
|
struct zsWlanDev
|
||
|
{
|
||
|
/* AP global variables */
|
||
|
struct zsWlanDevAp ap;
|
||
|
/* STA global variables */
|
||
|
struct zsWlanDevSta sta;
|
||
|
/* save wrapper setting */
|
||
|
struct zsWrapperSetting ws;
|
||
|
/* features determined by wrapper (vendor) */
|
||
|
struct zsWrapperFeatureCtrl wfc;
|
||
|
/* Traffic Monitor tally */
|
||
|
struct zsTrafTally trafTally;
|
||
|
/* Communication tally */
|
||
|
struct zsCommTally commTally;
|
||
|
/* Duplicate frame filter table */
|
||
|
struct zsRxFilter rxFilterTbl[ZM_FILTER_TABLE_COL][ZM_FILTER_TABLE_ROW];
|
||
|
/* Regulatory table */
|
||
|
struct zsRegulationTable regulationTable;
|
||
|
|
||
|
/* */
|
||
|
struct zsWlanDevFreqControl freqCtrl;
|
||
|
|
||
|
enum devState state;
|
||
|
|
||
|
u8_t halState;
|
||
|
u8_t wlanMode; /* AP/INFRASTRUCTURE/IBSS/PSEUDO */
|
||
|
u16_t macAddr[3]; /* MAC address */
|
||
|
u16_t beaconInterval; /* beacon Interval */
|
||
|
u8_t dtim; /* DTIM period */
|
||
|
u8_t CurrentDtimCount;
|
||
|
u8_t preambleType;
|
||
|
u8_t preambleTypeInUsed;
|
||
|
u8_t maxTxPower2; /* 2.4 GHz Max Tx power (Unit: 0.5 dBm) */
|
||
|
u8_t maxTxPower5; /* 5 GHz Max Tx power (Unit: 0.5 dBm) */
|
||
|
u8_t connectMode;
|
||
|
u32_t supportMode;
|
||
|
|
||
|
u8_t bRate; /* 11b Support Rate bit map */
|
||
|
u8_t bRateBasic; /* 11b Basic Rate bit map */
|
||
|
u8_t gRate; /* 11g Support Rate bit map */
|
||
|
u8_t gRateBasic; /* 11g Basic Rate bit map */
|
||
|
/* channel index point to the item in regulation table */
|
||
|
u8_t channelIndex;
|
||
|
|
||
|
/* channel management */
|
||
|
u8_t BandWidth40;
|
||
|
u8_t ExtOffset; //1 above, 3 below, 0 not present
|
||
|
u16_t frequency; /* operation frequency */
|
||
|
|
||
|
u8_t erpElement; /* ERP information element data */
|
||
|
|
||
|
u8_t disableSelfCts; /* set to 1 to disable Self-CTS */
|
||
|
u8_t bgMode;
|
||
|
|
||
|
/* private test flag */
|
||
|
u32_t enableProtectionMode; /* force enable/disable self cts */
|
||
|
u32_t checksumTest; /* OTUS checksum test 1=>zero checksum 0=>normal */
|
||
|
u32_t rxPacketDump; /* rx packet dump */
|
||
|
|
||
|
u8_t enableAggregation; /* force enable/disable A-MSPU */
|
||
|
u8_t enableWDS; /* force enable/disable WDS testing */
|
||
|
u8_t enableTxPathMode; /* OTUS special testing mode 1=>diable, 0=>enable: ZM_SYSTEM_TEST_MODE */
|
||
|
u8_t enableHALDbgInfo; /* */
|
||
|
|
||
|
u32_t forceTxTPC; /* force tx packet send TPC */
|
||
|
|
||
|
u16_t seq[4];
|
||
|
u16_t mmseq;
|
||
|
|
||
|
/* driver core time tick */
|
||
|
u32_t tick;
|
||
|
u16_t tickIbssSendBeacon;
|
||
|
u16_t tickIbssReceiveBeacon;
|
||
|
|
||
|
/* RTS threshold */
|
||
|
u16_t rtsThreshold;
|
||
|
|
||
|
/* fragmentation threshold, 256 <= value <= 2346, 0=disabled */
|
||
|
u16_t fragThreshold;
|
||
|
|
||
|
/* Tx Rate */
|
||
|
u16_t txMCS;
|
||
|
u16_t txMT;
|
||
|
u32_t CurrentTxRateKbps; //CWYang(+)
|
||
|
/* Rx Rate */
|
||
|
u32_t CurrentRxRateKbps; //Janet(+)
|
||
|
u8_t CurrentRxRateUpdated;
|
||
|
u8_t modulationType;
|
||
|
u8_t rxInfo;
|
||
|
u16_t rateField;
|
||
|
|
||
|
/* timer related objects */
|
||
|
struct zsTimerList timerList;
|
||
|
u8_t bTimerReady;
|
||
|
|
||
|
/* for defragmentation */
|
||
|
struct zsDefragList defragTable;
|
||
|
|
||
|
/* Data struct for Interface Dependent Layer */
|
||
|
//struct zsIdlStruct idlStruct;
|
||
|
|
||
|
/* Signal Strength/Quality Related Parameters */
|
||
|
u8_t SignalStrength; //CWYang(+)
|
||
|
u8_t SignalQuality; //CWYang(+)
|
||
|
|
||
|
|
||
|
|
||
|
/* QoS */
|
||
|
zbuf_t* vtxq[4][ZM_VTXQ_SIZE];
|
||
|
u16_t vtxqHead[4];
|
||
|
u16_t vtxqTail[4];
|
||
|
u16_t qosDropIpFrag[4];
|
||
|
|
||
|
/* Management Tx queue */
|
||
|
zbuf_t* vmmq[ZM_VMMQ_SIZE];
|
||
|
u16_t vmmqHead;
|
||
|
u16_t vmmqTail;
|
||
|
|
||
|
u8_t vtxqPushing;
|
||
|
|
||
|
/*
|
||
|
* add by honda
|
||
|
* 1. Aggregate queues
|
||
|
* 2. STA's associated information and queue number
|
||
|
* 3. rx aggregation re-ordering queue
|
||
|
*/
|
||
|
struct aggQueue *aggQPool[ZM_AGG_POOL_SIZE];
|
||
|
u8_t aggInitiated;
|
||
|
u8_t addbaComplete;
|
||
|
u8_t addbaCount;
|
||
|
u8_t aggState;
|
||
|
u8_t destLock;
|
||
|
struct aggSta aggSta[ZM_MAX_STA_SUPPORT];
|
||
|
struct agg_tid_rx *tid_rx[ZM_AGG_POOL_SIZE];
|
||
|
struct aggTally agg_tal;
|
||
|
struct destQ destQ;
|
||
|
struct baw_enabler *baw_enabler;
|
||
|
struct ieee80211_cwm cwm;
|
||
|
u16_t reorder;
|
||
|
u16_t seq_debug;
|
||
|
/* rate control */
|
||
|
u32_t txMPDU[ZM_RATE_TABLE_SIZE];
|
||
|
u32_t txFail[ZM_RATE_TABLE_SIZE];
|
||
|
u32_t PER[ZM_RATE_TABLE_SIZE];
|
||
|
u16_t probeCount;
|
||
|
u16_t probeSuccessCount;
|
||
|
u16_t probeInterval;
|
||
|
u16_t success_probing;
|
||
|
/*
|
||
|
* end of add by honda
|
||
|
*/
|
||
|
|
||
|
/* airopeek sniffer mode for upper sw */
|
||
|
u32_t swSniffer; /* window: airoPeek */
|
||
|
u32_t XLinkMode;
|
||
|
|
||
|
/* MDK mode */
|
||
|
/* init by 0=>normal driver 1=>MDK driver */
|
||
|
u32_t modeMDKEnable;
|
||
|
|
||
|
u32_t heartBeatNotification;
|
||
|
|
||
|
/* pointer for HAL Plus private memory */
|
||
|
void* hpPrivate;
|
||
|
|
||
|
/* for WPA setting */
|
||
|
//u8_t wpaSupport[ZM_MAX_AP_SUPPORT];
|
||
|
//u8_t wpaLen[ZM_MAX_AP_SUPPORT];
|
||
|
//u8_t wpaIe[ZM_MAX_AP_SUPPORT][ZM_MAX_IE_SIZE];
|
||
|
|
||
|
struct zsLedStruct ledStruct;
|
||
|
|
||
|
/* ani flag */
|
||
|
u8_t aniEnable;
|
||
|
u16_t txq_threshold;
|
||
|
|
||
|
//Skip Mic Error Check
|
||
|
u8_t TKIP_Group_KeyChanging;
|
||
|
|
||
|
u8_t dynamicSIFSEnable;
|
||
|
|
||
|
u8_t queueFlushed;
|
||
|
|
||
|
u16_t (*zfcbAuthNotify)(zdev_t* dev, u16_t* macAddr);
|
||
|
u16_t (*zfcbAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body, u16_t bodySize, u16_t port);
|
||
|
u16_t (*zfcbDisAsocNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
|
||
|
u16_t (*zfcbApConnectNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
|
||
|
void (*zfcbConnectNotify)(zdev_t* dev, u16_t status, u16_t* bssid);
|
||
|
void (*zfcbScanNotify)(zdev_t* dev, struct zsScanResult* result);
|
||
|
void (*zfcbMicFailureNotify)(zdev_t* dev, u16_t* addr, u16_t status);
|
||
|
void (*zfcbApMicFailureNotify)(zdev_t* dev, u8_t* addr, zbuf_t* buf);
|
||
|
void (*zfcbIbssPartnerNotify)(zdev_t* dev, u16_t status, struct zsPartnerNotifyEvent *event);
|
||
|
void (*zfcbMacAddressNotify)(zdev_t* dev, u8_t* addr);
|
||
|
void (*zfcbSendCompleteIndication)(zdev_t* dev, zbuf_t* buf);
|
||
|
void (*zfcbRecvEth)(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||
|
void (*zfcbRecv80211)(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo);
|
||
|
void (*zfcbRestoreBufData)(zdev_t* dev, zbuf_t* buf);
|
||
|
#ifdef ZM_ENABLE_CENC
|
||
|
u16_t (*zfcbCencAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body,
|
||
|
u16_t bodySize, u16_t port);
|
||
|
#endif //ZM_ENABLE_CENC
|
||
|
u8_t (*zfcbClassifyTxPacket)(zdev_t* dev, zbuf_t* buf);
|
||
|
void (*zfcbHwWatchDogNotify)(zdev_t* dev);
|
||
|
};
|
||
|
|
||
|
|
||
|
struct zsWlanKey
|
||
|
{
|
||
|
u8_t key;
|
||
|
};
|
||
|
|
||
|
|
||
|
/* These macros are defined here for backward compatibility */
|
||
|
/* Please leave them alone */
|
||
|
/* For Tx packet allocated in upper layer layer */
|
||
|
#define zmw_tx_buf_readb(dev, buf, offset) zmw_buf_readb(dev, buf, offset)
|
||
|
#define zmw_tx_buf_readh(dev, buf, offset) zmw_buf_readh(dev, buf, offset)
|
||
|
#define zmw_tx_buf_writeb(dev, buf, offset, value) zmw_buf_writeb(dev, buf, offset, value)
|
||
|
#define zmw_tx_buf_writeh(dev, buf, offset, value) zmw_buf_writeh(dev, buf, offset, value)
|
||
|
|
||
|
/* For Rx packet allocated in driver */
|
||
|
#define zmw_rx_buf_readb(dev, buf, offset) zmw_buf_readb(dev, buf, offset)
|
||
|
#define zmw_rx_buf_readh(dev, buf, offset) zmw_buf_readh(dev, buf, offset)
|
||
|
#define zmw_rx_buf_writeb(dev, buf, offset, value) zmw_buf_writeb(dev, buf, offset, value)
|
||
|
#define zmw_rx_buf_writeh(dev, buf, offset, value) zmw_buf_writeh(dev, buf, offset, value)
|
||
|
|
||
|
#endif /* #ifndef _STRUCT_H */
|