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

📄 rt_profile.c

📁 Linux下的RT系列无线网卡驱动,可以直接在x86平台上编译
💻 C
📖 第 1 页 / 共 3 页
字号:
#ifdef CONFIG_STA_SUPPORT                    //PSMode					if (RTMPGetKeyParameter("PSMode", tmpbuf, 10, buffer))					{						if (pAd->StaCfg.BssType == BSS_INFRA)						{							if ((strcmp(tmpbuf, "MAX_PSP") == 0) || (strcmp(tmpbuf, "max_psp") == 0))							{								// do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange()								// to exclude certain situations.								//	   MlmeSetPsm(pAd, PWR_SAVE);								OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);								if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)									pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeFast_PSP;								pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeFast_PSP;								pAd->StaCfg.DefaultListenCount = 3;							}														else if ((strcmp(tmpbuf, "Fast_PSP") == 0) || (strcmp(tmpbuf, "fast_psp") == 0) 								|| (strcmp(tmpbuf, "FAST_PSP") == 0))							{								// do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange()								// to exclude certain situations.								//	   MlmeSetPsmBit(pAd, PWR_SAVE);								OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);								if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)									pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeFast_PSP;								pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeFast_PSP;								pAd->StaCfg.DefaultListenCount = 3;							}							else							{ //Default Ndis802_11PowerModeCAM								// clear PSM bit immediately								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));					}#endif // CONFIG_STA_SUPPORT //				}			}			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);	}static 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;        }        else        {            pAd->CommonCfg.BACapability.field.AutoBA = TRUE;        }        pAd->CommonCfg.REGBACapability.field.AutoBA = pAd->CommonCfg.BACapability.field.AutoBA;        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);		// Intel IOT		//Value = 64;		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))	{		Value = simple_strtol(pValueStr, 0, 10);		DBGPRINT(RT_DEBUG_TRACE, ("FixedTxMode = %d\n", Value));		if (Value == FIXED_TXMODE_CCK || Value == FIXED_TXMODE_OFDM)		{			pAd->CommonCfg.FixedTxMode = Value;		}			else 		{			pAd->CommonCfg.FixedTxMode  = FIXED_TXMODE_NONE;			DBGPRINT(RT_DEBUG_WARN, ("Invalid FixedTxMode value (%d), ignored, Fix Tx Mode = NONE.\n", Value));		}	}		// 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_40;		}				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, 25, pInput))	{		Value = simple_strtol(pValueStr, 0, 10);		//if (Value >= 0 && Value < MCS_AUTO)		if ((Value >= 0 && Value <= 15) || (Value == 32))		{			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED); 			pAd->CommonCfg.RegTransmitSetting.field.MCS  = Value;		}		else		{			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED); 			pAd->CommonCfg.RegTransmitSetting.field.MCS  = MCS_AUTO;		}				if (pAd->CommonCfg.RegTransmitSetting.field.MCS  == MCS_AUTO)		{			DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = AUTO\n"));		}		else		{            DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = %d\n", pAd->CommonCfg.RegTransmitSetting.field.MCS));		}	}	// 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:			default:				pAd->CommonCfg.TxStream = 2;				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;				break;		}		DBGPRINT(RT_DEBUG_TRACE, ("HT: Rx Stream = %d\n", pAd->CommonCfg.RxStream));	}}

⌨️ 快捷键说明

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