initproc.c
来自「此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有」· C语言 代码 · 共 2,040 行 · 第 1/5 页
C
2,040 行
#endif
*/
//???-------------------------------------------------------------
InitializeWirelessConfig(Adapter);
if ( Adapter->EnableQOS )
{
DBGPRINT(DBG_QOS, ("QOS ENABLED.\n"));
// send down command to enable QOS
PrepareAndSendCommand(Adapter,
HostCmd_CMD_802_11_ENABLE_QOS_WME,
HostCmd_ACT_SET,
HostCmd_OPTION_USE_INT,
0,
HostCmd_PENDING_ON_NONE,
0,
FALSE,
NULL,
NULL,
NULL,
NULL);
}
else
{
DBGPRINT(DBG_QOS, ("QOS DISABLED.\n"));
}
/*
//// L2 Roaming Configration Check ////
if ( Adapter->RoamingMode > MRVL_L2ROAMING_MODE_AUTO )
{
Adapter->RoamingMode = MRVL_L2ROAMING_MODE_OFF;
}
if ( Adapter->RoamingPeriod < MRVL_L2ROAMING_MIN_PERIOD )
{
Adapter->RoamingPeriod = MRVL_L2ROAMING_MIN_PERIOD;
}
DBGPRINT(DBG_L2ROAMING, ("L2Roaming: Mode = %d, Level = %d, period = %d\n",
Adapter->RoamingMode, Adapter->RoamingLevel, Adapter->RoamingPeriod));
*/
/// Add the FW version and Driver Version to Registry
#ifdef UNDER_CE
{ // Add driver version to registry
REG_VALUE_DESCR Vals[2];
Vals[0].val_data = (PBYTE)TEXT(MRVDRV_DRIVER_BUILD_VERSION);
Vals[0].val_name = TEXT("DriverVersion");
Vals[0].val_type = REG_SZ;
Vals[1].val_name = NULL;
///crlo:verdef ++
///AddKeyValues ((TEXT("Comm\\") TEXT(IFSTRN) TEXT(CHIPSTRN) TEXT("_") TEXT(RFSTRN)), Vals);
AddKeyValues ((TEXT("Comm\\") TEXT(IFSTRN) TEXT(CHIPSTRN)), Vals);
///crlo:verdef --
}
#endif // UNDER_CE
/// Set DTIM to FW : Need FIX later
#ifdef MRVL_SET_REG_DTIM
DBGPRINT(DBG_OID, ("*****1 reg MRVL_SET_REG_DTIM OK DTIMNum=%d\n",Adapter->DTIMNum));
#ifdef MRVL_USE_MULTIPLE_DTIM
Adapter->DTIMFlag=TRUE;
Status=PrepareAndSendCommand(
Adapter,
HostCmd_CMD_802_11_MULTIPLE_DTIM,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
0,
HostCmd_PENDING_ON_SET_OID,
0,
FALSE,
NULL,
0,
0,
NULL
);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
{ DBGPRINT(DBG_ERROR , ("MRVL_SET_REG_DTIM Fail\n"));
}
else
{
DBGPRINT(DBG_OID, ("2 reg MRVL_SET_REG_DTIM OK DTIMNum=%d\n",Adapter->DTIMNum));
}
#endif
#endif
#ifdef AUTO_REASSOCIATION
Status = SubscribeMacEventForReAssoc( Adapter );
if ( !NDIS_SUCCESS( Status ) )
DBGPRINT( DBG_ERROR, ("[Error] Cannot subscribe events for re-association\n") );
#endif
#ifdef WMM_UAPSD
Status = wmm_set_sleep_period( Adapter, WMM_UAPSD_DEFAULT_SLEEP_PERIOD );
if ( Status != NDIS_STATUS_SUCCESS )
{
DbgWmmMsg( (L"+wmm+ Set SLEEP PERIOD failed!\n") );
}
else
{
DbgWmmMsg( (L"+wmm+ Set SLEEP PERIOD successfully!\n") );
}
#endif
// indicate to OS that the network is not connected after 1 second
//35.p6++
/// May be we don't need the timer : FIX Later
//NdisMSetTimer(&Adapter->MrvDrvIndicateConnectStatusTimer, 500);
//Adapter->DisconnectTimerSet = TRUE;
//35.p6--
#if defined(IF_GSPI)
isDrvInitialized = TRUE;
#endif ///IF_GSPI
#ifdef CCX
wlan_ccx_init(Adapter);
///crlo:fastroam ++
#ifdef CCX_FASTROAM
Adapter->EventRecord.RSSILowValue = 60;
#endif ///CCX_FASTROAM
///crlo:fastroam --
#endif
#ifdef ENABLE_802_11D //dralee_20060524
Enable_11d(Adapter, (UCHAR)Adapter->Enable80211D);
ResetAllScanTypeAndPower(Adapter);
#endif
return NDIS_STATUS_SUCCESS;
}
/******************************************************************************
*
* Name: MrvDrvAllocateComplete()
*
* Description:
* NDIS miniport memory allocation complete event handler
*
* Conditions for Use:
* NDIS wrapper will call this function when an async memory allocation is completed.
*
* Arguments:
*
* NDIS_HANDLE MiniportAdapterContext
* IN PVOID VirtualAddress
* IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress
* IN ULONG Length
* IN PVOID Context
*
* Return Value: None
*
* Notes: This routine is not implemented in this version of driver.
*
*****************************************************************************/
VOID
MrvDrvAllocateComplete(
NDIS_HANDLE MiniportAdapterContext,
IN PVOID VirtualAddress,
IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG Length,
IN PVOID Context
)
{
DBGPRINT(DBG_LOAD,("INIT - Enter MrvDrvAllocateComplete \n"));
return;
}
/*
===============================================================================
CODED PRIVATE PROCEDURES
===============================================================================
*/
/******************************************************************************
*
* Name: InitAdapterObject()
*
* Description: Device object initialization function
*
* Arguments:
* PMRVDRV_ADAPTER Adapter
*
* Return Value:
* NDIS_STATUS_SUCCESS
* NDIS_STATUS_FAILURE
*
* Notes:
*
*****************************************************************************/
VOID InitAdapterObject(
IN PMRVDRV_ADAPTER Adapter
)
{
USHORT i;
// Device information
Adapter->VendorID = 0xffffffff; // Will be filled with real data
Adapter->nAssocRspCount = 0; //tt ra fail
#ifdef PMKID_CACHE_CAP
ResetPmkidCache( Adapter );
Adapter->RSNStatusIndicated.StatusType = Ndis802_11StatusTypeMax;
#endif
#ifdef AUTO_REASSOCIATION
Adapter->ReAssociationInProgress = FALSE;
Adapter->bIsSendCmdImterSet = FALSE;
Adapter->uDelayForReAssociation = 100;
Adapter->uRetryForReassociation = 10;
Adapter->uCurrentRetryForReassociation = 0;
#endif
// NDIS Timer variables
Adapter->TimerInterval = MRVDRV_DEFAULT_TIMER_INTERVAL;
Adapter->isCommandTimerExpired = FALSE;
// Operation characteristics
Adapter->CurrentLookAhead = (ULONG)MRVDRV_MAXIMUM_ETH_PACKET_SIZE - MRVDRV_ETH_HEADER_SIZE;
Adapter->ProtocolOptions = 0;
Adapter->MACOptions = (ULONG)NDIS_MAC_OPTION_NO_LOOPBACK;
Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
Adapter->LinkSpeed = MRVDRV_LINK_SPEED_1mbps;
Adapter->MediaInUse = NdisMedium802_3;
NdisFillMemory(Adapter->CurrentAddr, MRVDRV_ETH_ADDR_LEN, 0xff);
// Status variables
Adapter->HardwareStatus = NdisHardwareStatusInitializing;
// 802.11 specific
Adapter->WEPStatus = Ndis802_11WEPDisabled;
Adapter->AuthenticationMode = Ndis802_11AuthModeOpen;
Adapter->InfrastructureMode = Ndis802_11Infrastructure;
Adapter->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
Adapter->ulNumOfBSSIDs =0;
Adapter->ulCurrentBSSIDIndex =0;
Adapter->ulAttemptedBSSIDIndex =0;
///Adapter->bAutoAssociation = FALSE;
Adapter->LastRSSI = MRVDRV_RSSI_DEFAULT_NOISE_VALUE;
// Adapter->RxPDIndex = 0;
Adapter->ulLastScanRequestTime =0;
NdisZeroMemory(&(Adapter->CurrentSSID), sizeof(NDIS_802_11_SSID));
NdisZeroMemory(&(Adapter->NullSSID), sizeof(NDIS_802_11_SSID));
NdisZeroMemory(Adapter->NullBSSID, MRVDRV_ETH_ADDR_LEN);
// Initialize RSSI-related variables
Adapter->RSSITriggerValue = MRVDRV_RSSI_TRIGGER_DEFAULT;
Adapter->RSSITriggerCounter = 0;
// Tx related varables
// Adapter->QueuedPacket = NULL; //by dralee
Adapter->SentPacket = NULL;
// Power management state
Adapter->CurPowerState = NdisDeviceStateD0;
// PnP and power profile
Adapter->SurpriseRemoved = FALSE;
for( i=0; i<MRVDRV_TX_POWER_LEVEL_TOTAL ; i++){
Adapter->PowerLevelList[i] =
HostCmd_ACT_TX_POWER_LEVEL_MIN + i * HostCmd_ACT_TX_POWER_LEVEL_GAP;
}
Adapter->SupportTxPowerLevel = MRVDRV_TX_POWER_LEVEL_TOTAL;
Adapter->CurrentTxPowerLevel = HostCmd_ACT_TX_POWER_INDEX_MID;
Adapter->TxPowerLevel = 0;
Adapter->TxPowerLevelIsSetByOS = FALSE;
// Set number of WEP keys
Adapter->NoOfWEPEntry = 0;
// Use system up time (in milli sec) for IV
NdisGetSystemUpTime(&Adapter->IV);
Adapter->SoftwareFilterOn = FALSE;
Adapter->CurrentPacketFilter = NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_BROADCAST;
Adapter->usMacControlRecord = HostCmd_ACT_MAC_RX_ON |
HostCmd_ACT_MAC_TX_ON |
HostCmd_ACT_MAC_INT_ENABLE|
HostCmd_ACT_MAC_MULTICAST_ENABLE|
HostCmd_ACT_MAC_BROADCAST_ENABLE ;
Adapter->AcceptAnySSID=0x1;
Adapter->AutoConfig=0x1;
Adapter->SetActiveScanSSID=0x0;
Adapter->RadioOn = TRUE;
Adapter->TxAntenna = 2;
Adapter->RxAntenna = 0x0000ffff;
Adapter->DataRate = 0;
Adapter->FragThsd = 2346;
Adapter->RTSThsd = 2346;
Adapter->Preamble = HostCmd_TYPE_LONG_PREAMBLE;
Adapter->TxPowerLevel = 100; // 100 mW
Adapter->Channel = 1;//default
// Power Save
Adapter->PSMode = Ndis802_11PowerModeCAM;
Adapter->psState = PS_STATE_FULL_POWER;
Adapter->ulDTIM = 1;
Adapter->ulAwakeTimeStamp = 0;
#ifdef WPA
Adapter->EncryptionStatus = Ndis802_11EncryptionDisabled;
// setup association information buffer
{
PNDIS_802_11_ASSOCIATION_INFORMATION pAssoInfo;
//ULONG ulLength;
pAssoInfo = (PNDIS_802_11_ASSOCIATION_INFORMATION)
Adapter->AssocInfoBuffer;
// ulLength = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
//ulLength = (ulLength) + 3
DBGPRINT(DBG_LOAD, ("pAssoInfo = 0x%x, pAssoInfo->Length = 0x%x\n", pAssoInfo,
&(pAssoInfo->Length)));
// assume the buffer has already been zero-ed
// no variable IE, so both request and response IE are
// pointed to the end of the buffer, 4 byte aligned
pAssoInfo->OffsetRequestIEs =
pAssoInfo->OffsetResponseIEs =
pAssoInfo->Length = ((sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + 3)
/4) * 4 ;
}
#endif // #ifdef WPA
Adapter->ulDTIM = 10; // assume to be 100 ms
#ifdef DEEP_SLEEP
Adapter->IsDeepSleep = FALSE;
Adapter->IsDeepSleepRequired = FALSE;
#endif
#ifdef ADHOCAES
Adapter->AdhocAESEnabled = FALSE;
#endif
#if defined(IF_SDIO) || defined(IF_GSPI)
#ifndef MRVL_WINCE50
#ifdef MRVL_SET_RF_RADIO
Adapter->RadioFlag=0;
Adapter->RadioControl=(USHORT)(Adapter->Preamble|Adapter->RadioOn);
#endif
#ifdef MRVL_MACADDRESS
Adapter->MrvlMacFlag = 0;
#endif
#ifdef MRVL_REGIONCODE
Adapter->MrvlRegionFlag =0;
#endif
#ifdef MRVL_DATARATE
Adapter->MrvlDataRateFlag=0;
#endif
#ifdef MRVL_RXTXANTENNA
//****modify RF_ANTENNA :set initial value
Adapter->MrvlRxAntennaFlag=0;
Adapter->MrvlTxAntennaFlag=0;
#endif
#ifdef MRVL_RFCHANNEL
Adapter->ChannelFlag=0;
#endif
#endif //MRVL_WINCE50
#ifdef MRVL_PSCONFIRM
Adapter->bPSConfirm=FALSE;
#endif
#endif //IF_SDIO
Adapter->bIsPendingReset = FALSE;
Adapter->bIsAssociationBlockedByScan = FALSE;
Adapter->bIsScanWhileConnect = FALSE;
Adapter->bIsConnectToAny = FALSE;
Adapter->bIsScanInProgress = FALSE;
Adapter->bIsAssociateInProgress = FALSE;
#if (defined(MRV_MODE_A) || defined(MRV_MODE_ABG))///#ifdef MRV_CHIP_8385H
#ifdef MRV_MODE_ABG
Adapter->region_channel[0].Valid = TRUE;
Adapter->region_channel[0].Band = MRVDRV_802_11_BAND_BG;
Adapter->region_channel[0].Region = 0x40; //JPN
Adapter->region_channel[0].CFP = channel_freq_power_JPN_BG;
Adapter->region_channel[0].NrCFP = 14;
#endif
Adapter->region_channel[1].Valid = TRUE;
Adapter->region_channel[1].Band = MRVDRV_802_11_BAND_A;
Adapter->region_channel[1].Region = 0x10; //USA
Adapter->region_channel[1].CFP = channel_freq_power_A;
Adapter->region_channel[1].NrCFP = 13;
//lykao, 053005, set Adhoc Initial value
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?