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

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

?? rtmp_init.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統下
?? C
?? 第 1 頁 / 共 5 頁
字號:
    if ((value <= REGION_MAXIMUM_BG_BAND) && (value2 <= REGION_MAXIMUM_A_BAND))
	{
		pAd->PortCfg.CountryRegion = ((UCHAR) value) | 0x80;
		pAd->PortCfg.CountryRegionForABand = ((UCHAR) value2) | 0x80;
	}

	//
	// Get RSSI Offset on EEPROM 0x9Ah & 0x9Ch.
	// The valid value are (-10 ~ 10) 
	// 
	RTUSBReadEEPROM(pAd, EEPROM_RSSI_BG_OFFSET, (PUCHAR) &value, 2);
	pAd->BGRssiOffset1 = value & 0x00ff;
	pAd->BGRssiOffset2 = (value >> 8);

	// Validate 11b/g RSSI_1 offset.
	if ((pAd->BGRssiOffset1 < -10) || (pAd->BGRssiOffset1 > 10))
		pAd->BGRssiOffset1 = 0;

	// Validate 11b/g RSSI_2 offset.
	if ((pAd->BGRssiOffset2 < -10) || (pAd->BGRssiOffset2 > 10))
		pAd->BGRssiOffset2 = 0;
		
	RTUSBReadEEPROM(pAd, EEPROM_RSSI_A_OFFSET, (PUCHAR) &value, 2);
	pAd->ARssiOffset1 = value & 0x00ff;
	pAd->ARssiOffset2 = (value >> 8);

	// Validate 11a RSSI_1 offset.
	if ((pAd->ARssiOffset1 < -10) || (pAd->ARssiOffset1 > 10))
		pAd->ARssiOffset1 = 0;

	//Validate 11a RSSI_2 offset.
	if ((pAd->ARssiOffset2 < -10) || (pAd->ARssiOffset2 > 10))
		pAd->ARssiOffset2 = 0;

	//
	// Get LED Setting.
	//
	RTUSBReadEEPROM(pAd, EEPROM_LED_OFFSET, (PUCHAR)&LedSetting.word, 2);
	if (LedSetting.word == 0xFFFF)
	{
		//
		// Set it to Default.
		//
		LedSetting.field.PolarityRDY_G = 0;   // Active High.
		LedSetting.field.PolarityRDY_A = 0;   // Active High.
		LedSetting.field.PolarityACT = 0;	 // Active High.
		LedSetting.field.PolarityGPIO_0 = 0; // Active High.
		LedSetting.field.PolarityGPIO_1 = 0; // Active High.
		LedSetting.field.PolarityGPIO_2 = 0; // Active High.
		LedSetting.field.PolarityGPIO_3 = 0; // Active High.
		LedSetting.field.PolarityGPIO_4 = 0; // Active High.
		LedSetting.field.LedMode = LED_MODE_DEFAULT;		
	}
	pAd->LedCntl.word = 0;
	pAd->LedCntl.field.LedMode = LedSetting.field.LedMode;
	pAd->LedCntl.field.PolarityRDY_G = LedSetting.field.PolarityRDY_G;
	pAd->LedCntl.field.PolarityRDY_A = LedSetting.field.PolarityRDY_A;
	pAd->LedCntl.field.PolarityACT = LedSetting.field.PolarityACT;
	pAd->LedCntl.field.PolarityGPIO_0 = LedSetting.field.PolarityGPIO_0;
	pAd->LedCntl.field.PolarityGPIO_1 = LedSetting.field.PolarityGPIO_1;
	pAd->LedCntl.field.PolarityGPIO_2 = LedSetting.field.PolarityGPIO_2;
	pAd->LedCntl.field.PolarityGPIO_3 = LedSetting.field.PolarityGPIO_3;
	pAd->LedCntl.field.PolarityGPIO_4 = LedSetting.field.PolarityGPIO_4;

	RTUSBReadEEPROM(pAd, EEPROM_TXPOWER_DELTA_OFFSET, (PUCHAR)&value, 2);
	value = value & 0x00ff;
	if (value != 0xff)
	{
		pAd->TxPowerDeltaConfig.value = (UCHAR) value;
		if (pAd->TxPowerDeltaConfig.field.DeltaValue > 0x04)
			pAd->TxPowerDeltaConfig.field.DeltaValue = 0x04;
	}
	else
		pAd->TxPowerDeltaConfig.field.TxPowerEnable = FALSE;
		
	DBGPRINT(RT_DEBUG_TRACE, "<-- NICReadEEPROMParameters\n");
}

/*
	========================================================================
	
	Routine Description:
		Set default value from EEPROM
		
	Arguments:
		Adapter						Pointer to our adapter

	Return Value:
		None

	Note:
		
	========================================================================
*/
VOID NICInitAsicFromEEPROM(
	IN	PRTMP_ADAPTER	pAd)
{
	ULONG					data;
	USHORT					i;
	ULONG					MiscMode;
	EEPROM_ANTENNA_STRUC	Antenna;
	EEPROM_NIC_CONFIG2_STRUC	NicConfig2;

	DBGPRINT(RT_DEBUG_TRACE, "--> NICInitAsicFromEEPROM\n");

	for(i = 3; i < NUM_EEPROM_BBP_PARMS; i++)
	{
		UCHAR BbpRegIdx, BbpValue;
	
		if ((pAd->EEPROMDefaultValue[i] != 0xFFFF) && (pAd->EEPROMDefaultValue[i] != 0))
		{
			BbpRegIdx = (UCHAR)(pAd->EEPROMDefaultValue[i] >> 8);
			BbpValue  = (UCHAR)(pAd->EEPROMDefaultValue[i] & 0xff);
			RTUSBWriteBBPRegister(pAd, BbpRegIdx, BbpValue);
		}
	}
	
	Antenna.word = pAd->EEPROMDefaultValue[0];

	if (Antenna.word == 0xFFFF)
	{
		Antenna.word = 0;
		Antenna.field.RfIcType = RFIC_5226;
		Antenna.field.HardwareRadioControl = 0; 	// no hardware control
		Antenna.field.DynamicTxAgcControl = 0;
		Antenna.field.FrameType = 0;
		Antenna.field.RxDefaultAntenna = 2; 		// Ant-B
		Antenna.field.TxDefaultAntenna = 2; 		// Ant-B
		Antenna.field.NumOfAntenna = 2;
		DBGPRINT(RT_DEBUG_WARN, "E2PROM error, hard code as 0x%04x\n", Antenna.word);
	}

	pAd->RfIcType = (UCHAR) Antenna.field.RfIcType;
	DBGPRINT(RT_DEBUG_WARN, "pAd->RfIcType = %d\n", pAd->RfIcType);

	//
	// For RFIC RFIC_5225 & RFIC_2527
	// Must enable RF RPI mode on PHY_CSR1 bit 16.
	//
	if ((pAd->RfIcType == RFIC_5225) || (pAd->RfIcType == RFIC_2527))
	{
		RTUSBReadMACRegister(pAd, PHY_CSR1, &MiscMode);
		MiscMode |= 0x10000;
		RTUSBWriteMACRegister(pAd, PHY_CSR1, MiscMode);
	}
	
	// Save the antenna for future use
	pAd->Antenna.word = Antenna.word;
	
	// Read Hardware controlled Radio state enable bit
	if (Antenna.field.HardwareRadioControl == 1)
	{
		pAd->PortCfg.bHardwareRadio = TRUE;
		
		// Read GPIO pin7 as Hardware controlled radio state
		RTUSBReadMACRegister(pAd, MAC_CSR13, &data);

		//
		// The GPIO pin7 default is 1:Pull-High, means HW Radio Enable.
		// When the value is 0, means HW Radio disable.
		//
		if ((data & 0x80) == 0)
		{
			pAd->PortCfg.bHwRadio = FALSE;
			// Update extra information to link is up
			pAd->ExtraInfo = HW_RADIO_OFF;
		}
	}
	else
		pAd->PortCfg.bHardwareRadio = FALSE;		
	
	pAd->PortCfg.bRadio = pAd->PortCfg.bSwRadio && pAd->PortCfg.bHwRadio;
	
	if (pAd->PortCfg.bRadio == FALSE)
	{
		RTUSBWriteMACRegister(pAd, MAC_CSR10, 0x00001818);
		RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
	
		RTMPSetLED(pAd, LED_RADIO_OFF);
	}
	else
	{
		RTMPSetLED(pAd, LED_RADIO_ON);
	}
	
	NicConfig2.word = pAd->EEPROMDefaultValue[1];
	if (NicConfig2.word == 0xffff)
	{
		NicConfig2.word = 0;
	}
	// Save the antenna for future use
	pAd->NicConfig2.word = NicConfig2.word;

	DBGPRINT(RT_DEBUG_TRACE, "Use Hw Radio Control Pin=%d; if used Pin=%d;\n",
		pAd->PortCfg.bHardwareRadio, pAd->PortCfg.bHardwareRadio);
	
	DBGPRINT(RT_DEBUG_TRACE, "RFIC=%d, LED mode=%d\n", pAd->RfIcType, pAd->LedCntl.field.LedMode);

	pAd->PortCfg.BandState = UNKNOWN_BAND;

	DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitAsicFromEEPROM\n");
}

