Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.16-rc3 424 lines 11 kB view raw
1/* 2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. 3 * All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * 20 * File: wmgr.h 21 * 22 * Purpose: 23 * 24 * Author: lyndon chen 25 * 26 * Date: Jan 2, 2003 27 * 28 * Functions: 29 * 30 * Revision History: 31 * 32 */ 33 34#ifndef __WMGR_H__ 35#define __WMGR_H__ 36 37#include "ttype.h" 38#include "80211mgr.h" 39#include "80211hdr.h" 40#include "wcmd.h" 41#include "bssdb.h" 42#include "wpa2.h" 43#include "vntwifi.h" 44#include "card.h" 45 46/*--------------------- Export Definitions -------------------------*/ 47 48// Scan time 49#define PROBE_DELAY 100 // (us) 50#define SWITCH_CHANNEL_DELAY 200 // (us) 51#define WLAN_SCAN_MINITIME 25 // (ms) 52#define WLAN_SCAN_MAXTIME 100 // (ms) 53#define TRIVIAL_SYNC_DIFFERENCE 0 // (us) 54#define DEFAULT_IBSS_BI 100 // (ms) 55 56#define WCMD_ACTIVE_SCAN_TIME 50 //(ms) 57#define WCMD_PASSIVE_SCAN_TIME 100 //(ms) 58 59#define DEFAULT_MSDU_LIFETIME 512 // ms 60#define DEFAULT_MSDU_LIFETIME_RES_64us 8000 // 64us 61 62#define DEFAULT_MGN_LIFETIME 8 // ms 63#define DEFAULT_MGN_LIFETIME_RES_64us 125 // 64us 64 65#define MAKE_BEACON_RESERVED 10 //(us) 66 67#define TIM_MULTICAST_MASK 0x01 68#define TIM_BITMAPOFFSET_MASK 0xFE 69#define DEFAULT_DTIM_PERIOD 1 70 71#define AP_LONG_RETRY_LIMIT 4 72 73#define DEFAULT_IBSS_CHANNEL 6 //2.4G 74 75/*--------------------- Export Classes ----------------------------*/ 76 77/*--------------------- Export Variables --------------------------*/ 78 79/*--------------------- Export Types ------------------------------*/ 80#define timer_expire(timer, next_tick) mod_timer(&timer, RUN_AT(next_tick)) 81typedef void (*TimerFunction)(unsigned long); 82 83//+++ NDIS related 84 85typedef unsigned char NDIS_802_11_MAC_ADDRESS[6]; 86typedef struct _NDIS_802_11_AI_REQFI 87{ 88 unsigned short Capabilities; 89 unsigned short ListenInterval; 90 NDIS_802_11_MAC_ADDRESS CurrentAPAddress; 91} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; 92 93typedef struct _NDIS_802_11_AI_RESFI 94{ 95 unsigned short Capabilities; 96 unsigned short StatusCode; 97 unsigned short AssociationId; 98} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; 99 100typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION 101{ 102 unsigned long Length; 103 unsigned short AvailableRequestFixedIEs; 104 NDIS_802_11_AI_REQFI RequestFixedIEs; 105 unsigned long RequestIELength; 106 unsigned long OffsetRequestIEs; 107 unsigned short AvailableResponseFixedIEs; 108 NDIS_802_11_AI_RESFI ResponseFixedIEs; 109 unsigned long ResponseIELength; 110 unsigned long OffsetResponseIEs; 111} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; 112 113typedef struct tagSAssocInfo { 114 NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo; 115 unsigned char abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN]; 116 // store ReqIEs set by OID_802_11_ASSOCIATION_INFORMATION 117 unsigned long RequestIELength; 118 unsigned char abyReqIEs[WLAN_BEACON_FR_MAXLEN]; 119} SAssocInfo, *PSAssocInfo; 120//--- 121 122typedef enum tagWMAC_SCAN_TYPE { 123 WMAC_SCAN_ACTIVE, 124 WMAC_SCAN_PASSIVE, 125 WMAC_SCAN_HYBRID 126} WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE; 127 128typedef enum tagWMAC_SCAN_STATE { 129 WMAC_NO_SCANNING, 130 WMAC_IS_SCANNING, 131 WMAC_IS_PROBEPENDING 132} WMAC_SCAN_STATE, *PWMAC_SCAN_STATE; 133 134// Notes: 135// Basic Service Set state explained as following: 136// WMAC_STATE_IDLE : no BSS is selected (Adhoc or Infra) 137// WMAC_STATE_STARTED : no BSS is selected, start own IBSS (Adhoc only) 138// WMAC_STATE_JOINTED : BSS is selected and synchronized (Adhoc or Infra) 139// WMAC_STATE_AUTHPENDING : Authentication pending (Infra) 140// WMAC_STATE_AUTH : Authenticated (Infra) 141// WMAC_STATE_ASSOCPENDING : Association pending (Infra) 142// WMAC_STATE_ASSOC : Associated (Infra) 143 144typedef enum tagWMAC_BSS_STATE { 145 WMAC_STATE_IDLE, 146 WMAC_STATE_STARTED, 147 WMAC_STATE_JOINTED, 148 WMAC_STATE_AUTHPENDING, 149 WMAC_STATE_AUTH, 150 WMAC_STATE_ASSOCPENDING, 151 WMAC_STATE_ASSOC 152} WMAC_BSS_STATE, *PWMAC_BSS_STATE; 153 154// WMAC selected running mode 155typedef enum tagWMAC_CURRENT_MODE { 156 WMAC_MODE_STANDBY, 157 WMAC_MODE_ESS_STA, 158 WMAC_MODE_IBSS_STA, 159 WMAC_MODE_ESS_AP 160} WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE; 161 162/* 163 typedef enum tagWMAC_POWER_MODE { 164 WMAC_POWER_CAM, 165 WMAC_POWER_FAST, 166 WMAC_POWER_MAX 167 168 } WMAC_POWER_MODE, *PWMAC_POWER_MODE; 169*/ 170 171// Tx Management Packet descriptor 172typedef struct tagSTxMgmtPacket { 173 PUWLAN_80211HDR p80211Header; 174 unsigned int cbMPDULen; 175 unsigned int cbPayloadLen; 176} STxMgmtPacket, *PSTxMgmtPacket; 177 178// Rx Management Packet descriptor 179typedef struct tagSRxMgmtPacket { 180 PUWLAN_80211HDR p80211Header; 181 QWORD qwLocalTSF; 182 unsigned int cbMPDULen; 183 unsigned int cbPayloadLen; 184 unsigned int uRSSI; 185 unsigned char bySQ; 186 unsigned char byRxRate; 187 unsigned char byRxChannel; 188} SRxMgmtPacket, *PSRxMgmtPacket; 189 190typedef struct tagSMgmtObject 191{ 192 void *pAdapter; 193 // MAC address 194 unsigned char abyMACAddr[WLAN_ADDR_LEN]; 195 196 // Configuration Mode 197 WMAC_CONFIG_MODE eConfigMode; // MAC pre-configed mode 198 CARD_PHY_TYPE eCurrentPHYMode; 199 CARD_PHY_TYPE eConfigPHYMode; 200 201 // Operation state variables 202 WMAC_CURRENT_MODE eCurrMode; // MAC current connection mode 203 WMAC_BSS_STATE eCurrState; // MAC current BSS state 204 205 PKnownBSS pCurrBSS; 206 unsigned char byCSSGK; 207 unsigned char byCSSPK; 208 209 // Current state vars 210 unsigned int uCurrChannel; 211 unsigned char abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1]; 212 unsigned char abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1]; 213 unsigned char abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1]; 214 unsigned char abyCurrBSSID[WLAN_BSSID_LEN]; 215 unsigned short wCurrCapInfo; 216 unsigned short wCurrAID; 217 unsigned short wCurrATIMWindow; 218 unsigned short wCurrBeaconPeriod; 219 bool bIsDS; 220 unsigned char byERPContext; 221 222 CMD_STATE eCommandState; 223 unsigned int uScanChannel; 224 225 // Desire joining BSS vars 226 unsigned char abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1]; 227 unsigned char abyDesireBSSID[WLAN_BSSID_LEN]; 228 229 // Adhoc or AP configuration vars 230 unsigned short wIBSSBeaconPeriod; 231 unsigned short wIBSSATIMWindow; 232 unsigned int uIBSSChannel; 233 unsigned char abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1]; 234 unsigned char byAPBBType; 235 unsigned char abyWPAIE[MAX_WPA_IE_LEN]; 236 unsigned short wWPAIELen; 237 238 unsigned int uAssocCount; 239 bool bMoreData; 240 241 // Scan state vars 242 WMAC_SCAN_STATE eScanState; 243 WMAC_SCAN_TYPE eScanType; 244 unsigned int uScanStartCh; 245 unsigned int uScanEndCh; 246 unsigned short wScanSteps; 247 unsigned int uScanBSSType; 248 // Desire scanning vars 249 unsigned char abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1]; 250 unsigned char abyScanBSSID[WLAN_BSSID_LEN]; 251 252 // Privacy 253 WMAC_AUTHENTICATION_MODE eAuthenMode; 254 WMAC_ENCRYPTION_MODE eEncryptionMode; 255 bool bShareKeyAlgorithm; 256 unsigned char abyChallenge[WLAN_CHALLENGE_LEN]; 257 bool bPrivacyInvoked; 258 259 // Received beacon state vars 260 bool bInTIM; 261 bool bMulticastTIM; 262 unsigned char byDTIMCount; 263 unsigned char byDTIMPeriod; 264 265 // Power saving state vars 266 WMAC_POWER_MODE ePSMode; 267 unsigned short wListenInterval; 268 unsigned short wCountToWakeUp; 269 bool bInTIMWake; 270 unsigned char *pbyPSPacketPool; 271 unsigned char byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN]; 272 bool bRxBeaconInTBTTWake; 273 unsigned char abyPSTxMap[MAX_NODE_NUM + 1]; 274 275 // management command related 276 unsigned int uCmdBusy; 277 unsigned int uCmdHostAPBusy; 278 279 // management packet pool 280 unsigned char *pbyMgmtPacketPool; 281 unsigned char byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN]; 282 283 // One second callback timer 284 struct timer_list sTimerSecondCallback; 285 286 // Temporarily Rx Mgmt Packet Descriptor 287 SRxMgmtPacket sRxPacket; 288 289 // link list of known bss's (scan results) 290 KnownBSS sBSSList[MAX_BSS_NUM]; 291 292 // table list of known node 293 // sNodeDBList[0] is reserved for AP under Infra mode 294 // sNodeDBList[0] is reserved for Multicast under adhoc/AP mode 295 KnownNodeDB sNodeDBTable[MAX_NODE_NUM + 1]; 296 297 // WPA2 PMKID Cache 298 SPMKIDCache gsPMKIDCache; 299 bool bRoaming; 300 301 // rate fall back vars 302 303 // associate info 304 SAssocInfo sAssocInfo; 305 306 // for 802.11h 307 bool b11hEnable; 308 bool bSwitchChannel; 309 unsigned char byNewChannel; 310 PWLAN_IE_MEASURE_REP pCurrMeasureEIDRep; 311 unsigned int uLengthOfRepEIDs; 312 unsigned char abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN]; 313 unsigned char abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN]; 314 unsigned char abyIECountry[WLAN_A3FR_MAXLEN]; 315 unsigned char abyIBSSDFSOwner[6]; 316 unsigned char byIBSSDFSRecovery; 317 318 struct sk_buff skb; 319} SMgmtObject, *PSMgmtObject; 320 321/*--------------------- Export Macros ------------------------------*/ 322 323/*--------------------- Export Functions --------------------------*/ 324 325void 326vMgrObjectInit( 327 void *hDeviceContext 328); 329 330void 331vMgrTimerInit( 332 void *hDeviceContext 333); 334 335void 336vMgrObjectReset( 337 void *hDeviceContext 338); 339 340void 341vMgrAssocBeginSta( 342 void *hDeviceContext, 343 PSMgmtObject pMgmt, 344 PCMD_STATUS pStatus 345); 346 347void 348vMgrReAssocBeginSta( 349 void *hDeviceContext, 350 PSMgmtObject pMgmt, 351 PCMD_STATUS pStatus 352); 353 354void 355vMgrDisassocBeginSta( 356 void *hDeviceContext, 357 PSMgmtObject pMgmt, 358 unsigned char *abyDestAddress, 359 unsigned short wReason, 360 PCMD_STATUS pStatus 361); 362 363void 364vMgrAuthenBeginSta( 365 void *hDeviceContext, 366 PSMgmtObject pMgmt, 367 PCMD_STATUS pStatus 368); 369 370void 371vMgrCreateOwnIBSS( 372 void *hDeviceContext, 373 PCMD_STATUS pStatus 374); 375 376void 377vMgrJoinBSSBegin( 378 void *hDeviceContext, 379 PCMD_STATUS pStatus 380); 381 382void 383vMgrRxManagePacket( 384 void *hDeviceContext, 385 PSMgmtObject pMgmt, 386 PSRxMgmtPacket pRxPacket 387); 388 389/* 390 void 391 vMgrScanBegin( 392 void *hDeviceContext, 393 PCMD_STATUS pStatus 394); 395*/ 396 397void 398vMgrDeAuthenBeginSta( 399 void *hDeviceContext, 400 PSMgmtObject pMgmt, 401 unsigned char *abyDestAddress, 402 unsigned short wReason, 403 PCMD_STATUS pStatus 404); 405 406bool 407bMgrPrepareBeaconToSend( 408 void *hDeviceContext, 409 PSMgmtObject pMgmt 410); 411 412bool 413bAdd_PMKID_Candidate( 414 void *hDeviceContext, 415 unsigned char *pbyBSSID, 416 PSRSNCapObject psRSNCapObj 417); 418 419void 420vFlush_PMKID_Candidate( 421 void *hDeviceContext 422); 423 424#endif // __WMGR_H__