wbhal.h revision 5a7df3c449e7db7cf4b7807862e11f11c47c2331
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 75a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_LED_SET_MASK 0x001c 85a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_LED_SET_SHIFT 2 966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* supported RF type */ 1166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2825 0 1266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2827 1 1366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2828 2 1466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2829 3 155a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_MAXIM_V1 15 1666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_2230 16 1766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_7230 17 185a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_AIROHA_2230S 18 195a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_WB_242 33 205a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_WB_242_1 34 2166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_DECIDE_BY_INF 255 2266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 235a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 245a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ---------------------------------------------------------------- 255a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * The follow define connect to upper layer 265a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * User must modify for connection between HAL and upper layer 275a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ---------------------------------------------------------------- 285a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 295a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 305a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 315a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================== 325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Common define 335a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================== 345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Bit 5 */ 365a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_USB_MODE_BURST(_H) (_H->SoftwareSet & 0x20) 375a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 385a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Scan interval */ 395a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SCAN_MAX_CHNL_TIME (50) 405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For TxL2 Frame typr recognise */ 4266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_3_DATA 0 4366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_MANAGEMENT 1 445a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE 2 4566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_CONTROL 3 4666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_DATA 4 4766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_PROMISCUOUS 5 4866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* The follow definition is used for convert the frame------------ */ 505a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_SEQUENCE_OFFSET 22 /* Sequence control offset */ 5166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_3_TYPE_OFFSET 12 525a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_MAC_HEADER_SIZE 24 5366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_SNAP_SIZE 6 545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_TYPE_OFFSET 30 /* The start offset of 802.11 Frame. Type encapsulation. */ 5566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_SIFSTIME 10 565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DEFAULT_FRAGMENT_THRESHOLD 2346 /* No fragment */ 5766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_MSDU_LIFE_TIME 0xffff 5866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 595a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define LONG_PREAMBLE_PLUS_PLCPHEADER_TIME (144 + 48) 605a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME (72 + 24) 615a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION (16 + 4 + 6) 625a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define Tsym 4 6366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 645a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Frame Type of Bits (2, 3)----------------------------------- */ 6566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_MANAGEMENT 0x00 6666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_CONTROL 0x04 6766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_DATA 0x08 685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MASK_FRAGMENT_NUMBER 0x000F 695a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SEQUENCE_NUMBER_SHIFT 4 7066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_WAKEUP_FRAME 0x01 7266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_MAGIC_PACKET 0x02 7366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 745a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_WEP40 0 755a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_WEP104 1 765a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_TKIP 2 /* 128 bit key */ 775a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_AES_CCMP 3 /* 128 bit key */ 7866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 795a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For VM state */ 8066101de10957e07a6fd0365d5af9adf650246d14Pavel Machekenum { 8166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_STOP = 0, 8266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_RUNNING, 8366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_COMPLETED 8466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek}; 8566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 865a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================ 885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Normal Key table format 895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================ 905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* The order of KEY index is MAPPING_KEY_START_INDEX > GROUP_KEY_START_INDEX */ 935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_KEY_TABLE 24 /* 24 entry for storing key data */ 9466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define GROUP_KEY_START_INDEX 4 9566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAPPING_KEY_START_INDEX 8 9666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 975a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 995a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Descriptor 1005a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 1015a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 1025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_DESCRIPTOR_BUFFER_INDEX 8 /* Have to multiple of 2 */ 1035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_ERROR_TX_MASK 0x000000bf 1045a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_ERROR_RX_MASK 0x0000083f 1055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 1065a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_BAND_RX_MASK 0x10000000 /* Bit 28 */ 1075a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 1085a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleytypedef struct _R00_DESCRIPTOR { 1095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 11066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1115a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1125a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 11366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 11466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 11566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 11666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 11766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 11866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1195a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1205a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 12166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 12266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 12366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 12466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 12566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 12666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1275a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 12866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 12966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} R00_DESCRIPTOR, *PR00_DESCRIPTOR; 13066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 1315a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleytypedef struct _T00_DESCRIPTOR { 1325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 13366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 1365a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_first_mpdu:1; /* for hardware use */ 1375a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_last_mpdu:1; /* for hardware use */ 1385a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IsLastMpdu:1;/* 0:not 1:Yes for software used */ 1395a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IgnoreResult:1;/* The same mechanism with T00 setting. */ 1405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_RESERVED_ID:2;/* 3 bit ID reserved */ 1415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_tx_packet_id:4; 14266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 14366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 14466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 14566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1475a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 14866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 14966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 15066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 1515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_tx_packet_id:4; 1525a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_RESERVED_ID:2; /* 3 bit ID reserved */ 1535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IgnoreResult:1; /* The same mechanism with T00 setting. */ 1545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IsLastMpdu:1; /* 0:not 1:Yes for software used */ 1555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_last_mpdu:1; /* for hardware use */ 1565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_first_mpdu:1; /* for hardware use */ 15766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1585a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 15966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 16066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T00_DESCRIPTOR, *PT00_DESCRIPTOR; 16166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 1625a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleytypedef struct _R01_DESCRIPTOR { 1635a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 16466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1655a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1665a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 16766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 16866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 16966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 17066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 17166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 17266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 17366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 17466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 17566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 17666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 17766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 17866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 17966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 18066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 18166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 18266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 18366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 18466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 18566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 18666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 18966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 19066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 19166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 19266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 19366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 19466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 19566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 19666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 19766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 19866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 19966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 20066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 20166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 20266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 20366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 20466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 20566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 20666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 20766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 20866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 21066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 21166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} R01_DESCRIPTOR, *PR01_DESCRIPTOR; 21266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2135a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleytypedef struct _T01_DESCRIPTOR { 2145a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 21566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 2165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 2175a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 21866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 21966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 22066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 22166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 22266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 22366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 22466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 22566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 22666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 22766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 22866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 22966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 23066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2315a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 2325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 23366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 23466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 23566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 23666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 23766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 23866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 23966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 24066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 24166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 24266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 24366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 24466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 24566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 24766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 24866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T01_DESCRIPTOR, *PT01_DESCRIPTOR; 24966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2505a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleytypedef struct _T02_DESCRIPTOR { 2515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 25266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 2535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 2545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 2555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IsLastMpdu:1; /* The same mechanism with T00 setting */ 2565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IgnoreResult:1; /* The same mechanism with T00 setting. */ 2575a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_RESERVED_ID:2; /* The same mechanism with T00 setting */ 25866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 25966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 26066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 26166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 26266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 26366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 26466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 26566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 26666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 26766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 26866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 26966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 27066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 27166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2725a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 2735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 27466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 27566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 27666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 27766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 27866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 27966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 28066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 28166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 28266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 28366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 28466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 28566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 28666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 2875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_RESERVED_ID:2; /* The same mechanism with T00 setting */ 2885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IgnoreResult:1; /* The same mechanism with T00 setting. */ 2895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IsLastMpdu:1; /* The same mechanism with T00 setting */ 29066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 29266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 29366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} T02_DESCRIPTOR, *PT02_DESCRIPTOR; 29466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleystruct wb35_descriptor { /* Skip length = 8 DWORD */ 2965a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* ID for descriptor ---, The field doesn't be cleard in the operation of Descriptor definition */ 29766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Descriptor_ID; 2985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* ----------------------The above region doesn't be cleared by DESCRIPTOR_RESET------ */ 29966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 RESERVED[3]; 30066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 30166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 3025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 InternalUsed; /* Only can be used by operation of descriptor definition */ 3035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 Type; /* 0: 802.3 1:802.11 data frame 2:802.11 management frame */ 30466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PreambleMode;/* 0: short 1:long */ 30666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 TxRate; 30766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 FragmentCount; 3085a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 EapFix; /* For speed up key install */ 30966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R00 and T00 ------------------------------ */ 3115a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 31266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek R00_DESCRIPTOR R00; 31366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T00_DESCRIPTOR T00; 31466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 31566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R01 and T01 ------------------------------ */ 3175a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 31866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek R01_DESCRIPTOR R01; 31966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T01_DESCRIPTOR T01; 32066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 32166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3225a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R02 and T02 ------------------------------ */ 3235a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 3245a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 R02; 32566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek T02_DESCRIPTOR T02; 32666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 32766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3285a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R03 and T03 ------------------------------ */ 3295a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For software used */ 3305a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 33166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R03; 33266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T03; 3335a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 33466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_number; 33566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_start_index; 33666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 buffer_total_size; 33766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 33866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 33966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For storing the buffer */ 3415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 buffer_size[MAX_DESCRIPTOR_BUFFER_INDEX]; 3425a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley void *buffer_address[MAX_DESCRIPTOR_BUFFER_INDEX]; 34327d4642105b3fc6781e9110c7f4d0741434985caPekka Enberg}; 34466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 34566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DEFAULT_NULL_PACKET_COUNT 180000 /* 180 seconds */ 34766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3485a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_TXVGA_EEPROM 9 /* How many word(u16) of EEPROM will be used for TxVGA */ 3495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_RF_PARAMETER 32 35066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 35166101de10957e07a6fd0365d5af9adf650246d14Pavel Machektypedef struct _TXVGA_FOR_50 { 3525a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 ChanNo; 3535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaValue; 35466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek} TXVGA_FOR_50; 35566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 35666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3575a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 3585a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================================== 3595a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Device related include 3605a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================================== 3615a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 36266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3639ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wbusb_s.h" 3649ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35reg_s.h" 3659ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35tx_s.h" 3669ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35rx_s.h" 36766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For Hal using ============================================ */ 3698e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enbergstruct hw_data { 3705a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For compatible with 33 */ 37166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 revision; 3725a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 BB3c_cal; /* The value for Tx calibration comes from EEPROM */ 3735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 BB54_cal; /* The value for Rx calibration comes from EEPROM */ 37466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3755a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For surprise remove */ 3765a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 SurpriseRemove; /* 0: Normal 1: Surprise remove */ 37766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 IsKeyPreSet; 3785a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 CalOneTime; 37966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 38066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 VCO_trim; 38166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 38266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 FragCount; 3835a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 DMAFix; /* V1_DMA_FIX The variable can be removed if driver want to save mem space for V2. */ 3845a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 3855a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 3865a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * =============================================== 3875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Definition for MAC address 3885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * =============================================== 3895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 3905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PermanentMacAddress[ETH_ALEN + 2]; /* The Ethernet addr that are stored in EEPROM. + 2 to 8-byte alignment */ 3915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 CurrentMacAddress[ETH_ALEN + 2]; /* The Enthernet addr that are in used. + 2 to 8-byte alignment */ 3925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 3935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 3945a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 3955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Definition for 802.11 3965a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 3975a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 3985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 *bssid_pointer; /* Used by hal_get_bssid for return value */ 3995a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 bssid[8]; /* Only 6 byte will be used. 8 byte is required for read buffer */ 4005a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 ssid[32]; /* maximum ssid length is 32 byte */ 40166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 AID; 40366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 ssid_length; 40466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Channel; 40566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ListenInterval; 40766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 CapabilityInformation; 40866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 BeaconPeriod; 41066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ProbeDelay; 41166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4125a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 bss_type;/* 0: IBSS_NET or 1:ESS_NET */ 4135a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 preamble;/* 0: short preamble, 1: long preamble */ 4145a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 slot_time_select; /* 9 or 20 value */ 4155a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 phy_type; /* Phy select */ 41666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 41766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_para[MAX_RF_PARAMETER]; 41866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_number; 41966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4205a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 CurrentRadioSw; /* 0:On 1:Off */ 4215a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 CurrentRadioHw; /* 0:On 1:Off */ 42266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4235a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 *power_save_point; /* Used by hal_get_power_save_mode for return value */ 42466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 cwmin; 42566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 desired_power_save; 4265a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 dtim; /* Is running dtim */ 4275a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 mapping_key_replace_index; /* In Key table, the next index be replaced */ 42866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 42966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 MaxReceiveLifeTime; 43066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 43166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold_tmp; 43266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 cwmax; 43366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 Key_slot[MAX_KEY_TABLE][8]; /* Ownership record for key slot. For Alignment */ 4355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 Key_content[MAX_KEY_TABLE][12]; /* 10DW for each entry + 2 for burst command (Off and On valid bit) */ 43666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 CurrentDefaultKeyIndex; 43766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 CurrentDefaultKeyLength; 43866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4395a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 4405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================================== 4415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Variable for each module 4425a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================================== 4435a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 4445a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb_usb WbUsb; /* Need WbUsb.h */ 4455a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_reg reg; /* Need Wb35Reg.h */ 4465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_tx Wb35Tx; /* Need Wb35Tx.h */ 4475a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_rx Wb35Rx; /* Need Wb35Rx.h */ 44866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct timer_list LEDTimer; /* For LED */ 45066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LEDpoint; /* For LED */ 45266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 dto_tx_retry_count; 4545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 dto_tx_frag_count; 4555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 rx_ok_count[13]; /* index=0: total rx ok */ 4565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 rx_err_count[13]; /* index=0: total rx err */ 45766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4585a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* for Tx debug */ 45966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_TBTT_start_count; 46066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_ETR_count; 46166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_WepOn_false_count; 46266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_Null_key_count; 46366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_retry_count[8]; 46466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4655a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PowerIndexFromEEPROM; /* For 2412MHz */ 4665a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 power_index; 4675a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 IsWaitJoinComplete; /* TRUE: set join request */ 4685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 band; 46966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4705a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 SoftwareSet; 4715a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 Reserved_s; 47266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 IsInitOK; /* 0: Driver starting 1: Driver init OK */ 47466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4755a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For Phy calibration */ 4765a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley s32 iq_rsdl_gain_tx_d2; 4775a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley s32 iq_rsdl_phase_tx_d2; 4785a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 txvga_setting_for_cal; 47966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4805a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaSettingInEEPROM[(((MAX_TXVGA_EEPROM * 2) + 3) & ~0x03)]; /* For EEPROM value */ 4815a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaFor24[16]; /* Max is 14, 2 for alignment */ 4825a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley TXVGA_FOR_50 TxVgaFor50[36]; /* 35 channels in 5G. 35x2 = 70 byte. 2 for alignments */ 48366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4845a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 Scan_Interval; 4855a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 RESERVED6; 48666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* LED control */ 48866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_control; 4895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 4905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * LED_control 4 byte: Gray_Led_1[3] Gray_Led_0[2] Led[1] Led[0] 4915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Gray_Led 4925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * For Led gray setting 4935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Led 4945a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 0: normal control, 4955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * LED behavior will decide by EEPROM setting 4965a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 1: Turn off specific LED 4975a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 2: Always on specific LED 4985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 3: slow blinking specific LED 4995a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 4: fast blinking specific LED 5005a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 5: WPS led control is set. Led0 is Red, Led1 id Green 5015a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 5025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Led[1] is parameter for WPS LED mode 5035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 1:InProgress 5045a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 2: Error 5055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 3: Session overlap 5065a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 4: Success control 5075a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 5085a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_LinkOn; /* Turn LED on control */ 5095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_Scanning; /* Let LED in scan process control */ 5105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_Blinking; /* Temp variable for shining */ 51166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 RxByteCountLast; 51266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 TxByteCountLast; 51366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 51444e8541c5e14b40a773e830df339eddbcd0cb7ecPekka Enberg atomic_t SurpriseRemoveCount; 51566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For global timer */ 5175a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 time_count; /* TICK_TIME_100ms 1 = 100ms */ 51866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5195a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For error recover */ 52066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 HwStop; 52166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5225a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For avoid AP disconnect */ 52366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 NullPacketCount; 5248e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enberg}; 52566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 52680aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#endif 527