亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sync.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統下
?? C
?? 第 1 頁 / 共 5 頁
字號:
					DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP forced to use LONG preamble\n");
				}

				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED)	  &&
					(EdcaParm.bValid == TRUE)						   &&
					(EdcaParm.EdcaUpdateCount != pAd->PortCfg.APEdcaParm.EdcaUpdateCount))
				{
					DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP change EDCA parameters(from %d to %d)\n", 
						pAd->PortCfg.APEdcaParm.EdcaUpdateCount,
						EdcaParm.EdcaUpdateCount);
					AsicSetEdcaParm(pAd, &EdcaParm);
				}
				
				// copy QOS related information
				NdisMoveMemory(&pAd->PortCfg.APQbssLoad, &QbssLoad, sizeof(QBSS_LOAD_PARM));
				NdisMoveMemory(&pAd->PortCfg.APQosCapability, &QosCapability, sizeof(QOS_CAPABILITY_PARM));
			
			}
			
			// only INFRASTRUCTURE mode support power-saving feature
			if (INFRA_ON(pAd) && (pAd->PortCfg.Psm == PWR_SAVE)) 
			{
//				UCHAR FreeNumber;
				//	1. AP has backlogged unicast-to-me frame, stay AWAKE, send PSPOLL
				//	2. AP has backlogged broadcast/multicast frame and we want those frames, stay AWAKE
				//	3. we have outgoing frames in TxRing or MgmtRing, better stay AWAKE
				//	4. Psm change to PWR_SAVE, but AP not been informed yet, we better stay AWAKE
				//	5. otherwise, put PHY back to sleep to save battery.
				if (MessageToMe)
				{
					DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog unicast-to-me, stay AWAKE, send PSPOLL\n");
					EnqueuePsPoll(pAd);
				}
				else if (BcastFlag && (DtimCount == 0) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM))
				{
					DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog broadcast/multicast, stay AWAKE\n");
				}
#if 0				 
				else if ((RTUSBFreeTXDRequest(pAd, QID_AC_BE, TX_RING_SIZE, &FreeNumber) != NDIS_STATUS_SUCCESS)  ||
//						 (RTUSBFreeTXDRequest(pAd, QID_AC_BK, TX_RING_SIZE, &FreeNumber) != NDIS_STATUS_SUCCESS)  ||
//						 (RTUSBFreeTXDRequest(pAd, QID_AC_VI, TX_RING_SIZE, &FreeNumber) != NDIS_STATUS_SUCCESS)	   ||
//						 (RTUSBFreeTXDRequest(pAd, QID_AC_VO, TX_RING_SIZE, &FreeNumber) != NDIS_STATUS_SUCCESS)	   ||
						 (RTUSBFreeTXDRequest(pAd, QID_MGMT, MGMT_RING_SIZE, &FreeNumber) != NDIS_STATUS_SUCCESS))
				{
					// TODO: consider scheduled HCCA. might not be proper to use traditional DTIM-based power-saving scheme
					// can we cheat here (i.e. just check MGMT & AC_BE) for better performance?
					DBGPRINT(RT_DEBUG_TRACE, "SYNC - outgoing frame in TxRing/MgmtRing, stay AWAKE\n");
				}
#endif				  
				else 
				{
					USHORT NextDtim = DtimCount;

					if (NextDtim == 0) 
						NextDtim = DtimPeriod;
						
					TbttNumToNextWakeUp = pAd->PortCfg.DefaultListenCount;
					if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM) && (TbttNumToNextWakeUp > NextDtim))
						TbttNumToNextWakeUp = NextDtim;

					DBGPRINT(RT_DEBUG_INFO, "SYNC - PHY sleeps for %d TBTT, Dtim=%d/%d\n", TbttNumToNextWakeUp, DtimCount, DtimPeriod);
					AsicSleepThenAutoWakeup(pAd, TbttNumToNextWakeUp);
				}
			}

#ifndef	SINGLE_ADHOC_LINKUP
			// At least another peer in this IBSS, declare MediaState as CONNECTED
			if (ADHOC_ON(pAd) && 
				!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
			{
				OPSTATUS_SET_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);

				// 2003/03/12 - john
				// Make sure this entry in "ScanTab" table, thus complies to Microsoft's policy that
				// "site survey" result should always include the current connected network. 
				//
				Bssidx = BssTableSearch(&pAd->ScanTab, Bssid, Channel);
				if (Bssidx == BSS_NOT_FOUND)
				{
					Bssidx = BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, Ssid, SsidLen, 
								BssType, BeaconPeriod, &CfParm, AtimWin, CapabilityInfo, 
								SupRate, SupRateLen, ExtRate, ExtRateLen, Channel, RealRssi + pAd->BbpRssiToDbmDelta, TimeStamp, CkipFlag, 
								&EdcaParm, &QosCapability, &QbssLoad, LenVIE, pVIE);
				}
			}
#endif
		}
		// not my BSSID, ignore it
	}
	// sanity check fail, ignore this frame
}

/* 
    ==========================================================================
    Description:
        Receive PROBE REQ from remote peer when operating in IBSS mode
    ==========================================================================
 */
VOID PeerProbeReqAction(
    IN PRTMP_ADAPTER pAd, 
    IN MLME_QUEUE_ELEM *Elem) 
{
    UCHAR         Addr2[MAC_ADDR_LEN];
    CHAR          Ssid[MAX_LEN_OF_SSID];
    UCHAR         SsidLen;
    HEADER_802_11 ProbeRspHdr;
    PUCHAR        pOutBuffer = NULL;
    ULONG         FrameLen = 0;
    LARGE_INTEGER FakeTimestamp;
    UCHAR         DsLen = 1, IbssLen = 2;
    UCHAR         LocalErpIe[3] = {IE_ERP, 1, 0};
    USHORT        NStatus;
    BOOLEAN       Privacy;
    USHORT        CapabilityInfo;
    
    if (! ADHOC_ON(pAd))
        return;

    if (PeerProbeReqSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, Ssid, &SsidLen))
    {
        if ((SsidLen == 0) || SSID_EQUAL(Ssid, SsidLen, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen))
        {
#if 0        
            CSR15_STRUC Csr15;
            
            // we should respond a ProbeRsp only when we're the last BEACON transmitter 
            // in this ADHOC network.
            RTMP_IO_READ32(pAd, CSR15, &Csr15.word);
            if (Csr15.field.BeaconSent == 0)
            {
                DBGPRINT(RT_DEBUG_INFO, "SYNC - NOT last BEACON sender, no PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n",
                    Addr2[0],Addr2[1],Addr2[2],Addr2[3],Addr2[4],Addr2[5] );
                return;
            }
#endif
			
            // allocate and send out ProbeReq frame
            NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
            if (NStatus != NDIS_STATUS_SUCCESS)
	            return;
            
            //pAd->PortCfg.AtimWin = 0;  // ??????
            DBGPRINT(RT_DEBUG_TRACE, "SYNC - Send PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n", 
                Addr2[0],Addr2[1],Addr2[2],Addr2[3],Addr2[4],Addr2[5] );
            MgtMacHeaderInit(pAd, &ProbeRspHdr, SUBTYPE_PROBE_RSP, 0, Addr2, pAd->PortCfg.Bssid);


			Privacy = (pAd->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) || 
					  (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) || 
					  (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled);
			CapabilityInfo = CAP_GENERATE(0, 1, Privacy, (pAd->PortCfg.TxPreamble == Rt802_11PreambleShort), 0);

            
            MakeOutgoingFrame(pOutBuffer,                   &FrameLen, 
                              sizeof(HEADER_802_11),        &ProbeRspHdr, 
                              TIMESTAMP_LEN,                &FakeTimestamp,
                              2,                            &pAd->PortCfg.BeaconPeriod,
                              2,                            &CapabilityInfo,
                              1,                            &SsidIe, 
                              1,                            &pAd->PortCfg.SsidLen, 
                              pAd->PortCfg.SsidLen,         pAd->PortCfg.Ssid,
                              1,                            &SupRateIe, 
                              1,                            &pAd->ActiveCfg.SupRateLen,
                              pAd->ActiveCfg.SupRateLen,    pAd->ActiveCfg.SupRate, 
                              1,                            &DsIe, 
                              1,                            &DsLen, 
                              1,                            &pAd->PortCfg.Channel,
                              1,                            &IbssIe, 
                              1,                            &IbssLen, 
                              2,                            &pAd->ActiveCfg.AtimWin,
                              END_OF_ARGS);

            if (pAd->ActiveCfg.ExtRateLen)
            {
                ULONG tmp;
                MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp, 
                                  3,                            LocalErpIe,
                                  1,                            &ExtRateIe,
                                  1,                            &pAd->ActiveCfg.ExtRateLen,
                                  pAd->ActiveCfg.ExtRateLen,    &pAd->ActiveCfg.ExtRate,
                                  END_OF_ARGS);
                FrameLen += tmp;
            }
            
			// If adhoc secruity is set for WPA-None, append the cipher suite IE
			if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone)
			{
				ULONG	tmp;
				
				if (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) 	// Tkip
				{
					MakeOutgoingFrame(pOutBuffer + FrameLen, 		&tmp,
							          1,						    &WpaIe,
							          1,							&CipherSuiteWpaNoneTkipLen,
							          CipherSuiteWpaNoneTkipLen,	&CipherSuiteWpaNoneTkip[0],
							          END_OF_ARGS);
					FrameLen += tmp;
				}
				else if (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled)	// Aes
				{
					MakeOutgoingFrame(pOutBuffer + FrameLen, 		&tmp,
							          1,						    &WpaIe,
							          1,							&CipherSuiteWpaNoneAesLen,
							          CipherSuiteWpaNoneAesLen,	    &CipherSuiteWpaNoneAes[0],
							          END_OF_ARGS);
					FrameLen += tmp;
				}
			}                
            MiniportMMRequest(pAd, pOutBuffer, FrameLen);
        }
    }
}

VOID BeaconTimeoutAtJoinAction(
    IN PRTMP_ADAPTER pAd, 
    IN MLME_QUEUE_ELEM *Elem) 
{
    USHORT  Status;
    
    DBGPRINT(RT_DEBUG_TRACE, "SYNC - BeaconTimeoutAtJoinAction\n");
    pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
    Status = MLME_REJ_TIMEOUT;
    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status);
}

/* 
    ==========================================================================
    Description:
        Scan timeout procedure. basically add channel index by 1 and rescan
    ==========================================================================
 */
VOID ScanTimeoutAction(
    IN PRTMP_ADAPTER pAd, 
    IN MLME_QUEUE_ELEM *Elem) 
{
//  DBGPRINT(RT_DEBUG_TRACE,"SYNC - ScanTimeoutAction\n");
    pAd->MlmeAux.Channel = NextChannel(pAd, pAd->MlmeAux.Channel);
    ScanNextChannel(pAd); // this routine will stop if pAd->MlmeAux.Channel == 0
}

/* 
    ==========================================================================
    Description:
        Scan next channel
    ==========================================================================
 */
VOID ScanNextChannel(
	IN PRTMP_ADAPTER pAd)
{
    HEADER_802_11   Hdr80211;
    PUCHAR          pOutBuffer = NULL;
    ULONG           FrameLen = 0;
    UCHAR           SsidLen = 0, ScanType = pAd->MlmeAux.ScanType;
    USHORT          Status;
    PHEADER_802_11  pHdr80211; 
    USHORT          NStatus;
    PUCHAR          pSupRate = NULL;
    UCHAR           SupRateLen;
    PUCHAR          pExtRate = NULL;
    UCHAR           ExtRateLen;
//For A band 
    UCHAR           ASupRate[] = {0x8C, 0x12, 0x98, 0x24, 0xb0, 0x48, 0x60, 0x6C};
    UCHAR           ASupRateLen = sizeof(ASupRate)/sizeof(UCHAR);
    
    DBGPRINT(RT_DEBUG_INFO, "ScanNextChannel(ch=%d)\n",pAd->MlmeAux.Channel);

    if (pAd->MlmeAux.Channel == 0) 
    {
        DBGPRINT(RT_DEBUG_TRACE, "SYNC - End of SCAN, restore to channel %d\n",pAd->PortCfg.Channel);
       
        AsicSwitchChannel(pAd, pAd->PortCfg.Channel);
        AsicLockChannel(pAd, pAd->PortCfg.Channel);
        
        // G band - set BBP_R62 to 0x02 when site survey or rssi<-82
		// A band - always set BBP_R62 to 0x04
        if (pAd->PortCfg.Channel <= 14)
        {
        	RTUSBWriteBBPRegister(pAd, BBP_R62, 0x02);
        }
        else
        {
        	RTUSBWriteBBPRegister(pAd, BBP_R62, 0x04);
        }

		//
		// To prevent data lost.
		// Send an NULL data with turned PSM bit on to current associated AP before SCAN progress.
		// Now, we need to send an NULL data with turned PSM bit off to AP, when scan progress done 
		//
		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && (INFRA_ON(pAd)))
		{
            NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
            if (NStatus == NDIS_STATUS_SUCCESS)
            {
				pHdr80211 = (PHEADER_802_11) pOutBuffer;
				MgtMacHeaderInit(pAd, pHdr80211, SUBTYPE_NULL_FUNC, 1, pAd->PortCfg.Bssid, pAd->PortCfg.Bssid);
				pHdr80211->Duration = 0;
				pHdr80211->FC.Type = BTYPE_DATA;
				pHdr80211->FC.PwrMgmt = PWR_ACTIVE;

				// Send using priority queue
				MiniportMMRequest(pAd, pOutBuffer, sizeof(HEADER_802_11));
				DBGPRINT(RT_DEBUG_TRACE, "MlmeScanReqAction -- Send PSM Data frame\n");

				RTMPusecDelay(5000);
			}
		}

        pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
        Status = MLME_SUCCESS;
        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status);
	
    }
    else if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))
	{
		pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
		Status = MLME_FAIL_NO_RESOURCE;
		MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status);
	}
    else 
    {
        // BBP and RF are not accessible in PS mode, we has to wake them up first
        if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
            AsicForceWakeup(pAd);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 91在线国产观看| 国产一区999| 黄色精品一二区| 国产在线播放一区三区四| 免费在线视频一区| 日韩av不卡在线观看| 日本美女视频一区二区| 日韩av在线免费观看不卡| 日韩精品电影在线| 久久国产精品露脸对白| 色婷婷av一区二区三区gif| 欧洲亚洲精品在线| 在线播放中文一区| 日韩一区二区免费在线电影| 日韩中文字幕av电影| 亚洲成人先锋电影| 蜜芽一区二区三区| 国产91丝袜在线18| av成人老司机| 欧美另类高清zo欧美| 国产欧美精品一区二区色综合朱莉| 自拍视频在线观看一区二区| 亚洲mv大片欧洲mv大片精品| 精品亚洲国内自在自线福利| 99久久99精品久久久久久 | 成人午夜av影视| 欧洲亚洲国产日韩| 国产欧美一区二区三区网站| 亚洲欧洲av另类| 国产精品成人午夜| 免费成人在线影院| 91精品国产色综合久久久蜜香臀| 中文字幕乱码日本亚洲一区二区 | 国产电影一区在线| 欧美一激情一区二区三区| 亚洲精品欧美在线| 成人午夜碰碰视频| 亚洲精品一区二区三区在线观看| 一区二区三区不卡视频在线观看| 丁香激情综合国产| 中文字幕欧美激情| 色婷婷激情久久| 日韩一区二区三区免费看| 久久精品日产第一区二区三区高清版 | 国产福利精品一区二区| 国产网红主播福利一区二区| 日本不卡1234视频| jlzzjlzz亚洲日本少妇| 久久综合久久久久88| 国产乱码精品一品二品| 26uuu欧美日本| 国产一区二区三区av电影| 国产日韩欧美一区二区三区乱码| 韩国av一区二区| 最好看的中文字幕久久| 91色porny蝌蚪| 婷婷成人激情在线网| 欧美色男人天堂| 国产高清不卡一区二区| 亚洲三级在线观看| 欧美r级电影在线观看| av亚洲精华国产精华精| 日日夜夜免费精品| 久久夜色精品国产欧美乱极品| 国产高清视频一区| 日本成人在线网站| 中文字幕不卡在线播放| 欧美久久久影院| www.色精品| 国产精品自拍av| 午夜日韩在线观看| 一区二区三区小说| 国产欧美一区二区三区网站| 欧美成人精品1314www| 欧美剧情片在线观看| 色婷婷综合中文久久一本| 精品一区二区三区久久| 亚洲一区二区三区中文字幕在线| 精品久久人人做人人爰| 国产大陆亚洲精品国产| 午夜欧美电影在线观看| 亚洲男人的天堂av| 国产欧美日韩精品a在线观看| 日韩欧美资源站| 日韩小视频在线观看专区| 欧美在线免费观看亚洲| 色综合 综合色| 欧美色涩在线第一页| 欧美精品欧美精品系列| 欧美三级视频在线| 69堂国产成人免费视频| 不卡一区二区在线| 岛国精品在线播放| 粉嫩绯色av一区二区在线观看| 在线观看免费亚洲| 欧美中文字幕亚洲一区二区va在线| 99国产精品一区| 亚洲一区二区精品视频| 日韩高清中文字幕一区| 精品在线播放免费| 99久久国产综合精品女不卡| 色一区在线观看| 欧美高清dvd| 国产精品五月天| 香蕉乱码成人久久天堂爱免费| 奇米一区二区三区av| 国产精品资源网| 欧美美女bb生活片| 欧美激情在线一区二区| 亚洲va韩国va欧美va| 成人综合在线观看| 欧洲一区在线观看| 国产香蕉久久精品综合网| 亚洲国产成人av网| 成人综合婷婷国产精品久久| 日韩一区二区三区在线| 亚洲欧美日韩精品久久久久| 成人亚洲一区二区一| 日韩欧美国产精品| 亚洲欧洲制服丝袜| 国产精品1区2区| www激情久久| 香港成人在线视频| 色屁屁一区二区| 国产精品久久久久久久久动漫 | 欧美专区日韩专区| 亚洲欧美区自拍先锋| av在线综合网| 一区二区三区在线视频观看58| 成人动漫一区二区在线| 久久嫩草精品久久久精品| 国产成人综合网站| 欧美激情一区二区| 成年人国产精品| 亚洲精品成人精品456| 91麻豆国产福利精品| 亚洲蜜桃精久久久久久久| 91麻豆国产香蕉久久精品| 一区二区三区中文字幕精品精品| 91一区二区在线| 亚洲国产成人精品视频| 日韩一级大片在线| 国模大尺度一区二区三区| 国产欧美一区二区精品忘忧草| 国产伦精品一区二区三区免费迷| 国产精品久久久久影院老司 | 欧美日韩成人综合| 久久99国产精品麻豆| 中文字幕一区二区三区在线观看 | 亚洲精选免费视频| 日韩欧美国产1| 国内精品国产成人| 亚洲免费在线看| 精品国产人成亚洲区| 色妹子一区二区| 国产高清在线观看免费不卡| 久久99最新地址| 亚洲成人免费看| 亚洲人亚洲人成电影网站色| 精品久久久久久无| 欧美性猛片aaaaaaa做受| 粉嫩高潮美女一区二区三区| 日韩—二三区免费观看av| 国产精品女同一区二区三区| 精品福利av导航| 欧美一区二区视频观看视频| 欧美日韩另类一区| 99精品欧美一区二区三区小说 | 99精品视频一区二区| 国产成人精品综合在线观看| 九九国产精品视频| 精品综合久久久久久8888| 亚洲成人免费在线| 亚洲免费观看高清完整版在线| 成人欧美一区二区三区在线播放| 久久久久高清精品| 久久婷婷色综合| 26uuu久久天堂性欧美| 欧美大尺度电影在线| 精品国产sm最大网站| 欧美www视频| 欧美刺激午夜性久久久久久久| 欧美一区二区三区男人的天堂| 欧美喷潮久久久xxxxx| 欧美艳星brazzers| 一本色道亚洲精品aⅴ| 91麻豆福利精品推荐| 一本大道综合伊人精品热热| 91福利精品视频| 欧美精品一卡二卡| 精品国产第一区二区三区观看体验| 欧美mv和日韩mv的网站| 欧美高清在线视频| 欧美国产精品劲爆| 亚洲精品亚洲人成人网| 亚洲综合色网站| 日韩av中文在线观看| 粗大黑人巨茎大战欧美成人| 99久久亚洲一区二区三区青草|