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

📄 connect.c

📁 ralink最新rt3070 usb wifi 无线网卡驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		{			if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&				(pDLS->TimeOut == pAd->StaCfg.DLSEntry[i].TimeOut) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 			{				// 1. Same setting, just drop it				DBGPRINT(RT_DEBUG_TRACE,("CNTL - setting unchanged\n"));				break;			}			else if (!pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&				MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 			{				// 2. Disable DLS link case, just tear down DLS link				reason = REASON_QOS_UNWANTED_MECHANISM;				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				DBGPRINT(RT_DEBUG_TRACE,("CNTL - start tear down procedure\n"));				break;			}			else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && !pAd->StaCfg.DLSEntry[i].Valid) 			{				// 3. Enable case, start DLS setup procedure				NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));				//Update countdown timer				pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS setup case\n"));				break;			}			else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&				(pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) && !MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 			{				// 4. update mac case, tear down old DLS and setup new DLS				reason = REASON_QOS_UNWANTED_MECHANISM;				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS tear down and restart case\n"));				break;			}			else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && 				MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr) && (pAd->StaCfg.DLSEntry[i].TimeOut != pDLS->TimeOut)) 			{				// 5. update timeout case, start DLS setup procedure (no tear down)				pAd->StaCfg.DLSEntry[i].TimeOut	= pDLS->TimeOut;				//Update countdown timer				pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS update timeout case\n"));				break;			}			else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&				(pAd->StaCfg.DLSEntry[i].Status != DLS_FINISH) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 			{				// 6. re-setup case, start DLS setup procedure (no tear down)				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS retry setup procedure\n"));				break;			}			else			{				DBGPRINT(RT_DEBUG_WARN,("CNTL - DLS not changed in entry - %d - Valid=%d, Status=%d, TimeOut=%d\n",					i, pAd->StaCfg.DLSEntry[i].Valid, pAd->StaCfg.DLSEntry[i].Status, pAd->StaCfg.DLSEntry[i].TimeOut));			}		}	}}#endif // QOS_DLS_SUPPORT ///*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitDisassocProc(	IN PRTMP_ADAPTER pAd, 	IN MLME_QUEUE_ELEM *Elem) {	MLME_START_REQ_STRUCT     StartReq;	if (Elem->MsgType == MT2_DISASSOC_CONF) 	{		DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Dis-associate successful\n"));        	    if (pAd->CommonCfg.bWirelessEvent)		{							RTMPSendWirelessEvent(pAd, IW_DISASSOC_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0); 		}        				LinkDown(pAd, FALSE);				// case 1. no matching BSS, and user wants ADHOC, so we just start a new one        		if ((pAd->MlmeAux.SsidBssTab.BssNr==0) && (pAd->StaCfg.BssType == BSS_ADHOC))		{			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - No matching BSS, start a new ADHOC (Ssid=%s)...\n",pAd->MlmeAux.Ssid));			StartParmFill(pAd, &StartReq, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq);			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START;		}		// case 2. try each matched BSS		else		{			pAd->MlmeAux.BssIdx = 0;			IterateOnBssTab(pAd);		}	}}/*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitJoinProc(	IN PRTMP_ADAPTER pAd, 	IN MLME_QUEUE_ELEM *Elem) {	USHORT                      Reason;	MLME_AUTH_REQ_STRUCT        AuthReq;	if (Elem->MsgType == MT2_JOIN_CONF) 	{		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));		if (Reason == MLME_SUCCESS) 		{			// 1. joined an IBSS, we are pretty much done here			if (pAd->MlmeAux.BssType == BSS_ADHOC)			{			    //				// 5G bands rules of Japan:				// Ad hoc must be disabled in W53(ch52,56,60,64) channels.				//				if ( (pAd->CommonCfg.bIEEE80211H == 1) &&                       RadarChannelCheck(pAd, pAd->CommonCfg.Channel)				   )				{					pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;					DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Channel=%d, Join adhoc on W53(52,56,60,64) Channels are not accepted\n", pAd->CommonCfg.Channel));					return;				}                				LinkUp(pAd, BSS_ADHOC);				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - join the IBSS = %02x:%02x:%02x:%02x:%02x:%02x ...\n", 				pAd->CommonCfg.Bssid[0],pAd->CommonCfg.Bssid[1],pAd->CommonCfg.Bssid[2],				pAd->CommonCfg.Bssid[3],pAd->CommonCfg.Bssid[4],pAd->CommonCfg.Bssid[5]));                pAd->IndicateMediaState = NdisMediaStateConnected;                pAd->ExtraInfo = GENERAL_LINK_UP;			} 			// 2. joined a new INFRA network, start from authentication			else 			{#ifdef LEAP_SUPPORT							// Add AuthMode "LEAP" for CCX 1.X				if (pAd->StaCfg.LeapAuthMode == CISCO_AuthModeLEAP)				{					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, CISCO_AuthModeLEAP);				}				else#endif // LEAP_SUPPORT //									{					// either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first					if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeShared) ||						(pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch))					{						AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeShared);					}					else					{						AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeOpen);					}				}				MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 							sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq);				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH;			}		}		else		{			// 3. failed, try next BSS			pAd->MlmeAux.BssIdx++;			IterateOnBssTab(pAd);		} 	}}/*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitStartProc(	IN PRTMP_ADAPTER pAd, 	IN MLME_QUEUE_ELEM *Elem) {	USHORT      Result;	if (Elem->MsgType == MT2_START_CONF) 	{		NdisMoveMemory(&Result, Elem->Msg, sizeof(USHORT));		if (Result == MLME_SUCCESS) 		{		    //			// 5G bands rules of Japan:			// Ad hoc must be disabled in W53(ch52,56,60,64) channels.			//			if ( (pAd->CommonCfg.bIEEE80211H == 1) &&                   RadarChannelCheck(pAd, pAd->CommonCfg.Channel)			   )			{				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Channel=%d, Start adhoc on W53(52,56,60,64) Channels are not accepted\n", pAd->CommonCfg.Channel));				return;			}#ifdef DOT11_N_SUPPORT			if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)			{				N_ChannelCheck(pAd);				SetCommonHT(pAd);				NdisMoveMemory(&pAd->MlmeAux.AddHtInfo, &pAd->CommonCfg.AddHTInfo, sizeof(ADD_HT_INFO_IE));				RTMPCheckHt(pAd, BSSID_WCID, &pAd->CommonCfg.HtCapability, &pAd->CommonCfg.AddHTInfo);				pAd->StaActive.SupportedPhyInfo.bHtEnable = TRUE;				NdisZeroMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], 16);				NdisMoveMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], &pAd->CommonCfg.HtCapability.MCSSet[0], 16);				COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(pAd);								if ((pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 					(pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE))				{					pAd->MlmeAux.CentralChannel = pAd->CommonCfg.Channel + 2;				}				else if ((pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 						 (pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW))				{					pAd->MlmeAux.CentralChannel = pAd->CommonCfg.Channel - 2;				}			}			else#endif // DOT11_N_SUPPORT //			{				pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;			}			LinkUp(pAd, BSS_ADHOC);			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;			// Before send beacon, driver need do radar detection			if ((pAd->CommonCfg.Channel > 14 )				&& (pAd->CommonCfg.bIEEE80211H == 1)				&& RadarChannelCheck(pAd, pAd->CommonCfg.Channel))			{				pAd->CommonCfg.RadarDetect.RDMode = RD_SILENCE_MODE;				pAd->CommonCfg.RadarDetect.RDCount = 0;#ifdef DFS_SUPPORT				BbpRadarDetectionStart(pAd);#endif // DFS_SUPPORT //			}			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - start a new IBSS = %02x:%02x:%02x:%02x:%02x:%02x ...\n", 				pAd->CommonCfg.Bssid[0],pAd->CommonCfg.Bssid[1],pAd->CommonCfg.Bssid[2],				pAd->CommonCfg.Bssid[3],pAd->CommonCfg.Bssid[4],pAd->CommonCfg.Bssid[5]));		}		else		{			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Start IBSS fail. BUG!!!!!\n"));			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;		}	}}/*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitAuthProc(	IN PRTMP_ADAPTER pAd, 	IN MLME_QUEUE_ELEM *Elem) {	USHORT                       Reason;	MLME_ASSOC_REQ_STRUCT        AssocReq;	MLME_AUTH_REQ_STRUCT         AuthReq;	if (Elem->MsgType == MT2_AUTH_CONF) 	{		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));		if (Reason == MLME_SUCCESS) 		{			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH OK\n"));			AssocParmFill(pAd, &AssocReq, pAd->MlmeAux.Bssid, pAd->MlmeAux.CapabilityInfo, 						  ASSOC_TIMEOUT, pAd->StaCfg.DefaultListenCount);#ifdef LEAP_SUPPORT			//			// Cisco Leap CCKM supported Re-association.			//			if (LEAP_CCKM_ON(pAd) && (pAd->StaCfg.CCKMLinkUpFlag == TRUE))			{ 				//if CCKM is turn on , that's mean Fast Reauthentication 				//Use CCKM Reassociation instead of normal association for Fast Roaming.				MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_REASSOC_REQ, 							sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq);				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_REASSOC;			}			else#endif // LEAP_SUPPORT //							{				MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, 							sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq);				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC;			}		} 		else		{			// This fail may because of the AP already keep us in its MAC table without 			// ageing-out. The previous authentication attempt must have let it remove us.			// so try Authentication again may help. For D-Link DWL-900AP+ compatibility.			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, try again...\n"));#ifdef LEAP_SUPPORT			//Add AuthMode "LEAP" for CCX 1.X			if (pAd->StaCfg.LeapAuthMode == CISCO_AuthModeLEAP)			{				AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, CISCO_AuthModeLEAP);			}			else#endif // LEAP_SUPPORT //							{				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeShared) ||					(pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch))				{					// either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeShared);				}				else				{					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeOpen);				}			}			MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 						sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq);			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2;		}	}

⌨️ 快捷键说明

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