#ifndef __WINBOND_BSSDSCPT_H #define __WINBOND_BSSDSCPT_H #include #include "mds_s.h" #include "mlme_s.h" //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // bssdscpt.c // BSS descriptor data base // history : // // Description: // BSS descriptor data base will store the information of the stations at the // surrounding environment. The first entry( psBSS(0) ) will not be used and the // second one( psBSS(1) ) will be used for the broadcast address. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //#define MAX_ACC_RSSI_COUNT 10 #define MAX_ACC_RSSI_COUNT 6 /////////////////////////////////////////////////////////////////////////// // // BSS Description set Element , to store scan received Beacon information // // Our's differs slightly from the specs. The specify a PHY_Parameter_Set. // Since we're only doing a DS design right now, we just have a DS structure. ////////////////////////////////////////////////////////////////////////////// typedef struct BSSDescriptionElement { u32 SlotValid; u32 PowerSaveMode; RXLAYER1 RxLayer1; u8 abPeerAddress[ MAC_ADDR_LENGTH + 2 ]; // peer MAC Address associated with this session. 6-OCTET value u32 dwBgScanStamp; // BgScan Sequence Counter stamp, record psROAM->dwScanCounter. u16 Beacon_Period; u16 wATIM_Window; u8 abBssID[ MAC_ADDR_LENGTH + 2 ]; // 6B u8 bBssType; u8 DTIM_Period; // 1 octet usually from TIM element, if present u8 boInTimerHandler; u8 boERP; // analysis ERP or (extended) supported rate element u8 Timestamp[8]; u8 BasicRate[32]; u8 OperationalRate[32]; u32 dwBasicRateBitmap; //bit map, retrieve from SupportedRateSet u32 dwOperationalRateBitmap; //bit map, retrieve from SupportedRateSet and // ExtendedSupportedRateSet // For RSSI calculating u32 HalRssi[MAX_ACC_RSSI_COUNT]; // Encode. It must use MACRO of HAL to get the LNA and AGC data u32 HalRssiIndex; ////From beacon/probe response struct SSID_Element SSID; // 34B u8 reserved_1[ 2 ]; struct Capability_Information_Element CapabilityInformation; // 2B u8 reserved_2[ 2 ]; struct CF_Parameter_Set_Element CF_Parameter_Set; // 8B struct IBSS_Parameter_Set_Element IBSS_Parameter_Set; // 4B struct TIM_Element TIM_Element_Set; // 256B struct DS_Parameter_Set_Element DS_Parameter_Set; // 3B u8 reserved_3; struct ERP_Information_Element ERP_Information_Set; // 3B u8 reserved_4; struct Supported_Rates_Element SupportedRateSet; // 10B u8 reserved_5[2]; struct Extended_Supported_Rates_Element ExtendedSupportedRateSet; // 257B u8 reserved_6[3]; u8 band; u8 reserved_7[3]; // for MLME module u16 wState; // the current state of the system u16 wIndex; // THIS BSS element entry index void* psadapter; // pointer to THIS adapter struct timer_list timer; // MLME timer // Authentication u16 wAuthAlgo; // peer MAC MLME use Auth algorithm, default OPEN_AUTH u16 wAuthSeqNum; // current local MAC sendout AuthReq sequence number u8 auth_challengeText[128]; ////For XP: u32 ies_len; // information element length u8 ies[256]; // information element ////For WPA u8 RsnIe_Type[2]; //added by ws for distinguish WPA and WPA2 05/14/04 u8 RsnIe_len; u8 Rsn_Num; // to record the rsn cipher suites,addded by ws 09/05/04 SUITE_SELECTOR group_cipher; // 4B SUITE_SELECTOR pairwise_key_cipher_suites[WLAN_MAX_PAIRWISE_CIPHER_SUITE_COUNT]; SUITE_SELECTOR auth_key_mgt_suites[WLAN_MAX_AUTH_KEY_MGT_SUITE_LIST_COUNT]; u16 pairwise_key_cipher_suite_count; u16 auth_key_mgt_suite_count; u8 pairwise_key_cipher_suite_selected; u8 auth_key_mgt_suite_selected; u8 reserved_8[2]; struct RSN_Capability_Element rsn_capabilities; // 2B u8 reserved_9[2]; //to record the rsn cipher suites for WPA2 #ifdef _WPA2_ u32 pre_auth; //added by WS for distinguish for 05/04/04 SUITE_SELECTOR wpa2_group_cipher; // 4B SUITE_SELECTOR wpa2_pairwise_key_cipher_suites[WLAN_MAX_PAIRWISE_CIPHER_SUITE_COUNT]; SUITE_SELECTOR wpa2_auth_key_mgt_suites[WLAN_MAX_AUTH_KEY_MGT_SUITE_LIST_COUNT]; u16 wpa2_pairwise_key_cipher_suite_count; u16 wpa2_auth_key_mgt_suite_count; u8 wpa2_pairwise_key_cipher_suite_selected; u8 wpa2_auth_key_mgt_suite_selected; u8 reserved_10[2]; struct RSN_Capability_Element wpa2_rsn_capabilities; // 2B u8 reserved_11[2]; #endif //endif _WPA2_ //For Replay protection // u8 PairwiseTSC[6]; // u8 GroupTSC[6]; ////For up-to-date u32 ScanTimeStamp; //for the decision whether the station/AP(may exist at //different channels) has left. It must be detected by //scanning. Local device may connected or disconnected. u32 BssTimeStamp; //Only for the decision whether the station/AP(exist in //the same channel, and no scanning) if local device has //connected successfully. // 20061108 Add for storing WPS_IE. [E id][Length][OUI][Data] u8 WPS_IE_Data[MAX_IE_APPEND_SIZE]; u16 WPS_IE_length; u16 WPS_IE_length_tmp; // For verify there is an WPS_IE in Beacon or probe response } WB_BSSDESCRIPTION, *PWB_BSSDESCRIPTION; #define wBSSConnectedSTA(adapter) \ ((u16)(adapter)->sLocalPara.wConnectedSTAindex) #define psBSS(i) (&(adapter->asBSSDescriptElement[(i)])) #endif