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

📄 connect.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
				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, (PCHAR)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 			{				{					// 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, AUTH_MODE_KEY);					}					else					{						AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_OPEN);					}					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			NdisZeroMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], 16);			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;				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);			{				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"));			{				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, AUTH_MODE_KEY);				}				else				{					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_OPEN);				}				MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 							sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq);							}			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2;		}	}}/*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitAuthProc2(	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);			{				MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, 							sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq);				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC;			}		} 		else		{			if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch) &&				 (pAd->MlmeAux.Alg == Ndis802_11AuthModeShared))			{				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, try OPEN system...\n"));				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;			}			else 			{				// not success, try next BSS				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, give up; try next BSS\n"));				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; //???????				pAd->MlmeAux.BssIdx++;				IterateOnBssTab(pAd);			}		}	}}/*	==========================================================================	Description:	IRQL = DISPATCH_LEVEL		==========================================================================*/VOID CntlWaitAssocProc(	IN PRTMP_ADAPTER pAd, 	IN MLME_QUEUE_ELEM *Elem) {	USHORT      Reason;	if (Elem->MsgType == MT2_ASSOC_CONF) 	{		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));		if (Reason == MLME_SUCCESS) 		{

⌨️ 快捷键说明

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