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

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

?? rtmp_init.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統(tǒng)下
?? C
?? 第 1 頁 / 共 5 頁
字號:
	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);
	
}

/*
	========================================================================
	
	Routine Description:
		Load 8051 firmware RT2561.BIN file into MAC ASIC

	Arguments:
		Adapter						Pointer to our adapter

	Return Value:
		NDIS_STATUS_SUCCESS 		firmware image load ok
		NDIS_STATUS_FAILURE 		image not found

	========================================================================
*/
NDIS_STATUS NICLoadFirmware(
	IN PRTMP_ADAPTER pAd)
{
	NDIS_STATUS				Status = NDIS_STATUS_SUCCESS;
	PUCHAR					src = NULL;
	struct file				*srcf;
	INT 					retval = 0, orgfsuid, orgfsgid, i;
	mm_segment_t			orgfs;
	PUCHAR					pFirmwareImage;
	UINT					FileLength = 0;
	INT						ret;					

	
	DBGPRINT(RT_DEBUG_TRACE,"--> NICLoadFirmware\n");
	pAd->FirmwareVersion = (FIRMWARE_MAJOR_VERSION << 8) + FIRMWARE_MINOR_VERSION; //default version.

	src = RT2573_IMAGE_FILE_NAME;

	// Save uid and gid used for filesystem access.
	// Set user and group to 0 (root)	
	orgfsuid = current->fsuid;
	orgfsgid = current->fsgid;
	current->fsuid=current->fsgid = 0;
	orgfs = get_fs();
	set_fs(KERNEL_DS);
		
	pFirmwareImage = kmalloc(MAX_FIRMWARE_IMAGE_SIZE, MEM_ALLOC_FLAG);
	if (pFirmwareImage == NULL) 
	{
		DBGPRINT(RT_DEBUG_ERROR, "NICLoadFirmware-Memory allocate fail\n");
		Status = NDIS_STATUS_FAILURE;
		goto out;
	}

	if (src && *src) 
	{
		srcf = filp_open(src, O_RDONLY, 0);
		if (IS_ERR(srcf)) 
		{
			Status = NDIS_STATUS_FAILURE;
			DBGPRINT(RT_DEBUG_ERROR, "--> Error %ld opening %s\n", -PTR_ERR(srcf),src);    
		}
		else 
		{
			// The object must have a read method
			if (srcf->f_op && srcf->f_op->read) 
			{
				memset(pFirmwareImage, 0x00, MAX_FIRMWARE_IMAGE_SIZE);

				FileLength = srcf->f_op->read(srcf, pFirmwareImage, MAX_FIRMWARE_IMAGE_SIZE, &srcf->f_pos);
				if (FileLength != MAX_FIRMWARE_IMAGE_SIZE)
				{
					DBGPRINT_ERR("NICLoadFirmware: error file length (=%d) in rt73.bin\n",FileLength);
					Status = NDIS_STATUS_FAILURE;
				}
				else
				{  //FileLength == MAX_FIRMWARE_IMAGE_SIZE
					PUCHAR ptr = pFirmwareImage;
					USHORT crc = 0;
					
					for (i=0; i<(MAX_FIRMWARE_IMAGE_SIZE-2); i++, ptr++)
						crc = ByteCRC16(*ptr, crc);
					crc = ByteCRC16(0x00, crc);
					crc = ByteCRC16(0x00, crc);
					
					if ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2] != (UCHAR)(crc>>8)) ||
						(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1] != (UCHAR)(crc)))
					{
						DBGPRINT_ERR("NICLoadFirmware: CRC = 0x%02x 0x%02x error, should be 0x%02x 0x%02x\n",
							pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1],
							(UCHAR)(crc>>8), (UCHAR)(crc) );

						if (retval)
						{
							DBGPRINT(RT_DEBUG_ERROR, "--> Error %d closing %s\n", -retval, src);
						}

						Status = NDIS_STATUS_FAILURE;
					}
					else
					{

						if ((pAd->FirmwareVersion) > ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]))
						{
							DBGPRINT_ERR("NICLoadFirmware: Ver=%d.%d, local Ver=%d.%d, used FirmwareImage talbe instead\n",
								pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3],
								FIRMWARE_MAJOR_VERSION, FIRMWARE_MINOR_VERSION);

							Status = NDIS_STATUS_FAILURE;
						}
						else
						{
							pAd->FirmwareVersion = (pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3];
							DBGPRINT(RT_DEBUG_TRACE,"NICLoadFirmware OK: CRC = 0x%04x ver=%d.%d\n", crc,
								pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]);
						}

					}
				}
			}
			else
			{
				Status = NDIS_STATUS_FAILURE;
				DBGPRINT(RT_DEBUG_ERROR, "--> %s does not have a write method\n", src);
			}
			
			retval = filp_close(srcf, NULL);			
			if (retval)
			{
				Status = NDIS_STATUS_FAILURE;
				DBGPRINT(RT_DEBUG_ERROR, "--> Error %d closing %s\n", -retval, src);
			}
		}
	}
	else
	{
		Status = NDIS_STATUS_FAILURE;
		DBGPRINT(RT_DEBUG_ERROR, "Error src not available\n");
	}


	if (Status != NDIS_STATUS_SUCCESS)
	{	
		FileLength = FIRMAREIMAGE_LENGTH;
		memset(pFirmwareImage, 0x00, FileLength);
		NdisMoveMemory(pFirmwareImage, &FirmwareImage[0], FileLength);
		Status = NDIS_STATUS_SUCCESS; // change to success
		
		DBGPRINT(RT_DEBUG_ERROR, "NICLoadFirmware failed, used local Firmware(v %d.%d) instead\n", 
				FIRMWARE_MAJOR_VERSION, FIRMWARE_MINOR_VERSION);		
	}

	// select 8051 program bank; write entire firmware image
	for (i = 0; i < FileLength; i = i + 4)
	{
		ret = RTUSBMultiWrite(pAd, FIRMWARE_IMAGE_BASE + i, pFirmwareImage + i, 4);

		if (ret < 0)
		{
			Status = NDIS_STATUS_FAILURE;
			break;
		}
	}


