| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- /*
- * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- *
- * File: wmgr.h
- *
- * Purpose:
- *
- * Author: lyndon chen
- *
- * Date: Jan 2, 2003
- *
- * Functions:
- *
- * Revision History:
- *
- */
- #ifndef __WMGR_H__
- #define __WMGR_H__
- #include "ttype.h"
- #include "80211mgr.h"
- #include "80211hdr.h"
- #include "wcmd.h"
- #include "bssdb.h"
- #include "wpa2.h"
- #include "vntwifi.h"
- #include "card.h"
- /*--------------------- Export Definitions -------------------------*/
- // Scan time
- #define PROBE_DELAY 100 // (us)
- #define SWITCH_CHANNEL_DELAY 200 // (us)
- #define WLAN_SCAN_MINITIME 25 // (ms)
- #define WLAN_SCAN_MAXTIME 100 // (ms)
- #define TRIVIAL_SYNC_DIFFERENCE 0 // (us)
- #define DEFAULT_IBSS_BI 100 // (ms)
- #define WCMD_ACTIVE_SCAN_TIME 50 //(ms)
- #define WCMD_PASSIVE_SCAN_TIME 100 //(ms)
- #define DEFAULT_MSDU_LIFETIME 512 // ms
- #define DEFAULT_MSDU_LIFETIME_RES_64us 8000 // 64us
- #define DEFAULT_MGN_LIFETIME 8 // ms
- #define DEFAULT_MGN_LIFETIME_RES_64us 125 // 64us
- #define MAKE_BEACON_RESERVED 10 //(us)
- #define TIM_MULTICAST_MASK 0x01
- #define TIM_BITMAPOFFSET_MASK 0xFE
- #define DEFAULT_DTIM_PERIOD 1
- #define AP_LONG_RETRY_LIMIT 4
- #define DEFAULT_IBSS_CHANNEL 6 //2.4G
- /*--------------------- Export Classes ----------------------------*/
- /*--------------------- Export Variables --------------------------*/
- /*--------------------- Export Types ------------------------------*/
- #define timer_expire(timer, next_tick) mod_timer(&timer, RUN_AT(next_tick))
- typedef void (*TimerFunction)(unsigned long);
- //+++ NDIS related
- typedef unsigned char NDIS_802_11_MAC_ADDRESS[6];
- typedef struct _NDIS_802_11_AI_REQFI {
- unsigned short Capabilities;
- unsigned short ListenInterval;
- NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
- } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
- typedef struct _NDIS_802_11_AI_RESFI {
- unsigned short Capabilities;
- unsigned short StatusCode;
- unsigned short AssociationId;
- } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
- typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
- unsigned long Length;
- unsigned short AvailableRequestFixedIEs;
- NDIS_802_11_AI_REQFI RequestFixedIEs;
- unsigned long RequestIELength;
- unsigned long OffsetRequestIEs;
- unsigned short AvailableResponseFixedIEs;
- NDIS_802_11_AI_RESFI ResponseFixedIEs;
- unsigned long ResponseIELength;
- unsigned long OffsetResponseIEs;
- } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
- typedef struct tagSAssocInfo {
- NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo;
- unsigned char abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN];
- // store ReqIEs set by OID_802_11_ASSOCIATION_INFORMATION
- unsigned long RequestIELength;
- unsigned char abyReqIEs[WLAN_BEACON_FR_MAXLEN];
- } SAssocInfo, *PSAssocInfo;
- //---
- typedef enum tagWMAC_SCAN_TYPE {
- WMAC_SCAN_ACTIVE,
- WMAC_SCAN_PASSIVE,
- WMAC_SCAN_HYBRID
- } WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE;
- typedef enum tagWMAC_SCAN_STATE {
- WMAC_NO_SCANNING,
- WMAC_IS_SCANNING,
- WMAC_IS_PROBEPENDING
- } WMAC_SCAN_STATE, *PWMAC_SCAN_STATE;
- // Notes:
- // Basic Service Set state explained as following:
- // WMAC_STATE_IDLE : no BSS is selected (Adhoc or Infra)
- // WMAC_STATE_STARTED : no BSS is selected, start own IBSS (Adhoc only)
- // WMAC_STATE_JOINTED : BSS is selected and synchronized (Adhoc or Infra)
- // WMAC_STATE_AUTHPENDING : Authentication pending (Infra)
- // WMAC_STATE_AUTH : Authenticated (Infra)
- // WMAC_STATE_ASSOCPENDING : Association pending (Infra)
- // WMAC_STATE_ASSOC : Associated (Infra)
- typedef enum tagWMAC_BSS_STATE {
- WMAC_STATE_IDLE,
- WMAC_STATE_STARTED,
- WMAC_STATE_JOINTED,
- WMAC_STATE_AUTHPENDING,
- WMAC_STATE_AUTH,
- WMAC_STATE_ASSOCPENDING,
- WMAC_STATE_ASSOC
- } WMAC_BSS_STATE, *PWMAC_BSS_STATE;
- // WMAC selected running mode
- typedef enum tagWMAC_CURRENT_MODE {
- WMAC_MODE_STANDBY,
- WMAC_MODE_ESS_STA,
- WMAC_MODE_IBSS_STA,
- WMAC_MODE_ESS_AP
- } WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE;
- /*
- typedef enum tagWMAC_POWER_MODE {
- WMAC_POWER_CAM,
- WMAC_POWER_FAST,
- WMAC_POWER_MAX
- } WMAC_POWER_MODE, *PWMAC_POWER_MODE;
- */
- // Tx Management Packet descriptor
- typedef struct tagSTxMgmtPacket {
- PUWLAN_80211HDR p80211Header;
- unsigned int cbMPDULen;
- unsigned int cbPayloadLen;
- } STxMgmtPacket, *PSTxMgmtPacket;
- // Rx Management Packet descriptor
- typedef struct tagSRxMgmtPacket {
- PUWLAN_80211HDR p80211Header;
- u64 qwLocalTSF;
- unsigned int cbMPDULen;
- unsigned int cbPayloadLen;
- unsigned int uRSSI;
- unsigned char bySQ;
- unsigned char byRxRate;
- unsigned char byRxChannel;
- } SRxMgmtPacket, *PSRxMgmtPacket;
- typedef struct tagSMgmtObject {
- void *pAdapter;
- // MAC address
- unsigned char abyMACAddr[WLAN_ADDR_LEN];
- // Configuration Mode
- WMAC_CONFIG_MODE eConfigMode; // MAC pre-configed mode
- CARD_PHY_TYPE eCurrentPHYMode;
- CARD_PHY_TYPE eConfigPHYMode;
- // Operation state variables
- WMAC_CURRENT_MODE eCurrMode; // MAC current connection mode
- WMAC_BSS_STATE eCurrState; // MAC current BSS state
- PKnownBSS pCurrBSS;
- unsigned char byCSSGK;
- unsigned char byCSSPK;
- // Current state vars
- unsigned int uCurrChannel;
- unsigned char abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
- unsigned char abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
- unsigned char abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
- unsigned char abyCurrBSSID[WLAN_BSSID_LEN];
- unsigned short wCurrCapInfo;
- unsigned short wCurrAID;
- unsigned short wCurrATIMWindow;
- unsigned short wCurrBeaconPeriod;
- bool bIsDS;
- unsigned char byERPContext;
- CMD_STATE eCommandState;
- unsigned int uScanChannel;
- // Desire joining BSS vars
- unsigned char abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
- unsigned char abyDesireBSSID[WLAN_BSSID_LEN];
- // Adhoc or AP configuration vars
- unsigned short wIBSSBeaconPeriod;
- unsigned short wIBSSATIMWindow;
- unsigned int uIBSSChannel;
- unsigned char abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
- unsigned char byAPBBType;
- unsigned char abyWPAIE[MAX_WPA_IE_LEN];
- unsigned short wWPAIELen;
- unsigned int uAssocCount;
- bool bMoreData;
- // Scan state vars
- WMAC_SCAN_STATE eScanState;
- WMAC_SCAN_TYPE eScanType;
- unsigned int uScanStartCh;
- unsigned int uScanEndCh;
- unsigned short wScanSteps;
- unsigned int uScanBSSType;
- // Desire scanning vars
- unsigned char abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
- unsigned char abyScanBSSID[WLAN_BSSID_LEN];
- // Privacy
- WMAC_AUTHENTICATION_MODE eAuthenMode;
- WMAC_ENCRYPTION_MODE eEncryptionMode;
- bool bShareKeyAlgorithm;
- unsigned char abyChallenge[WLAN_CHALLENGE_LEN];
- bool bPrivacyInvoked;
- // Received beacon state vars
- bool bInTIM;
- bool bMulticastTIM;
- unsigned char byDTIMCount;
- unsigned char byDTIMPeriod;
- // Power saving state vars
- WMAC_POWER_MODE ePSMode;
- unsigned short wListenInterval;
- unsigned short wCountToWakeUp;
- bool bInTIMWake;
- unsigned char *pbyPSPacketPool;
- unsigned char byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN];
- bool bRxBeaconInTBTTWake;
- unsigned char abyPSTxMap[MAX_NODE_NUM + 1];
- // management command related
- unsigned int uCmdBusy;
- unsigned int uCmdHostAPBusy;
- // management packet pool
- unsigned char *pbyMgmtPacketPool;
- unsigned char byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
- // One second callback timer
- struct timer_list sTimerSecondCallback;
- // Temporarily Rx Mgmt Packet Descriptor
- SRxMgmtPacket sRxPacket;
- // link list of known bss's (scan results)
- KnownBSS sBSSList[MAX_BSS_NUM];
- // table list of known node
- // sNodeDBList[0] is reserved for AP under Infra mode
- // sNodeDBList[0] is reserved for Multicast under adhoc/AP mode
- KnownNodeDB sNodeDBTable[MAX_NODE_NUM + 1];
- // WPA2 PMKID Cache
- SPMKIDCache gsPMKIDCache;
- bool bRoaming;
- // rate fall back vars
- // associate info
- SAssocInfo sAssocInfo;
- // for 802.11h
- bool b11hEnable;
- bool bSwitchChannel;
- unsigned char byNewChannel;
- PWLAN_IE_MEASURE_REP pCurrMeasureEIDRep;
- unsigned int uLengthOfRepEIDs;
- unsigned char abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
- unsigned char abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
- unsigned char abyIECountry[WLAN_A3FR_MAXLEN];
- unsigned char abyIBSSDFSOwner[6];
- unsigned char byIBSSDFSRecovery;
- struct sk_buff skb;
- } SMgmtObject, *PSMgmtObject;
- /*--------------------- Export Macros ------------------------------*/
- /*--------------------- Export Functions --------------------------*/
- void
- vMgrObjectInit(
- void *hDeviceContext
- );
- void
- vMgrTimerInit(
- void *hDeviceContext
- );
- void
- vMgrObjectReset(
- void *hDeviceContext
- );
- void
- vMgrAssocBeginSta(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- PCMD_STATUS pStatus
- );
- void
- vMgrReAssocBeginSta(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- PCMD_STATUS pStatus
- );
- void
- vMgrDisassocBeginSta(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- unsigned char *abyDestAddress,
- unsigned short wReason,
- PCMD_STATUS pStatus
- );
- void
- vMgrAuthenBeginSta(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- PCMD_STATUS pStatus
- );
- void
- vMgrCreateOwnIBSS(
- void *hDeviceContext,
- PCMD_STATUS pStatus
- );
- void
- vMgrJoinBSSBegin(
- void *hDeviceContext,
- PCMD_STATUS pStatus
- );
- void
- vMgrRxManagePacket(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- PSRxMgmtPacket pRxPacket
- );
- /*
- void
- vMgrScanBegin(
- void *hDeviceContext,
- PCMD_STATUS pStatus
- );
- */
- void
- vMgrDeAuthenBeginSta(
- void *hDeviceContext,
- PSMgmtObject pMgmt,
- unsigned char *abyDestAddress,
- unsigned short wReason,
- PCMD_STATUS pStatus
- );
- bool
- bMgrPrepareBeaconToSend(
- void *hDeviceContext,
- PSMgmtObject pMgmt
- );
- bool
- bAdd_PMKID_Candidate(
- void *hDeviceContext,
- unsigned char *pbyBSSID,
- PSRSNCapObject psRSNCapObj
- );
- void
- vFlush_PMKID_Candidate(
- void *hDeviceContext
- );
- #endif // __WMGR_H__
|