📄 initproc.c
字号:
Adapter->AdhocDefaultBand = MRVDRV_802_11_BAND_BG;
#elif (defined(MRV_CHIP_8305) || defined(MRV_CHIP_8381))
Adapter->region_channel[0].Valid = TRUE;
Adapter->region_channel[0].Band = MRVDRV_802_11_BAND_B;
Adapter->region_channel[0].Region = 0x40; //JPN
Adapter->region_channel[0].CFP = channel_freq_power_JPN_BG;
Adapter->region_channel[0].NrCFP = 14;
#else
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 ///(MRV_CHIP_8XXX)
/*
#elif defined(MRV_CHIP_8385PN)
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;
#elif defined(MRV_CHIP_8388)
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;
#elif defined(MRV_CHIP_8686PN) //dralee_1209
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;
#elif defined(MRV_CHIP_8399)
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;
#else
Adapter->region_channel[0].Valid = TRUE;
Adapter->region_channel[0].Band = MRVDRV_802_11_BAND_B;
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->cur_region_channel = &(Adapter->region_channel[0]);
Adapter->connected_band = MRVDRV_802_11_BAND_BG;
Adapter->connected_channel = 1;
//lykao, 053005, set Adhoc Initial value
Adapter->AdhocDefaultChannel = 6;
Adapter->AdhocWiFiDataRate = 0; //set adhoc Band=MRVDRV_802_11_BAND_B
Adapter->SetSD4BIT =0; //Default setSD1BIT =4 bit mode
#ifdef MRVL_WINCE50
Adapter->RegionTableIndex = 0;
Adapter->RegionCode = 0x10;
#endif
#if defined (IF_GSPI)
Adapter->SdioIstThread = 100;
#else
Adapter->SdioIstThread= 101; //150; dralee_20060604. to fix platform reset hang bug.
#endif ///IF_GSPI
#ifdef REASSOCIATE
Adapter->bIsSystemConnectNow = FALSE;
//35.p6++
Adapter->bIsReconnectEnable = FALSE;
Adapter->bIsBeaconLoseEvent = FALSE;
Adapter->bIsDeauthenticationEvent = FALSE;
//35.p6--
#endif //REASSOCIATE
Adapter->CurCmd = NULL;
#ifdef NEW_RSSI
Adapter->bcn_avg_factor = DEFAULT_BCN_AVG_FACTOR;
Adapter->data_avg_factor = DEFAULT_DATA_AVG_FACTOR;
Adapter->ulRSSITickCount = 0;
Adapter->ulRSSIThresholdTimer=5000;
Adapter->RSSI_Range=10;
#endif
/*
* ahan [2005-12-09]
* 0 - No TLV, [1,2] is valid range
*/ //++dralee_20060220
Adapter->ScanProbes = 2;
/*
* ahan [2005-12-12]
* vlaid range is [0,20]
*/
Adapter->LocalListenInterval = 0; //0 - remain firmware listen interval unchanged
/*
* ahan [2005-12-13]
* default event is LINK_LOSS
* default beacon missed value is 60
*/ //++dralee_20060217
Adapter->SubscribeEvents = LINK_LOSS;
Adapter->EventRecord.EventMap = LINK_LOSS;
///crlo:fastroam ++
Adapter->EventRecord.BeaconMissed = LINK_LOST_BEACONCNT;
///Adapter->EventRecord.BeaconMissed = 60;
///crlo:fastroam --
/* ahan [2005-12-13] */
#ifdef AvoidOidSetScan
Adapter->AvoidScanTime=10000;
#endif
// tt mic error ++
Adapter->bMicErrorIsHappened = FALSE;
// tt mic error --
Adapter->RxPDRate = 0;
Adapter->SNR[TYPE_RXPD][TYPE_NOAVG]=0 ;
#ifdef BG_SCAN
Adapter->bBgScanEnabled = 0;
Adapter->bActiveRoamingwithBGSCAN=FALSE;
Adapter->bPSEnableBGScan=FALSE;
NdisZeroMemory(Adapter->BgScanCfg, LENGTH_BGSCAN_CFG);
Adapter->nBgScanCfg=0;
Adapter->ulScanInterval=20000; //20sec
Adapter->bBgDeepSleep=0;
#endif
#ifdef CCX
///crlo:RadioMeasure ++
#ifdef CCX_RADIOMEASURE
///Adapter->dialogToken = 0x0011; ////Copy the value from a transaction of a Cisco client
Adapter->isPassiveScan = FALSE;
Adapter->MeasureDurtion = 0;
Adapter->ChannelNum = 0;
#endif ///CCX_RADIOMEASURE
///crlo:RadioMeasure --
#endif ///CCX
#ifdef ACTIVE_ROAMING
Adapter->bIsActiveRoaming = FALSE;
Adapter->bActiveRoamingScanOneChannel=TRUE;
Adapter->bLinkLostScanOneChannel=TRUE;
Adapter->EventRecord.RSSILowValue = 60;
Adapter->ACTIVE_ROAMING_Count=0;
Adapter->ActiveRoamingwithBGSCAN_FLAG=FALSE;
#endif
#ifdef WMM
Adapter->WmmDesc.enabled = 0;
Adapter->WmmDesc.required = 1;
#ifdef WMM_UAPSD
Adapter->WmmDesc.qosinfo = 0x0f;
#endif
#endif
#ifdef IBSS_COALESCE
Adapter->IbssCoalsecingEnable = 1;
#endif
return;
}
/******************************************************************************
*
* Name: AllocateAdapterBuffer()
*
* Description: Device object buffer initialization function
*
* Arguments:
* PMRVDRV_ADAPTER Adapter
*
* Return Value: NDIS_STATUS_SUCCESS or NDIS_STATUS_FAILURE
*
* Notes:
*
*****************************************************************************/
NDIS_STATUS AllocateAdapterBuffer(
IN PMRVDRV_ADAPTER Adapter
)
{
NDIS_STATUS Status;
// ULONG i;
//ULONG ulBufSize;
// PUCHAR pTempVirtualAddr;
// NDIS_PHYSICAL_ADDRESS TempPhyAddr;
//PNDIS_WLAN_BSSID_EX pTempBSSIDList;
//PBSS_DESCRIPTION_SET_ALL_FIELDS pTempBssDescList;
// We are going to use non-cached shared memory for Rx buffers, no need to
// check cache fill size offset
ULONG Offset;
Offset = 0;
Adapter->InitializationStatus |= MRVDRV_INIT_STATUS_MAP_REGISTER_ALLOCATED;
// Build up TxQ
if(AllocateSingleTx(Adapter) != NDIS_STATUS_SUCCESS)
{
FreeAdapterObject(Adapter);
return NDIS_STATUS_RESOURCES;
}
// Build up RxQ
Status = AllocateRxQ(Adapter);
if( Status != NDIS_STATUS_SUCCESS ){
FreeAdapterObject(Adapter);
return NDIS_STATUS_RESOURCES;
}
// Build up command buffers
Status = AllocateCmdBuffer(Adapter);
if( Status != NDIS_STATUS_SUCCESS ){
FreeAdapterObject(Adapter);
return NDIS_STATUS_RESOURCES;
}
return NDIS_STATUS_SUCCESS;
}
/******************************************************************************
*
* Name: ReadRegistryInfo()
*
* Description: Device registry read function
*
* Arguments:
* PMRVDRV_ADAPTER Adapter
* NDIS_HANDLE RegHdl
*
*
* Return Value:
* NDIS_STATUS_SUCCESS
* NDIS_STATUS_FAILURE
*
* Notes:
*
*****************************************************************************/
NDIS_STATUS ReadRegistryInfo(
IN PMRVDRV_ADAPTER Adapter,
IN NDIS_HANDLE RegHdl
)
{
NDIS_STATUS Status;
REGINFOTAB *RegInfoTab;
UINT i;
ULONG j;
// ULONG ul;
UINT Value;
PUCHAR pPtr;
PUCHAR pTmp;
// PUCHAR stopstring;
NDIS_CONFIGURATION_PARAMETER NdisConfigParam,*ReturnedValue;
ANSI_STRING DestinationANSIString;
char UnicodeBuffer[512];//to save the UNICODE string.
char AnsiBuffer[128];//to save the ANSI string.
PUCHAR NetworkAddress;
// Read registry network address, if there is a good one, put it itno Adapter->CurrentAddr array
NdisReadNetworkAddress(&Status, &NetworkAddress, &i, RegHdl);
if( Status == NDIS_STATUS_SUCCESS )
{
if( i == MRVDRV_ETH_ADDR_LEN )
{
NdisMoveMemory(Adapter->CurrentAddr, NetworkAddress, MRVDRV_ETH_ADDR_LEN);
DBGPRINT(DBG_LOAD,("*** Got registry soft addr: %2x %2x %2x %2x %2x %2x ***\n",
Adapter->CurrentAddr[0],
Adapter->CurrentAddr[1],
Adapter->CurrentAddr[2],
Adapter->CurrentAddr[3],
Adapter->CurrentAddr[4],
Adapter->CurrentAddr[5]));
}
}
RegInfoTab = MrvDrvRegInfoTab;
ReturnedValue = &NdisConfigParam;
DestinationANSIString.Buffer=AnsiBuffer;
DestinationANSIString.MaximumLength=0x21;
ReturnedValue->ParameterData.StringData.Buffer=(PWSTR)UnicodeBuffer;
for(i=0; i<SIZE_OF_REG_TAB; i++, RegInfoTab++)
{
pPtr = ((PUCHAR)Adapter) + RegInfoTab->Offset;
pTmp = pPtr;
if (RegInfoTab->Type == 0)
{
NdisReadConfiguration(
&Status,
&ReturnedValue,
RegHdl,
&RegInfoTab->ObjNSName,
NdisParameterInteger);
if (Status == NDIS_STATUS_SUCCESS)
{
Value = ReturnedValue->ParameterData.IntegerData;
*((PULONG)pPtr) = (ULONG)Value;
}
}
else if(RegInfoTab->Type == 1)
{
NdisReadConfiguration(
&Status,
&ReturnedValue,
RegHdl,
&RegInfoTab->ObjNSName,
NdisParameterString);
if (Status == NDIS_STATUS_SUCCESS)
{
NdisUnicodeStringToAnsiString(
&DestinationANSIString,
(PUNICODE_STRING)(&(ReturnedValue->ParameterData.StringData))
);
for(j=0;DestinationANSIString.Buffer[j] != '\0';j++)
{
*(pTmp)=DestinationANSIString.Buffer[j];
pTmp++;
}
*((PULONG)(pPtr-4))=j;
}
}
else if (RegInfoTab->Type == 3) {
NdisReadConfiguration(
&Status,
&ReturnedValue,
RegHdl,
&RegInfoTab->ObjNSName,
NdisParameterHexInteger);
if (Status == NDIS_STATUS_SUCCESS) {
Value = ReturnedValue->ParameterData.IntegerData;
*((PINT)pPtr) = Value;
}
}
}
Adapter->WepKey1.KeyIndex=0x0;
Adapter->WepKey2.KeyIndex=0x1;
Adapter->WepKey3.KeyIndex=0x2;
Adapter->WepKey4.KeyIndex=0x3;
switch(Adapter->TxWepKey){
case 0:
Adapter->WepKey1.KeyIndex |= 0x80000000;
NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey1) , 12 + Adapter->WepKey1.KeyLength);
break;
case 1:
Adapter->WepKey2.KeyIndex |= 0x80000000;
NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey2) , 12 + Adapter->WepKey2.KeyLength);
break;
case 2:
Adapter->WepKey3.KeyIndex |= 0x80000000;
NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey3) , 12 + Adapter->WepKey3.KeyLength);
break;
case 3:
Adapter->WepKey4.KeyIndex |= 0x80000000;
NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey4) , 12 + Adapter->WepKey4.KeyLength);
break;
default:
break;
}
#ifdef NEW_RSSI
Adapter->NegativeRSSI_Range=Adapter->RSSI_Range*(-1);
#endif
return NDIS_STATUS_SUCCESS;
}
/******************************************************************************
*
* Name: InitSyncObjects()
*
* Description: Syncronization object initialization function
*
* Arguments:
* PMRVDRV_ADAPTER Adapter
*
* Return Value:
* NDIS_STATUS_SUCCESS
* NDIS_STATUS_FAILURE
*
* Notes:
*
*****************************************************************************/
NDIS_STATUS
InitSyncObjects(
IN PMRVDRV_ADAPTER Adapter
)
{
DWORD threadID;
DWORD waitStatus;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -