⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sta_ioctl.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
/* ************************************************************************* * Ralink Tech Inc. * 5F., No.36, Taiyuan St., Jhubei City, * Hsinchu County 302, * 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"#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                4#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)#define IWE_STREAM_ADD_EVENT(_A, _B, _C, _D, _E)		iwe_stream_add_event(_A, _B, _C, _D, _E)#define IWE_STREAM_ADD_POINT(_A, _B, _C, _D, _E)		iwe_stream_add_point(_A, _B, _C, _D, _E)#define IWE_STREAM_ADD_VALUE(_A, _B, _C, _D, _E, _F)	iwe_stream_add_value(_A, _B, _C, _D, _E, _F)#else#define IWE_STREAM_ADD_EVENT(_A, _B, _C, _D, _E)		iwe_stream_add_event(_B, _C, _D, _E)#define IWE_STREAM_ADD_POINT(_A, _B, _C, _D, _E)		iwe_stream_add_point(_B, _C, _D, _E)#define IWE_STREAM_ADD_VALUE(_A, _B, _C, _D, _E, _F)	iwe_stream_add_value(_B, _C, _D, _E, _F)#endifextern UCHAR    CipherWpa2Template[];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"},{ RTPRIV_IOCTL_SHOW, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,  ""},/* --- sub-ioctls definitions --- */       { SHOW_CONN_STATUS,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "connStatus" },	{ SHOW_DRVIER_VERION,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "driverVer" },    { SHOW_BA_INFO,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "bainfo" },	{ SHOW_DESC_INFO,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "descinfo" },    { RAIO_OFF,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_off" },	{ RAIO_ON,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_on" },#ifdef QOS_DLS_SUPPORT	{ SHOW_DLS_ENTRY_INFO,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "dlsentryinfo" },#endif // QOS_DLS_SUPPORT //	{ SHOW_CFG_VALUE,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "show" },	{ SHOW_ADHOC_ENTRY_INFO,	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "adhocEntry" },/* --- sub-ioctls relations --- */#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_SSID_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);#ifdef WMM_SUPPORTINT	Set_WmmCapable_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg);#endifINT Set_NetworkType_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_AuthMode_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_EncrypType_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_DefaultKeyID_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_Key1_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_Key2_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_Key3_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_Key4_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_WPAPSK_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);INT Set_PSMode_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);#ifdef WPA_SUPPLICANT_SUPPORTINT Set_Wpa_Support(    IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg);#endif // WPA_SUPPLICANT_SUPPORT //#ifdef DBGVOID 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);	INT Set_FragTest_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);	#ifdef DOT11_N_SUPPORT	INT Set_TGnWifiTest_Proc(    IN  PRTMP_ADAPTER   pAd,     IN  PSTRING          arg);#endif // DOT11_N_SUPPORT //INT Set_LongRetryLimit_Proc(	IN	PRTMP_ADAPTER	pAdapter, 	IN	PSTRING			arg);INT Set_ShortRetryLimit_Proc(	IN	PRTMP_ADAPTER	pAdapter, 	IN	PSTRING			arg);#ifdef EXT_BUILD_CHANNEL_LISTINT Set_Ieee80211dClientMode_Proc(    IN  PRTMP_ADAPTER   pAdapter,     IN  PSTRING          arg);#endif // EXT_BUILD_CHANNEL_LIST //#ifdef CARRIER_DETECTION_SUPPORTINT Set_CarrierDetect_Proc(    IN  PRTMP_ADAPTER   pAd,     IN  PSTRING          arg);#endif // CARRIER_DETECTION_SUPPORT //INT	Show_Adhoc_MacTable_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			extra);INT Set_BeaconLostTime_Proc(    IN  PRTMP_ADAPTER   pAd,     IN  PSTRING         arg);INT Set_AutoRoaming_Proc(    IN  PRTMP_ADAPTER   pAd,     IN  PSTRING         arg);INT Set_SiteSurvey_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg);INT Set_ForceTxBurst_Proc(    IN  PRTMP_ADAPTER   pAd,     IN  PSTRING         arg);static struct {	PSTRING name;	INT (*set_proc)(PRTMP_ADAPTER pAdapter, PSTRING 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},	{"TxPreamble",				Set_TxPreamble_Proc},	{"TxPower",					Set_TxPower_Proc},	{"Channel",					Set_Channel_Proc},            	{"BGProtection",				Set_BGProtection_Proc},	{"RTSThreshold",				Set_RTSThreshold_Proc},       	{"FragThreshold",				Set_FragThreshold_Proc},      #ifdef DOT11_N_SUPPORT	{"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},	{"HtBaDecline",					Set_BADecline_Proc},	{"HtProtect",		        	Set_HtProtect_Proc},	{"HtMimoPs",		        	Set_HtMimoPs_Proc},#endif // DOT11_N_SUPPORT //	#ifdef AGGREGATION_SUPPORT	{"PktAggregate",				Set_PktAggregate_Proc},       #endif // AGGREGATION_SUPPORT //#ifdef WMM_SUPPORT	{"WmmCapable",					Set_WmmCapable_Proc},         #endif         	{"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 // DBG //#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},	{"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},	{"ATELDE2P",				    Set_ATE_Load_E2P_Proc},	{"ATERE2P",						Set_ATE_Read_E2P_Proc},	{"ATESHOW",						Set_ATE_Show_Proc},	{"ATEHELP",						Set_ATE_Help_Proc},#ifdef RALINK_28xx_QA	{"TxStop",						Set_TxStop_Proc},	{"RxStop",						Set_RxStop_Proc},	#endif // RALINK_28xx_QA //#endif // RALINK_ATE //#ifdef WPA_SUPPLICANT_SUPPORT    {"WpaSupport",                  Set_Wpa_Support},#endif // WPA_SUPPLICANT_SUPPORT //	{"FixedTxMode",                 Set_FixedTxMode_Proc},#ifdef CONFIG_APSTA_MIXED_SUPPORT	{"OpMode",						Set_OpMode_Proc},#endif // CONFIG_APSTA_MIXED_SUPPORT //#ifdef DOT11_N_SUPPORT    {"TGnWifiTest",                 Set_TGnWifiTest_Proc},    {"ForceGF",		        		Set_ForceGF_Proc},#endif // DOT11_N_SUPPORT //#ifdef QOS_DLS_SUPPORT	{"DlsAddEntry",					Set_DlsAddEntry_Proc},	{"DlsTearDownEntry",			Set_DlsTearDownEntry_Proc},#endif // QOS_DLS_SUPPORT //	{"LongRetry",	        		Set_LongRetryLimit_Proc},	{"ShortRetry",	        		Set_ShortRetryLimit_Proc},#ifdef EXT_BUILD_CHANNEL_LIST	{"11dClientMode",				Set_Ieee80211dClientMode_Proc},#endif // EXT_BUILD_CHANNEL_LIST //#ifdef CARRIER_DETECTION_SUPPORT	{"CarrierDetect",				Set_CarrierDetect_Proc},#endif // CARRIER_DETECTION_SUPPORT ////2008/09/11:KH add to support efuse<--//2008/09/11:KH add to support efuse-->	{"HtDisallowTKIP",				Set_HtDisallowTKIP_Proc},		{"BeaconLostTime",				Set_BeaconLostTime_Proc},	{"AutoRoaming",					Set_AutoRoaming_Proc},	{"SiteSurvey",					Set_SiteSurvey_Proc},	{"ForceTxBurst",				Set_ForceTxBurst_Proc},	{NULL,}};VOID RTMPAddKey(	IN	PRTMP_ADAPTER	    pAd, 	IN	PNDIS_802_11_KEY    pKey){	ULONG				KeyIdx;	MAC_TABLE_ENTRY  	*pEntry;		    DBGPRINT(RT_DEBUG_TRACE, ("RTMPAddKey ------>\n"));	if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)	{		if (pKey->KeyIndex & 0x80000000)		{		    if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)            {                NdisZeroMemory(pAd->StaCfg.PMK, 32);                NdisMoveMemory(pAd->StaCfg.PMK, pKey->KeyMaterial, pKey->KeyLength);                goto end;            }		    // Update PTK		    NdisZeroMemory(&pAd->SharedKey[BSS0][0], sizeof(CIPHER_KEY));              pAd->SharedKey[BSS0][0].KeyLen = LEN_TKIP_EK;            NdisMoveMemory(pAd->SharedKey[BSS0][0].Key, pKey->KeyMaterial, LEN_TKIP_EK);#ifdef WPA_SUPPLICANT_SUPPORT                        if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)            {                NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, pKey->KeyMaterial + LEN_TKIP_EK, LEN_TKIP_TXMICK);                            NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, pKey->KeyMaterial + LEN_TKIP_EK + LEN_TKIP_TXMICK, LEN_TKIP_RXMICK);            }            else#endif // WPA_SUPPLICANT_SUPPORT //            {            	NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, pKey->KeyMaterial + LEN_TKIP_EK, LEN_TKIP_TXMICK);                            NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, pKey->KeyMaterial + LEN_TKIP_EK + LEN_TKIP_TXMICK, LEN_TKIP_RXMICK);            }            // Decide its ChiperAlg        	if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)        		pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_TKIP;        	else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)        		pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_AES;        	else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -