linux/drivers/staging/vt6655/iocmd.h
<<
>>
Prefs
   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__
 476