⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtusb_init.c

📁 华硕无线网卡 167G linux 驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
			DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");			Status = NDIS_STATUS_RESOURCES;			break;		}			memset(pRxContext->TransferBuffer, 0, BUFFER_SIZE);				pRxContext->pAdapter = pAdapter;		pRxContext->InUse = FALSE;	}	DBGPRINT(RT_DEBUG_TRACE,"<-- NICInitRecv\n");		return Status;}NDIS_STATUS RT2570InitAdapterBlock(	PRT2570ADAPTER	pAdapter){	NDIS_STATUS 	Status = NDIS_STATUS_SUCCESS;	UINT			i;	PCmdQElmt		cmdqelmt;		do	{		for (i = 0; i < COMMAND_QUEUE_SIZE; i++)		{			cmdqelmt = &(pAdapter->CmdQElements[i]);			memset(cmdqelmt, 0, sizeof(CmdQElmt));			cmdqelmt->buffer = NULL;			cmdqelmt->CmdFromNdis = FALSE;			cmdqelmt->InUse = FALSE;		}		RTUSBInitializeCmdQ(&pAdapter->CmdQ);		init_MUTEX(&(pAdapter->usbdev_semaphore));		init_MUTEX_LOCKED(&(pAdapter->mlme_semaphore));		init_MUTEX_LOCKED(&(pAdapter->RTUSBCmd_semaphore));#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)		init_completion (&pAdapter->notify);#endif		NdisAllocateSpinLock(&pAdapter->CmdQLock);		NdisAllocateSpinLock(&pAdapter->SendTxWaitQueueLock);		NdisAllocateSpinLock(&pAdapter->BulkOutLock);		NdisAllocateSpinLock(&pAdapter->MLMEWaitQueueLock);		NdisAllocateSpinLock(&pAdapter->MLMEQLock);	}while(0);	return Status;}////////////////////////////////////////////////////////////////////////////////	FUNCTION//		ReleaseAdapter////	DESCRIPTION//		Calls USB_InterfaceStop and frees memory allocated for the URBs//		calls NdisMDeregisterDevice and frees the memory//		allocated in VNetInitialize for the Adapter Object//		//	INPUT//		Adapter 	Pointer to RT2570ADAPTER structure////	OUTPUT//		-//		////////////////////////////////////////////////////////////////////////////VOID ReleaseAdapter(PRT2570ADAPTER pAdapter, BOOLEAN IsF){	UINT	i, IsFree;	PTX_CONTEXT	pNullContext = &pAdapter->NullContext;	PTX_CONTEXT	pPsPollContext = &pAdapter->PsPollContext;		IsFree = 1;	DBGPRINT(RT_DEBUG_TRACE, "==> ReleaseAdapter\n");	// Free all resources for the RECEIVE buffer queue.	for (i = 0; i < RX_RING_SIZE; i++)	{		PRX_CONTEXT  pRxContext = &(pAdapter->RxContext[i]);		if (pRxContext->pUrb != NULL)		{			usb_kill_urb(pRxContext->pUrb);			if (IsFree)			usb_free_urb(pRxContext->pUrb);			pRxContext->pUrb = NULL;		}		if (pRxContext->TransferBuffer != NULL)		{			FreeMemory(pRxContext->TransferBuffer); 			pRxContext->TransferBuffer = NULL;		}	}#if 0	if (NULL != pWpaPskContext->pUrb)	{		usb_free_urb(pWpaPskContext->pUrb);		pWpaPskContext->pUrb = NULL;	}	if (NULL != pWpaPskContext->TransferBuffer)	{		FreeMemory(pWpaPskContext->TransferBuffer);		pWpaPskContext->TransferBuffer = NULL;	}#endif	if (NULL != pPsPollContext->pUrb)	{		usb_kill_urb(pPsPollContext->pUrb);		if (IsFree)		usb_free_urb(pPsPollContext->pUrb);		pPsPollContext->pUrb = NULL;	}	if (NULL != pPsPollContext->TransferBuffer)	{		FreeMemory(pPsPollContext->TransferBuffer);		pPsPollContext->TransferBuffer = NULL;	}	if (NULL != pNullContext->pUrb)	{		usb_kill_urb(pNullContext->pUrb);		if (IsFree)		usb_free_urb(pNullContext->pUrb);		pNullContext->pUrb = NULL;	}	if (NULL != pNullContext->TransferBuffer)	{		FreeMemory(pNullContext->TransferBuffer);		pNullContext->TransferBuffer = NULL;	}	// Free beacon frame resource	for (i = 0; i < BEACON_RING_SIZE; i++)	{		PTX_CONTEXT	pBeaconContext = &(pAdapter->BeaconContext[i]);		if ( NULL != pBeaconContext->pUrb )		{			usb_kill_urb(pBeaconContext->pUrb);			if (IsFree)			usb_free_urb(pBeaconContext->pUrb);			pBeaconContext->pUrb = NULL;		}				if ( NULL != pBeaconContext->TransferBuffer )		{			FreeMemory( pBeaconContext->TransferBuffer);			pBeaconContext->TransferBuffer = NULL;		}	}	for ( i= 0; i < PRIO_RING_SIZE; i++ )	{		PTX_CONTEXT pMLMEContext = &(pAdapter->MLMEContext[i]);				if ( NULL != pMLMEContext->pUrb )		{			usb_kill_urb(pMLMEContext->pUrb);			if (IsFree)			usb_free_urb(pMLMEContext->pUrb);			pMLMEContext->pUrb = NULL;		}				if ( NULL != pMLMEContext->TransferBuffer )		{			FreeMemory( pMLMEContext->TransferBuffer);			pMLMEContext->TransferBuffer = NULL;		}	} // for	for ( i= 0; i < TX_RING_SIZE; i++ )	{		PTX_CONTEXT pTxContext = &(pAdapter->TxContext[i]);		if ( NULL != pTxContext->pUrb )		{			usb_kill_urb(pTxContext->pUrb);			if (IsFree)			usb_free_urb(pTxContext->pUrb);			pTxContext->pUrb = NULL;		}				if ( NULL != pTxContext->TransferBuffer )		{			FreeMemory( pTxContext->TransferBuffer);			pTxContext->TransferBuffer = NULL;		}	} // for	DBGPRINT(RT_DEBUG_TRACE, "<== ReleaseAdapter\n");}VOID PortCfgInit(PRT2570ADAPTER pAdapter){	UINT i;		pAdapter->PortCfg.UseBGProtection = 2; // always not use	pAdapter->PortCfg.CapabilityInfo = 0x0000;	pAdapter->BulkOutMaxPacketSize = 64;	//pAdapter->PortCfg.AuthRspTimeout = AUTH_KEY_TIMEOUT;	 // in msec	pAdapter->PortCfg.Psm = PWR_ACTIVE;	pAdapter->PortCfg.BeaconPeriod = 100;	  // in mSec	//	pAdapter->PortCfg.AssocRspTimeout = ASSOC_TIMEOUT;	// in mSec#if 1	pAdapter->BBPR17InitValue = 0x32;#endif	pAdapter->PortCfg.CfpMaxDuration = 0;	  // never mind, decided by AP later	pAdapter->PortCfg.CfpDurRemain = 0; 	  // never mind, decided by AP later	pAdapter->PortCfg.CfpCount = 0; 		  // never mind, decided by AP later	pAdapter->PortCfg.CfpPeriod = 0;		  // never mind, decided by AP later	pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen;	pAdapter->PortCfg.CipherAlg = CIPHER_NONE;	pAdapter->PortCfg.MlmeRate = RATE_2;	pAdapter->PortCfg.RtsRate = RATE_2;	for(i = 0; i < SHARE_KEY_NO; i++)	{		pAdapter->PortCfg.SharedKey[i].KeyLen = 0;	}	for(i = 0; i < PAIRWISE_KEY_NO; i++) 	{		pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0;	}	for(i = 0; i < GROUP_KEY_NO; i++) 	{		pAdapter->PortCfg.GroupKey[i].KeyLen = 0;	}	pAdapter->PortCfg.WepStatus = Ndis802_11EncryptionDisabled;	pAdapter->PortCfg.OrigWepStatus = Ndis802_11EncryptionDisabled;	pAdapter->PortCfg.PairCipher = Ndis802_11EncryptionDisabled;	pAdapter->PortCfg.GroupCipher = Ndis802_11EncryptionDisabled;	pAdapter->PortCfg.bMixCipher = FALSE;	pAdapter->PortCfg.DefaultKeyId = 0;		pAdapter->PortCfg.PrivacyFilter = Ndis802_11PrivFilterAcceptAll;	// 802.1x port control	pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;	pAdapter->PortCfg.LastMicErrorTime = 0;	pAdapter->PortCfg.MicErrCnt 	   = 0;	pAdapter->PortCfg.bBlockAssoc	   = FALSE;	pAdapter->PortCfg.RtsThreshold = 2347;	pAdapter->PortCfg.FragmentThreshold = 2346;	pAdapter->PortCfg.bFragmentZeroDisable = FALSE;	pAdapter->PortCfg.CurrentTxAntenna = 0xff;	// diversity	pAdapter->PortCfg.CurrentRxAntenna = 0xff;	// diversity	pAdapter->PortCfg.NumberOfAntenna = 2;//	pAdapter->PortCfg.TxPowerLevel[0] = 100;//	pAdapter->PortCfg.NumOfTxPowerLevel = 1;	pAdapter->PortCfg.TxPower = 100; //mW	pAdapter->PortCfg.TxPowerPercentage = 0xffffffff; // AUTO	pAdapter->PortCfg.AntennaSupportTx = TRUE;	pAdapter->PortCfg.AntennaSupportRx = TRUE;	pAdapter->PortCfg.AntennaSupportDiversityRx = TRUE;	pAdapter->PortCfg.RecvDtim = TRUE;	memset(&pAdapter->PortCfg.Bssid, 0, MAC_ADDR_LEN);	memset(&pAdapter->PortCfg.Broadcast, 0xff, MAC_ADDR_LEN);	pAdapter->PortCfg.Pss = PWR_ACTIVE;	pAdapter->PortCfg.RssiTrigger = 0;	pAdapter->PortCfg.LastRssi = 0;	pAdapter->PortCfg.AvgRssi  = 0;	pAdapter->PortCfg.RssiTriggerMode = RSSI_TRIGGERED_UPON_BELOW_THRESHOLD;	pAdapter->PortCfg.AtimWin = 0;	pAdapter->PortCfg.Channel = 1;	pAdapter->PortCfg.Aid = 1;	pAdapter->PortCfg.DefaultListenCount = 3;//default listen count;	pAdapter->PortCfg.BssType = BSS_INFRA;	// BSS_INFRA or BSS_INDEP	pAdapter->PortCfg.SsidLen = 0;	memset(pAdapter->PortCfg.Ssid, 0, MAX_LEN_OF_SSID);  // NOT NULL-terminated	// global variables mXXXX used in MAC protocol state machines	pAdapter->PortCfg.Mibss = FALSE;	pAdapter->PortCfg.Massoc = FALSE;	pAdapter->PortCfg.Mauth = FALSE;	pAdapter->PortCfg.MallowRFMONTx = FALSE;	pAdapter->PortCfg.ForcePrismHeader = 0;	// PHY specification	pAdapter->PortCfg.PhyMode = PHY_11BG_MIXED;	//	  RTMPSetPhyMode(pAdapter, PHY_11BG_MIXED);   // default in 11BG mixed mode	pAdapter->PortCfg.Dsifs = 10;	   // in units of usec 	pAdapter->PortCfg.TxPreambleInUsed = Rt802_11PreambleLong; // use Long preamble on TX by defaut	// user desired power mode	pAdapter->PortCfg.WindowsPowerMode = Ndis802_11PowerModeCAM; // Ndis802_11PowerModeFast_PSP;	pAdapter->PortCfg.WindowsTxPreamble = Rt802_11PreambleAuto; // use Long preamble on TX by defaut	//pAdapter->PortCfg.PacketFilter = NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_BROADCAST;	pAdapter->bAcceptDirect = TRUE;	pAdapter->bAcceptMulticast = FALSE;	pAdapter->bAcceptBroadcast = TRUE;	pAdapter->bAcceptAllMulticast = TRUE;	#ifdef NDIS51_MINIPORT	pAdapter->PortCfg.WindowsPowerProfile = NdisPowerProfileAcOnLine; // Ndis802_11PowerModeFast_PSP;#endif	// parameters to be used when this STA starts a new ADHOC network	pAdapter->PortCfg.IbssConfig.BeaconPeriod = 100;	pAdapter->PortCfg.IbssConfig.AtimWin = 0;	pAdapter->PortCfg.IbssConfig.Channel = 1;	pAdapter->PortCfg.RfType = RFIC_2525;	pAdapter->PortCfg.LedMode = LED_MODE_DEFAULT;	//steven	NdisMInitializeTimer(&pAdapter->PortCfg.RfTuningTimer, pAdapter->AdapterHandle, AsicRfTuningExec, pAdapter);	// Patch for Ndtest	pAdapter->PortCfg.IgnoredScanNumber = 0;	pAdapter->bTxBusy = FALSE;			pAdapter->PortCfg.bHwRadio	= TRUE;	pAdapter->PortCfg.bSwRadio	= TRUE;	pAdapter->PortCfg.bRadio	= TRUE;	DBGPRINT(RT_DEBUG_TEMP, "INIT bRadio=%d\n", pAdapter->PortCfg.bRadio);	pAdapter->PortCfg.bHardwareRadio = FALSE;		// Default is OFF	pAdapter->PortCfg.bAutoTxAgc = FALSE;			// Default is OFF	pAdapter->PortCfg.bShowHiddenSSID = FALSE;		// Default no show	pAdapter->PortCfg.AdhocMode = 0; // b/g in adhoc		// Nitro mode control	pAdapter->PortCfg.EnableTxBurst = 0;			pAdapter->PortCfg.AutoReconnect = TRUE;	// Save the init time as last scan time, the system should do scan after 2 seconds.	// This patch is for driver wake up from standby mode, system will do scan right away.	pAdapter->PortCfg.LastScanTime = 0;	pAdapter->ScanAllowed = TRUE;	// Default for extra information is not valid	pAdapter->ExtraInfo = EXTRA_INFO_CLEAR;	// Default Config change flag	pAdapter->bConfigChanged = FALSE;	// dynamic BBP R17:sensibity tuning to overcome background noise	pAdapter->PortCfg.BbpTuningEnable  = TRUE;	// overwritten by E2PROM setting	pAdapter->PortCfg.VgcLowerBound    = 0x38;	// overwritten by E2PROM setting	pAdapter->PortCfg.BbpTuning.FalseCcaLowerThreshold = 100;	pAdapter->PortCfg.BbpTuning.FalseCcaUpperThreshold = 4;   // unit 128, 4*128 = 512	pAdapter->PortCfg.BbpTuning.VgcDelta			   = 1;	pAdapter->PortCfg.BbpTuning.VgcUpperBound		   = BBP_R17_DYNAMIC_UP_BOUND;	pAdapter->PortCfg.UseShortSlotTime = 1;//steven:for 2/20 demo purpose	for (i = 0; i < 12; i++)	{		pAdapter->TxRateSwitchingStruc[i].LastStableTime = 0;		pAdapter->TxRateSwitchingStruc[i].DownRate1Ratio = 55;		pAdapter->TxRateSwitchingStruc[i].DownRate2Ratio = 45;		pAdapter->TxRateSwitchingStruc[i].UpRateRatio = 85;		pAdapter->TxRateSwitchingStruc[i].StableTimeRequired = 3;		pAdapter->TxRateSwitchingStruc[i].PenaltyPeriod = 6;		pAdapter->TxRateSwitchingStruc[i].DownWaitingTime = 4;		switch (i)		{			case 11:			pAdapter->TxRateSwitchingStruc[i].DownRate1Ratio = 70;			break;		}	}	pAdapter->BBPTuningParameters.BBPTuningThreshold = 45;	pAdapter->BBPTuningParameters.R24LowerValue = 0x80;	pAdapter->BBPTuningParameters.R25LowerValue = 0x50;	pAdapter->BBPTuningParameters.R61LowerValue = 0x60;	pAdapter->BBPTuningParameters.R24HigherValue = 0x70;	pAdapter->BBPTuningParameters.R25HigherValue = 0x40;	pAdapter->BBPTuningParameters.R61HigherValue = 0x6d;	pAdapter->BBPTuningParameters.BBPR17LowSensitivity = BBP_R17_LOW_SENSIBILITY;	pAdapter->BBPTuningParameters.BBPR17MidSensitivity = BBP_R17_MID_SENSIBILITY;	pAdapter->BBPTuningParameters.RSSIToDbmOffset = RSSI_TO_DBM_OFFSET;	pAdapter->BBPTuningParameters.LargeCurrentRSSI = FALSE;}UCHAR BtoH(char ch){	if (ch >= '0' && ch <= '9') return (ch - '0');		  // Handle numerals	if (ch >= 'A' && ch <= 'F') return (ch - 'A' + 0xA);  // Handle capitol hex digits	if (ch >= 'a' && ch <= 'f') return (ch - 'a' + 0xA);  // Handle small hex digits	return(255);}////	FUNCTION: AtoH(char *, UCHAR *, int)////	PURPOSE:  Converts ascii string to network order hex////	PARAMETERS://	  src	 - pointer to input ascii string//	  dest	 - pointer to output hex//	  destlen - size of dest////	COMMENTS:////	  2 ascii bytes m

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -