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

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

?? rtmp_init.c

?? r73模塊的無線網卡在Linux下的驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
	DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitializeAsic\n");	return NDIS_STATUS_SUCCESS;}/*	========================================================================	Routine Description:		Reset NIC Asics	Arguments:		Adapter						Pointer to our adapter	Return Value:		None	Note:		Reset NIC to initial state AS IS system boot up time.	========================================================================*/VOID NICIssueReset(	IN	PRTMP_ADAPTER	pAd){}/*	========================================================================	Routine Description:		Check ASIC registers and find any reason the system might hang	Arguments:		Adapter						Pointer to our adapter	Return Value:		None	========================================================================*/BOOLEAN	NICCheckForHang(	IN	PRTMP_ADAPTER	pAd){	return (FALSE);}/*	========================================================================	Routine Description:		Read statistical counters from hardware registers and record them		in software variables for later on query	Arguments:		pAd					Pointer to our adapter	Return Value:		None	========================================================================*/VOID NICUpdateRawCounters(	IN PRTMP_ADAPTER pAd){	ULONG	OldValue;	STA_CSR0_STRUC StaCsr0;	STA_CSR1_STRUC StaCsr1;	STA_CSR2_STRUC StaCsr2;	STA_CSR3_STRUC StaCsr3;	STA_CSR4_STRUC StaCsr4;	STA_CSR5_STRUC StaCsr5;	RTUSBReadMACRegister(pAd, STA_CSR0, &StaCsr0.word);	// Update RX PLCP error counter	pAd->PrivateInfo.PhyRxErrCnt += StaCsr0.field.PlcpErr;	// Update FCS counters	OldValue= pAd->WlanCounters.FCSErrorCount.vv.LowPart;	pAd->WlanCounters.FCSErrorCount.vv.LowPart += (StaCsr0.field.CrcErr); // >> 7);	if (pAd->WlanCounters.FCSErrorCount.vv.LowPart < OldValue)		pAd->WlanCounters.FCSErrorCount.vv.HighPart++;	// Add FCS error count to private counters	OldValue = pAd->RalinkCounters.RealFcsErrCount.vv.LowPart;	pAd->RalinkCounters.RealFcsErrCount.vv.LowPart += StaCsr0.field.CrcErr;	if (pAd->RalinkCounters.RealFcsErrCount.vv.LowPart < OldValue)		pAd->RalinkCounters.RealFcsErrCount.vv.HighPart++;	// Update False CCA counter	RTUSBReadMACRegister(pAd, STA_CSR1, &StaCsr1.word);	pAd->RalinkCounters.OneSecFalseCCACnt += StaCsr1.field.FalseCca;	// Update RX Overflow counter	RTUSBReadMACRegister(pAd, STA_CSR2, &StaCsr2.word);	pAd->Counters8023.RxNoBuffer += (StaCsr2.field.RxOverflowCount + StaCsr2.field.RxFifoOverflowCount);	// Update BEACON sent count	RTUSBReadMACRegister(pAd, STA_CSR3, &StaCsr3.word);	pAd->RalinkCounters.OneSecBeaconSentCnt += StaCsr3.field.TxBeaconCount;	RTUSBReadMACRegister(pAd, STA_CSR4, &StaCsr4.word);	RTUSBReadMACRegister(pAd, STA_CSR5, &StaCsr5.word);	// 1st - Transmit Success	OldValue = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart;	pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart += (StaCsr4.field.TxOneRetryCount + StaCsr4.field.TxNoRetryCount + StaCsr5.field.TxMultiRetryCount);	if (pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart < OldValue)	{		pAd->WlanCounters.TransmittedFragmentCount.vv.HighPart++;	}	// 2rd	-success and no retry	OldValue = pAd->WlanCounters.RetryCount.vv.LowPart;	pAd->WlanCounters.NoRetryCount.vv.LowPart += StaCsr4.field.TxNoRetryCount;	if (pAd->WlanCounters.NoRetryCount.vv.LowPart < OldValue)	{		pAd->WlanCounters.NoRetryCount.vv.HighPart++;	}	// 3rd	-success and retry	OldValue = pAd->WlanCounters.RetryCount.vv.LowPart;	pAd->WlanCounters.RetryCount.vv.LowPart += (StaCsr4.field.TxOneRetryCount  +StaCsr5.field.TxMultiRetryCount);	if (pAd->WlanCounters.RetryCount.vv.LowPart < OldValue)	{		pAd->WlanCounters.RetryCount.vv.HighPart++;	}	// 4th - fail	OldValue = pAd->WlanCounters.FailedCount.vv.LowPart;	pAd->WlanCounters.FailedCount.vv.LowPart += StaCsr5.field.TxRetryFailCount;	if (pAd->WlanCounters.FailedCount.vv.LowPart < OldValue)	{		pAd->WlanCounters.FailedCount.vv.HighPart++;	}	pAd->RalinkCounters.OneSecTxNoRetryOkCount = StaCsr4.field.TxNoRetryCount;	pAd->RalinkCounters.OneSecTxRetryOkCount = StaCsr4.field.TxOneRetryCount + StaCsr5.field.TxMultiRetryCount;	pAd->RalinkCounters.OneSecTxFailCount = StaCsr5.field.TxRetryFailCount;	pAd->RalinkCounters.OneSecFalseCCACnt = StaCsr1.field.FalseCca;	pAd->RalinkCounters.OneSecRxOkCnt = pAd->RalinkCounters.RxCount;	pAd->RalinkCounters.RxCount = 0; //Reset RxCount	pAd->RalinkCounters.OneSecRxFcsErrCnt = StaCsr0.field.CrcErr;	pAd->RalinkCounters.OneSecBeaconSentCnt = StaCsr3.field.TxBeaconCount;}/*	========================================================================	Routine Description:		Reset NIC from error	Arguments:		Adapter						Pointer to our adapter	Return Value:		None	Note:		Reset NIC from error state	========================================================================*/VOID NICResetFromError(	IN	PRTMP_ADAPTER	pAd){	NICInitializeAsic(pAd);#ifdef	INIT_FROM_EEPROM	NICInitAsicFromEEPROM(pAd);#endif	RTUSBWriteHWMACAddress(pAd);	// Switch to current channel, since during reset process, the connection	// should remain on.	AsicSwitchChannel(pAd, pAd->PortCfg.Channel);	AsicLockChannel(pAd, pAd->PortCfg.Channel);}INT LoadFirmware (PRTMP_ADAPTER pAd, char *firmName){	const struct firmware *fw_entry;	struct usb_device *dev = pAd->pUsb_Dev;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)	char udevice[16];	snprintf(udevice, sizeof(udevice), "rt73%3.3d%3.3d", dev->bus->busnum, dev->devnum);#else	struct device *udevice = &dev->dev;#endif	size_t size;	u8 *data;	USHORT i, loaded = 0;	ULONG reg;	u16 crc = 0;	INT status;#define BUFFERED_COPY#ifdef BUFFERED_COPY	u8 buf[64];#else	u32 buf;#endif	DBGPRINT(RT_DEBUG_TRACE, "--> LoadFirmware \n");	// Access firmware file	if ((status = request_firmware(&fw_entry, firmName, udevice))) {		DBGPRINT(RT_DEBUG_ERROR, "rt73: Failed to request_firmware. "				"Check your firmware file location\n");		KPRINT(KERN_ERR, "Failed to request_firmware. "				"Check your firmware file location\n");		goto fw_error;	}	if (fw_entry->size != FIRMWARE_IMAGE_SIZE) {		DBGPRINT(RT_DEBUG_ERROR, "rt73: Firmware file size error "			"(%d instead of %d)\n",			(int)fw_entry->size, FIRMWARE_IMAGE_SIZE);		KPRINT(KERN_ERR, "Firmware file size error "			"(%d instead of %d)\n",			(int)fw_entry->size, FIRMWARE_IMAGE_SIZE);		status = -EBADF;		goto error;	}	// Firmware CRC check	size = fw_entry->size - 2;	data = (u8 *)fw_entry->data;	for (i=0; i < size; i++)		crc = ByteCRC16(*data++, crc);	crc = ByteCRC16(0x00, crc);	crc = ByteCRC16(0x00, crc);	if (crc != ((fw_entry->data[size] << 8) | fw_entry->data[size + 1])) {		DBGPRINT(RT_DEBUG_ERROR, "rt73: Firmware CRC error "				"Check your firmware file integrity\n");		KPRINT(KERN_ERR, "Firmware CRC error "				"Check your firmware file integrity\n");		status = -EBADF;		goto error;	}	// Wait for stable hardware	for (i = 0; i < 100; i++) {		RTUSBReadMACRegister(pAd, MAC_CSR0, &reg);		if (reg)			break;		msleep(1);	}	if (!reg) {		DBGPRINT(RT_DEBUG_ERROR, "rt73: Unstable hardware\n");		KPRINT(KERN_ERR, "Unstable hardware\n");		status = -EBUSY;		goto error;	}	// Write firmware to device	for (i = 0; i < FIRMWARE_IMAGE_SIZE; i += sizeof(buf)) {#ifdef BUFFERED_COPY		memcpy(&buf, &fw_entry->data[i], sizeof(buf));#else		buf = *(u32 *) &fw_entry->data[i];#endif		if ((status = RTUSBMultiWrite(pAd, FIRMWARE_IMAGE_BASE + i,						&buf, sizeof(buf))) < 0) {			DBGPRINT(RT_DEBUG_ERROR, "rt73: Firmware loading error\n");			KPRINT(KERN_ERR, "Firmware loading error\n");			goto error;		}		loaded += status;	}	DBGPRINT(RT_DEBUG_TRACE, "%d bytes written to device.\n", loaded);	if (loaded < FIRMWARE_IMAGE_SIZE) {		// Should never happen		DBGPRINT(RT_DEBUG_ERROR, "rt73: Firmware loading incomplete\n");		KPRINT(KERN_ERR, "Firmware loading incomplete\n");		status = -EIO;		goto error;	}	// Send 'run firmware' request to device	if ((status = RTUSBFirmwareRun(pAd)) < 0) {		DBGPRINT(RT_DEBUG_ERROR, "rt73: Device refuses to run firmware\n");		KPRINT(KERN_ERR, "Device refuses to run firmware\n");		goto error;	}	// Reset LED	RTMPSetLED(pAd, LED_LINK_DOWN);	// Firmware loaded ok	OPSTATUS_SET_FLAG (pAd, fOP_STATUS_FIRMWARE_LOAD );	status = 0;error:	release_firmware(fw_entry);fw_error:	DBGPRINT(RT_DEBUG_TRACE, "<-- LoadFirmware (status: %d, loaded: %d)\n",							status, loaded);	return status;} /**  * strstr - Find the first substring in a %NUL terminated string  * @s1: The string to be searched  * @s2: The string to search for  */char * rtstrstr(const char * s1,const char * s2){	INT l1, l2;	l2 = strlen(s2);	if (!l2)		return (char *) s1;	l1 = strlen(s1);	while (l1 >= l2)	{		l1--;		if (!memcmp(s1,s2,l2))			return (char *) s1;		s1++;	}	return NULL;}/** * rstrtok - Split a string into tokens * @s: The string to be searched * @ct: The characters to search for * * WARNING: strtok is deprecated, use strsep instead. However strsep is not compatible with old architecture. */char * __rstrtok;char * rstrtok(char * s,const char * ct){	char *sbegin, *send;	sbegin  = s ? s : __rstrtok;	if (!sbegin)	{		return NULL;	}	sbegin += strspn(sbegin,ct);	if (*sbegin == '\0')	{		__rstrtok = NULL;		return( NULL );	}	send = strpbrk( sbegin, ct);	if (send && *send != '\0')		*send++ = '\0';	__rstrtok = send;	return (sbegin);}#ifndef BIG_ENDIAN/*	========================================================================	Routine Description:		Compare two memory block	Arguments:		Adapter 					Pointer to our adapter	Return Value:		1:			memory are equal		0:			memory are not equal	Note:	========================================================================*/ULONG	RTMPEqualMemory(	IN	PVOID	pSrc1,	IN	PVOID	pSrc2,	IN	ULONG	Length){	PUCHAR	pMem1;	PUCHAR	pMem2;	ULONG	Index = 0;	pMem1 = (PUCHAR) pSrc1;	pMem2 = (PUCHAR) pSrc2;	for (Index = 0; Index < Length; Index++)	{		if (pMem1[Index] != pMem2[Index])		{			break;		}	}	if (Index == Length)	{		return (1);	}	else	{		return (0);	}}#endif/*	========================================================================	Routine Description:		Compare two memory block	Arguments:		pSrc1		Pointer to first memory address		pSrc2		Pointer to second memory addres	Return Value:		0:			memory is equal		1:			pSrc1 memory is larger		2:			pSrc2 memory is larger	Note:	========================================================================*/ULONG	RTMPCompareMemory(	IN	PVOID	pSrc1,	IN	PVOID	pSrc2,	IN	ULONG	Length){	PUCHAR	pMem1;	PUCHAR	pMem2;	ULONG	Index = 0;	pMem1 = (PUCHAR) pSrc1;	pMem2 = (PUCHAR) pSrc2;	for (Index = 0; Index < Length; Index++)	{		if (pMem1[Index] > pMem2[Index])			return (1);		else if (pMem1[Index] < pMem2[Index])			return (2);	}	// Equal	return (0);}/*	========================================================================	Routine Description:		Zero out memory block	Arguments:		pSrc1		Pointer to memory address

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777午夜精品视频在线播放| 欧美亚洲一区二区在线观看| 免费欧美在线视频| 亚洲成人免费视| 亚洲成a人v欧美综合天堂下载| 亚洲视频在线观看一区| 亚洲女女做受ⅹxx高潮| 一区二区三区欧美日| 亚洲欧美日韩在线播放| 亚洲精品自拍动漫在线| 亚洲高清免费视频| 免费的国产精品| 国产精品2024| 99riav一区二区三区| 在线观看日韩av先锋影音电影院| 在线看国产日韩| 3d动漫精品啪啪1区2区免费| 日韩精品在线网站| 欧美国产精品劲爆| 一区二区三区在线播放| 视频一区视频二区中文| 精品一区二区三区蜜桃| 国产ts人妖一区二区| 性久久久久久久久| 国产一区二区主播在线| 91丝袜美腿高跟国产极品老师 | 成人福利在线看| 一区二区不卡在线播放 | 欧美大尺度电影在线| 午夜精品一区二区三区三上悠亚| 在线观看亚洲精品| 一卡二卡欧美日韩| 欧美午夜一区二区| 亚洲女与黑人做爰| 欧美日韩在线播| 午夜欧美大尺度福利影院在线看| 欧美性受xxxx| 石原莉奈一区二区三区在线观看 | 午夜视频一区二区| 欧美精品精品一区| 久久精品国产久精国产| 精品国产乱码久久久久久久久| 久久国产尿小便嘘嘘| 亚洲精品在线三区| 成人午夜av电影| 亚洲人成网站精品片在线观看| 一本高清dvd不卡在线观看| 一区二区三区欧美日韩| 欧美日韩一区中文字幕| 青青草国产成人99久久| 国产校园另类小说区| 91亚洲精品久久久蜜桃| 国产一区二区看久久| 久久五月婷婷丁香社区| 成人黄色777网| 一区二区三区在线免费| 精品免费99久久| 成人污视频在线观看| 午夜欧美电影在线观看| 久久精品视频网| 色综合久久久久综合99| 日本特黄久久久高潮| 欧美极品少妇xxxxⅹ高跟鞋| 色域天天综合网| 另类人妖一区二区av| 国产精品三级电影| 欧美日韩你懂的| 国产iv一区二区三区| 亚洲一区二区三区四区在线免费观看 | 一区二区久久久久久| 日韩欧美不卡在线观看视频| 国产呦萝稀缺另类资源| 亚洲黄一区二区三区| 精品久久久久久无| 91久久精品一区二区| 国产美女主播视频一区| 亚洲小说欧美激情另类| 国产精品视频看| 日韩欧美中文字幕公布| 91视频91自| 国产盗摄视频一区二区三区| 亚洲电影欧美电影有声小说| 国产精品女同一区二区三区| 欧美一级二级三级蜜桃| 色综合久久综合中文综合网| 国模娜娜一区二区三区| 亚洲高清在线视频| 中文字幕一区二区三区四区不卡 | 欧美成人精品高清在线播放| 91高清视频免费看| 成人sese在线| 国产一区不卡在线| 美女免费视频一区| 国产成人免费视频| 久久疯狂做爰流白浆xx| 亚洲高清久久久| 亚洲免费看黄网站| 中文字幕欧美日本乱码一线二线| 日韩一级在线观看| 制服丝袜在线91| 欧美日韩亚洲丝袜制服| 在线观看欧美黄色| 日本道精品一区二区三区| 99国产欧美另类久久久精品| 国产suv一区二区三区88区| 狠狠色丁香婷婷综合| 久久99久久99| 麻豆国产欧美一区二区三区| 天天综合色天天| 亚洲国产精品麻豆| 亚洲高清三级视频| 亚洲成年人影院| 图片区小说区国产精品视频| 亚洲va欧美va国产va天堂影院| 一区二区三区成人在线视频| 亚洲日本欧美天堂| 亚洲麻豆国产自偷在线| 亚洲婷婷综合久久一本伊一区| 亚洲欧洲美洲综合色网| 亚洲视频一区在线| 一区二区三国产精华液| 亚洲国产欧美另类丝袜| 日韩中文字幕1| 九九九久久久精品| 国产福利一区在线观看| 成人免费毛片片v| 91麻豆.com| 欧美老女人在线| 欧美成人伊人久久综合网| 久久伊人蜜桃av一区二区| 国产日韩视频一区二区三区| 国产精品久久久久9999吃药| 一区二区成人在线视频| 蜜臀精品一区二区三区在线观看 | 亚洲精品久久久蜜桃| 亚洲成av人影院| 久久精品国产一区二区三| 国产福利91精品一区二区三区| 懂色av一区二区夜夜嗨| 日本久久电影网| 日韩写真欧美这视频| 国产精品美女久久久久久久久| 亚洲精品欧美综合四区| 日日夜夜免费精品| 成人综合在线视频| 欧美天天综合网| 国产日产亚洲精品系列| 亚洲一区在线观看网站| 国产一区激情在线| 欧美视频在线不卡| 久久久不卡影院| 亚洲国产另类av| 成人影视亚洲图片在线| 91麻豆精品久久久久蜜臀| 国产欧美日韩麻豆91| 污片在线观看一区二区| 成人av影院在线| 欧美刺激午夜性久久久久久久| 中文字幕一区二区三区四区| 美女一区二区三区| 91麻豆国产精品久久| 精品嫩草影院久久| 亚洲成人av资源| 高清日韩电视剧大全免费| 91精品国产综合久久精品性色| 国产精品乱码久久久久久| 美女一区二区视频| 在线免费观看日韩欧美| 中文成人av在线| 日本va欧美va瓶| 欧美日韩高清一区二区| 综合激情成人伊人| 国产毛片一区二区| 91精品国产免费久久综合| 一色桃子久久精品亚洲| 国产精品一区二区x88av| 欧美日韩五月天| 亚洲黄色在线视频| av不卡一区二区三区| 精品国产1区二区| 日本不卡视频在线| 欧美日韩精品一区二区天天拍小说 | 亚洲韩国精品一区| 91丨porny丨蝌蚪视频| 国产女人aaa级久久久级| 极品少妇xxxx偷拍精品少妇| 欧美日韩高清在线播放| 亚洲图片一区二区| 91免费版在线看| 亚洲视频免费在线观看| 成人h动漫精品| 国产日韩一级二级三级| 国产成人在线影院| 欧美精品一区二区三区四区| 久国产精品韩国三级视频| 欧美大片免费久久精品三p| 石原莉奈在线亚洲二区| 欧美一区二区三区免费| 水野朝阳av一区二区三区| 欧美丰满一区二区免费视频|