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

📄 wt_mac.c

📁 linux2.6.11内核无线网卡驱动程序。支持802.11 abg
💻 C
📖 第 1 页 / 共 5 页
字号:
			//if (memcmp(Adapter->MacParameter.mSsId.Ssid, PDU->ParseData.a.beacon.ssid->ssid, Adapter->MacParameter.mSsId.SsidLength) == 0|(Adapter->Ap_conceal_ssid[0] !=0))			{			        				del_timer_sync(&(Adapter->MacParameter.MacTimer.BeaconProcTimer));	                    del_timer_sync(&(Adapter->MacParameter.MacTimer.JoinProcTimer));								//Adapter->MacParameter.mNextTbtt = now() + (Adapter->MacParameter.mBcnPeriod - TSF( Adapter, 0, FALSE) % Adapter->MacParameter.mBcnPeriod);				Adapter->MacParameter.mNextTbtt = Adapter->MacParameter.mBcnInterval;								memmove( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, Adapter->MacParameter.mBssid,6 );				//SetKeyRegisters(Adapter,  Adapter->Ndis80211Parameter.KEY);								//           NdisSetTimer(TJoin, now() + mBcnPeriod * JTo);				//printk("   FUNCTION %s Line %d Adapter->MacParameter.mCap = %04x cIbss =%04x Adapter->MacParameter.CurrentState = %d\r\n", __FUNCTION__, __LINE__				//,Adapter->MacParameter.mCap,cIbss,Adapter->MacParameter.CurrentState);								if ((Adapter->MacParameter.mCap & ieee2host16(cIbss)) && Adapter->MacParameter.CurrentState == NO_BSS)//锟斤拷BSS锟?				{										//printk(LEVEL"   FUNCTION %s Line %d \r\n", __FUNCTION__, __LINE__);				        					#ifdef WIN_PLATFORM					NdisSetTimer(&Adapter->MacParameter.MacTimer.TBeacon, Adapter->MacParameter.mNextTbtt);					#else					//Timeout = (ULONG)(div64((Adapter->MacParameter.mNextTbtt),1000)*HZ);					//Timeout = Timeout/1000;					Timeout = (Adapter->MacParameter.mBcnInterval*HZ)/1000; 					mod_timer(&(Adapter->MacParameter.MacTimer.BeaconProcTimer), jiffies+Timeout);					#endif					Adapter->MacParameter.mDisable = FALSE;					Adapter->MacParameter.mIbss = TRUE;					//Adapter->BeaconReceiveWatchDog = 0;					WT_SET_READY(Adapter);					Adapter->bLinkStatus = TRUE;										if( netif_queue_stopped( Adapter->ndev ) )						netif_wake_queue( Adapter->ndev );										#ifdef WIN_PLATFORM					NicConnectStatusIndicate( Adapter, TRUE );					#endif										//Adapter->MacParameter.macmode = WLAN_MACMODE_IBSS_STA;					Adapter->MacParameter.CurrentState = IBSS_IDLE;														}				else				{					Adapter->MacParameter.mDisable = FALSE;					Adapter->MacParameter.mIbss = FALSE;					//printk("\nBegin to authenticate!\n");					Adapter->MacParameter.CurrentState = BSS;					Adapter->MacParameter.AuthStatus = Auth_Req_Idle;					MlmeAuthenticateRequest.asTmot = 200000;					MlmeAuthenticateRequest.at = (AuthType)Adapter->Ndis80211Parameter.AUTHENTICATION_MODE;					memcpy(MlmeAuthenticateRequest.da, Adapter->MacParameter.mBssid, sizeof(MacAddr));					MlmeAuthReq(Adapter, &MlmeAuthenticateRequest);				}			}		}				if(Adapter->Ndis80211Parameter.INFRASTRUCTURE_MODE == Ndis802_11Infrastructure)		{			;		}		FN_EXIT(0,0);		return 1;//MlmeJoin.confim (successful)}	/***********************************************/	/*                                             */	/*                                             */	/*                                             */	/*                                             */	/***********************************************/void MlmeAuthReq(IN PWT_ADAPTER Adapter, MlmeAuthenticateRequest *PMlmeAuthenticateRequest){		PWTWLAN_TXBUF PTxBuffer;		int tmp_buffer_len;		MlmeStatus MlmeAuthenticateconfirm_Var;		char FrameBody[6+255];		USHORT BodyLen;		ULONG Timeout;		//printk("<0>********In Function %s in line %d*******\r\n",__FUNCTION__,__LINE__);		//printk(" intmaskctrl = %04x intstatus = %04x \n\r",Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus);		FN_ENTER;		AllocTxMgmt( Adapter, &PTxBuffer);				//printk("<0>Dump hw cfg here\r\n");//		Dump( 0xea000000, 0x200, 1, 1 );		if( !PTxBuffer )		{			//DBGPRINT(WT_TRACE, ("<--- MlmeAuthReq\n"));			return;		}		Adapter->MacParameter.gAuthReqStore = *PMlmeAuthenticateRequest;  //save Authenticate Request		if ((Adapter->MacParameter.CurrentState==BSS) && (Adapter->MacParameter.AuthStatus==Auth_Req_Idle)&& \			((PMlmeAuthenticateRequest->at==open_system) || (PMlmeAuthenticateRequest->at==share_key))&& \			(isGroup(PMlmeAuthenticateRequest->da))==0)		{			tmp_buffer_len = 6 ;  //??								//just for test			if(PMlmeAuthenticateRequest->at == share_key )				FrameBody[0] = 1 ;			else 				FrameBody[0] = 0;			//auAlg			FrameBody[1] = 0;			FrameBody[2] = 1;			FrameBody[3] = 0 ;			//status code			FrameBody[4] =0 ;			FrameBody[5] =0 ;			BodyLen = 6;			mkFrame(PTxBuffer, WLAN_FSTYPE_AUTHEN, PMlmeAuthenticateRequest->da, Adapter->MacParameter.dot11MacAddress, Adapter->MacParameter.mBssid, FrameBody, BodyLen);						//-------------- Set time out value ----------------//			// testlater			#ifdef WIN_PLATFORM			NdisSetTimer(&Adapter->MacParameter.MacTimer.TAuth, (UINT)(PMlmeAuthenticateRequest->asTmot));			#else			Timeout = (ULONG)(div64(PMlmeAuthenticateRequest->asTmot,1000)*HZ);			Timeout = Timeout/1000;			//mod_timer(&(Adapter->MacParameter.MacTimer.AuthProcTimer), (jiffies+div64(PMlmeAuthenticateRequest->asTmot,1000)*HZ));			mod_timer(&(Adapter->MacParameter.MacTimer.AuthProcTimer), (jiffies+Timeout));			#endif			 			Adapter->MacParameter.AuthStatus = Wait_Auth_Seq_2;			MacAddrCpy(Adapter->MacParameter.macaddr_via_authreq, PMlmeAuthenticateRequest->da);			MmRequest(Adapter, PTxBuffer);			//DBGPRINT(WT_TRACE, ("<--- MlmeAuthReq\n"));			return ;		}		else 		{			MlmeAuthenticateconfirm_Var = mminvalid;						//added by hk 2004.11.29			memset(Adapter->MacParameter.mBssid, 0, sizeof(Adapter->MacParameter.mBssid));			memset(Adapter->MacParameter.mSsId.Ssid, 0,  Adapter->MacParameter.mSsId.SsidLength);			Adapter->MacParameter.CurrentState = NO_BSS;			//DBGPRINT(WT_TRACE, ("<--- MlmeAuthReq\n"));			return ;		}		FN_EXIT(0,0);}	/***********************************************/	/*                                             */	/*                                             */	/*                                             */	/*                                             */	/***********************************************/void FrmAuthProc(IN PWT_ADAPTER Adapter, WTWLAN_RXBUF *PRxBuffer){		}	void FrmAuthEven(IN PWT_ADAPTER Adapter, WTWLAN_RXBUF *PRxBuffer){		MacAddr tmp_addr2;		StatusCode reqresult;		PWTWLAN_TXBUF PTxBuffer;		int tmp_buffer_len;		//BOOLEAN bCancelOk;		MlmeStatus MlmeAuthenticateconfirm_Var;		MlmeAssociateRequest MlmeAssociateRequest;		char FrameBody[136];		USHORT BodyLen;		p80211_hdr_t * w_hdr;		//printk("<0>Enter FrmAuthEven here..............\r\n");		//DBGPRINT(WT_TRACE, ("---> FrmAuthEven\n"));		Adapter->MacParameter.AsocStatus = Asoc_Idle;						if (Adapter->MacParameter.CurrentState == BSS)		{			if (Adapter->MacParameter.AuthStatus == Wait_Auth_Seq_2)			{				//DbgPrint("The authstatus is %d", Adapter->MacParameter.AuthStatus);				addr2(PRxBuffer->RXHwBuf.pHwRxBuf->dot11Head, tmp_addr2);				if ((memcmp(Adapter->MacParameter.macaddr_via_authreq, tmp_addr2, 6) == 0) && (authSeqNum(PRxBuffer->RXHwBuf.pHwRxBuf->Buffer) == 2))				{					authStat(PRxBuffer->RXHwBuf.pHwRxBuf->Buffer, &reqresult);					if (reqresult == successful)					{						if (PRxBuffer->RXHwBuf.pHwRxBuf->Buffer[0] == 0)  //Open system						{							MlmeAuthenticateconfirm_Var = mmsuccess;							#ifdef WIN_PLATFORM							NdisCancelTimer(&Adapter->MacParameter.MacTimer.TAuth, &bCancelOk); //Reset(Tauth_clk)							#else							del_timer_sync(&(Adapter->MacParameter.MacTimer.AuthProcTimer));							#endif							Adapter->MacParameter.AuthStatus = Auth_Req_Idle;							Adapter->MacParameter.CurrentState = AUTH_PASS;							memset(Adapter->MacParameter.macaddr_via_authreq, 0, 6);  													MlmeAssociateRequest.asCap = Adapter->NdisCurNet.WlanDesc.ie_fixed.Capabilities;							MlmeAssociateRequest.asCap = Adapter->MacParameter.mCap;//edited by hk 2004.11.29							memcpy(MlmeAssociateRequest.asSta, Adapter->MacParameter.mBssid, sizeof(MacAddr));							MlmeAssociateRequest.asTmot = 200000;							MlmeAsocReq(Adapter, &MlmeAssociateRequest);							//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));							return ;						}						else  // Share key						{							tmp_buffer_len = 128 + 8 ;							//PTxBuffer = MkManFrame(auth, macaddr_via_authreq,  mBssID, tmp_buffer_len);							//AllocTxMgmt( Adapter, &PTxBuffer);							AllocTxMgmt( Adapter, &PTxBuffer);							if( !PTxBuffer )							{								//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));								return;							}							/*							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[0] = share_key ;							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[1] = 0 ;							//seq							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[2] = 3 ;							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[3] = 0 ;							//status code							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[4] =0 ;							PTxBuffer->TXHwBuf.pHwTxBuf->Buffer[5] =0 ;							memcpy (PTxBuffer->TXHwBuf.pHwTxBuf->Buffer+6, PRxBuffer->RXHwBuf.pHwRxBuf->Buffer+6, 130);  							*/							FrameBody[0] = share_key ;							FrameBody[1] = 0 ;							//seq							FrameBody[2] = 3 ;							FrameBody[3] = 0 ;							//status code							FrameBody[4] =0 ;							FrameBody[5] =0 ;							memcpy (&FrameBody[6], PRxBuffer->RXHwBuf.pHwRxBuf->Buffer+6, 130);							BodyLen =136 ;							//Send Frame													w_hdr = (p80211_hdr_t *)(&(PRxBuffer->RXHwBuf.pHwRxBuf->dot11Head));							mkFrame(PTxBuffer, WLAN_FSTYPE_AUTHEN, w_hdr->a3.a3, Adapter->MacParameter.dot11MacAddress, Adapter->MacParameter.mBssid, FrameBody, BodyLen);							setWepBit(PTxBuffer, 1);							SetEncryptReg(Adapter, PTxBuffer);							MmRequest(Adapter, PTxBuffer);							Adapter->MacParameter.AuthStatus = Wait_Auth_Seq_4;							//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));							return ;						}					}					else					{						MlmeAuthenticateconfirm_Var = mmrefused;						#ifdef WIN_PLATFORM						NdisCancelTimer(&Adapter->MacParameter.MacTimer.TAuth, &bCancelOk);						#else						del_timer_sync(&(Adapter->MacParameter.MacTimer.AuthProcTimer));						#endif 						Adapter->MacParameter.AuthStatus = Auth_Req_Idle;						memset(Adapter->MacParameter.macaddr_via_authreq, 0, 6);  						//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));						return ;					}				}				else				{					//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));					return ;				}			}			else if (Adapter->MacParameter.AuthStatus == Wait_Auth_Seq_4)			{				//DbgPrint("The authstatus is %d", Adapter->MacParameter.AuthStatus);				addr2(PRxBuffer->RXHwBuf.pHwRxBuf->dot11Head, tmp_addr2);				if ((memcmp(Adapter->MacParameter.macaddr_via_authreq, tmp_addr2, 6) == 0) && (authSeqNum(PRxBuffer->RXHwBuf.pHwRxBuf->Buffer) == 4))				{						authStat(PRxBuffer->RXHwBuf.pHwRxBuf->Buffer, &reqresult);					if (reqresult == successful)					{						MlmeAuthenticateconfirm_Var = mmsuccess;						#ifdef WIN_PLATFORM						NdisCancelTimer(&Adapter->MacParameter.MacTimer.TAuth, &bCancelOk); 						#else						del_timer_sync(&(Adapter->MacParameter.MacTimer.AuthProcTimer));						#endif						Adapter->MacParameter.AuthStatus = Auth_Req_Idle;						Adapter->MacParameter.CurrentState = AUTH_PASS;		 				//执锟絣锟?						MlmeAssociateRequest.asCap = Adapter->NdisCurNet.WlanDesc.ie_fixed.Capabilities;						memcpy(MlmeAssociateRequest.asSta, Adapter->MacParameter.mBssid, sizeof(MacAddr));						MlmeAssociateRequest.asTmot = 200000;						MlmeAsocReq(Adapter, &MlmeAssociateRequest);						//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));						return ;					}					else					{						MlmeAuthenticateconfirm_Var = mmrefused;						#ifdef WIN_PLATFORM						NdisCancelTimer(&Adapter->MacParameter.MacTimer.TAuth, &bCancelOk);                                                 #else						del_timer_sync(&(Adapter->MacParameter.MacTimer.AuthProcTimer));						#endif						Adapter->MacParameter.AuthStatus = Auth_Req_Idle;						//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));						return ;					}				}				else				{					//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));					return ;				}			}			else			{				//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));				return ;			}		}		else		{			//DBGPRINT(WT_TRACE, ("<--- FrmAuthEven\n"));			return ;		}	}	/***********************************************/	/*                                             */	/*                                             */	/*                                             */	/*                                             */	/***********************************************/void TAuthProc(IN PWT_ADAPTER Adapter){		MlmeStatus MlmeAuthenticateconfirm_Var;           //     printk("<0>******In Function %s******\n\r",__FUNCTION__);		FN_ENTER;				if ((Adapter->MacParameter.CurrentState==BSS) && (Adapter->MacParameter.AuthStatus==Wait_Auth_Seq_2 || Adapter->MacParameter.AuthStatus==Wait_Auth_Seq_4))		{			MlmeAuthenticateconfirm_Var = mmtimeout;			#ifdef WIN_PLATFORM		        NdisCancelTimer(&Adapter->MacParameter.MacTimer.TAuth, &bCancelOk); //Reset(Tauth_clk)		        #else		        del_timer_sync(&(Adapter->MacParameter.MacTimer.AuthProcTimer));		       #endif									Adapter->MacP

⌨️ 快捷键说明

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