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.3 475 lines 10 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 * File: iocmd.h 20 * 21 * Purpose: Handles the viawget ioctl private interface functions 22 * 23 * Author: Lyndon Chen 24 * 25 * Date: May 8, 2002 26 * 27 */ 28 29#ifndef __IOCMD_H__ 30#define __IOCMD_H__ 31 32#include "ttype.h" 33 34/*--------------------- Export Definitions -------------------------*/ 35 36//typedef uint32_t u32; 37//typedef uint16_t u16; 38//typedef uint8_t u8; 39 40 41// ioctl Command code 42#define MAGIC_CODE 0x3142 43#define IOCTL_CMD_TEST (SIOCDEVPRIVATE + 0) 44#define IOCTL_CMD_SET (SIOCDEVPRIVATE + 1) 45#define IOCTL_CMD_HOSTAPD (SIOCDEVPRIVATE + 2) 46#define IOCTL_CMD_WPA (SIOCDEVPRIVATE + 3) 47 48 49typedef enum tagWMAC_CMD { 50 51 WLAN_CMD_BSS_SCAN, 52 WLAN_CMD_BSS_JOIN, 53 WLAN_CMD_DISASSOC, 54 WLAN_CMD_SET_WEP, 55 WLAN_CMD_GET_LINK, 56 WLAN_CMD_GET_LISTLEN, 57 WLAN_CMD_GET_LIST, 58 WLAN_CMD_GET_MIB, 59 WLAN_CMD_GET_STAT, 60 WLAN_CMD_STOP_MAC, 61 WLAN_CMD_START_MAC, 62 WLAN_CMD_AP_START, 63 WLAN_CMD_SET_HOSTAPD, 64 WLAN_CMD_SET_HOSTAPD_STA, 65 WLAN_CMD_SET_802_1X, 66 WLAN_CMD_SET_HOST_WEP, 67 WLAN_CMD_SET_WPA, 68 WLAN_CMD_GET_NODE_CNT, 69 WLAN_CMD_ZONETYPE_SET, 70 WLAN_CMD_GET_NODE_LIST 71 72} WMAC_CMD, *PWMAC_CMD; 73 74typedef enum tagWZONETYPE { 75 ZoneType_USA=0, 76 ZoneType_Japan=1, 77 ZoneType_Europe=2 78}WZONETYPE; 79 80#define ADHOC 0 81#define INFRA 1 82#define BOTH 2 83#define AP 3 84 85#define ADHOC_STARTED 1 86#define ADHOC_JOINTED 2 87 88 89#define PHY80211a 0 90#define PHY80211b 1 91#define PHY80211g 2 92 93#define SSID_ID 0 94#define SSID_MAXLEN 32 95#define BSSID_LEN 6 96#define WEP_NKEYS 4 97#define WEP_KEYMAXLEN 29 98#define WEP_40BIT_LEN 5 99#define WEP_104BIT_LEN 13 100#define WEP_232BIT_LEN 16 101 102// Ioctl interface structure 103// Command structure 104// 105#pragma pack(1) 106typedef struct tagSCmdRequest { 107 u8 name[16]; 108 void *data; 109 u16 wResult; 110 u16 wCmdCode; 111} SCmdRequest, *PSCmdRequest; 112 113// 114// Scan 115// 116 117typedef struct tagSCmdScan { 118 119 u8 ssid[SSID_MAXLEN + 2]; 120 121} SCmdScan, *PSCmdScan; 122 123 124// 125// BSS Join 126// 127 128typedef struct tagSCmdBSSJoin { 129 130 u16 wBSSType; 131 u16 wBBPType; 132 u8 ssid[SSID_MAXLEN + 2]; 133 u32 uChannel; 134 bool bPSEnable; 135 bool bShareKeyAuth; 136 137} SCmdBSSJoin, *PSCmdBSSJoin; 138 139// 140// Zonetype Setting 141// 142 143typedef struct tagSCmdZoneTypeSet { 144 145 bool bWrite; 146 WZONETYPE ZoneType; 147 148} SCmdZoneTypeSet, *PSCmdZoneTypeSet; 149 150#ifdef WPA_SM_Transtatus 151typedef struct tagSWPAResult { 152 char ifname[100]; 153 u8 proto; 154 u8 key_mgmt; 155 u8 eap_type; 156 bool authenticated; 157} SWPAResult, *PSWPAResult; 158#endif 159 160typedef struct tagSCmdStartAP { 161 162 u16 wBSSType; 163 u16 wBBPType; 164 u8 ssid[SSID_MAXLEN + 2]; 165 u32 uChannel; 166 u32 uBeaconInt; 167 bool bShareKeyAuth; 168 u8 byBasicRate; 169 170} SCmdStartAP, *PSCmdStartAP; 171 172 173typedef struct tagSCmdSetWEP { 174 175 bool bEnableWep; 176 u8 byKeyIndex; 177 u8 abyWepKey[WEP_NKEYS][WEP_KEYMAXLEN]; 178 bool bWepKeyAvailable[WEP_NKEYS]; 179 u32 auWepKeyLength[WEP_NKEYS]; 180 181} SCmdSetWEP, *PSCmdSetWEP; 182 183 184 185typedef struct tagSBSSIDItem { 186 187 u32 uChannel; 188 u8 abyBSSID[BSSID_LEN]; 189 u8 abySSID[SSID_MAXLEN + 1]; 190 //2006-1116-01,<Modify> by NomadZhao 191 //u16 wBeaconInterval; 192 //u16 wCapInfo; 193 //u8 byNetType; 194 u8 byNetType; 195 u16 wBeaconInterval; 196 u16 wCapInfo; // for address of byNetType at align 4 197 198 bool bWEPOn; 199 u32 uRSSI; 200 201} SBSSIDItem; 202 203 204typedef struct tagSBSSIDList { 205 206 u32 uItem; 207 SBSSIDItem sBSSIDList[0]; 208} SBSSIDList, *PSBSSIDList; 209 210 211typedef struct tagSCmdLinkStatus { 212 213 bool bLink; 214 u16 wBSSType; 215 u8 byState; 216 u8 abyBSSID[BSSID_LEN]; 217 u8 abySSID[SSID_MAXLEN + 2]; 218 u32 uChannel; 219 u32 uLinkRate; 220 221} SCmdLinkStatus, *PSCmdLinkStatus; 222 223// 224// 802.11 counter 225// 226typedef struct tagSDot11MIBCount { 227 u32 TransmittedFragmentCount; 228 u32 MulticastTransmittedFrameCount; 229 u32 FailedCount; 230 u32 RetryCount; 231 u32 MultipleRetryCount; 232 u32 RTSSuccessCount; 233 u32 RTSFailureCount; 234 u32 ACKFailureCount; 235 u32 FrameDuplicateCount; 236 u32 ReceivedFragmentCount; 237 u32 MulticastReceivedFrameCount; 238 u32 FCSErrorCount; 239} SDot11MIBCount, *PSDot11MIBCount; 240 241 242 243// 244// statistic counter 245// 246typedef struct tagSStatMIBCount { 247 // 248 // ISR status count 249 // 250 u32 dwIsrTx0OK; 251 u32 dwIsrTx1OK; 252 u32 dwIsrBeaconTxOK; 253 u32 dwIsrRxOK; 254 u32 dwIsrTBTTInt; 255 u32 dwIsrSTIMERInt; 256 u32 dwIsrUnrecoverableError; 257 u32 dwIsrSoftInterrupt; 258 u32 dwIsrRxNoBuf; 259 ///////////////////////////////////// 260 261 u32 dwIsrUnknown; // unknown interrupt count 262 263 // RSR status count 264 // 265 u32 dwRsrFrmAlgnErr; 266 u32 dwRsrErr; 267 u32 dwRsrCRCErr; 268 u32 dwRsrCRCOk; 269 u32 dwRsrBSSIDOk; 270 u32 dwRsrADDROk; 271 u32 dwRsrICVOk; 272 u32 dwNewRsrShortPreamble; 273 u32 dwRsrLong; 274 u32 dwRsrRunt; 275 276 u32 dwRsrRxControl; 277 u32 dwRsrRxData; 278 u32 dwRsrRxManage; 279 280 u32 dwRsrRxPacket; 281 u32 dwRsrRxOctet; 282 u32 dwRsrBroadcast; 283 u32 dwRsrMulticast; 284 u32 dwRsrDirected; 285 // 64-bit OID 286 u32 ullRsrOK; 287 288 // for some optional OIDs (64 bits) and DMI support 289 u32 ullRxBroadcastBytes; 290 u32 ullRxMulticastBytes; 291 u32 ullRxDirectedBytes; 292 u32 ullRxBroadcastFrames; 293 u32 ullRxMulticastFrames; 294 u32 ullRxDirectedFrames; 295 296 u32 dwRsrRxFragment; 297 u32 dwRsrRxFrmLen64; 298 u32 dwRsrRxFrmLen65_127; 299 u32 dwRsrRxFrmLen128_255; 300 u32 dwRsrRxFrmLen256_511; 301 u32 dwRsrRxFrmLen512_1023; 302 u32 dwRsrRxFrmLen1024_1518; 303 304 // TSR0,1 status count 305 // 306 u32 dwTsrTotalRetry[2]; // total collision retry count 307 u32 dwTsrOnceRetry[2]; // this packet only occur one collision 308 u32 dwTsrMoreThanOnceRetry[2]; // this packet occur more than one collision 309 u32 dwTsrRetry[2]; // this packet has ever occur collision, 310 // that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0) 311 u32 dwTsrACKData[2]; 312 u32 dwTsrErr[2]; 313 u32 dwAllTsrOK[2]; 314 u32 dwTsrRetryTimeout[2]; 315 u32 dwTsrTransmitTimeout[2]; 316 317 u32 dwTsrTxPacket[2]; 318 u32 dwTsrTxOctet[2]; 319 u32 dwTsrBroadcast[2]; 320 u32 dwTsrMulticast[2]; 321 u32 dwTsrDirected[2]; 322 323 // RD/TD count 324 u32 dwCntRxFrmLength; 325 u32 dwCntTxBufLength; 326 327 u8 abyCntRxPattern[16]; 328 u8 abyCntTxPattern[16]; 329 330 // Software check.... 331 u32 dwCntRxDataErr; // rx buffer data software compare CRC err count 332 u32 dwCntDecryptErr; // rx buffer data software compare CRC err count 333 u32 dwCntRxICVErr; // rx buffer data software compare CRC err count 334 u32 idxRxErrorDesc; // index for rx data error RD 335 336 // 64-bit OID 337 u32 ullTsrOK[2]; 338 339 // for some optional OIDs (64 bits) and DMI support 340 u32 ullTxBroadcastFrames[2]; 341 u32 ullTxMulticastFrames[2]; 342 u32 ullTxDirectedFrames[2]; 343 u32 ullTxBroadcastBytes[2]; 344 u32 ullTxMulticastBytes[2]; 345 u32 ullTxDirectedBytes[2]; 346} SStatMIBCount, *PSStatMIBCount; 347 348 349typedef struct tagSNodeItem { 350 // STA info 351 u16 wAID; 352 u8 abyMACAddr[6]; 353 u16 wTxDataRate; 354 u16 wInActiveCount; 355 u16 wEnQueueCnt; 356 u16 wFlags; 357 bool bPWBitOn; 358 u8 byKeyIndex; 359 u16 wWepKeyLength; 360 u8 abyWepKey[WEP_KEYMAXLEN]; 361 // Auto rate fallback vars 362 bool bIsInFallback; 363 u32 uTxFailures; 364 u32 uTxAttempts; 365 u16 wFailureRatio; 366 367} SNodeItem; 368 369 370typedef struct tagSNodeList { 371 372 u32 uItem; 373 SNodeItem sNodeList[0]; 374 375} SNodeList, *PSNodeList; 376 377 378 379typedef struct tagSCmdValue { 380 381 u32 dwValue; 382 383} SCmdValue, *PSCmdValue; 384 385 386// 387// hostapd & viawget ioctl related 388// 389 390 391// VIAGWET_IOCTL_HOSTAPD ioctl() cmd: 392enum { 393 VIAWGET_HOSTAPD_FLUSH = 1, 394 VIAWGET_HOSTAPD_ADD_STA = 2, 395 VIAWGET_HOSTAPD_REMOVE_STA = 3, 396 VIAWGET_HOSTAPD_GET_INFO_STA = 4, 397 VIAWGET_HOSTAPD_SET_ENCRYPTION = 5, 398 VIAWGET_HOSTAPD_GET_ENCRYPTION = 6, 399 VIAWGET_HOSTAPD_SET_FLAGS_STA = 7, 400 VIAWGET_HOSTAPD_SET_ASSOC_AP_ADDR = 8, 401 VIAWGET_HOSTAPD_SET_GENERIC_ELEMENT = 9, 402 VIAWGET_HOSTAPD_MLME = 10, 403 VIAWGET_HOSTAPD_SCAN_REQ = 11, 404 VIAWGET_HOSTAPD_STA_CLEAR_STATS = 12, 405}; 406 407 408#define VIAWGET_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ 409((int) (&((struct viawget_hostapd_param *) 0)->u.generic_elem.data)) 410 411// Maximum length for algorithm names (-1 for nul termination) used in ioctl() 412 413 414 415struct viawget_hostapd_param { 416 u32 cmd; 417 u8 sta_addr[6]; 418 union { 419 struct { 420 u16 aid; 421 u16 capability; 422 u8 tx_supp_rates; 423 } add_sta; 424 struct { 425 u32 inactive_sec; 426 } get_info_sta; 427 struct { 428 u8 alg; 429 u32 flags; 430 u32 err; 431 u8 idx; 432 u8 seq[8]; 433 u16 key_len; 434 u8 key[0]; 435 } crypt; 436 struct { 437 u32 flags_and; 438 u32 flags_or; 439 } set_flags_sta; 440 struct { 441 u16 rid; 442 u16 len; 443 u8 data[0]; 444 } rid; 445 struct { 446 u8 len; 447 u8 data[0]; 448 } generic_elem; 449 struct { 450 u16 cmd; 451 u16 reason_code; 452 } mlme; 453 struct { 454 u8 ssid_len; 455 u8 ssid[32]; 456 } scan_req; 457 } u; 458}; 459 460//2006-1116-01,<Add> by NomadZhao 461#pragma pack() 462 463/*--------------------- Export Classes ----------------------------*/ 464 465/*--------------------- Export Variables --------------------------*/ 466 467 468/*--------------------- Export Types ------------------------------*/ 469 470 471/*--------------------- Export Functions --------------------------*/ 472 473 474 475#endif //__IOCMD_H__