?? wt_mac.c
字號:
SwChnl(Adapter, pMlmeJoinRequest->BD.ndisbssidex.Configuration.DSConfig); //added by hk 2006.12.26 Adapter->MacParameter.mPhPm = pMlmeJoinRequest->BD.ndisbssidex.Configuration.DSConfig; //SwChnl(Adapter, 1); //TSF( Adapter, now() - pMlmeJoinRequest->bdTstamp, TRUE); TSF( Adapter, now(), TRUE); // printk("<0>In Function %s in Line %d \n\r",__FUNCTION__,__LINE__); FN_EXIT(0,0); return 1;}VOID TJoinProc(IN PWT_ADAPTER Adapter){ // printk("<0>*******FUNCTION %s Line %d******** \r\n", __FUNCTION__, __LINE__); memset(Adapter->MacParameter.mBssid, 0, sizeof(Adapter->MacParameter.mBssid)); memset( &Adapter->MacParameter.mSsId, 0, sizeof(NDIS_802_11_SSID) );} int JoinAct( IN PWT_ADAPTER Adapter, PWTWLAN_RXBUF PDU,Time REnd,Time tstr){ //BOOL TimerCanceled; FrameElement Ele; MacAddr BssID; MlmeAuthenticateRequest MlmeAuthenticateRequest; ULONG Timeout; //printk("<0>*******FUNCTION %s Line %d******** \r\n", __FUNCTION__, __LINE__); FN_ENTER; memset(&Ele, 0, sizeof(Ele));//錕紼le // Get Bssid From Beacon or ProbRsp { // addr3 of frame memmove(BssID, PDU->RXHwBuf.pHwRxBuf->dot11Head + 16, WLAN_ADDR_LEN); } if (memcmp(Adapter->MacParameter.mBssid, BssID, sizeof(MacAddr)) == 0) { //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")
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -