📄 sta_ioctl.c
字号:
/* ************************************************************************* * Ralink Tech Inc. * 4F, No. 2 Technology 5th Rd. * Science-based Industrial Park * Hsin-chu, Taiwan, R.O.C. * * (c) Copyright 2002-2007, Ralink Technology, Inc. * * 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., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * ************************************************************************* Module Name: sta_ioctl.c Abstract: IOCTL related subroutines Revision History: Who When What -------- ---------- ---------------------------------------------- Rory Chen 01-03-2003 created Rory Chen 02-14-2005 modify to support RT61*/#include "rt_config.h"#if WIRELESS_EXT <= 11#ifndef SIOCDEVPRIVATE#define SIOCDEVPRIVATE 0x8BE0#endif#define SIOCIWFIRSTPRIV SIOCDEVPRIVATE#endif#define RTPRIV_IOCTL_SET (SIOCIWFIRSTPRIV + 0x02)#ifdef DBG#define RTPRIV_IOCTL_BBP (SIOCIWFIRSTPRIV + 0x03)#define RTPRIV_IOCTL_MAC (SIOCIWFIRSTPRIV + 0x05)#define RTPRIV_IOCTL_E2P (SIOCIWFIRSTPRIV + 0x07)#endif#ifdef RALINK_ATE#ifdef RALINK_2860_QA#define RTPRIV_IOCTL_ATE (SIOCIWFIRSTPRIV + 0x08)#endif // RALINK_2860_QA //#endif // RALINK_ATE //#define RTPRIV_IOCTL_STATISTICS (SIOCIWFIRSTPRIV + 0x09)#define RTPRIV_IOCTL_ADD_PMKID_CACHE (SIOCIWFIRSTPRIV + 0x0A)#define RTPRIV_IOCTL_RADIUS_DATA (SIOCIWFIRSTPRIV + 0x0C)#define RTPRIV_IOCTL_GSITESURVEY (SIOCIWFIRSTPRIV + 0x0D)#define RT_PRIV_IOCTL (SIOCIWFIRSTPRIV + 0x0E) // Sync. with RT61 (for wpa_supplicant)#define RTPRIV_IOCTL_GET_MAC_TABLE (SIOCIWFIRSTPRIV + 0x0F)#define RTPRIV_IOCTL_SHOW (SIOCIWFIRSTPRIV + 0x11)enum { SHOW_CONN_STATUS = 4, SHOW_DRVIER_VERION = 5,};#ifdef DBGextern ULONG RTDebugLevel;#endif#define NR_WEP_KEYS 4#define WEP_SMALL_KEY_LEN (40/8)#define WEP_LARGE_KEY_LEN (104/8)#define GROUP_KEY_NO 4extern UCHAR CipherWpa2Template[];extern UCHAR CipherWpaPskTkip[];extern UCHAR CipherWpaPskTkipLen;typedef struct PACKED _RT_VERSION_INFO{ UCHAR DriverVersionW; UCHAR DriverVersionX; UCHAR DriverVersionY; UCHAR DriverVersionZ; UINT DriverBuildYear; UINT DriverBuildMonth; UINT DriverBuildDay;} RT_VERSION_INFO, *PRT_VERSION_INFO;struct iw_priv_args privtab[] = {{ RTPRIV_IOCTL_SET, IW_PRIV_TYPE_CHAR | 1024, 0, "set"},/* --- sub-ioctls relations --- */{ RTPRIV_IOCTL_SHOW, 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, ""},/* --- sub-ioctls definitions --- */ { SHOW_CONN_STATUS, 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "connStatus" }, { SHOW_DRVIER_VERION, 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "driverVer" },#ifdef DBG{ RTPRIV_IOCTL_BBP, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "bbp"},{ RTPRIV_IOCTL_MAC, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "mac"}, { RTPRIV_IOCTL_E2P, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "e2p"},#endif /* DBG */{ RTPRIV_IOCTL_STATISTICS, 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "stat"}, { RTPRIV_IOCTL_GSITESURVEY, 0, IW_PRIV_TYPE_CHAR | 1024, "get_site_survey"},};INT Set_DriverVersion_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);INT Set_CountryRegion_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);INT Set_CountryRegionABand_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);INT Set_SSID_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_WirelessMode_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_TxRate_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_Channel_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_BGProtection_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_TxPreamble_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_RTSThreshold_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_FragThreshold_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_TxBurst_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_TxPower_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);#ifdef AGGREGATION_SUPPORTINT Set_PktAggregate_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);#endif#ifdef WMM_SUPPORTINT Set_WmmCapable_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);#endifINT Set_IEEE80211H_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);INT Set_NetworkType_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_AuthMode_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_EncrypType_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_DefaultKeyID_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_Key1_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_Key2_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_Key3_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_Key4_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_WPAPSK_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);INT Set_ResetStatCounter_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);INT Set_PSMode_Proc( IN PRTMP_ADAPTER pAdapter, IN PUCHAR arg);#ifdef DBGINT Set_Debug_Proc( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);#endif#ifdef WPA_SUPPLICANT_SUPPORTINT Set_Wpa_Support( IN PRTMP_ADAPTER pAd, IN PUCHAR arg);#endif // WPA_SUPPLICANT_SUPPORT //VOID RTMPSetDesiredRates( IN PRTMP_ADAPTER pAdapter, IN LONG Rates);VOID RTMPIoctlStatistics( struct net_device *dev, struct iw_request_info *info, struct iw_point *dwrq, char *extra);#ifdef DBGVOID RTMPIoctlBBP( IN PRTMP_ADAPTER pAdapter, IN struct iwreq *wrq);VOID RTMPIoctlMAC( IN PRTMP_ADAPTER pAdapter, IN struct iwreq *wrq);VOID RTMPIoctlE2PROM( IN PRTMP_ADAPTER pAdapter, IN struct iwreq *wrq);#endif // DBG //NDIS_STATUS RTMPWPANoneAddKeyProc( IN PRTMP_ADAPTER pAd, IN PVOID pBuf); static struct { CHAR *name; INT (*set_proc)(PRTMP_ADAPTER pAdapter, PUCHAR arg);} *PRTMP_PRIVATE_SET_PROC, RTMP_PRIVATE_SUPPORT_PROC[] = { {"DriverVersion", Set_DriverVersion_Proc}, {"CountryRegion", Set_CountryRegion_Proc}, {"CountryRegionABand", Set_CountryRegionABand_Proc}, {"SSID", Set_SSID_Proc}, {"WirelessMode", Set_WirelessMode_Proc}, {"TxBurst", Set_TxBurst_Proc}, {"TxRate", Set_TxRate_Proc}, {"TxPreamble", Set_TxPreamble_Proc}, {"TxPower", Set_TxPower_Proc}, {"Channel", Set_Channel_Proc}, {"BGProtection", Set_BGProtection_Proc}, {"RTSThreshold", Set_RTSThreshold_Proc}, {"FragThreshold", Set_FragThreshold_Proc}, {"HtBw", Set_HtBw_Proc}, {"HtMcs", Set_HtMcs_Proc}, {"HtGi", Set_HtGi_Proc}, {"HtOpMode", Set_HtOpMode_Proc}, {"HtExtcha", Set_HtExtcha_Proc}, {"HtMpduDensity", Set_HtMpduDensity_Proc}, {"HtBaWinSize", Set_HtBaWinSize_Proc}, {"HtRdg", Set_HtRdg_Proc}, {"HtAmsdu", Set_HtAmsdu_Proc}, {"HtAutoBa", Set_HtAutoBa_Proc}, {"HtProtect", Set_HtProtect_Proc}, {"HtMimoPs", Set_HtMimoPs_Proc}, #ifdef AGGREGATION_SUPPORT {"PktAggregate", Set_PktAggregate_Proc}, #endif#ifdef WMM_SUPPORT {"WmmCapable", Set_WmmCapable_Proc}, #endif // {"ShortSlot", Set_ShortSlot_Proc}, {"IEEE80211H", Set_IEEE80211H_Proc}, {"NetworkType", Set_NetworkType_Proc}, {"AuthMode", Set_AuthMode_Proc}, {"EncrypType", Set_EncrypType_Proc}, {"DefaultKeyID", Set_DefaultKeyID_Proc}, {"Key1", Set_Key1_Proc}, {"Key2", Set_Key2_Proc}, {"Key3", Set_Key3_Proc}, {"Key4", Set_Key4_Proc}, {"WPAPSK", Set_WPAPSK_Proc}, {"ResetCounter", Set_ResetStatCounter_Proc}, {"PSMode", Set_PSMode_Proc},#ifdef DBG {"Debug", Set_Debug_Proc}, #endif #ifdef RALINK_ATE {"ATE", Set_ATE_Proc}, {"ATEDA", Set_ATE_DA_Proc}, {"ATESA", Set_ATE_SA_Proc}, {"ATEBSSID", Set_ATE_BSSID_Proc}, {"ATECHANNEL", Set_ATE_CHANNEL_Proc}, {"ATETXPOW0", Set_ATE_TX_POWER0_Proc}, {"ATETXPOW1", Set_ATE_TX_POWER1_Proc}, {"ATETXANT", Set_ATE_TX_Antenna_Proc}, {"ATERXANT", Set_ATE_RX_Antenna_Proc}, {"ATETXFREQOFFSET", Set_ATE_TX_FREQOFFSET_Proc}, {"ATETXBW", Set_ATE_TX_BW_Proc}, {"ATETXLEN", Set_ATE_TX_LENGTH_Proc}, {"ATETXCNT", Set_ATE_TX_COUNT_Proc},// {"ATETXRATE", Set_ATE_TX_RATE_Proc}, {"ATETXMCS", Set_ATE_TX_MCS_Proc}, {"ATETXMODE", Set_ATE_TX_MODE_Proc}, {"ATETXGI", Set_ATE_TX_GI_Proc}, {"ATERXFER", Set_ATE_RX_FER_Proc}, {"ATERRF", Set_ATE_Read_RF_Proc}, {"ATEWRF1", Set_ATE_Write_RF1_Proc}, {"ATEWRF2", Set_ATE_Write_RF2_Proc}, {"ATEWRF3", Set_ATE_Write_RF3_Proc}, {"ATEWRF4", Set_ATE_Write_RF4_Proc}, {"ATESHOW", Set_ATE_Show_Proc}, {"ATEHELP", Set_ATE_Help_Proc},#ifdef RALINK_2860_QA#if 0 {"TxStart", Set_TxStart_Proc},#endif {"TxStop", Set_TxStop_Proc},#if 0 {"EERead", Set_EERead_Proc}, {"EEWrite", Set_EEWrite_Proc}, {"BBPRead", Set_BBPRead_Proc}, {"BBPWrite", Set_BBPWrite_Proc}, {"RFWrite", Set_RFWrite_Proc},#endif#endif // RALINK_2860_QA //#endif // RALINK_ATE //#ifdef WPA_SUPPLICANT_SUPPORT {"WpaSupport", Set_Wpa_Support},#endif // WPA_SUPPLICANT_SUPPORT // {NULL,}};VOID N_ChannelCheck( IN PRTMP_ADAPTER pAd)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -