wbhal.h revision 27d4642105b3fc6781e9110c7f4d0741434985ca
180aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#ifndef __WINBOND_WBHAL_S_H 280aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#define __WINBOND_WBHAL_S_H 380aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg 480aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#include <linux/types.h> 5bd37b7fddf51431faf9c32cd22356421913cfce8Pekka Enberg#include <linux/if_ether.h> /* for ETH_ALEN */ 680aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg 766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//[20040722 WK] 866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_LED_SET_MASK 0x001c //20060901 Extend 966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_LED_SET_SHIFT 2 1066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 1166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//supported RF type 1266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2825 0 1366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2827 1 1466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2828 2 1566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2829 3 1666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_V1 15 1766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_2230 16 1866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_7230 17 1966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_2230S 18 // 20060420 Add this 2066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// #define RF_RFMD_2959 32 // 20060626 Remove all about RFMD 2166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_WB_242 33 2266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_WB_242_1 34 // 20060619.5 Add 2366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_DECIDE_BY_INF 255 2466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//---------------------------------------------------------------- 2666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// The follow define connect to upper layer 2766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// User must modify for connection between HAL and upper layer 2866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//---------------------------------------------------------------- 2966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek///////////////////////////////////////////////////////////////////////////////////////////////////// 3466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//================================================================================================ 3566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Common define 3666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//================================================================================================ 3766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_USB_MODE_BURST( _H ) (_H->SoftwareSet & 0x20 ) // Bit 5 20060901 Modify 3866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Scan interval 4066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define SCAN_MAX_CHNL_TIME (50) 4166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// For TxL2 Frame typr recognise 4366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_3_DATA 0 4466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_MANAGEMENT 1 4566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE 2 4666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_CONTROL 3 4766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_DATA 4 4866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_PROMISCUOUS 5 4966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// The follow definition is used for convert the frame-------------------- 5166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_SEQUENCE_OFFSET 22 //Sequence control offset 5266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_3_TYPE_OFFSET 12 5366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_MAC_HEADER_SIZE 24 5466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_SNAP_SIZE 6 5566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_TYPE_OFFSET 30 //The start offset of 802.11 Frame. Type encapsulatuin. 5666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_SIFSTIME 10 5766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_FRAGMENT_THRESHOLD 2346 // No fragment 5866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_MSDU_LIFE_TIME 0xffff 5966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 6066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define LONG_PREAMBLE_PLUS_PLCPHEADER_TIME (144+48) 6166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME (72+24) 6266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION (16+4+6) 6366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define Tsym 4 6466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 6566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Frame Type of Bits (2, 3)--------------------------------------------- 6666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_MANAGEMENT 0x00 6766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_CONTROL 0x04 6866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_DATA 0x08 6966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MASK_FRAGMENT_NUMBER 0x000F 7066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define SEQUENCE_NUMBER_SHIFT 4 7166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_WAKEUP_FRAME 0x01 7366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_MAGIC_PACKET 0x02 7466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// 20040106 ADDED 7666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_KEYTYPE_WEP40 0 7766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_KEYTYPE_WEP104 1 7866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_KEYTYPE_TKIP 2 // 128 bit key 7966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_KEYTYPE_AES_CCMP 3 // 128 bit key 8066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 8166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// For VM state 8266101de10957e07a6fd0365d5af9adf650246d14Pavel Machekenum { 8366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_STOP = 0, 8466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_RUNNING, 8566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_COMPLETED 8666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek}; 8766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 8866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//----------------------------------------------------- 8966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Normal Key table format 9066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//----------------------------------------------------- 9166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// The order of KEY index is MAPPING_KEY_START_INDEX > GROUP_KEY_START_INDEX 9266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAX_KEY_TABLE 24 // 24 entry for storing key data 9366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define GROUP_KEY_START_INDEX 4 9466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAPPING_KEY_START_INDEX 8 9566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 9666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//-------------------------------------------------------- 9766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Descriptor 9866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//-------------------------------------------------------- 9966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAX_DESCRIPTOR_BUFFER_INDEX 8 // Have to multiple of 2 10066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//#define FLAG_ERROR_TX_MASK cpu_to_le32(0x000000bf) //20061009 marked by anson's endian 10166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FLAG_ERROR_TX_MASK 0x000000bf //20061009 anson's endian 10266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//#define FLAG_ERROR_RX_MASK 0x00000c3f 10366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//#define FLAG_ERROR_RX_MASK cpu_to_le32(0x0000083f) //20061009 marked by anson's endian 10466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //Don't care replay error, 10566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //it is handled by S/W 10666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FLAG_ERROR_RX_MASK 0x0000083f //20060926 anson's endian 10766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 10866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FLAG_BAND_RX_MASK 0x10000000 //Bit 28 10966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 11066101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _R00_DESCRIPTOR 11166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek{ 11266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 11366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 11466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 11566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #ifdef _BIG_ENDIAN_ //20060926 anson's endian 11666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 11766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 11866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 11966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 12066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 12166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 12266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 12366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 12466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #else 12566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 12666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 12766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 12866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 12966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 13066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 13166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 13266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 13366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #endif 13466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 13566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} R00_DESCRIPTOR, *PR00_DESCRIPTOR; 13666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 13766101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _T00_DESCRIPTOR 13866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek{ 13966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 14066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 14166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 14266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #ifdef _BIG_ENDIAN_ //20061009 anson's endian 14366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 14466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 14566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_first_mpdu:1; // for hardware use 14666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_last_mpdu:1; // for hardware use 14766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_IsLastMpdu:1;// 0: not 1:Yes for software used 14866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS 14966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED_ID:2;//3 bit ID reserved 15066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_tx_packet_id:4;//930519.4.e 930810.3.c 15166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 15266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 15366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 15466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 15566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #else 15666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 15766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 15866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 15966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 16066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 16166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_tx_packet_id:4;//930519.4.e 930810.3.c 16266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED_ID:2;//3 bit ID reserved 16366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS 16466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_IsLastMpdu:1;// 0: not 1:Yes for software used 16566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_last_mpdu:1; // for hardware use 16666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_first_mpdu:1; // for hardware use 16766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 16866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #endif 16966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 17066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T00_DESCRIPTOR, *PT00_DESCRIPTOR; 17166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 17266101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _R01_DESCRIPTOR 17366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek{ 17466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 17566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 17666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 17766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #ifdef _BIG_ENDIAN_ //20060926 add by anson's endian 17866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 17966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 18066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 18166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 18266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 18366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 18466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 18566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 18666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 18766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 18866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 18966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 19066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 19166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 19266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 19366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 19466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 19566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 19666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 19766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 19866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 19966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 20066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #else 20166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 20266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 20366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 20466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 20566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 20666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 20766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 20866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 20966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 21066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 21166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 21266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 21366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 21466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 21566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 21666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 21766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 21866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 21966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 22066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 22166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 22266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 22366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #endif 22466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 22566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} R01_DESCRIPTOR, *PR01_DESCRIPTOR; 22666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 22766101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _T01_DESCRIPTOR 22866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek{ 22966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 23066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 23166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 23266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #ifdef _BIG_ENDIAN_ //20061009 anson's endian 23366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 23466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 23566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 23666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 23766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 23866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 23966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 24066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 24166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 24266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 24366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 24466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 24566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 24666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 24766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 24866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #else 24966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 25066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 25166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 25266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 25366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 25466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 25566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 25666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 25766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 25866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 25966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 26066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 26166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 26266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 26366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 26466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #endif 26566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 26666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T01_DESCRIPTOR, *PT01_DESCRIPTOR; 26766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 26866101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _T02_DESCRIPTOR 26966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek{ 27066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 27166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 27266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 27366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #ifdef _BIG_ENDIAN_ //20061009 add by anson's endian 27466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 27566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 27666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_IsLastMpdu:1;// The same mechanism with T00 setting 27766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS 27866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_ID:2;// The same mechanism with T00 setting 27966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 28066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 28166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 28266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 28366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 28466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 28566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 28666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 28766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 28866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 28966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 29066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 29166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 29266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 29366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #else 29466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 29566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 29666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 29766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 29866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 29966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 30066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 30166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 30266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 30366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 30466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 30566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 30666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 30766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 30866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 30966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_ID:2;// The same mechanism with T00 setting 31066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS 31166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_IsLastMpdu:1;// The same mechanism with T00 setting 31266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 31366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek #endif 31466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 31566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T02_DESCRIPTOR, *PT02_DESCRIPTOR; 31666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 31727d4642105b3fc6781e9110c7f4d0741434985caPekka Enbergstruct wb35_descriptor { // Skip length = 8 DWORD 31866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // ID for descriptor ---, The field doesn't be cleard in the operation of Descriptor definition 31966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Descriptor_ID; 32066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //----------------------The above region doesn't be cleared by DESCRIPTOR_RESET------ 32166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 RESERVED[3]; 32266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 32366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 32466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 InternalUsed;//Only can be used by operation of descriptor definition 32566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Type;// 0: 802.3 1:802.11 data frame 2:802.11 management frame 32666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 32766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 PreambleMode;// 0: short 1:long 32866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 TxRate; 32966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 FragmentCount; 33066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 EapFix; // For speed up key install 33166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 33266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For R00 and T00 ---------------------------------------------- 33366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 33466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 33566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek R00_DESCRIPTOR R00; 33666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T00_DESCRIPTOR T00; 33766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 33866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 33966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For R01 and T01 ---------------------------------------------- 34066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 34166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 34266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek R01_DESCRIPTOR R01; 34366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T01_DESCRIPTOR T01; 34466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 34566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 34666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For R02 and T02 ---------------------------------------------- 34766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 34866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 34966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R02; 35066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T02_DESCRIPTOR T02; 35166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 35266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 35366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For R03 and T03 ---------------------------------------------- 35466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For software used 35566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek union 35666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 35766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R03; 35866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T03; 35966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek struct 36066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek { 36166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_number; 36266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_start_index; 36366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 buffer_total_size; 36466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 36566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 36666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 36766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For storing the buffer 36866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 buffer_size[ MAX_DESCRIPTOR_BUFFER_INDEX ]; 36966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek void* buffer_address[ MAX_DESCRIPTOR_BUFFER_INDEX ];//931130.4.q 37066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37127d4642105b3fc6781e9110c7f4d0741434985caPekka Enberg}; 37266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_NULL_PACKET_COUNT 180000 //20060828.1 Add. 180 seconds 37566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAX_TXVGA_EEPROM 9 //How many word(u16) of EEPROM will be used for TxVGA 37766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAX_RF_PARAMETER 32 37866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37966101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _TXVGA_FOR_50 { 380eb62f3eaf7ff1e021a0f066a0f04ee45d0d1eadbPekka Enberg u8 ChanNo; 381eb62f3eaf7ff1e021a0f066a0f04ee45d0d1eadbPekka Enberg u8 TxVgaValue; 38266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} TXVGA_FOR_50; 38366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 38466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 38566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//===================================================================== 38666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// Device related include 38766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek//===================================================================== 38866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3899ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wbusb_s.h" 3909ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35reg_s.h" 3919ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35tx_s.h" 3929ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35rx_s.h" 39366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 39466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek// For Hal using ================================================================== 3958e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enbergstruct hw_data { 39666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For compatible with 33 39766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 revision; 39866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 BB3c_cal; // The value for Tx calibration comes from EEPROM 39966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 BB54_cal; // The value for Rx calibration comes from EEPROM 40066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For surprise remove 40366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 SurpriseRemove; // 0: Normal 1: Surprise remove 40466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 IsKeyPreSet; 40566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 CalOneTime; // 20060630.1 40666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 VCO_trim; 40866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For Fix 1'st DMA bug 41066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 FragCount; 41166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 DMAFix; //V1_DMA_FIX The variable can be removed if driver want to save mem space for V2. 41266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 41366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //=============================================== 41466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Definition for MAC address 41566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //=============================================== 416bd37b7fddf51431faf9c32cd22356421913cfce8Pekka Enberg u8 PermanentMacAddress[ETH_ALEN + 2]; // The Enthernet addr that are stored in EEPROM. + 2 to 8-byte alignment 417bd37b7fddf51431faf9c32cd22356421913cfce8Pekka Enberg u8 CurrentMacAddress[ETH_ALEN + 2]; // The Enthernet addr that are in used. + 2 to 8-byte alignment 41866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 41966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //===================================================================== 42066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Definition for 802.11 42166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //===================================================================== 4228b384e0c3f85065a4986013d74d5585ed595cfa0Pekka Enberg u8 *bssid_pointer; // Used by hal_get_bssid for return value 42366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 bssid[8];// Only 6 byte will be used. 8 byte is required for read buffer 42466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 ssid[32];// maximum ssid length is 32 byte 42566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 42666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 AID; 42766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 ssid_length; 42866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Channel; 42966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 43066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ListenInterval; 43166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 CapabilityInformation; 43266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 43366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 BeaconPeriod; 43466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ProbeDelay; 43566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 43666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 bss_type;// 0: IBSS_NET or 1:ESS_NET 43766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 preamble;// 0: short preamble, 1: long preamble 43866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 slot_time_select;// 9 or 20 value 43966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 phy_type;// Phy select 44066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 44166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_para[MAX_RF_PARAMETER]; 44266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_number; 44366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 44466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 CurrentRadioSw; // 20060320.2 0:On 1:Off 44566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 CurrentRadioHw; // 20060825 0:On 1:Off 44666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4478b384e0c3f85065a4986013d74d5585ed595cfa0Pekka Enberg u8 *power_save_point; // Used by hal_get_power_save_mode for return value 44866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 cwmin; 44966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 desired_power_save; 45066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 dtim;// Is running dtim 45166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 mapping_key_replace_index;//In Key table, the next index be replaced 931130.4.r 45266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 45366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 MaxReceiveLifeTime; 45466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 45566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold_tmp; 45666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 cwmax; 45766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 45866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Key_slot[MAX_KEY_TABLE][8]; //Ownership record for key slot. For Alignment 45966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 Key_content[MAX_KEY_TABLE][12]; // 10DW for each entry + 2 for burst command( Off and On valid bit) 46066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 CurrentDefaultKeyIndex; 46166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 CurrentDefaultKeyLength; 46266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 46366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //======================================================================== 46466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Variable for each module 46566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //======================================================================== 466eb62f3eaf7ff1e021a0f066a0f04ee45d0d1eadbPekka Enberg struct wb_usb WbUsb; // Need WbUsb.h 46765144de7989badce1782cc3319d9b8b2b5805accPekka Enberg struct wb35_reg reg; // Need Wb35Reg.h 468eb62f3eaf7ff1e021a0f066a0f04ee45d0d1eadbPekka Enberg struct wb35_tx Wb35Tx; // Need Wb35Tx.h 469eb62f3eaf7ff1e021a0f066a0f04ee45d0d1eadbPekka Enberg struct wb35_rx Wb35Rx; // Need Wb35Rx.h 47066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 471deee7c8164e62690aefefb3503bc4c4672b3e020Pekka Enberg struct timer_list LEDTimer;// For LED 47266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 47366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LEDpoint;// For LED 47466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 47566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 dto_tx_retry_count; // LA20040210_DTO kevin 47666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 dto_tx_frag_count; // LA20040210_DTO kevin 47766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 rx_ok_count[13]; // index=0: total rx ok 47866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //u32 rx_ok_bytes[13]; // index=0, total rx ok bytes 47966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 rx_err_count[13]; // index=0: total rx err 48066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 48166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek //for Tx debug 48266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_TBTT_start_count; 48366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_ETR_count; 48466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_WepOn_false_count; 48566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_Null_key_count; 48666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_retry_count[8]; 48766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 48866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 PowerIndexFromEEPROM; // For 2412MHz 48966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 power_index; 49066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 IsWaitJoinComplete; // TRUE: set join request 49166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 band; 49266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 49366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 SoftwareSet; 49466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 Reserved_s; 49566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 49666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 IsInitOK; // 0: Driver starting 1: Driver init OK 49766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 49866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For Phy calibration 49966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek s32 iq_rsdl_gain_tx_d2; 50066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek s32 iq_rsdl_phase_tx_d2; 50166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 txvga_setting_for_cal; // 20060703.1 Add 50266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 50366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 TxVgaSettingInEEPROM[ (((MAX_TXVGA_EEPROM*2)+3) & ~0x03) ]; // 20060621 For backup EEPROM value 50466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 TxVgaFor24[16]; // Max is 14, 2 for alignment 50566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek TXVGA_FOR_50 TxVgaFor50[36]; // 35 channels in 5G. 35x2 = 70 byte. 2 for alignments 50666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 50766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 Scan_Interval; 50866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 RESERVED6; 50966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 51066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // LED control 51166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_control; 51266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // LED_control 4 byte: Gray_Led_1[3] Gray_Led_0[2] Led[1] Led[0] 51366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Gray_Led 51466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For Led gray setting 51566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Led 51666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 0: normal control, LED behavior will decide by EEPROM setting 51766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 1: Turn off specific LED 51866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 2: Always on specific LED 51966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 3: slow blinking specific LED 52066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 4: fast blinking specific LED 52166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 5: WPS led control is set. Led0 is Red, Led1 id Green 52266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // Led[1] is parameter for WPS LED mode 52366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // // 1:InProgress 2: Error 3: Session overlap 4: Success 20061108 control 52466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 52566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_LinkOn; //Turn LED on control 52666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_Scanning; // Let LED in scan process control 52766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_Blinking; // Temp variable for shining 52866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 RxByteCountLast; 52966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 TxByteCountLast; 53066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 53144e8541c5e14b40a773e830df339eddbcd0cb7ecPekka Enberg atomic_t SurpriseRemoveCount; 53266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 53366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For global timer 53466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 time_count;//TICK_TIME_100ms 1 = 100ms 53566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 53666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // For error recover 53766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 HwStop; 53866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 53966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek // 20060828.1 for avoid AP disconnect 54066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 NullPacketCount; 54166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5428e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enberg}; 54366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 54480aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#endif 545