157 lines
5.2 KiB
C
157 lines
5.2 KiB
C
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// 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
|
|
OS_TIMER nTimer; // 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)]))
|
|
|
|
|