out:	
	if (pFirmwareImage != NULL)
		kfree(pFirmwareImage);

	set_fs(orgfs);
	current->fsuid = orgfsuid;
	current->fsgid = orgfsgid;

	if (Status == NDIS_STATUS_SUCCESS)
	{
		RTUSBFirmwareRun(pAd);
		
		//
		// Send LED command to Firmare after RTUSBFirmwareRun;
		//
		RTMPSetLED(pAd, LED_LINK_DOWN);

	}		

	DBGPRINT(RT_DEBUG_TRACE,"<-- NICLoadFirmware (src=%s)\n", src);  
	

	return Status;
}

/*
	========================================================================

	Routine Description:
		Find key section for Get key parameter.

	Arguments:
		buffer						Pointer to the buffer to start find the key section
		section 					the key of the secion to be find

	Return Value:
		NULL						Fail
		Others						Success
	========================================================================
*/
PUCHAR RTMPFindSection(
	IN	PCHAR	buffer)
{
	CHAR temp_buf[255];
	PUCHAR	ptr;

	strcpy(temp_buf, "[");					/*	and the opening bracket [  */
	strcat(temp_buf, "Default");
	strcat(temp_buf, "]");

  
	if((ptr = rtstrstr(buffer, temp_buf)) != NULL)
			return (ptr+strlen("\n"));
		else
			return NULL;
}

 /**
  * 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);
}

/*
	========================================================================

	Routine Description:
		Get key parameter.

	Arguments:
		key 						Pointer to key string
		dest						Pointer to destination		
		destsize					The datasize of the destination
		buffer						Pointer to the buffer to start find the key

	Return Value:
		TRUE						Success
		FALSE						Fail

	Note:
		This routine get the value with the matched key (case case-sensitive)
	========================================================================
*/
INT RTMPGetKeyParameter(
	IN	PCHAR	key,
	OUT PCHAR	dest,	
	IN	INT 	destsize,
	IN	PCHAR	buffer)
{
	CHAR temp_buf1[600];
	CHAR temp_buf2[600];
	CHAR *start_ptr;
	CHAR *end_ptr;
	CHAR *ptr;
	CHAR *offset = 0;
	INT  len;

	//find section
	if((offset = RTMPFindSection(buffer)) == NULL)
		return (FALSE);

	strcpy(temp_buf1, "\n");
	strcat(temp_buf1, key);
	strcat(temp_buf1, "=");

	//search key
	if((start_ptr=rtstrstr(offset, temp

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频国产精品| 欧美激情资源网| 亚洲国产精品嫩草影院| 在线中文字幕一区| 夜夜揉揉日日人人青青一国产精品| 91美女在线视频| 一区二区三区四区中文字幕| 欧美日产在线观看| 蜜臀久久99精品久久久画质超高清| 欧美一区二区三区婷婷月色| 久久99精品一区二区三区 | 色综合久久中文字幕| 亚洲日本韩国一区| 亚洲欧洲三级电影| 91久久香蕉国产日韩欧美9色| 亚洲男人天堂av网| 欧美色图一区二区三区| 天使萌一区二区三区免费观看| 日韩欧美国产系列| 国产99精品国产| 亚洲欧美激情视频在线观看一区二区三区| 91黄视频在线| 五月天激情综合| 久久久精品综合| 日本电影亚洲天堂一区| 日韩精品福利网| 国产欧美精品国产国产专区| 欧美性淫爽ww久久久久无| 日本视频中文字幕一区二区三区| www日韩大片| 色婷婷av一区二区三区之一色屋| 日本 国产 欧美色综合| 国产精品看片你懂得| 欧美人伦禁忌dvd放荡欲情| 国产成人在线观看| 天堂一区二区在线| 亚洲国产精品黑人久久久| 欧美日韩精品三区| 狠狠色综合播放一区二区| 亚洲美女区一区| 久久男人中文字幕资源站| 欧美日韩一区二区三区四区| 成人性生交大片免费| 日韩成人精品在线观看| 亚洲精品免费视频| 久久精品一二三| 欧美久久久久中文字幕| 成人avav影音| 色噜噜偷拍精品综合在线| 亚洲国产精品久久久久婷婷884 | 欧美午夜不卡在线观看免费| 亚洲激情自拍偷拍| 91精品国产91久久久久久一区二区| 国产制服丝袜一区| 伊人婷婷欧美激情| 国产91丝袜在线播放0| 精品国产髙清在线看国产毛片| 美女网站在线免费欧美精品| 中文字幕在线不卡国产视频| 精品1区2区在线观看| 欧美老肥妇做.爰bbww| 国产精品无人区| 亚洲日本护士毛茸茸| 色94色欧美sute亚洲线路二| 成人黄色网址在线观看| 国产一区999| 久久国产精品一区二区| 蜜桃在线一区二区三区| 亚洲国产精品影院| 亚洲午夜电影在线观看| 亚洲精品日产精品乱码不卡| 自拍偷在线精品自拍偷无码专区| 国产欧美综合色| 欧美精品一区二区三区在线播放| 欧美一级二级三级乱码| 91精品中文字幕一区二区三区| 欧美三级午夜理伦三级中视频| 色呦呦国产精品| 91在线丨porny丨国产| 99久久伊人精品| 91老司机福利 在线| 色综合久久久久综合99| 色综合天天综合给合国产| 99精品偷自拍| 欧美综合一区二区| 欧美日韩国产一二三| 欧美日韩精品欧美日韩精品| 欧美日韩免费观看一区二区三区 | 亚洲综合清纯丝袜自拍| 一区在线观看免费| 天堂av在线一区| 亚洲va在线va天堂| 亚洲成人先锋电影| 久久99蜜桃精品| 国产盗摄视频一区二区三区| 不卡一区在线观看| 91久久精品一区二区| 在线播放一区二区三区| 日韩欧美区一区二| 国产亚洲短视频| 亚洲日本免费电影| 日韩电影在线一区二区| 国产一区二区三区国产| 99久久精品国产麻豆演员表| 欧美日韩极品在线观看一区| 精品久久国产字幕高潮| 中文字幕+乱码+中文字幕一区| 亚洲天堂久久久久久久| 一区二区三区免费在线观看| 日本午夜一区二区| 成人一级视频在线观看| 色成年激情久久综合| 欧美日韩国产bt| 久久麻豆一区二区| 亚洲欧美日韩国产另类专区| 美国毛片一区二区三区| 91在线观看视频| 日韩精品中文字幕在线不卡尤物| 国产午夜精品久久久久久久| 亚洲一区二区五区| 国内精品不卡在线| 色婷婷激情久久| 欧美成人欧美edvon| 亚洲色大成网站www久久九九| 日韩精品一级二级| 成人丝袜高跟foot| 9191成人精品久久| 亚洲丝袜制服诱惑| 国产永久精品大片wwwapp| 色呦呦日韩精品| 国产亚洲综合性久久久影院| 日韩国产在线观看一区| 色欧美日韩亚洲| 国产亚洲精品超碰| 五月婷婷色综合| 色综合中文综合网| 精品精品国产高清a毛片牛牛| 亚洲精品免费播放| 国产精品白丝av| 欧美一二三区在线观看| 一区二区三区成人| 国产成人精品一区二区三区四区| 欧美精品在欧美一区二区少妇| 亚洲精品免费播放| 91麻豆swag| 精品国产电影一区二区| 91精品国产一区二区三区蜜臀 | 欧美狂野另类xxxxoooo| 国产精品成人在线观看| 蜜臀久久99精品久久久久宅男| 欧美性猛交一区二区三区精品| 国产精品看片你懂得| 国产高清不卡一区二区| 精品嫩草影院久久| 日本不卡的三区四区五区| 欧美亚日韩国产aⅴ精品中极品| 综合亚洲深深色噜噜狠狠网站| 国产精品中文字幕欧美| 欧美va在线播放| 美女脱光内衣内裤视频久久网站 | 欧美电影免费观看高清完整版 | 日韩一卡二卡三卡国产欧美| 亚洲综合色区另类av| 色吊一区二区三区| 亚洲欧美韩国综合色| 色悠久久久久综合欧美99| 亚洲女同一区二区| 色悠悠亚洲一区二区| 专区另类欧美日韩| 91免费在线视频观看| 中文字幕一区二区三区在线观看| 国产精品996| 日本一区二区久久| 国产91色综合久久免费分享| 久久久99久久| 国产成人高清视频| 中文一区在线播放| 国产99精品国产| 国产精品成人免费| 在线观看欧美日本| 午夜精品久久久久久久99樱桃| 91精品国产欧美一区二区成人 | 精品久久久久一区二区国产| 奇米影视一区二区三区| 337p日本欧洲亚洲大胆精品| 国产一区二区三区最好精华液| 精品国产三级a在线观看| 国产精品综合久久| 亚洲欧洲无码一区二区三区| 在线观看欧美黄色| 蜜桃视频在线观看一区| www久久精品| 99国产精品久久久久久久久久| 亚洲国产一二三| 日韩久久精品一区| www.av亚洲| 亚洲福利一区二区三区| 久久蜜桃av一区精品变态类天堂 | 亚洲免费观看在线观看| 正在播放亚洲一区|