rt_profile.c

来自「ralink最新rt3070 usb wifi 无线网卡驱动程序」· C语言 代码 · 共 2,038 行 · 第 1/4 页

C
2,038
字号
									MlmeSetPsmBit(pAd, PWR_ACTIVE);									OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);									if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)										pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeCAM;									pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM;								}								DBGPRINT(RT_DEBUG_TRACE, ("PSMode=%ld\n", pAd->StaCfg.WindowsPowerMode));							}						}						// FastRoaming						if (RTMPGetKeyParameter("FastRoaming", tmpbuf, 32, buffer))						{							if (simple_strtol(tmpbuf, 0, 10) == 0)								pAd->StaCfg.bFastRoaming = FALSE;							else								pAd->StaCfg.bFastRoaming = TRUE;							DBGPRINT(RT_DEBUG_TRACE, ("FastRoaming=%d\n", pAd->StaCfg.bFastRoaming));						}						// RoamThreshold						if (RTMPGetKeyParameter("RoamThreshold", tmpbuf, 32, buffer))						{							long lInfo = simple_strtol(tmpbuf, 0, 10);							if (lInfo > 90 || lInfo < 60)								pAd->StaCfg.dBmToRoam = -70;							else    								pAd->StaCfg.dBmToRoam = (CHAR)(-1)*lInfo;							DBGPRINT(RT_DEBUG_TRACE, ("RoamThreshold=%d  dBm\n", pAd->StaCfg.dBmToRoam));						}						if(RTMPGetKeyParameter("TGnWifiTest", tmpbuf, 10, buffer))						{											if(simple_strtol(tmpbuf, 0, 10) == 0)								pAd->StaCfg.bTGnWifiTest = FALSE;							else								pAd->StaCfg.bTGnWifiTest = TRUE;								DBGPRINT(RT_DEBUG_TRACE, ("TGnWifiTest=%d\n", pAd->StaCfg.bTGnWifiTest));						}					}#endif // CONFIG_STA_SUPPORT //#ifdef RT30xx#ifdef CONFIG_STA_SUPPORT						IF_DEV_CONFIG_OPMODE_ON_STA(pAd)						{							if(RTMPGetKeyParameter("AntDiversity", tmpbuf, 10, buffer))							{								for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)								{									if(simple_strtol(macptr, 0, 10) != 0)  //Enable										pAd->CommonCfg.bRxAntDiversity = TRUE;									else //Disable										pAd->CommonCfg.bRxAntDiversity = FALSE;									DBGPRINT(RT_DEBUG_ERROR, ("AntDiversity=%d\n", pAd->CommonCfg.bRxAntDiversity));								}							}						}#endif // CONFIG_STA_SUPPORT //#endif // RT30xx //				}			}			else			{				DBGPRINT(RT_DEBUG_TRACE, ("--> %s does not have a write method\n", src));			}						retval=filp_close(srcf,NULL);						if (retval)			{				DBGPRINT(RT_DEBUG_TRACE, ("--> Error %d closing %s\n", -retval, src));			}		}	}	set_fs(orgfs);	current->fsuid = orgfsuid;	current->fsgid = orgfsgid;	kfree(buffer);	kfree(tmpbuf);	return (NDIS_STATUS_SUCCESS);	}#ifdef DOT11_N_SUPPORTstatic void	HTParametersHook(	IN	PRTMP_ADAPTER pAd, 	IN	CHAR		  *pValueStr,	IN	CHAR		  *pInput){	INT Value;    if (RTMPGetKeyParameter("HT_PROTECT", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value == 0)        {            pAd->CommonCfg.bHTProtect = FALSE;        }        else        {            pAd->CommonCfg.bHTProtect = TRUE;        }        DBGPRINT(RT_DEBUG_TRACE, ("HT: Protection  = %s\n", (Value==0) ? "Disable" : "Enable"));    }    if (RTMPGetKeyParameter("HT_MIMOPSEnable", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value == 0)        {            pAd->CommonCfg.bMIMOPSEnable = FALSE;        }        else        {            pAd->CommonCfg.bMIMOPSEnable = TRUE;        }        DBGPRINT(RT_DEBUG_TRACE, ("HT: MIMOPSEnable  = %s\n", (Value==0) ? "Disable" : "Enable"));    }    if (RTMPGetKeyParameter("HT_MIMOPSMode", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value > MMPS_ENABLE)        {			pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;        }        else        {            //TODO: add mimo power saving mechanism            pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;			//pAd->CommonCfg.BACapability.field.MMPSmode = Value;        }        DBGPRINT(RT_DEBUG_TRACE, ("HT: MIMOPS Mode  = %d\n", Value));    }    if (RTMPGetKeyParameter("HT_BADecline", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value == 0)        {            pAd->CommonCfg.bBADecline = FALSE;        }        else        {            pAd->CommonCfg.bBADecline = TRUE;        }        DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Decline  = %s\n", (Value==0) ? "Disable" : "Enable"));    }    if (RTMPGetKeyParameter("HT_DisableReordering", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value == 0)        {            pAd->CommonCfg.bDisableReordering = FALSE;        }        else        {            pAd->CommonCfg.bDisableReordering = TRUE;        }        DBGPRINT(RT_DEBUG_TRACE, ("HT: DisableReordering  = %s\n", (Value==0) ? "Disable" : "Enable"));    }    if (RTMPGetKeyParameter("HT_AutoBA", pValueStr, 25, pInput))    {        Value = simple_strtol(pValueStr, 0, 10);        if (Value == 0)        {            pAd->CommonCfg.BACapability.field.AutoBA = FALSE;	    pAd->CommonCfg.BACapability.field.Policy = BA_NOTUSE;        }        else        {            pAd->CommonCfg.BACapability.field.AutoBA = TRUE;	    pAd->CommonCfg.BACapability.field.Policy = IMMED_BA;        }        pAd->CommonCfg.REGBACapability.field.AutoBA = pAd->CommonCfg.BACapability.field.AutoBA;	pAd->CommonCfg.REGBACapability.field.Policy = pAd->CommonCfg.BACapability.field.Policy;        DBGPRINT(RT_DEBUG_TRACE, ("HT: Auto BA  = %s\n", (Value==0) ? "Disable" : "Enable"));    }	// Tx_+HTC frame    if (RTMPGetKeyParameter("HT_HTC", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{			pAd->HTCEnable = FALSE;		}		else		{            		pAd->HTCEnable = TRUE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx +HTC frame = %s\n", (Value==0) ? "Disable" : "Enable"));	}	// Enable HT Link Adaptation Control	if (RTMPGetKeyParameter("HT_LinkAdapt", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{			pAd->bLinkAdapt = FALSE;		}		else		{			pAd->HTCEnable = TRUE;			pAd->bLinkAdapt = TRUE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Link Adaptation Control = %s\n", (Value==0) ? "Disable" : "Enable(+HTC)"));	}	// Reverse Direction Mechanism    if (RTMPGetKeyParameter("HT_RDG", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{						pAd->CommonCfg.bRdg = FALSE;		}		else		{			pAd->HTCEnable = TRUE;            pAd->CommonCfg.bRdg = TRUE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: RDG = %s\n", (Value==0) ? "Disable" : "Enable(+HTC)"));	}	// Tx A-MSUD ?    if (RTMPGetKeyParameter("HT_AMSDU", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{			pAd->CommonCfg.BACapability.field.AmsduEnable = FALSE;		}		else		{            pAd->CommonCfg.BACapability.field.AmsduEnable = TRUE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx A-MSDU = %s\n", (Value==0) ? "Disable" : "Enable"));	}	// MPDU Density    if (RTMPGetKeyParameter("HT_MpduDensity", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value <=7 && Value >= 0)		{					pAd->CommonCfg.BACapability.field.MpduDensity = Value;			DBGPRINT(RT_DEBUG_TRACE, ("HT: MPDU Density = %d\n", Value));		}		else		{			pAd->CommonCfg.BACapability.field.MpduDensity = 4;			DBGPRINT(RT_DEBUG_TRACE, ("HT: MPDU Density = %d (Default)\n", 4));		}	}	// Max Rx BA Window Size    if (RTMPGetKeyParameter("HT_BAWinSize", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value >=1 && Value <= 64)		{					pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = Value;			pAd->CommonCfg.BACapability.field.RxBAWinLimit = Value;			DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Windw Size = %d\n", Value));		}		else		{            pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = 64;			pAd->CommonCfg.BACapability.field.RxBAWinLimit = 64;			DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Windw Size = 64 (Defualt)\n"));		}	}	// Guard Interval	if (RTMPGetKeyParameter("HT_GI", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == GI_400)		{			pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_400;		}		else		{			pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_800;		}				DBGPRINT(RT_DEBUG_TRACE, ("HT: Guard Interval = %s\n", (Value==GI_400) ? "400" : "800" ));	}	// HT Operation Mode : Mixed Mode , Green Field	if (RTMPGetKeyParameter("HT_OpMode", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == HTMODE_GF)		{			pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_GF;		}		else		{			pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_MM;		}				DBGPRINT(RT_DEBUG_TRACE, ("HT: Operate Mode = %s\n", (Value==HTMODE_GF) ? "Green Field" : "Mixed Mode" ));	}	// Fixed Tx mode : CCK, OFDM	if (RTMPGetKeyParameter("FixedTxMode", pValueStr, 25, pInput))	{		UCHAR	fix_tx_mode;	#ifdef CONFIG_STA_SUPPORT		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)		{			fix_tx_mode = FIXED_TXMODE_HT;			if (strcmp(pValueStr, "OFDM") == 0 || strcmp(pValueStr, "ofdm") == 0)			{				fix_tx_mode = FIXED_TXMODE_OFDM;			}				else if (strcmp(pValueStr, "CCK") == 0 || strcmp(pValueStr, "cck") == 0)			{		        fix_tx_mode = FIXED_TXMODE_CCK;			}			else if (strcmp(pValueStr, "HT") == 0 || strcmp(pValueStr, "ht") == 0)			{		        fix_tx_mode = FIXED_TXMODE_HT;		}			else 		{				Value = simple_strtol(pValueStr, 0, 10);				// 1 : CCK				// 2 : OFDM				// otherwise : HT				if (Value == FIXED_TXMODE_CCK || Value == FIXED_TXMODE_OFDM)					fix_tx_mode = Value;					else					fix_tx_mode = FIXED_TXMODE_HT;		}			pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode = fix_tx_mode;			DBGPRINT(RT_DEBUG_TRACE, ("Fixed Tx Mode = %d\n", fix_tx_mode));					}#endif // CONFIG_STA_SUPPORT //	}	// Channel Width	if (RTMPGetKeyParameter("HT_BW", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == BW_40)		{			pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_40;		}		else		{            pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;		}		#ifdef MCAST_RATE_SPECIFIC		pAd->CommonCfg.MCastPhyMode.field.BW = pAd->CommonCfg.RegTransmitSetting.field.BW;#endif // MCAST_RATE_SPECIFIC //		DBGPRINT(RT_DEBUG_TRACE, ("HT: Channel Width = %s\n", (Value==BW_40) ? "40 MHz" : "20 MHz" ));	}	if (RTMPGetKeyParameter("HT_EXTCHA", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{						pAd->CommonCfg.RegTransmitSetting.field.EXTCHA  = EXTCHA_BELOW;		}		else		{            pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;		}				DBGPRINT(RT_DEBUG_TRACE, ("HT: Ext Channel = %s\n", (Value==0) ? "BELOW" : "ABOVE" ));	}	// MSC	if (RTMPGetKeyParameter("HT_MCS", pValueStr, 50, pInput))	{#ifdef CONFIG_STA_SUPPORT 			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)		{			Value = simple_strtol(pValueStr, 0, 10);//			if ((Value >= 0 && Value <= 15) || (Value == 32))			if ((Value >= 0 && Value <= 23) || (Value == 32)) // 3*3		{				pAd->StaCfg.DesiredTransmitSetting.field.MCS  = Value;				pAd->StaCfg.bAutoTxRateSwitch = FALSE;				DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = %d\n", pAd->StaCfg.DesiredTransmitSetting.field.MCS));		}		else		{				pAd->StaCfg.DesiredTransmitSetting.field.MCS  = MCS_AUTO;				pAd->StaCfg.bAutoTxRateSwitch = TRUE;				DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = AUTO\n"));		}	}#endif // CONFIG_STA_SUPPORT //			}	// STBC     if (RTMPGetKeyParameter("HT_STBC", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == STBC_USE)		{					pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_USE;		}		else		{			pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_NONE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: STBC = %d\n", pAd->CommonCfg.RegTransmitSetting.field.STBC));	}	// 40_Mhz_Intolerant	if (RTMPGetKeyParameter("HT_40MHZ_INTOLERANT", pValueStr, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		if (Value == 0)		{					pAd->CommonCfg.bForty_Mhz_Intolerant = FALSE;		}		else		{			pAd->CommonCfg.bForty_Mhz_Intolerant = TRUE;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: 40MHZ INTOLERANT = %d\n", pAd->CommonCfg.bForty_Mhz_Intolerant));	}	//HT_TxStream	if(RTMPGetKeyParameter("HT_TxStream", pValueStr, 10, pInput))	{		switch (simple_strtol(pValueStr, 0, 10))		{			case 1:				pAd->CommonCfg.TxStream = 1;				break;			case 2:				pAd->CommonCfg.TxStream = 2;				break;			case 3: // 3*3			default:				pAd->CommonCfg.TxStream = 3;				if (pAd->MACVersion < RALINK_2883_VERSION)					pAd->CommonCfg.TxStream = 2; // only 2 tx streams for RT2860 series				break;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx Stream = %d\n", pAd->CommonCfg.TxStream));	}	//HT_RxStream	if(RTMPGetKeyParameter("HT_RxStream", pValueStr, 10, pInput))	{		switch (simple_strtol(pValueStr, 0, 10))		{			case 1:				pAd->CommonCfg.RxStream = 1;				break;			case 2:				pAd->CommonCfg.RxStream = 2;				break;			case 3:			default:				pAd->CommonCfg.RxStream = 3;				if (pAd->MACVersion < RALINK_2883_VERSION)					pAd->CommonCfg.RxStream = 2; // only 2 rx streams for RT2860 series				break;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Rx Stream = %d\n", pAd->CommonCfg.RxStream));	}}#endif // DOT11_N_SUPPORT //

⌨️ 快捷键说明

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