blob: 26c18b837cfced36c8bc95ac1f5e0bf02427cfa6 [file] [log] [blame]
/*
* 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 */