rt_profile.c

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

C
2,038
字号
								NdisMoveMemory(pAd->MlmeAux.AutoReconnectSsid, tmpbuf, pAd->MlmeAux.AutoReconnectSsidLen);								pAd->MlmeAux.SsidLen = pAd->CommonCfg.SsidLen;								NdisZeroMemory(pAd->MlmeAux.Ssid, NDIS_802_11_LENGTH_SSID);								NdisMoveMemory(pAd->MlmeAux.Ssid, tmpbuf, pAd->MlmeAux.SsidLen);								DBGPRINT(RT_DEBUG_TRACE, ("%s::(SSID=%s)\n", __FUNCTION__, tmpbuf));							}						}					}#endif // CONFIG_STA_SUPPORT //#ifdef CONFIG_STA_SUPPORT															IF_DEV_CONFIG_OPMODE_ON_STA(pAd)					{						//NetworkType						if (RTMPGetKeyParameter("NetworkType", tmpbuf, 25, buffer))						{							pAd->bConfigChanged = TRUE;							if (strcmp(tmpbuf, "Adhoc") == 0)								pAd->StaCfg.BssType = BSS_ADHOC;							else //Default Infrastructure mode								pAd->StaCfg.BssType = BSS_INFRA;							// Reset Ralink supplicant to not use, it will be set to start when UI set PMK key							pAd->StaCfg.WpaState = SS_NOTUSE;							DBGPRINT(RT_DEBUG_TRACE, ("%s::(NetworkType=%d)\n", __FUNCTION__, pAd->StaCfg.BssType));						}					}#endif // CONFIG_STA_SUPPORT //									//Channel					if(RTMPGetKeyParameter("Channel", tmpbuf, 10, buffer))					{						pAd->CommonCfg.Channel = (UCHAR) simple_strtol(tmpbuf, 0, 10);						DBGPRINT(RT_DEBUG_TRACE, ("Channel=%d\n", pAd->CommonCfg.Channel));					}					//WirelessMode					if(RTMPGetKeyParameter("WirelessMode", tmpbuf, 10, buffer))					{						int value  = 0, maxPhyMode = PHY_11G;#ifdef DOT11_N_SUPPORT						maxPhyMode = PHY_11N_5G;#endif // DOT11_N_SUPPORT //						value = simple_strtol(tmpbuf, 0, 10);						if (value <= maxPhyMode)						{							pAd->CommonCfg.PhyMode = value;						}						DBGPRINT(RT_DEBUG_TRACE, ("PhyMode=%d\n", pAd->CommonCfg.PhyMode));					}                    //BasicRate					if(RTMPGetKeyParameter("BasicRate", tmpbuf, 10, buffer))					{						pAd->CommonCfg.BasicRateBitmap = (ULONG) simple_strtol(tmpbuf, 0, 10);						DBGPRINT(RT_DEBUG_TRACE, ("BasicRate=%ld\n", pAd->CommonCfg.BasicRateBitmap));					}					//BeaconPeriod					if(RTMPGetKeyParameter("BeaconPeriod", tmpbuf, 10, buffer))					{						pAd->CommonCfg.BeaconPeriod = (USHORT) simple_strtol(tmpbuf, 0, 10);						DBGPRINT(RT_DEBUG_TRACE, ("BeaconPeriod=%d\n", pAd->CommonCfg.BeaconPeriod));					}                    //TxPower					if(RTMPGetKeyParameter("TxPower", tmpbuf, 10, buffer))					{						pAd->CommonCfg.TxPowerPercentage = (ULONG) simple_strtol(tmpbuf, 0, 10);#ifdef CONFIG_STA_SUPPORT						IF_DEV_CONFIG_OPMODE_ON_STA(pAd)							pAd->CommonCfg.TxPowerDefault = pAd->CommonCfg.TxPowerPercentage;#endif // CONFIG_STA_SUPPORT //						DBGPRINT(RT_DEBUG_TRACE, ("TxPower=%ld\n", pAd->CommonCfg.TxPowerPercentage));					}					//BGProtection					if(RTMPGetKeyParameter("BGProtection", tmpbuf, 10, buffer))					{						switch (simple_strtol(tmpbuf, 0, 10))						{							case 1: //Always On								pAd->CommonCfg.UseBGProtection = 1;								break;							case 2: //Always OFF								pAd->CommonCfg.UseBGProtection = 2;								break;							case 0: //AUTO							default:								pAd->CommonCfg.UseBGProtection = 0;								break;						}						DBGPRINT(RT_DEBUG_TRACE, ("BGProtection=%ld\n", pAd->CommonCfg.UseBGProtection));					}					//OLBCDetection					if(RTMPGetKeyParameter("DisableOLBC", tmpbuf, 10, buffer))					{						switch (simple_strtol(tmpbuf, 0, 10))						{							case 1: //disable OLBC Detection								pAd->CommonCfg.DisableOLBCDetect = 1;								break;							case 0: //enable OLBC Detection								pAd->CommonCfg.DisableOLBCDetect = 0;								break;							default:								pAd->CommonCfg.DisableOLBCDetect= 0;								break;						}						DBGPRINT(RT_DEBUG_TRACE, ("OLBCDetection=%ld\n", pAd->CommonCfg.DisableOLBCDetect));					}					//TxPreamble					if(RTMPGetKeyParameter("TxPreamble", tmpbuf, 10, buffer))					{						switch (simple_strtol(tmpbuf, 0, 10))						{							case Rt802_11PreambleShort:								pAd->CommonCfg.TxPreamble = Rt802_11PreambleShort;								break;							case Rt802_11PreambleLong:							default:								pAd->CommonCfg.TxPreamble = Rt802_11PreambleLong;								break;						}						DBGPRINT(RT_DEBUG_TRACE, ("TxPreamble=%ld\n", pAd->CommonCfg.TxPreamble));					}					//RTSThreshold					if(RTMPGetKeyParameter("RTSThreshold", tmpbuf, 10, buffer))					{						RtsThresh = simple_strtol(tmpbuf, 0, 10);						if( (RtsThresh >= 1) && (RtsThresh <= MAX_RTS_THRESHOLD) )							pAd->CommonCfg.RtsThreshold  = (USHORT)RtsThresh;						else							pAd->CommonCfg.RtsThreshold = MAX_RTS_THRESHOLD;												DBGPRINT(RT_DEBUG_TRACE, ("RTSThreshold=%d\n", pAd->CommonCfg.RtsThreshold));					}					//FragThreshold					if(RTMPGetKeyParameter("FragThreshold", tmpbuf, 10, buffer))					{								FragThresh = simple_strtol(tmpbuf, 0, 10);						pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;						if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD)						{ //illegal FragThresh so we set it to default							pAd->CommonCfg.FragmentThreshold = MAX_FRAG_THRESHOLD;							pAd->CommonCfg.bUseZeroToDisableFragment = TRUE;						}						else if (FragThresh % 2 == 1)						{							// The length of each fragment shall always be an even number of octets, except for the last fragment							// of an MSDU or MMPDU, which may be either an even or an odd number of octets.							pAd->CommonCfg.FragmentThreshold = (USHORT)(FragThresh - 1);						}						else						{							pAd->CommonCfg.FragmentThreshold = (USHORT)FragThresh;						}						//pAd->CommonCfg.AllowFragSize = (pAd->CommonCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC;						DBGPRINT(RT_DEBUG_TRACE, ("FragThreshold=%d\n", pAd->CommonCfg.FragmentThreshold));					}					//TxBurst					if(RTMPGetKeyParameter("TxBurst", tmpbuf, 10, buffer))					{//#ifdef WIFI_TEST//						pAd->CommonCfg.bEnableTxBurst = FALSE;//#else						if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable							pAd->CommonCfg.bEnableTxBurst = TRUE;						else //Disable							pAd->CommonCfg.bEnableTxBurst = FALSE;//#endif						DBGPRINT(RT_DEBUG_TRACE, ("TxBurst=%d\n", pAd->CommonCfg.bEnableTxBurst));					}#ifdef AGGREGATION_SUPPORT					//PktAggregate					if(RTMPGetKeyParameter("PktAggregate", tmpbuf, 10, buffer))					{						if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable							pAd->CommonCfg.bAggregationCapable = TRUE;						else //Disable							pAd->CommonCfg.bAggregationCapable = FALSE;#ifdef PIGGYBACK_SUPPORT						pAd->CommonCfg.bPiggyBackCapable = pAd->CommonCfg.bAggregationCapable;#endif // PIGGYBACK_SUPPORT //						DBGPRINT(RT_DEBUG_TRACE, ("PktAggregate=%d\n", pAd->CommonCfg.bAggregationCapable));					}#else					pAd->CommonCfg.bAggregationCapable = FALSE;					pAd->CommonCfg.bPiggyBackCapable = FALSE;#endif // AGGREGATION_SUPPORT //					// WmmCapable#ifdef CONFIG_STA_SUPPORT					IF_DEV_CONFIG_OPMODE_ON_STA(pAd)						rtmp_read_sta_wmm_parms_from_file(pAd, tmpbuf, buffer);#endif // CONFIG_STA_SUPPORT //					//ShortSlot					if(RTMPGetKeyParameter("ShortSlot", tmpbuf, 10, buffer))					{						if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable							pAd->CommonCfg.bUseShortSlotTime = TRUE;						else //Disable							pAd->CommonCfg.bUseShortSlotTime = FALSE;						DBGPRINT(RT_DEBUG_TRACE, ("ShortSlot=%d\n", pAd->CommonCfg.bUseShortSlotTime));					}					//IEEE80211H					if(RTMPGetKeyParameter("IEEE80211H", tmpbuf, 10, buffer))					{					    for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)					    {    						if(simple_strtol(macptr, 0, 10) != 0)  //Enable    							pAd->CommonCfg.bIEEE80211H = TRUE;    						else //Disable    							pAd->CommonCfg.bIEEE80211H = FALSE;    						DBGPRINT(RT_DEBUG_TRACE, ("IEEE80211H=%d\n", pAd->CommonCfg.bIEEE80211H));					    }					}					//CSPeriod					if(RTMPGetKeyParameter("CSPeriod", tmpbuf, 10, buffer))					{					    if(simple_strtol(tmpbuf, 0, 10) != 0)							pAd->CommonCfg.RadarDetect.CSPeriod = simple_strtol(tmpbuf, 0, 10);						else							pAd->CommonCfg.RadarDetect.CSPeriod = 0;   						DBGPRINT(RT_DEBUG_TRACE, ("CSPeriod=%d\n", pAd->CommonCfg.RadarDetect.CSPeriod));					}					//RDRegion					if(RTMPGetKeyParameter("RDRegion", tmpbuf, 128, buffer))					{						if ((strncmp(tmpbuf, "JAP_W53", 7) == 0) || (strncmp(tmpbuf, "jap_w53", 7) == 0))						{							pAd->CommonCfg.RadarDetect.RDDurRegion = JAP_W53;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 15;						}						else if ((strncmp(tmpbuf, "JAP_W56", 7) == 0) || (strncmp(tmpbuf, "jap_w56", 7) == 0))						{							pAd->CommonCfg.RadarDetect.RDDurRegion = JAP_W56;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;						}						else if ((strncmp(tmpbuf, "JAP", 3) == 0) || (strncmp(tmpbuf, "jap", 3) == 0))						{							pAd->CommonCfg.RadarDetect.RDDurRegion = JAP;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 5;						}						else  if ((strncmp(tmpbuf, "FCC", 3) == 0) || (strncmp(tmpbuf, "fcc", 3) == 0))						{							pAd->CommonCfg.RadarDetect.RDDurRegion = FCC;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 5;						}						else if ((strncmp(tmpbuf, "CE", 2) == 0) || (strncmp(tmpbuf, "ce", 2) == 0))						{							pAd->CommonCfg.RadarDetect.RDDurRegion = CE;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;						}						else						{							pAd->CommonCfg.RadarDetect.RDDurRegion = CE;							pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;						}						DBGPRINT(RT_DEBUG_TRACE, ("RDRegion=%d\n", pAd->CommonCfg.RadarDetect.RDDurRegion));					}					else					{						pAd->CommonCfg.RadarDetect.RDDurRegion = CE;						pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;					}					//WirelessEvent					if(RTMPGetKeyParameter("WirelessEvent", tmpbuf, 10, buffer))					{				#if WIRELESS_EXT >= 15					    if(simple_strtol(tmpbuf, 0, 10) != 0)							pAd->CommonCfg.bWirelessEvent = simple_strtol(tmpbuf, 0, 10);						else							pAd->CommonCfg.bWirelessEvent = 0;	// disable#else						pAd->CommonCfg.bWirelessEvent = 0;	// disable#endif   						DBGPRINT(RT_DEBUG_TRACE, ("WirelessEvent=%d\n", pAd->CommonCfg.bWirelessEvent));					}					if(RTMPGetKeyParameter("WiFiTest", tmpbuf, 10, buffer))					{									    if(simple_strtol(tmpbuf, 0, 10) != 0)							pAd->CommonCfg.bWiFiTest= simple_strtol(tmpbuf, 0, 10);						else							pAd->CommonCfg.bWiFiTest = 0;	// disable   						DBGPRINT(RT_DEBUG_TRACE, ("WiFiTest=%d\n", pAd->CommonCfg.bWiFiTest));					}					//AuthMode					if(RTMPGetKeyParameter("AuthMode", tmpbuf, 128, buffer))					{#ifdef CONFIG_STA_SUPPORT						IF_DEV_CONFIG_OPMODE_ON_STA(pAd)						{							if ((strcmp(tmpbuf, "WEPAUTO") == 0) || (strcmp(tmpbuf, "wepauto") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeAutoSwitch;							else if ((strcmp(tmpbuf, "SHARED") == 0) || (strcmp(tmpbuf, "shared") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeShared;							else if ((strcmp(tmpbuf, "WPAPSK") == 0) || (strcmp(tmpbuf, "wpapsk") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPAPSK;							else if ((strcmp(tmpbuf, "WPANONE") == 0) || (strcmp(tmpbuf, "wpanone") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPANone;							else if ((strcmp(tmpbuf, "WPA2PSK") == 0) || (strcmp(tmpbuf, "wpa2psk") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2PSK;#ifdef WPA_SUPPLICANT_SUPPORT														else if ((strcmp(tmpbuf, "WPA") == 0) || (strcmp(tmpbuf, "wpa") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA;							else if ((strcmp(tmpbuf, "WPA2") == 0) || (strcmp(tmpbuf, "wpa2") == 0))							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2;  #endif // WPA_SUPPLICANT_SUPPORT //				                        else				                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeOpen;				                        pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;							DBGPRINT(RT_DEBUG_TRACE, ("%s::(EncrypType=%d)\n", __FUNCTION__, pAd->StaCfg.WepStatus));						}#endif // CONFIG_STA_SUPPORT //					}					//EncrypType					if(RTMPGetKeyParameter("EncrypType", tmpbuf, 128, buffer))					{#ifdef CONFIG_STA_SUPPORT 						IF_DEV_CONFIG_OPMODE_ON_STA(pAd)						{							if ((strcmp(tmpbuf, "WEP") == 0) || (strcmp(tmpbuf, "wep") == 0))														pAd->StaCfg.WepStatus	= Ndis802_11WEPEnabled;																				else if ((strcmp(tmpbuf, "TKIP") == 0) || (strcmp(tmpbuf, "tkip") == 0))														pAd->StaCfg.WepStatus	= Ndis802_11Encryption2Enabled;																				else if ((strcmp(tmpbuf, "AES") == 0) || (strcmp(tmpbuf, "aes") == 0))														pAd->StaCfg.WepStatus	= Ndis802_11Encryption3Enabled;														 							else														pAd->StaCfg.WepStatus	= Ndis802_11WEPDisabled;																				// Update all wepstatus related							pAd->StaCfg.PairCipher		= pAd->StaCfg.WepStatus;							pAd->StaCfg.GroupCipher 	= pAd->StaCfg.WepStatus;							pAd->StaCfg.OrigWepStatus 	= pAd->StaCfg.WepStatus; 							pAd->StaCfg.bMixCipher 		= FALSE;															//RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, 0);							DBGPRINT(RT_DEBUG_TRACE, ("%s::(EncrypType=%d)\n", __FUNCTION__, pAd->StaCfg.WepStatus));						}#endif // CONFIG_STA_SUPPORT //					}#ifdef CONFIG_STA_SUPPORT					IF_DEV_CONFIG_OPMODE_ON_STA(pAd)					{						if(RTMPGetCriticalParameter("WPAPSK", tmpbuf, 512, buffer))						{													int     err=0;							tmpbuf[strlen(tmpbuf)] = '\0'; // make STA can process .$^& for WPAPSK input 							if ((pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPAPSK) &&								(pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPA2PSK) &&								(pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone) 								)							{								err = 1;							}							else if ((strlen(tmpbuf) >= 8) && (strlen(tmpbuf) < 64))							{								PasswordHash((char *)tmpbuf, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen, keyMaterial);								NdisMoveMemory(pAd->StaCfg.PMK, keyMaterial, 32);	                            							}							else if (strlen(tmpbuf) == 64)							{								AtoH(tmpbuf, keyMaterial, 32);								NdisMoveMemory(pAd->StaCfg.PMK, keyMaterial, 32);							}							else							{								err = 1;								DBGPRINT(RT_DEBUG_ERROR, ("%s::(WPAPSK key-string required 8 ~ 64 characters!)\n", __FUNCTION__));							}							if (err == 0)	                        			{	                        				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||									(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))								{									// Start STA supplicant state machine									pAd->StaCfg.WpaState = SS_START;								}								else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)								{	/*																NdisZeroMemory(&pAd->SharedKey[BSS0][0], sizeof(CIPHER_KEY));  									pAd->SharedKey[BSS0][0].KeyLen = LEN_TKIP_EK;									NdisMoveMemory(pAd->SharedKey[BSS0][0].Key, pAd->StaCfg.PMK, LEN_TKIP_EK);									NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, &pAd->StaCfg.PMK[16], LEN_TKIP_RXMICK);									NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, &pAd->StaCfg.PMK[16], LEN_TKIP_TXMICK);            									// 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										pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_NONE;	*/									pAd->StaCfg.WpaState = SS_NOTUSE;								}								DBGPRINT(RT_DEBUG_TRACE, ("%s::(WPAPSK=%s)\n", __FUNCTION__, tmpbuf));							} 						}					}#endif // CONFIG_STA_SUPPORT //																		//DefaultKeyID, KeyType, KeyStr					rtmp_read_key_parms_from_file(pAd, tmpbuf, buffer);					//HSCounter					/*if(RTMPGetKeyParameter("HSCounter", tmpbuf, 10, buffer))					{						switch (simple_strtol(tmpbuf, 0, 10))						{							case 1: //Enable								pAd->CommonCfg.bEnableHSCounter = TRUE;								break;							case 0: //Disable							default:								pAd->CommonCfg.bEnableHSCounter = FALSE;								break;						}						DBGPRINT(RT_DEBUG_TRACE, "HSCounter=%d\n", pAd->CommonCfg.bEnableHSCounter);					}*/#ifdef DOT11_N_SUPPORT					HTParametersHook(pAd, tmpbuf, buffer);#endif // DOT11_N_SUPPORT //#ifdef CARRIER_DETECTION_SUPPORT						//CarrierDetect						if(RTMPGetKeyParameter("CarrierDetect", tmpbuf, 128, buffer))						{							if ((strncmp(tmpbuf, "0", 1) == 0))								pAd->CommonCfg.CarrierDetect.Enable = FALSE;							else if ((strncmp(tmpbuf, "1", 1) == 0))								pAd->CommonCfg.CarrierDetect.Enable = TRUE;							else								pAd->CommonCfg.CarrierDetect.Enable = FALSE;							DBGPRINT(RT_DEBUG_TRACE, ("CarrierDetect.Enable=%d\n", pAd->CommonCfg.CarrierDetect.Enable));						}						else							pAd->CommonCfg.CarrierDetect.Enable = FALSE;#endif // CARRIER_DETECTION_SUPPORT //#ifdef CONFIG_STA_SUPPORT					IF_DEV_CONFIG_OPMODE_ON_STA(pAd)					{						//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_11PowerModeMAX_PSP;									pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeMAX_PSP;									pAd->StaCfg.DefaultListenCount = 5;								}															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 if ((strcmp(tmpbuf, "Legacy_PSP") == 0) || (strcmp(tmpbuf, "legacy_psp") == 0) 									|| (strcmp(tmpbuf, "LEGACY_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_11PowerModeLegacy_PSP;									pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeLegacy_PSP;									pAd->StaCfg.DefaultListenCount = 3;								}								else								{ //Default Ndis802_11PowerModeCAM									// clear PSM bit immediately

⌨️ 快捷键说明

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