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 + -
显示快捷键?