diff options
Diffstat (limited to 'drivers/staging/vt6655/iocmd.h')
| -rw-r--r-- | drivers/staging/vt6655/iocmd.h | 429 |
1 files changed, 429 insertions, 0 deletions
diff --git a/drivers/staging/vt6655/iocmd.h b/drivers/staging/vt6655/iocmd.h new file mode 100644 index 00000000000..e499f1b6f53 --- /dev/null +++ b/drivers/staging/vt6655/iocmd.h @@ -0,0 +1,429 @@ +/* + * 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: iocmd.h + * + * Purpose: Handles the viawget ioctl private interface functions + * + * Author: Lyndon Chen + * + * Date: May 8, 2002 + * + */ + +#ifndef __IOCMD_H__ +#define __IOCMD_H__ + +#include "ttype.h" + +/*--------------------- Export Definitions -------------------------*/ + +//typedef uint32_t u32; +//typedef uint16_t u16; +//typedef uint8_t u8; + +// ioctl Command code +#define MAGIC_CODE 0x3142 +#define IOCTL_CMD_TEST (SIOCDEVPRIVATE + 0) +#define IOCTL_CMD_SET (SIOCDEVPRIVATE + 1) +#define IOCTL_CMD_HOSTAPD (SIOCDEVPRIVATE + 2) +#define IOCTL_CMD_WPA (SIOCDEVPRIVATE + 3) + +typedef enum tagWMAC_CMD { + WLAN_CMD_BSS_SCAN, + WLAN_CMD_BSS_JOIN, + WLAN_CMD_DISASSOC, + WLAN_CMD_SET_WEP, + WLAN_CMD_GET_LINK, + WLAN_CMD_GET_LISTLEN, + WLAN_CMD_GET_LIST, + WLAN_CMD_GET_MIB, + WLAN_CMD_GET_STAT, + WLAN_CMD_STOP_MAC, + WLAN_CMD_START_MAC, + WLAN_CMD_AP_START, + WLAN_CMD_SET_HOSTAPD, + WLAN_CMD_SET_HOSTAPD_STA, + WLAN_CMD_SET_802_1X, + WLAN_CMD_SET_HOST_WEP, + WLAN_CMD_SET_WPA, + WLAN_CMD_GET_NODE_CNT, + WLAN_CMD_ZONETYPE_SET, + WLAN_CMD_GET_NODE_LIST +} WMAC_CMD, *PWMAC_CMD; + +typedef enum tagWZONETYPE { + ZoneType_USA = 0, + ZoneType_Japan = 1, + ZoneType_Europe = 2 +} WZONETYPE; + +#define ADHOC 0 +#define INFRA 1 +#define BOTH 2 +#define AP 3 + +#define ADHOC_STARTED 1 +#define ADHOC_JOINTED 2 + +#define PHY80211a 0 +#define PHY80211b 1 +#define PHY80211g 2 + +#define SSID_ID 0 +#define SSID_MAXLEN 32 +#define BSSID_LEN 6 +#define WEP_NKEYS 4 +#define WEP_KEYMAXLEN 29 +#define WEP_40BIT_LEN 5 +#define WEP_104BIT_LEN 13 +#define WEP_232BIT_LEN 16 + +// Ioctl interface structure +// Command structure +// +#pragma pack(1) +typedef struct tagSCmdRequest { + u8 name[16]; + void *data; + u16 wResult; + u16 wCmdCode; +} SCmdRequest, *PSCmdRequest; + +// +// Scan +// + +typedef struct tagSCmdScan { + u8 ssid[SSID_MAXLEN + 2]; +} SCmdScan, *PSCmdScan; + +// +// BSS Join +// + +typedef struct tagSCmdBSSJoin { + u16 wBSSType; + u16 wBBPType; + u8 ssid[SSID_MAXLEN + 2]; + u32 uChannel; + bool bPSEnable; + bool bShareKeyAuth; +} SCmdBSSJoin, *PSCmdBSSJoin; + +// +// Zonetype Setting +// + +typedef struct tagSCmdZoneTypeSet { + bool bWrite; + WZONETYPE ZoneType; +} SCmdZoneTypeSet, *PSCmdZoneTypeSet; + +#ifdef WPA_SM_Transtatus +typedef struct tagSWPAResult { + char ifname[100]; + u8 proto; + u8 key_mgmt; + u8 eap_type; + bool authenticated; +} SWPAResult, *PSWPAResult; +#endif + +typedef struct tagSCmdStartAP { + u16 wBSSType; + u16 wBBPType; + u8 ssid[SSID_MAXLEN + 2]; + u32 uChannel; + u32 uBeaconInt; + bool bShareKeyAuth; + u8 byBasicRate; +} SCmdStartAP, *PSCmdStartAP; + +typedef struct tagSCmdSetWEP { + bool bEnableWep; + u8 byKeyIndex; + u8 abyWepKey[WEP_NKEYS][WEP_KEYMAXLEN]; + bool bWepKeyAvailable[WEP_NKEYS]; + u32 auWepKeyLength[WEP_NKEYS]; +} SCmdSetWEP, *PSCmdSetWEP; + +typedef struct tagSBSSIDItem { + u32 uChannel; + u8 abyBSSID[BSSID_LEN]; + u8 abySSID[SSID_MAXLEN + 1]; + //2006-1116-01,<Modify> by NomadZhao + //u16 wBeaconInterval; + //u16 wCapInfo; + //u8 byNetType; + u8 byNetType; + u16 wBeaconInterval; + u16 wCapInfo; // for address of byNetType at align 4 + + bool bWEPOn; + u32 uRSSI; +} SBSSIDItem; + +typedef struct tagSBSSIDList { + u32 uItem; + SBSSIDItem sBSSIDList[0]; +} SBSSIDList, *PSBSSIDList; + +typedef struct tagSCmdLinkStatus { + bool bLink; + u16 wBSSType; + u8 byState; + u8 abyBSSID[BSSID_LEN]; + u8 abySSID[SSID_MAXLEN + 2]; + u32 uChannel; + u32 uLinkRate; +} SCmdLinkStatus, *PSCmdLinkStatus; + +// +// 802.11 counter +// +typedef struct tagSDot11MIBCount { + u32 TransmittedFragmentCount; + u32 MulticastTransmittedFrameCount; + u32 FailedCount; + u32 RetryCount; + u32 MultipleRetryCount; + u32 RTSSuccessCount; + u32 RTSFailureCount; + u32 ACKFailureCount; + u32 FrameDuplicateCount; + u32 ReceivedFragmentCount; + u32 MulticastReceivedFrameCount; + u32 FCSErrorCount; +} SDot11MIBCount, *PSDot11MIBCount; + +// +// statistic counter +// +typedef struct tagSStatMIBCount { + // + // ISR status count + // + u32 dwIsrTx0OK; + u32 dwIsrTx1OK; + u32 dwIsrBeaconTxOK; + u32 dwIsrRxOK; + u32 dwIsrTBTTInt; + u32 dwIsrSTIMERInt; + u32 dwIsrUnrecoverableError; + u32 dwIsrSoftInterrupt; + u32 dwIsrRxNoBuf; + ///////////////////////////////////// + + u32 dwIsrUnknown; // unknown interrupt count + + // RSR status count + // + u32 dwRsrFrmAlgnErr; + u32 dwRsrErr; + u32 dwRsrCRCErr; + u32 dwRsrCRCOk; + u32 dwRsrBSSIDOk; + u32 dwRsrADDROk; + u32 dwRsrICVOk; + u32 dwNewRsrShortPreamble; + u32 dwRsrLong; + u32 dwRsrRunt; + + u32 dwRsrRxControl; + u32 dwRsrRxData; + u32 dwRsrRxManage; + + u32 dwRsrRxPacket; + u32 dwRsrRxOctet; + u32 dwRsrBroadcast; + u32 dwRsrMulticast; + u32 dwRsrDirected; + // 64-bit OID + u32 ullRsrOK; + + // for some optional OIDs (64 bits) and DMI support + u32 ullRxBroadcastBytes; + u32 ullRxMulticastBytes; + u32 ullRxDirectedBytes; + u32 ullRxBroadcastFrames; + u32 ullRxMulticastFrames; + u32 ullRxDirectedFrames; + + u32 dwRsrRxFragment; + u32 dwRsrRxFrmLen64; + u32 dwRsrRxFrmLen65_127; + u32 dwRsrRxFrmLen128_255; + u32 dwRsrRxFrmLen256_511; + u32 dwRsrRxFrmLen512_1023; + u32 dwRsrRxFrmLen1024_1518; + + // TSR0,1 status count + // + u32 dwTsrTotalRetry[2]; // total collision retry count + u32 dwTsrOnceRetry[2]; // this packet only occur one collision + u32 dwTsrMoreThanOnceRetry[2]; // this packet occur more than one collision + u32 dwTsrRetry[2]; // this packet has ever occur collision, + // that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0) + u32 dwTsrACKData[2]; + u32 dwTsrErr[2]; + u32 dwAllTsrOK[2]; + u32 dwTsrRetryTimeout[2]; + u32 dwTsrTransmitTimeout[2]; + + u32 dwTsrTxPacket[2]; + u32 dwTsrTxOctet[2]; + u32 dwTsrBroadcast[2]; + u32 dwTsrMulticast[2]; + u32 dwTsrDirected[2]; + + // RD/TD count + u32 dwCntRxFrmLength; + u32 dwCntTxBufLength; + + u8 abyCntRxPattern[16]; + u8 abyCntTxPattern[16]; + + // Software check.... + u32 dwCntRxDataErr; // rx buffer data software compare CRC err count + u32 dwCntDecryptErr; // rx buffer data software compare CRC err count + u32 dwCntRxICVErr; // rx buffer data software compare CRC err count + u32 idxRxErrorDesc; // index for rx data error RD + + // 64-bit OID + u32 ullTsrOK[2]; + + // for some optional OIDs (64 bits) and DMI support + u32 ullTxBroadcastFrames[2]; + u32 ullTxMulticastFrames[2]; + u32 ullTxDirectedFrames[2]; + u32 ullTxBroadcastBytes[2]; + u32 ullTxMulticastBytes[2]; + u32 ullTxDirectedBytes[2]; +} SStatMIBCount, *PSStatMIBCount; + +typedef struct tagSNodeItem { + // STA info + u16 wAID; + u8 abyMACAddr[6]; + u16 wTxDataRate; + u16 wInActiveCount; + u16 wEnQueueCnt; + u16 wFlags; + bool bPWBitOn; + u8 byKeyIndex; + u16 wWepKeyLength; + u8 abyWepKey[WEP_KEYMAXLEN]; + // Auto rate fallback vars + bool bIsInFallback; + u32 uTxFailures; + u32 uTxAttempts; + u16 wFailureRatio; +} SNodeItem; + +typedef struct tagSNodeList { + u32 uItem; + SNodeItem sNodeList[0]; +} SNodeList, *PSNodeList; + +typedef struct tagSCmdValue { + u32 dwValue; +} SCmdValue, *PSCmdValue; + +// +// hostapd & viawget ioctl related +// + +// VIAGWET_IOCTL_HOSTAPD ioctl() cmd: +enum { + VIAWGET_HOSTAPD_FLUSH = 1, + VIAWGET_HOSTAPD_ADD_STA = 2, + VIAWGET_HOSTAPD_REMOVE_STA = 3, + VIAWGET_HOSTAPD_GET_INFO_STA = 4, + VIAWGET_HOSTAPD_SET_ENCRYPTION = 5, + VIAWGET_HOSTAPD_GET_ENCRYPTION = 6, + VIAWGET_HOSTAPD_SET_FLAGS_STA = 7, + VIAWGET_HOSTAPD_SET_ASSOC_AP_ADDR = 8, + VIAWGET_HOSTAPD_SET_GENERIC_ELEMENT = 9, + VIAWGET_HOSTAPD_MLME = 10, + VIAWGET_HOSTAPD_SCAN_REQ = 11, + VIAWGET_HOSTAPD_STA_CLEAR_STATS = 12, +}; + +#define VIAWGET_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ + ((int)(&((struct viawget_hostapd_param *)0)->u.generic_elem.data)) + +// Maximum length for algorithm names (-1 for nul termination) used in ioctl() + +struct viawget_hostapd_param { + u32 cmd; + u8 sta_addr[6]; + union { + struct { + u16 aid; + u16 capability; + u8 tx_supp_rates; + } add_sta; + struct { + u32 inactive_sec; + } get_info_sta; + struct { + u8 alg; + u32 flags; + u32 err; + u8 idx; + u8 seq[8]; + u16 key_len; + u8 key[0]; + } crypt; + struct { + u32 flags_and; + u32 flags_or; + } set_flags_sta; + struct { + u16 rid; + u16 len; + u8 data[0]; + } rid; + struct { + u8 len; + u8 data[0]; + } generic_elem; + struct { + u16 cmd; + u16 reason_code; + } mlme; + struct { + u8 ssid_len; + u8 ssid[32]; + } scan_req; + } u; +}; + +//2006-1116-01,<Add> by NomadZhao +#pragma pack() + +/*--------------------- Export Classes ----------------------------*/ + +/*--------------------- Export Variables --------------------------*/ + +/*--------------------- Export Types ------------------------------*/ + +/*--------------------- Export Functions --------------------------*/ + +#endif //__IOCMD_H__ |
