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

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

?? rtusb_data.c

?? r73模塊的無線網卡在Linux下的驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
		}		else if (CipherAlg == CIPHER_AES)		{			PUCHAR	pTmp;			pTmp = (PUCHAR) &Iv16;			*pTmp		= pKey->TxTsc[0];			*(pTmp + 1) = pKey->TxTsc[1];			*(pTmp + 2) = 0;			*(pTmp + 3) = (pAd->PortCfg.DefaultKeyId << 6) | 0x20;			Iv32 = *(PULONG)(&pKey->TxTsc[2]);			memcpy(&pTxD->Iv, &Iv16, 4);	// Copy IV			memcpy(&pTxD->Eiv, &Iv32, 4);	// Copy EIV			INC_TX_TSC(pKey->TxTsc);				// Increase TxTsc for next transmission		}		//		// STEP 5.3 COPY 802.11 HEADER INTO 1ST DMA BUFFER		//		pDest = pWirelessPacket;		memcpy(pDest, &Header_802_11, sizeof(Header_802_11));		pDest		+= sizeof(Header_802_11);		//		// Fragmentation is not allowed on multicast & broadcast		// So, we need to used the MAX_FRAG_THRESHOLD instead of pAd->PortCfg.FragmentThreshold		// otherwise if pSkb->len > pAd->PortCfg.FragmentThreshold then		// packet will be fragment on multicast & broadcast.		//		// MpduRequired equals to 1 means this could be Aggretaion case.		//		if ((Header_802_11.Addr1[0] & 0x01) || MpduRequired == 1)		{			FreeMpduSize = MAX_FRAG_THRESHOLD - sizeof(Header_802_11) - LENGTH_CRC;		}		else		{			FreeMpduSize = pAd->PortCfg.FragmentThreshold - sizeof(Header_802_11) - LENGTH_CRC;		}#if 0		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED))		{			// copy QOS CONTROL bytes			*pDest		  =  (UserPriority & 0x0f) | pAd->PortCfg.AckPolicy[QueIdx];			*(pDest+1)	  =  0;			pDest		  += 2;			FreeMpduSize  -= 2;			if (pAd->PortCfg.AckPolicy[QueIdx] != NORMAL_ACK)			{				bAckRequired = FALSE;			}		}#endif		//		// STEP 5.4 COPY LLC/SNAP, CKIP MIC INTO 1ST DMA BUFFER ONLY WHEN THIS		//			MPDU IS THE 1ST OR ONLY FRAGMENT		//		if (Header_802_11.Frag == 0)		{			if (pExtraLlcSnapEncap)			{				if ((CipherAlg == CIPHER_TKIP_NO_MIC) && (pKey != NULL))				{					// Calculate MSDU MIC Value					RTMPCalculateMICValue(pAd, pSkb, pExtraLlcSnapEncap, pKey);				}				// Insert LLC-SNAP encapsulation				memcpy(pDest, pExtraLlcSnapEncap, 6);				pDest += 6;				memcpy(pDest, pSrcBufVA + 12, 2);				pDest += 2;				pSrcBufVA += LENGTH_802_3;				FreeMpduSize -= LENGTH_802_1_H;			}			else			{				if ((CipherAlg == CIPHER_TKIP_NO_MIC) && (pKey != NULL))				{					// Calculate MSDU MIC Value					RTMPCalculateMICValue(pAd, pSkb, pExtraLlcSnapEncap, pKey);				}				pSrcBufVA += LENGTH_802_3;			}		}		// Start copying payload		BytesCopied = 0;		do		{			if (SrcBufLen >= FreeMpduSize)			{				// Copy only the free fragment size, and save the pointer				// of current buffer descriptor for next fragment buffer.				memcpy(pDest, pSrcBufVA, FreeMpduSize);				BytesCopied += FreeMpduSize;				pSrcBufVA	+= FreeMpduSize;				pDest		+= FreeMpduSize;				SrcBufLen	-= FreeMpduSize;				break;			}			else			{				// Copy the rest of this buffer descriptor pointed data				// into ring buffer.				memcpy(pDest, pSrcBufVA, SrcBufLen);				BytesCopied  += SrcBufLen;				pDest		 += SrcBufLen;				FreeMpduSize -= SrcBufLen;			}			// No more buffer descriptor			// Add MIC value if needed			//if ((pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) &&			//	(MICFrag == FALSE) &&			//	(pKey != NULL))			if((CipherAlg == CIPHER_TKIP_NO_MIC) &&			   (MICFrag == FALSE) &&				(pKey != NULL))			{				// Fregment and TKIP//				INT i;				SrcBufLen = 8;		// Set length to MIC length				DBGPRINT(RT_DEBUG_INFO, "Calculated TX MIC value =");				for (i = 0; i < 8; i++)				{					DBGPRINT_RAW(RT_DEBUG_INFO, "%02x:", pAd->PrivateInfo.Tx.MIC[i]);				}				DBGPRINT_RAW(RT_DEBUG_INFO, "\n");				if (FreeMpduSize >= SrcBufLen)				{					memcpy(pDest, pAd->PrivateInfo.Tx.MIC, SrcBufLen);					BytesCopied  += SrcBufLen;					pDest		 += SrcBufLen;					FreeMpduSize -= SrcBufLen;					SrcBufLen = 0;				}				else				{					memcpy(pDest, pAd->PrivateInfo.Tx.MIC, FreeMpduSize);					BytesCopied  += FreeMpduSize;					pSrcBufVA	  = pAd->PrivateInfo.Tx.MIC + FreeMpduSize;					pDest		 += FreeMpduSize;					SrcBufLen	 -= FreeMpduSize;					MICFrag 	  = TRUE;				}			}		}	while (FALSE); // End of copying payload		// Real packet size, No 802.1H header for fragments except the first one.		if ((StartOfFrame == TRUE) && (pExtraLlcSnapEncap != NULL))		{			TxSize = BytesCopied + LENGTH_802_11 + LENGTH_802_1_H + LengthQosPAD;		}		else		{			TxSize = BytesCopied + LENGTH_802_11 + LengthQosPAD;		}		SrcRemainingBytes -=  BytesCopied;		//		// STEP 5.6 MODIFY MORE_FRAGMENT BIT & DURATION FIELD. WRITE TXD		//		pHeader80211 = (PHEADER_802_11)pWirelessPacket;		if (SrcRemainingBytes > 0) // more fragment is required		{			 ULONG NextMpduSize;			 pHeader80211->FC.MoreFrag = 1;			 NextMpduSize = min((ULONG)SrcRemainingBytes, (ULONG)pAd->PortCfg.FragmentThreshold);			 if (NextMpduSize < pAd->PortCfg.FragmentThreshold)			 {				// In this case, we need to include LENGTH_802_11 and LENGTH_CRC for calculating Duration.				pHeader80211->Duration = (3 * pAd->PortCfg.Dsifs) +									(2 * AckDuration) +									RTMPCalcDuration(pAd, TxRate, NextMpduSize + EncryptionOverhead + LENGTH_802_11 + LENGTH_CRC);			 }			 else			 {				pHeader80211->Duration = (3 * pAd->PortCfg.Dsifs) +								(2 * AckDuration) +								RTMPCalcDuration(pAd, TxRate, NextMpduSize + EncryptionOverhead);			 }#ifdef BIG_ENDIAN			RTMPFrameEndianChange(pAd, (PUCHAR)pHeader80211, DIR_WRITE, FALSE);			RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);			*pDestTxD = TxD;			pTxD = pDestTxD;#endif			RTUSBWriteTxDescriptor(pAd, pTxD, CipherAlg, 0, KeyIdx, bAckRequired, TRUE, FALSE,					RetryMode, FrameGap, TxRate, TxSize, QueIdx, 0, bRTS_CTSFrame);			FrameGap = IFS_SIFS;	 // use SIFS for all subsequent fragments			Header_802_11.Frag ++;	 // increase Frag #		}		else		{			pHeader80211->FC.MoreFrag = 0;			if (pHeader80211->Addr1[0] & 0x01) // multicast/broadcast				pHeader80211->Duration = 0;			else				pHeader80211->Duration = pAd->PortCfg.Dsifs + AckDuration;			if ((bEAPOLFrame) && (TxRate > RATE_6))				TxRate = RATE_6;#ifdef BIG_ENDIAN			RTMPFrameEndianChange(pAd, (PUCHAR)pHeader80211, DIR_WRITE, FALSE);			RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);			*pDestTxD = TxD;			pTxD = pDestTxD;#endif			RTUSBWriteTxDescriptor(pAd, pTxD, CipherAlg, 0, KeyIdx, bAckRequired, FALSE, FALSE,					RetryMode, FrameGap, TxRate, TxSize, QueIdx, 0, bRTS_CTSFrame);			if (skb_queue_len(&pAd->SendTxWaitQueue[QueIdx]) > 1)				pTxD->Burst = 1;		}		TransferBufferLength = TxSize + sizeof(TXD_STRUC);		if ((TransferBufferLength % 4) == 1)			TransferBufferLength  += 3;		else if ((TransferBufferLength % 4) == 2)			TransferBufferLength  += 2;		else if ((TransferBufferLength % 4) == 3)			TransferBufferLength  += 1;		if ((TransferBufferLength % pAd->BulkOutMaxPacketSize) == 0)			TransferBufferLength += 4;		pTxContext->BulkOutSize = TransferBufferLength;		pTxContext->bWaitingBulkOut = TRUE;		RTUSB_SET_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_NORMAL << QueIdx));		// Set frame gap for the rest of fragment burst.		// It won't matter if there is only one fragment (single fragment frame).		StartOfFrame = FALSE;		NumberRequired--;		if (NumberRequired == 0)		{			pTxContext->LastOne = TRUE;		}		else		{			pTxContext->LastOne = FALSE;		}		pAd->TxRingTotalNumber[QueIdx]++;	// sync. to PendingTx	}	while (NumberRequired > 0);	//	// Check if MIC error twice within 60 seconds and send EAPOL MIC error to TX queue	// then we enqueue a message for disasociating with the current AP	//	// Check for EAPOL frame sent after MIC countermeasures	if (pAd->PortCfg.MicErrCnt >= 3)	{		MLME_DISASSOC_REQ_STRUCT	DisassocReq;		// disassoc from current AP first		DBGPRINT(RT_DEBUG_INFO, "- (%s) disassociate with current AP after"				" sending second continuous EAPOL frame\n",				__FUNCTION__);		DisassocParmFill(pAd, &DisassocReq, pAd->PortCfg.Bssid, REASON_MIC_FAILURE);		MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ,					sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq);		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;		pAd->PortCfg.bBlockAssoc = TRUE;	}	// release the skb buffer	RELEASE_NDIS_PACKET(pAd, pSkb);	return (NDIS_STATUS_SUCCESS);}/*	========================================================================	Routine	Description:		Copy frame from waiting queue into relative ring buffer and set	appropriate ASIC register to kick hardware transmit function	Arguments:		pAd			Pointer	to our adapter		pBuffer		Pointer to	memory of outgoing frame		Length		Size of outgoing management frame	Return Value:		NDIS_STATUS_FAILURE		NDIS_STATUS_PENDING		NDIS_STATUS_SUCCESS	Note:	========================================================================*/VOID	RTUSBMlmeHardTransmit(	IN	PRTMP_ADAPTER	pAd,	IN	PMGMT_STRUC		pMgmt){	PTX_CONTEXT		pMLMEContext;	PTXD_STRUC		pTxD;#ifdef BIG_ENDIAN	PTXD_STRUC		pDestTxD;	TXD_STRUC		TxD;#endif	PUCHAR			pDest;	PHEADER_802_11	pHeader_802_11;	BOOLEAN 		AckRequired, InsertTimestamp;	ULONG			TransferBufferLength;	PVOID			pBuffer = pMgmt->pBuffer;	ULONG			Length = pMgmt->Length;	UCHAR			QueIdx;	UCHAR			MlmeRate;	unsigned long flags;	// For 'Ndis' spin lock	DBGPRINT(RT_DEBUG_INFO, "--->MlmeHardTransmit\n");	pAd->PrioRingTxCnt++;	pMLMEContext = &pAd->MLMEContext[pAd->NextMLMEIndex];	pMLMEContext->InUse = TRUE;	// Increase & maintain Tx Ring Index	pAd->NextMLMEIndex++;	if (pAd->NextMLMEIndex >= PRIO_RING_SIZE)	{		pAd->NextMLMEIndex = 0;	}	pDest = pMLMEContext->TransferBuffer->WirelessPacket;#ifndef BIG_ENDIAN	pTxD = (PTXD_STRUC)(pMLMEContext->TransferBuffer);#else	pDestTxD  = (PTXD_STRUC)(pMLMEContext->TransferBuffer);	TxD = *pDestTxD;	pTxD = &TxD;	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);#endif	memset(pTxD, 0, sizeof(TXD_STRUC));	pHeader_802_11 = (PHEADER_802_11) pBuffer;	// Verify Mlme rate for a / g bands.    if (pHeader_802_11->Addr1[0] & 0x01)	{		MlmeRate = pAd->PortCfg.BasicMlmeRate;	}	else	{		MlmeRate = pAd->PortCfg.MlmeRate;	}	if ((pAd->LatchRfRegs.Channel > 14) && (MlmeRate < RATE_6)) // 11A band		MlmeRate = RATE_6;	DBGPRINT(RT_DEBUG_INFO, "- %s: Rate %d Channel %d\n",			__FUNCTION__, MlmeRate, pAd->LatchRfRegs.Channel );    // Before radar detection done, mgmt frame can not be sent but probe req	// Because we need to use probe req to trigger driver to send probe req in passive scan	if ((pHeader_802_11->FC.SubType != SUBTYPE_PROBE_REQ) && (pAd->PortCfg.bIEEE80211H == 1) && (pAd->PortCfg.RadarDetect.RDMode != RD_NORMAL_MODE))	{		DBGPRINT(RT_DEBUG_ERROR, "RTUSBMlmeHardTransmit --> radar detect not in normal mode !!!\n");		return;	}	if (pHeader_802_11->FC.PwrMgmt != PWR_SAVE)	{		pHeader_802_11->FC.PwrMgmt = (pAd->PortCfg.Psm == PWR_SAVE);	}	InsertTimestamp = FALSE;	if (pHeader_802_11->FC.Type == BTYPE_CNTL) // must be PS-POLL	{		AckRequired = FALSE;	}	else // BTYPE_MGMT or BMGMT_DATA(must be NULL frame)	{		pAd->Sequence		= ((pAd->Sequence) + 1) & (MAX_SEQ_NUMBER);		pHeader_802_11->Sequence = pAd->Sequence;		if (pHeader_802_11->Addr1[0] & 0x01) // MULTICAST, BROADCAST		{			INC_COUNTER64(pAd->WlanCounters.MulticastTransmittedFrameCount);			AckRequired = FALSE;			pHeader_802_11->Duration = 0;		}		else		{			AckRequired = TRUE;			pHeader_802_11->Duration = RTMPCalcDuration(pAd, MlmeRate, 14);			if (pHeader_802_11->FC.SubType == SUBTYPE_PROBE_RSP)			{				InsertTimestamp = TRUE;			}		}	}	memcpy(pDest, pBuffer, Length);	// Initialize Priority Descriptor	// For inter-frame gap, the number is for this frame and next frame	// For MLME rate, we will fix as 2Mb to match other vendor's implement	QueIdx = QID_AC_BE;#ifdef BIG_ENDIAN	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);	*pDestTxD = TxD;	pTxD = pDestTxD;#endif	RTUSBWriteTxDescriptor(pAd, pTxD, CIPHER_NONE, 0,0, AckRequired, FALSE, FALSE, SHORT_RETRY,			IFS_BACKOFF, MlmeRate, /*Length+4*/ Length, QueIdx, PID_MGMT_FRAME, FALSE);	// Build our URB for USBD	TransferBufferLength = sizeof(TXD_STRUC) + Length;	if ((TransferBufferLength % 2) == 1)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美麻豆精品久久久久久| 国产精品网站导航| 国产亚洲欧美日韩日本| 亚洲日本一区二区三区| 精品亚洲成a人| 欧美日韩一区久久| 亚洲视频小说图片| 国产一区二区三区久久悠悠色av| 欧美视频一区二区三区四区| 久久久久久综合| 青青草91视频| 欧美日韩成人在线| 夜夜嗨av一区二区三区网页| 成人一区二区在线观看| 欧美大度的电影原声| 五月激情六月综合| 欧美在线高清视频| 亚洲狼人国产精品| 91在线观看一区二区| 久久久青草青青国产亚洲免观| 婷婷夜色潮精品综合在线| 欧美亚洲精品一区| 一级女性全黄久久生活片免费| 91在线你懂得| 亚洲另类中文字| 欧美在线小视频| 亚洲精品综合在线| 91免费国产视频网站| 中文字幕一区二区在线观看| 成人一级视频在线观看| 国产精品视频一二| aaa亚洲精品| 亚洲欧美成人一区二区三区| 91在线丨porny丨国产| 亚洲视频一区二区免费在线观看| 91蜜桃传媒精品久久久一区二区| 自拍偷拍亚洲激情| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区四区国产精品| 欧美亚洲一区二区在线| 日韩精彩视频在线观看| 日韩欧美专区在线| 国产一区二区女| 国产精品另类一区| 色悠悠亚洲一区二区| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩久久久久久| 日韩成人午夜精品| 久久综合999| 99亚偷拍自图区亚洲| 亚洲伊人伊色伊影伊综合网| 欧美麻豆精品久久久久久| 免费成人小视频| 国产精品人妖ts系列视频| 91免费在线视频观看| 亚洲成av人**亚洲成av**| 日韩视频一区二区在线观看| 国产麻豆成人精品| 亚洲欧美日韩在线不卡| 欧美精选一区二区| 国产一区二区三区精品视频| 亚洲少妇中出一区| 欧美精品自拍偷拍| 丰满岳乱妇一区二区三区| 亚洲一区二区三区四区在线| 精品噜噜噜噜久久久久久久久试看| 国产成人激情av| 午夜电影网亚洲视频| 国产日本亚洲高清| 欧美精品丝袜久久久中文字幕| 激情欧美一区二区三区在线观看| 欧美激情综合五月色丁香 | 成人免费黄色大片| 亚洲国产精品一区二区久久 | 最新成人av在线| 欧美高清一级片在线| 高清不卡一区二区在线| 亚洲国产成人va在线观看天堂| 久久久99久久精品欧美| 色噜噜夜夜夜综合网| 国产一区亚洲一区| 亚洲成精国产精品女| 欧美国产一区二区| 日韩欧美区一区二| 欧美丝袜第三区| voyeur盗摄精品| 国产一区二区三区四区五区美女| 亚洲国产精品久久人人爱| 久久精品在这里| 欧美一区二区三区播放老司机| 成人精品一区二区三区四区| 理论电影国产精品| 日韩一区欧美二区| 一区二区三区精密机械公司| 国产欧美综合在线| 精品久久五月天| 日韩女同互慰一区二区| 欧美视频在线播放| 欧美亚一区二区| 91麻豆国产福利在线观看| 国产成人在线网站| 国产九色sp调教91| 久久99久国产精品黄毛片色诱| 亚洲大片在线观看| 夜夜揉揉日日人人青青一国产精品 | 欧美日韩国产综合视频在线观看| 99精品视频中文字幕| 国产精品 日产精品 欧美精品| 另类调教123区| 麻豆91免费观看| 日韩av电影天堂| 男人的j进女人的j一区| 午夜久久久久久久久久一区二区| 亚洲自拍偷拍av| 亚洲制服丝袜在线| 亚洲综合色区另类av| 一区二区成人在线| 亚洲影视在线观看| 午夜久久久久久久久 | 1区2区3区国产精品| 国产精品午夜春色av| 中文在线免费一区三区高中清不卡| 久久亚洲欧美国产精品乐播| 精品理论电影在线| 久久精品视频在线免费观看| 久久老女人爱爱| 中文字幕免费一区| 亚洲天堂精品在线观看| 亚洲已满18点击进入久久| 香蕉影视欧美成人| 日韩av一级片| 国产成人无遮挡在线视频| 成人午夜电影久久影院| 色嗨嗨av一区二区三区| 欧美日韩中字一区| 欧美mv和日韩mv的网站| 国产日韩欧美激情| 亚洲天堂中文字幕| 日韩电影在线观看一区| 激情深爱一区二区| 色综合网色综合| 日韩欧美国产wwwww| 久久久久国产精品厨房| 亚洲色图丝袜美腿| 日韩成人免费电影| 成人国产精品免费网站| 在线视频欧美精品| 亚洲精品一线二线三线| 国产精品欧美久久久久无广告| 一二三区精品福利视频| 国内精品自线一区二区三区视频| av电影天堂一区二区在线| 欧美日本视频在线| 久久欧美中文字幕| 亚洲va中文字幕| 国产成a人无v码亚洲福利| 欧美日本韩国一区| 中文久久乱码一区二区| 亚洲3atv精品一区二区三区| 国产剧情一区二区三区| 欧美日韩一区二区欧美激情| 国产女同互慰高潮91漫画| 亚洲成a人v欧美综合天堂下载| 国产精品资源站在线| 欧美调教femdomvk| 国产精品视频麻豆| 日本不卡一二三区黄网| k8久久久一区二区三区 | 欧美日韩性生活| 国产欧美精品一区| 日韩制服丝袜先锋影音| av激情综合网| 国产视频视频一区| 久久9热精品视频| 在线亚洲免费视频| 国产精品久久久久影院亚瑟 | 91小视频在线观看| 亚洲精品一区二区在线观看| 亚洲主播在线播放| 91香蕉视频污在线| 中文字幕久久午夜不卡| 久久电影国产免费久久电影 | 亚洲国产精品黑人久久久| 日本午夜精品视频在线观看 | 欧美在线|欧美| 国产精品免费看片| 国产精品一区二区男女羞羞无遮挡| 欧美日韩精品欧美日韩精品一 | 日本道在线观看一区二区| 久久伊99综合婷婷久久伊| 亚洲国产中文字幕| 91成人网在线| 亚洲人成伊人成综合网小说| 国产a级毛片一区| 欧美国产1区2区| 狠狠色丁香久久婷婷综| 精品国产免费久久| 狠狠色伊人亚洲综合成人| 欧美大片免费久久精品三p| 麻豆精品视频在线|