/*
	========================================================================
	
	Routine Description:
		Initialize NIC hardware

	Arguments:
		Adapter						Pointer to our adapter

	Return Value:
		None

	Note:
		
	========================================================================
*/
NDIS_STATUS	NICInitializeAsic(
	IN	PRTMP_ADAPTER	pAd)
{
	ULONG			Index, Counter;
	UCHAR			Value = 0xff;
	ULONG			Version;
	MAC_CSR12_STRUC	MacCsr12;

	DBGPRINT(RT_DEBUG_TRACE, "--> NICInitializeAsic\n");

	RTUSBReadMACRegister(pAd, MAC_CSR0, &Version);
	
	// Initialize MAC register to default value
	for (Index = 0; Index < NUM_MAC_REG_PARMS; Index++)
	{
		RTUSBWriteMACRegister(pAd, (USHORT)MACRegTable[Index].Register, MACRegTable[Index].Value);
	}
	
	// Set Host ready before kicking Rx
	RTUSBWriteMACRegister(pAd, MAC_CSR1, 0x3);
	RTUSBWriteMACRegister(pAd, MAC_CSR1, 0x0);		

	//
	// Before program BBP, we need to wait BBP/RF get wake up.
	//
	Index = 0;
	do
	{
		RTUSBReadMACRegister(pAd, MAC_CSR12, &MacCsr12.word);

		if (MacCsr12.field.BbpRfStatus == 1)
			break;

		RTUSBWriteMACRegister(pAd, MAC_CSR12, 0x4); //Force wake up.
		RTMPusecDelay(1000);
	} while (Index++ < 1000);

	// Read BBP register, make sure BBP is up and running before write new data
	Index = 0;
	do 
	{
		RTUSBReadBBPRegister(pAd, BBP_R0, &Value);
		DBGPRINT(RT_DEBUG_TRACE, "BBP version = %d\n", Value);
	} while ((++Index < 100) && ((Value == 0xff) || (Value == 0x00)));
		  
	// Initialize BBP register to default value
	for (Index = 0; Index < NUM_BBP_REG_PARMS; Index++)
	{
		RTUSBWriteBBPRegister(pAd, BBPRegTable[Index].Register, BBPRegTable[Index].Value);
	}

	// Clear raw counters
	RTUSBReadMACRegister(pAd, STA_CSR0, &Counter);
	RTUSBReadMACRegister(pAd, STA_CSR1, &Counter);
	RTUSBReadMACRegister(pAd, STA_CSR2, &Counter);

	// assert HOST ready bit
	RTUSBWriteMACRegister(pAd, MAC_CSR1, 0x4);
	
	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);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级欧美三级在线观看| 韩日欧美一区二区三区| 久久成人免费电影| 成人一级片在线观看| 26uuu久久天堂性欧美| 日韩在线一二三区| 4438亚洲最大| 久久国产成人午夜av影院| 欧美人牲a欧美精品| 麻豆免费精品视频| 久久综合色天天久久综合图片| 日韩高清电影一区| 日韩午夜激情视频| 波多野结衣中文字幕一区| 欧美精品第1页| 国产亚洲综合在线| 成人性生交大片免费看中文| 国产精品嫩草99a| 欧洲激情一区二区| 秋霞影院一区二区| 国产精品成人免费精品自在线观看| 国产美女精品人人做人人爽| 亚洲国产精华液网站w | 欧美色成人综合| 日韩毛片一二三区| 欧美视频一区二区| 成人av动漫在线| 日产精品久久久久久久性色| 国产亚洲欧美一区在线观看| 日本韩国精品一区二区在线观看| 日韩精品免费视频人成| 国产网站一区二区三区| 欧美二区三区91| 国产白丝网站精品污在线入口 | 精品免费视频.| 欧美在线高清视频| 91理论电影在线观看| 韩国av一区二区三区| 奇米一区二区三区av| 亚洲aaa精品| 日韩电影免费一区| 亚洲精品在线观看网站| 成人午夜激情视频| 国产成人夜色高潮福利影视| 男人的j进女人的j一区| 午夜激情久久久| 在线免费精品视频| 青青青伊人色综合久久| 亚洲精品国久久99热| 51午夜精品国产| 精品免费视频一区二区| 久久久www免费人成精品| 精品免费国产一区二区三区四区| 日韩亚洲欧美在线观看| 国产精品资源网| 国产精品91xxx| www.亚洲人| 欧美日韩中文字幕精品| 91精品国产综合久久蜜臀| 久久久久久久综合狠狠综合| 国产欧美一区二区精品性色| 亚洲女同ⅹxx女同tv| 青娱乐精品视频| 国产黄色91视频| 在线视频国内一区二区| 久久久99久久精品欧美| 一区二区三区四区不卡视频| 国产综合久久久久久久久久久久| 国产精品卡一卡二| 亚洲丰满少妇videoshd| 国产精品一区二区久久精品爱涩| www.日韩在线| 久久一夜天堂av一区二区三区| 精品入口麻豆88视频| 自拍偷拍国产亚洲| 国产传媒欧美日韩成人| 裸体在线国模精品偷拍| 成人激情开心网| 26uuu亚洲综合色| 亚洲另类一区二区| 成人福利视频在线| 欧美一区二视频| 欧美日韩精品一区二区三区蜜桃| 日韩成人av影视| 在线一区二区观看| 国产亚洲1区2区3区| 一区二区三区.www| 亚洲aaa精品| 在线中文字幕不卡| 国产精品毛片无遮挡高清| 成人网男人的天堂| 欧美一区二区精品| 激情小说欧美图片| 精品理论电影在线| 亚洲一区中文日韩| 久久亚洲一区二区三区四区| 理论电影国产精品| 岛国精品在线播放| 欧美精品丝袜中出| 中文字幕中文字幕一区二区| 麻豆免费看一区二区三区| 精品免费国产二区三区 | 91国偷自产一区二区开放时间 | 首页综合国产亚洲丝袜| 国产亚洲va综合人人澡精品| 在线亚洲免费视频| 国产成人精品免费在线| 亚洲成av人片在线| 一区二区三区在线播放| 中文字幕av在线一区二区三区| 日韩一区二区在线看片| 日本久久一区二区三区| av成人老司机| 丁香婷婷深情五月亚洲| 美女被吸乳得到大胸91| 午夜影院久久久| 亚洲自拍欧美精品| 一区二区三区不卡视频| 亚洲色图视频免费播放| 中文字幕免费不卡在线| 国产精品你懂的| 中文字幕日本乱码精品影院| 中文字幕一区日韩精品欧美| 日本一区二区三区免费乱视频| 97精品电影院| 国产麻豆91精品| 成人午夜大片免费观看| 92精品国产成人观看免费| 在线亚洲精品福利网址导航| 欧美四级电影网| 日韩一区二区精品在线观看| 精品国产污污免费网站入口 | 成人在线视频首页| 91网站最新网址| 欧美成人女星排行榜| 国产精品久久久久天堂| 美腿丝袜在线亚洲一区| 国内久久精品视频| 欧美中文字幕一区二区三区亚洲| 欧美日韩激情一区二区三区| 久久亚洲综合色| 午夜在线成人av| 91麻豆国产福利精品| 精品国产一区二区国模嫣然| 亚洲欧洲一区二区在线播放| 亚洲国产综合色| 99这里都是精品| 欧美sm美女调教| 亚洲成人午夜电影| 国产成人免费av在线| 日韩一区二区三区视频在线| 1区2区3区欧美| av高清久久久| 亚洲欧美综合网| 国产99久久精品| 国产蜜臀av在线一区二区三区| 丝袜a∨在线一区二区三区不卡| 国内外精品视频| 欧美成人一级视频| 激情综合色播激情啊| 久久综合久久久久88| 国产一区二区三区高清播放| 欧美一区二区三区成人| 日韩精品亚洲专区| 日韩片之四级片| 国产盗摄女厕一区二区三区| 国产午夜久久久久| 免费在线观看日韩欧美| 国产欧美一区二区三区网站| 青草av.久久免费一区| 日韩色在线观看| 国产成人欧美日韩在线电影| 久久久久国产精品麻豆ai换脸 | 午夜伦欧美伦电影理论片| 亚洲精品中文在线观看| 久久精品夜夜夜夜久久| 色综合天天性综合| 日韩精品一二区| 国产精品久久久久久久久果冻传媒| 成年人国产精品| 日本免费在线视频不卡一不卡二| 久久人人爽人人爽| 欧美日韩视频第一区| 激情五月婷婷综合| 六月丁香综合在线视频| 精品久久久影院| 91成人免费网站| 99久久精品免费观看| 久久国产精品99久久人人澡| 亚洲免费观看高清在线观看| 这里只有精品电影| 91麻豆产精品久久久久久| 另类综合日韩欧美亚洲| 亚洲在线中文字幕| 国产精品白丝在线| 国产精品乱人伦中文| 欧美精品一区二区三区高清aⅴ | 久久99九九99精品| 午夜视频一区在线观看| 亚洲已满18点击进入久久|