Remove more windows-specific code. Still untested, but very easy.

Signed-off-by: Pavel Machek

---
commit 05affe25840089b2e8c3ea4033b38efb933ddbc1
tree 147eb636c8f1066d10f3d4719d5035212b14e35d
parent 294c54c23b3317222ab524827b9c40c02e01112f
author Pavel Tue, 08 Apr 2008 12:13:29 +0200
committer Pavel Tue, 08 Apr 2008 12:13:29 +0200

drivers/net/wireless/winbond/winbondport/adapter.h | 14
.../net/wireless/winbond/winbondport/bssdbase.c | 82 -
drivers/net/wireless/winbond/winbondport/mto.h | 116 -
drivers/net/wireless/winbond/winbondport/smetask.c | 6
drivers/net/wireless/winbond/winbondport/wbhal.c | 72 -
drivers/net/wireless/winbond/winbondport/wbndis.c | 590 -----
.../net/wireless/winbond/winbondport/wbndis51.c | 2311 -----------------------
.../net/wireless/winbond/winbondport/wbndis51_f.h | 27
.../net/wireless/winbond/winbondport/wbndis51_s.h | 27
.../net/wireless/winbond/winbondport/wbndis_f.h | 42
.../net/wireless/winbond/winbondport/wbndis_s.h | 158 --
11 files changed, 108 insertions(+), 3337 deletions(-)

diff --git a/drivers/net/wireless/winbond/winbondport/adapter.h b/drivers/net/wireless/winbond/winbondport/adapter.h
index c5caaab..64585c5 100644
--- a/drivers/net/wireless/winbond/winbondport/adapter.h
+++ b/drivers/net/wireless/winbond/winbondport/adapter.h
@@ -5,32 +5,22 @@
#define MAX_ANSI_STRING 40
typedef struct WB32_ADAPTER
{
- u32 AdapterIndex; // 20060703.4 Add for using pAdapterContext global Adapter point
+ u32 AdapterIndex; // 20060703.4 Add for using pAdapterContext global Adapter point

WB_LOCALDESCRIPT sLocalPara; // Myself connected parameters
PWB_BSSDESCRIPTION asBSSDescriptElement;
SME_PARAMETERS sSmePara; // GUI desired/WEP parameters
SCAN_PARAMETERS sScanPara; // Myself scan parameters
- MLME_FRAME sMlmeFrame; // connect to peerSTA parameters
+ MLME_FRAME sMlmeFrame; // connect to peerSTA parameters
ROAM_PARAMETERS sRoamPara; // Roaming Module
MTO_PARAMETERS sMtoPara; // MTO_struct ...
hw_data_t sHwData; //For HAL
MDS Mds;
TESTSTA sTestSta; // For test station

- #ifdef NDIS_MINIPORT_DRIVER
- WBNDIS WbNdis;
- NDIS51_DESIRED_PARAMETER DesiredNdis51Parameter;
- #endif
-
- #ifdef WB_LINUX
WBLINUX WbLinux;
WB_STA_WPA_DESCRIPTION Global_STA_Wpa;//For WB_WPA
struct iw_statistics iw_stats;
- #endif

-
- // 20060704.1 Add for recognize
u8 LinkName[MAX_ANSI_STRING];
-
} WB32_ADAPTER, ADAPTER, *PWB32_ADAPTER, *PADAPTER;
diff --git a/drivers/net/wireless/winbond/winbondport/bssdbase.c b/drivers/net/wireless/winbond/winbondport/bssdbase.c
index 82c5095..5c4d65a 100644
--- a/drivers/net/wireless/winbond/winbondport/bssdbase.c
+++ b/drivers/net/wireless/winbond/winbondport/bssdbase.c
@@ -2102,15 +2102,8 @@ void CreateWpaIE(PWB32_ADAPTER Adapter,
// +2+pRsnWpaSubElement->AuthKeyMngtSuiteCount*(sizeof(SUITE_SELECTOR))
pRsnWpaElement->Length = 10 +2+PairwiseKeySuiteCount*(sizeof(SUITE_SELECTOR))
+2+AuthKeyMngtSuiteCount*(sizeof(SUITE_SELECTOR))
- #ifdef NDIS_MINIPORT_DRIVER
- +2;//include capability;
- #else
;//exclude capability;
- #endif
//to fill capability
- #ifdef NDIS_MINIPORT_DRIVER
- *(u16 *)(RSN_Element+pRsnWpaElement->Length) = 0;
- #endif
memcpy( &msg[*iFildOffset], pRsnWpaElement, pRsnWpaElement->Length+2 );

#ifdef _PE_TX_DUMP_
@@ -2143,21 +2136,15 @@ void CreateWpaIE(PWB32_ADAPTER Adapter,
#ifdef _WPA2_
//================================================== ========================================
//added by WS for add IE for WPA2 packet
-void CreateRsnIE(PWB32_ADAPTER Adapter,
- u16* iFildOffset,
- PUCHAR msg,
+void CreateRsnIE(PWB32_ADAPTER Adapter, u16* iFildOffset, PUCHAR msg,
struct Management_Frame* msgHeader,
- struct Association_Request_Frame_Body* msgBody,
- u16 iMSindex)
- {
-
- if ((psSME->bDesiredAuthMode==WPA2_AUTH)||(psSME->bDesiredAuthMode==WPA2PSK_AUTH))
- {
-
- u8 RSN_Element[200];
+ struct Association_Request_Frame_Body* msgBody, u16 iMSindex)
+{
+ if ((psSME->bDesiredAuthMode==WPA2_AUTH)||(psSME->bDesiredAuthMode==WPA2PSK_AUTH)) {
+ u8 RSN_Element[200];
struct WPA2_RSN_Information_Element UNALIGNED *pRsnWpa2Element;
- struct WPA2_RSN_Auth_Sub_Information_Element *pRsnWpa2SubElement;
- struct RSN_Capability_Element *CaPa;
+ struct WPA2_RSN_Auth_Sub_Information_Element *pRsnWpa2SubElement;
+ struct RSN_Capability_Element *CaPa;
struct PMKID_Information_Element * AssoReq_PMKID;
int index=0;
u32 OUItmp;
@@ -2215,44 +2202,27 @@ void CreateRsnIE(PWB32_ADAPTER Adapter,
//Fill capability
CaPa=(struct RSN_Capability_Element *)(RSN_Element+index);
//CaPa->wValue=0x0010;
- #ifdef NDIS_MINIPORT_DRIVER
- CaPa->RSN_Capability.Pre_Auth=1;
- #else
CaPa->RSN_Capability.Pre_Auth=0;
- #endif
- CaPa->RSN_Capability.No_Pairwise=0;
- CaPa->RSN_Capability.PTK_Replay_Counter=00;
- CaPa->RSN_Capability.GTK_Replay_Counter=00;
+ CaPa->RSN_Capability.No_Pairwise=0;
+ CaPa->RSN_Capability.PTK_Replay_Counter=00;
+ CaPa->RSN_Capability.GTK_Replay_Counter=00;
CaPa->RSN_Capability.Reserved1=00;
- CaPa->RSN_Capability.Reserved2=0;
+ CaPa->RSN_Capability.Reserved2=0;

index+=sizeof(struct RSN_Capability_Element);
- AssoReq_PMKID=(struct PMKID_Information_Element *)(RSN_Element+index);
+ AssoReq_PMKID=(struct PMKID_Information_Element *)(RSN_Element+index);
AssoReq_PMKID->PMKID_Count=0;
//to find pmkid for desired bssid the NIC is roaming to
- if(SearchPmkid(Adapter,msgHeader,AssoReq_PMKID))
- {
- //if(AssoReq_PMKID->PMKID_Count >16)
- // break;
- //20061011 anson's endian
- //pRsnWpa2Element->Length = 6 +2+(pRsnWpa2Element->PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
- // +2+(pRsnWpa2SubElement->AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
- pRsnWpa2Element->Length = 6 +2+(PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
- +2+(AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
- #ifdef NDIS_MINIPORT_DRIVER
- +2+2+(AssoReq_PMKID->PMKID_Count*sizeof(NDIS_802_11_PMKID_VALUE));
- #else
+ if(SearchPmkid(Adapter,msgHeader,AssoReq_PMKID)) {
+ pRsnWpa2Element->Length = 6 +2+(PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
+ +2+(AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
//TODO : sizeof(NDIS_802_11_PMKID_VALUE) = ??
- +2+2+(AssoReq_PMKID->PMKID_Count*16);
- #endif
- }
- else
- //20061011 anson's endian
- //pRsnWpa2Element->Length = 6 +2+(pRsnWpa2Element->PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
- // +2+(pRsnWpa2SubElement->AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
- pRsnWpa2Element->Length = 6 +2+(PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
- +2+(AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
- +2;
+ +2+2+(AssoReq_PMKID->PMKID_Count*16);
+ } else
+ //20061011 anson's endian
+ pRsnWpa2Element->Length = 6 +2+(PairwiseKeySuiteCount* sizeof(SUITE_SELECTOR))
+ +2+(AuthKeyMngtSuiteCount* sizeof(SUITE_SELECTOR))
+ +2;

//+2 is for Element ID and version Number
memcpy( &msg[*iFildOffset], pRsnWpa2Element, pRsnWpa2Element->Length+2 );
@@ -2263,14 +2233,11 @@ void CreateRsnIE(PWB32_ADAPTER Adapter,

//added the length of Rsn IE.
*iFildOffset +=(pRsnWpa2Element->Length+2) ;
- if (psSME->boReassoc)
- {
+ if (psSME->boReassoc) {
// fixed field length(listen interval+capability+MAC addr) = 10
psSME->AssocReqVarLen = *iFildOffset - sizeof(struct Management_Frame) - 10;
memcpy( psSME->AssocReqVarIE, msg+sizeof(struct Management_Frame)+10, psSME->AssocReqVarLen );
- }
- else
- {
+ } else {
// "-4" is for capability field and listen interval
psSME->AssocReqVarLen = *iFildOffset - sizeof(struct Management_Frame) - 4;
memcpy( psSME->AssocReqVarIE, msg+sizeof(struct Management_Frame)+4, psSME->AssocReqVarLen );
@@ -2281,8 +2248,7 @@ void CreateRsnIE(PWB32_ADAPTER Adapter,
DataDmp(psSME->AssocReqVarIE, psSME->AssocReqVarLen,0);
#endif
}
-
- }
+ }

u16 SearchPmkid(PWB32_ADAPTER Adapter,struct Management_Frame* msgHeader,struct PMKID_Information_Element * AssoReq_PMKID )
{
diff --git a/drivers/net/wireless/winbond/winbondport/mto.h b/drivers/net/wireless/winbond/winbondport/mto.h
index eb8b2fd..f47936f 100644
--- a/drivers/net/wireless/winbond/winbondport/mto.h
+++ b/drivers/net/wireless/winbond/winbondport/mto.h
@@ -11,10 +11,6 @@
#ifndef __MTO_H__
#define __MTO_H__

-// LA20040210_DTO kevin
-//#include "platform.h"
-
-//#define MTO_DEFAULT_TH_FIXANT 3
#define MTO_DEFAULT_TH_CNT 5
#define MTO_DEFAULT_TH_SQ3 112 //OLD IS 13 reference JohnXu
#define MTO_DEFAULT_TH_IDLE_SLOT 15
@@ -44,6 +40,7 @@ typedef enum {
RATE_CHGSTATE_CALCULATE = 1,
RATE_CHGSTATE_BACKOFF = 2
} TX_RATE_REDUCTION_STATE;
+
//================================================== ==========================
// struct _MTOParameters --
//
@@ -51,14 +48,14 @@ typedef enum {
//================================================== ==========================
typedef struct _MTO_PARAMETERS
{
- u8 Th_Fixant;
- u8 Th_Cnt;
- u8 Th_SQ3;
- u8 Th_IdleSlot;
+ u8 Th_Fixant;
+ u8 Th_Cnt;
+ u8 Th_SQ3;
+ u8 Th_IdleSlot;

u16 Tmr_Aging;
- u8 Th_PrInterf;
- u8 Tmr_Periodic;
+ u8 Th_PrInterf;
+ u8 Tmr_Periodic;

//--------- wkchen added -------------
u32 TxFlowCount; //to judge what kind the tx flow(sparse or busy) is
@@ -81,44 +78,44 @@ typedef struct _MTO_PARAMETERS
u16 reserved_1;
//------------------------------------------------

- u8 PowerChangeEnable;
- u8 AntDiversityEnable;
- u8 Ant_mac;
- u8 Ant_div;
+ u8 PowerChangeEnable;
+ u8 AntDiversityEnable;
+ u8 Ant_mac;
+ u8 Ant_div;

- u8 CCA_Mode;
- u8 CCA_Mode_Setup;
- u8 Preamble_Type;
- u8 PreambleChangeEnable;
+ u8 CCA_Mode;
+ u8 CCA_Mode_Setup;
+ u8 Preamble_Type;
+ u8 PreambleChangeEnable;

- u8 DataRateLevel;
- u8 DataRateChangeEnable;
- u8 FragThresholdLevel;
- u8 FragThresholdChangeEnable;
+ u8 DataRateLevel;
+ u8 DataRateChangeEnable;
+ u8 FragThresholdLevel;
+ u8 FragThresholdChangeEnable;

- u16 RTSThreshold;
- u16 RTSThreshold_Setup;
+ u16 RTSThreshold;
+ u16 RTSThreshold_Setup;

- u32 AvgIdleSlot;
- u32 Pr_Interf;
- u32 AvgGapBtwnInterf;
+ u32 AvgIdleSlot;
+ u32 Pr_Interf;
+ u32 AvgGapBtwnInterf;

- u8 RTSChangeEnable;
- u8 Ant_sel;
- u8 aging_timeout;
+ u8 RTSChangeEnable;
+ u8 Ant_sel;
+ u8 aging_timeout;
u8 reserved_2;

- u32 Cnt_Ant[2];
- u32 SQ_Ant[2];
+ u32 Cnt_Ant[2];
+ u32 SQ_Ant[2];

// 20040510 remove from globe vairable
- u32 TmrCnt;
- u32 BackoffTmr;
- TOGGLE_STATE ToggleState;
- TX_RATE_REDUCTION_STATE TxRateReductionState;
+ u32 TmrCnt;
+ u32 BackoffTmr;
+ TOGGLE_STATE ToggleState;
+ TX_RATE_REDUCTION_STATE TxRateReductionState;

- u8 Last_Rate;
- u8 Co_efficent;
+ u8 Last_Rate;
+ u8 Co_efficent;
u8 FallbackRateLevel;
u8 OfdmRateLevel;

@@ -132,19 +129,11 @@ typedef struct _MTO_PARAMETERS
} MTO_PARAMETERS, *PMTO_PARAMETERS;


-
-// LA20040210_DTO kevin
-//#define MTO_FUNC_INPUT PWB32_ADAPTER Adapter
-//#define MTO_FUNC_INPUT_DATA Adapter
-//#define MTO_DATA() (Adapter->mto_data)
-//#define MTO_HAL() (&Adapter->hw_data)
-//#define MTO_FUNC_INPUT core_data_t *pcore_data
#define MTO_FUNC_INPUT PWB32_ADAPTER Adapter
#define MTO_FUNC_INPUT_DATA Adapter
#define MTO_DATA() (Adapter->sMtoPara)
#define MTO_HAL() (&Adapter->sHwData)
#define MTO_SET_PREAMBLE_TYPE(x) // 20040511 Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x)
-//#define MTO_ENABLE (Adapter->sLocalPara.MTOExecuting) //[WKCHEN]
#define MTO_ENABLE (Adapter->sLocalPara.TxRateMode == RATE_AUTO)
#define MTO_TXPOWER_FROM_EEPROM (Adapter->sHwData.PowerIndexFromEEPROM)
#define LOCAL_ANTENNA_NO() (Adapter->sLocalPara.bAntennaNo)
@@ -159,7 +148,6 @@ #define MTO_BACKOFF_TMR() MTO_
#define MTO_LAST_RATE() MTO_DATA().Last_Rate
#define MTO_CO_EFFICENT() MTO_DATA().Co_efficent

-//#define MTO_TH_FIXANT() MTO_DATA().Th_Fixant
#define MTO_TH_CNT() MTO_DATA().Th_Cnt
#define MTO_TH_SQ3() MTO_DATA().Th_SQ3
#define MTO_TH_IDLE_SLOT() MTO_DATA().Th_IdleSlot
@@ -169,7 +157,6 @@ #define MTO_TMR_AGING() MTO_
#define MTO_TMR_PERIODIC() MTO_DATA().Tmr_Periodic

#define MTO_POWER_CHANGE_ENABLE() MTO_DATA().PowerChangeEnable
-//#define MTO_ANT_DIVERSITY_ENABLE() MTO_DATA().AntDiversityEnable
#define MTO_ANT_DIVERSITY_ENABLE() Adapter->sLocalPara.boAntennaDiversity
#define MTO_ANT_MAC() MTO_DATA().Ant_mac
#define MTO_ANT_DIVERSITY() MTO_DATA().Ant_div
@@ -203,37 +190,28 @@ #define MTO_TXFLOWCOUNT() MTO_DATA().T
#define MTOPARA_PERIODIC_CHECK_CYCLE() MTO_DATA().DTO_PeriodicCheckCycle
#define MTOPARA_RSSI_TH_FOR_ANTDIV() MTO_DATA().DTO_RssiThForAntDiv
#define MTOPARA_TXCOUNT_TH_FOR_CALC_RATE() MTO_DATA().DTO_TxCountThForCalcNewRate
-#define MTOPARA_TXRATE_INC_TH() MTO_DATA().DTO_TxRateIncTh
-#define MTOPARA_TXRATE_DEC_TH() MTO_DATA().DTO_TxRateDecTh
-#define MTOPARA_TXRATE_EQ_TH() MTO_DATA().DTO_TxRateEqTh
-#define MTOPARA_TXRATE_BACKOFF() MTO_DATA().DTO_TxRateBackOff
+#define MTOPARA_TXRATE_INC_TH() MTO_DATA().DTO_TxRateIncTh
+#define MTOPARA_TXRATE_DEC_TH() MTO_DATA().DTO_TxRateDecTh
+#define MTOPARA_TXRATE_EQ_TH() MTO_DATA().DTO_TxRateEqTh
+#define MTOPARA_TXRATE_BACKOFF() MTO_DATA().DTO_TxRateBackOff
#define MTOPARA_TXRETRYRATE_REDUCE() MTO_DATA().DTO_TxRetryRateReduce
-#define MTOPARA_TXPOWER_INDEX() MTO_DATA().DTO_TxPowerIndex
+#define MTOPARA_TXPOWER_INDEX() MTO_DATA().DTO_TxPowerIndex
//------------------------------------------------


-// LA20040210_DTO kevin
-//void MTO_Init(...);
-//void MTO_PeriodicTimerExpired(...);
-//void MTO_AgingTimerExpired(...);
-//void MTO_TxFailed(...);
-//void MTO_Interf(...);
-//void MTO_Reset(...);
-
extern u8 MTO_Data_Rate_Tbl[];
extern u16 MTO_Frag_Th_Tbl[];

-#define MTO_DATA_RATE() MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
-#define MTO_DATA_FALLBACK_RATE() MTO_Data_Rate_Tbl[MTO_FALLBACK_RATE_LEVEL()] //next level
-#define MTO_FRAG_TH() MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]
+#define MTO_DATA_RATE() MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
+#define MTO_DATA_FALLBACK_RATE() MTO_Data_Rate_Tbl[MTO_FALLBACK_RATE_LEVEL()] //next level
+#define MTO_FRAG_TH() MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]

-typedef struct{
+typedef struct {
u8 tx_rate;
u8 tx_retry_rate;
-}TXRETRY_REC;
+} TXRETRY_REC;

-typedef struct _STATISTICS_INFO
-{
+typedef struct _STATISTICS_INFO {
u32 Rate54M;
u32 Rate48M;
u32 Rate36M;
@@ -280,7 +258,7 @@ typedef struct _STATISTICS_INFO
s32 RxBytes;
s32 TxBytes;
s32 Antenna;
-}STATISTICS_INFO, *PSTATISTICS_INFO;
+} STATISTICS_INFO, *PSTATISTICS_INFO;

#endif //__MTO_H__

diff --git a/drivers/net/wireless/winbond/winbondport/smetask.c b/drivers/net/wireless/winbond/winbondport/smetask.c
index bb1caa9..782eca1 100644
--- a/drivers/net/wireless/winbond/winbondport/smetask.c
+++ b/drivers/net/wireless/winbond/winbondport/smetask.c
@@ -52,10 +52,8 @@ void vNetDisconnectInd(PWB32_ADAPTER Ada
void vSmeTimerStart(PWB32_ADAPTER Adapter, u32 timeout_value);
void vSmeTimerStop(PWB32_ADAPTER Adapter);
void vSmeTimerHandler_1a( void* Data);
-void vSmeTimerHandler( void* SystemSpecific1,
- PWB32_ADAPTER Adapter,
- void* SystemSpecific2,
- void* SystemSpecific3);
+void vSmeTimerHandler(void* SystemSpecific1, PWB32_ADAPTER Adapter,
+ void* SystemSpecific2, void* SystemSpecific3);
void TxRateHandler(PWB32_ADAPTER Adapter);

//=================== Action Function of SME Module
diff --git a/drivers/net/wireless/winbond/winbondport/wbhal.c b/drivers/net/wireless/winbond/winbondport/wbhal.c
index 663f615..f1912e0 100644
--- a/drivers/net/wireless/winbond/winbondport/wbhal.c
+++ b/drivers/net/wireless/winbond/winbondport/wbhal.c
@@ -23,19 +23,18 @@ void hal_remove_mapping_key( phw_data_t
if( OS_MEMORY_COMPARE( pmac_addr, pHwData->Key_slot[i], MAC_ADDR_LENGTH ) )
break;
}
- if( i != MAX_KEY_TABLE ) //Find the same index
- {
+ if (i != MAX_KEY_TABLE) { //Find the same index
// Clear the mac address
memset(pHwData->Key_slot[i], 0, MAC_ADDR_LENGTH);

- //Writing into register to clear the valid bit
+ // Writing into register to clear the valid bit
Wb35Reg_Write( pHwData, 0x0820, 0x0 );//Value
i<<=4;
i |= 0x4000000;
Wb35Reg_Write( pHwData, 0x081c, i );
}
}
-//---------------------------------------------------------------------------------------------------
+
void hal_remove_default_key( phw_data_t pHwData, u32 i )
{
u32 ltmp;
@@ -45,21 +44,20 @@ void hal_remove_default_key( phw_data_t
WBDEBUG(("hal_remove_default_key\n"));
#endif

- if( i < 4 ) // For default key index 0 ~ 3
- {
+ if (i < 4) { // For default key index 0 ~ 3
//Writing into register to clear the valid bit
Wb35Reg_Write( pHwData, 0x0820, 0x0 );//Value
ltmp = i<<4;
ltmp |= 0x4000000;
Wb35Reg_Write( pHwData, 0x081c, ltmp );

- OS_MEMORY_CLEAR( pHwData->Key_slot[i], MAC_ADDR_LENGTH ); // 20060214 for recover
+ memset(pHwData->Key_slot[i], 0, MAC_ADDR_LENGTH);
}
}
-//---------------------------------------------------------------------------------------------------
+
unsigned char hal_set_mapping_key( phw_data_t pHwData, PUCHAR pmac_addr, u8 null_key,
- u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc,
- u8 key_type, u8 key_len, PUCHAR pkey_data )
+ u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc,
+ u8 key_type, u8 key_len, PUCHAR pkey_data )
{
PWB35REG pWb35Reg = &pHwData->Wb35Reg;
PKEY_TABLE pKey;
@@ -100,11 +98,11 @@ unsigned char hal_set_mapping_key( phw_d

memcpy( &(pKey->DW1_Address2), pmac_addr + 2, sizeof(u32) );

- if( prx_tsc ) {
+ if (prx_tsc) {
pValue = (u8 *)pKey +8 ; //20060926 anson's endian
memcpy( pValue, prx_tsc, 6 ); //20060926 anson's endian
}
- if( ptx_tsc ) {
+ if (ptx_tsc) {
pValue = (u8 *)pKey +16; //20060926 anson's endian
memcpy( pValue, ptx_tsc, 6 ); //20060926 anson's endian
}
@@ -113,7 +111,7 @@ unsigned char hal_set_mapping_key( phw_d
memcpy( ((PUCHAR)pKey+sizeof(KEY_TABLE)), pkey_data, key_len );

j = 0xff;
- for( i=MAPPING_KEY_START_INDEX; i + for (i=MAPPING_KEY_START_INDEX; i pValue = (u8 *)pKey + 2; //20060926 anson's endian
if (!memcpy(pValue, pHwData->Key_slot[i], 6)) {
pHwData->mapping_key_replace_index = i + 1;
@@ -123,7 +121,7 @@ unsigned char hal_set_mapping_key( phw_d
}

if (!memcpy(pHwData->Key_slot[i], "\x00\x00\x00\x00\x00\x00", MAC_ADDR_LENGTH ))
- if( j == 0xff )
+ if (j == 0xff)
j = i;//Storing the index which can be used
}

@@ -176,8 +174,8 @@ unsigned char hal_set_mapping_key( phw_d
}
//---------------------------------------------------------------------------------------------------
unsigned char hal_set_default_key( phw_data_t pHwData, u8 index, u8 null_key,
- u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc,
- u8 key_type, u8 key_len, PUCHAR pkey_data )
+ u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc,
+ u8 key_type, u8 key_len, PUCHAR pkey_data )
{
PKEY_TABLE pKey;
PULONG pltmp;
@@ -365,15 +363,15 @@ void hal_set_ethernet_address( phw_data_
//Wb35Reg_BurstWrite( pHwData,0x03e8, (PULONG)pHwData->CurrentMacAddress, 2, AUTO_INCREMENT );
Wb35Reg_BurstWrite( pHwData,0x03e8, ltmp, 2, AUTO_INCREMENT ); //20060926 add by anson's endian
}
-//---------------------------------------------------------------------------------------------------
+
void hal_get_permanent_address( phw_data_t pHwData, PUCHAR pethernet_address )
{
if( pHwData->SurpriseRemove ) return;

memcpy( pethernet_address, pHwData->PermanentMacAddress, 6 );
}
-//---------------------------------------------------------------------------------------------------
-u8 hal_init_hardware( phw_data_t pHwData, PWB32_ADAPTER Adapter )
+
+u8 hal_init_hardware(phw_data_t pHwData, PWB32_ADAPTER Adapter)
{
u16 SoftwareSet;
pHwData->Adapter = Adapter;
@@ -448,7 +446,7 @@ hal_set_power_save_mode( phw_data_t pHw
//pHwData->desired_power_save = power_save;
pWb35Reg->M24_MacControl &= ~0x0200c000; //clear ps-poll and pwr active/save bits

- if( power_save ) {
+ if (power_save) {
pWb35Reg->M24_MacControl |= 0x02004000; //enable ps-poll and pwr save
} else {
// Force MAC active
@@ -504,7 +502,8 @@ void hal_set_slot_time( phw_data_t pHwDa
Wb35Reg_Write( pHwData, 0x0878, pWb35Reg->M78_ERPInformation );
}
//---------------------------------------------------------------------------------------------------
-void hal_set_rates( phw_data_t pHwData, PUCHAR pbss_rates, u8 length, unsigned char basic_rate_set )
+void hal_set_rates(phw_data_t pHwData, PUCHAR pbss_rates,
+ u8 length, unsigned char basic_rate_set )
{
PWB35REG pWb35Reg = &pHwData->Wb35Reg;
u32 tmp, tmp1;
@@ -514,28 +513,23 @@ void hal_set_rates( phw_data_t pHwData,

if( pHwData->SurpriseRemove ) return;

- if( basic_rate_set )
- {
+ if (basic_rate_set) {
pWb35Reg->M28_MacControl &= ~0x000fff00;
tmp1 = 0x00000100;
- }
- else
- {
+ } else {
pWb35Reg->M28_MacControl &= ~0xfff00000;
tmp1 = 0x00100000;
}

tmp = 0;
- for( i=0; i - {
+ for (i=0; i Byte = pbss_rates[i] & 0x7f;
- for( j=0; j<12; j++ )
- {
+ for (j=0; j<12; j++) {
if( Byte == Rate[j] )
break;
}

- if( j < 12 )
+ if (j < 12)
tmp |= (tmp1< }

@@ -547,16 +541,14 @@ void hal_set_rates( phw_data_t pHwData,
memset( SupportedRate, 0, 16 );
tmp = 0x00100000;
tmp1 = 0x00000100;
- for( i=0; i<12; i++ ) // Get the supproted rate
- {
- if( tmp & pWb35Reg->M28_MacControl )
- {
+ for (i=0; i<12; i++) { // Get the supported rate
+ if (tmp & pWb35Reg->M28_MacControl) {
SupportedRate[j] = Rate[i];

- if( tmp1 & pWb35Reg->M28_MacControl )
+ if (tmp1 & pWb35Reg->M28_MacControl)
SupportedRate[j] |= 0x80;

- if( k )
+ if (k)
Count2++;
else
Count1++;
@@ -564,8 +556,7 @@ void hal_set_rates( phw_data_t pHwData,
j++;
}

- if( i==4 && k==0 )
- {
+ if (i==4 && k==0) {
if( !(pWb35Reg->M28_MacControl & 0x000ff000) ) // if basic rate in 11g domain)
{
k = 1;
@@ -580,7 +571,7 @@ void hal_set_rates( phw_data_t pHwData,
// Fill data into support rate until buffer full
//---20060926 add by anson's endian
for (i=0; i<4; i++)
- *(PULONG)(SupportedRate+(i<<2)) = cpu_to_le32( *(PULONG)(SupportedRate+(i<<2)) );
+ *(PULONG)(SupportedRate+(i<<2)) = cpu_to_le32( *(PULONG)(SupportedRate+(i<<2)) );
//--- end 20060926 add by anson's endian
Wb35Reg_BurstWrite( pHwData,0x087c, (PULONG)SupportedRate, 4, AUTO_INCREMENT );
pWb35Reg->M7C_MacControl = ((PULONG)SupportedRate)[0];
@@ -617,7 +608,6 @@ void hal_start_bss( phw_data_t pHwData,
void hal_join_request( phw_data_t pHwData, u8 bss_type )
{
PWB35REG pWb35Reg = &pHwData->Wb35Reg;
-// PWB32_ADAPTER Adapter=pHwData->Adapter;

if( pHwData->SurpriseRemove ) return;

diff --git a/drivers/net/wireless/winbond/winbondport/wbndis.c b/drivers/net/wireless/winbond/winbondport/wbndis.c
index 36013b7..3bab529 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis.c
+++ b/drivers/net/wireless/winbond/winbondport/wbndis.c
@@ -1,589 +1 @@
-#include "os_common.h"
-
-#ifdef NDIS51_MINIPORT
-void
-WBNDIS_PnPNotify( PADAPTER Adapter, NDIS_DEVICE_PNP_EVENT PnPEvent, void* InformationBuffer, u32 InformationBufferLength )
-{
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("====> MPPnPEventNotify\n"));
- #endif
-
- switch (PnPEvent)
- {
- case NdisDevicePnPEventQueryRemoved:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventQueryRemoved\n"));
- #endif
- break;
-
- case NdisDevicePnPEventRemoved:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventRemoved\n"));
- #endif
- break;
-
- case NdisDevicePnPEventSurpriseRemoved:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventSurpriseRemoved\n"));
- #endif
- break;
-
- case NdisDevicePnPEventQueryStopped:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventQueryStopped\n"));
- #endif
- break;
-
- case NdisDevicePnPEventStopped:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventStopped\n"));
- #endif
- break;
-
- case NdisDevicePnPEventPowerProfileChanged:
-// WBDEBUG(("Wb32PnPNotify: NdisDevicePnPEventPowerProfileChanged\n"));
- #ifdef _PE_STATE_DUMP_
- if( *(PULONG)InformationBuffer == NdisPowerProfileAcOnLine )
- WBDEBUG(("Wb32PnPNotify: NdisPowerProfileAcOnLine\n"));
- if( *(PULONG)InformationBuffer == NdisPowerProfileBattery )
- WBDEBUG(("Wb32PnPNotify: NdisPowerProfileBattery\n"));
- #endif
- break;
-
- default:
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Wb32PnPNotify: unknown PnP event %x \n", PnPEvent));
- #endif
- break;
- }
-}
-#endif
-
-//================================================== =========================
-// WBNDIS_SendPackets --
-//
-// Description:
-// The WBNDIS_SendPackets request instructs a driver to transmit packets
-// through the adapter onto the medium.
-//
-// Arguments:
-// MiniportAdapterContext - Context registered with the wrapper, really
-// a pointer to the adapter.
-// PacketArray - A pointer to the packet array that is to be
-// transmitted.
-// NumberOfPackets - The number of pointers to packet descriptors
-// at PacketArray.
-//
-//================================================== =========================
-void
-WBNDIS_SendPackets( NDIS_HANDLE MiniportAdapterContext,
- PPNDIS_PACKET PacketArray,
- u32 NumberOfPackets )
-{
- PADAPTER Adapter = (PADAPTER)MiniportAdapterContext;
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- PNDIS_PACKET pNdisPacket;
- PNDIS_BUFFER pNdisPacketBuffer;
- PUCHAR pBufAddress;
- u32 i;
- u32 NdisPacketBufferCount, NdisPacketSize, buf_size;
-
-
- //
- // Fill information into reserved space
- //
- for( i=0; i - {
- pNdisPacket = PacketArray[i];
- NdisQueryPacket( pNdisPacket, NULL, &NdisPacketBufferCount, &pNdisPacketBuffer, &NdisPacketSize);
-
- //931130.5.q
- if( !NdisPacketSize )
- {
- #ifdef _PE_TX_DUMP_
- WBDEBUG(("Ndis packet error [%d] = %d\n", NdisPacketBufferCount, NdisPacketSize ));
- #endif
- NDIS_SET_PACKET_STATUS( pNdisPacket, NDIS_STATUS_FAILURE );
- NdisMSendComplete( Adapter->WbNdis.MiniportAdapterHandle, pNdisPacket, NDIS_STATUS_FAILURE);
- #ifdef _PE_TX_DUMP_
- WBDEBUG(("!NdisPacketSize || (NdisPacketBufferCount>(MAX_DESCRIPTOR_BUFFER_INDEX-2))\n"));
- #endif
- }
- else
- {
- NDIS_SET_PACKET_STATUS( pNdisPacket, NDIS_STATUS_PENDING );
-
- // Modify the follow for the number of buffer is larger than MAX_DESCRIPTOR_BUFFER_INDEX
- // WBNDIS_GetNextPacket will copy the packet buffer into transmitting buffer directly
- RESERVED(pNdisPacket)->pNdisPacketBuffer = NULL;
- if( !(NdisPacketBufferCount>(MAX_DESCRIPTOR_BUFFER_INDEX-2)) )
- RESERVED(pNdisPacket)->pNdisPacketBuffer = pNdisPacketBuffer;
- RESERVED(pNdisPacket)->NdisPacketSize = (u16)NdisPacketSize;
-
- // Frame type acknowledgement
- // //931130.5.r
- #ifdef NDIS51_MINIPORT
- NdisQueryBufferSafe( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size, HighPagePriority );
- #else
- NdisQueryBuffer( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size );
- #endif
-/*
- //[WK DUMP]
- WBDEBUG(("New packet =%x\n", pNdisPacket));
- #ifdef _PE_TX_DUMP_
- {
- PNDIS_BUFFER pPacketBuffer;
- PUCHAR pBufAddr;
- u32 PacketSize, buf_size1;
-
- //[WK DUMP]
- pPacketBuffer = pNdisPacketBuffer;
- PacketSize = NdisPacketSize;
- WBDEBUG(("=== DUMP 802.3 TX Buff ===\n"));
- WBDEBUG(("Size =%d\n", PacketSize));
- while( pPacketBuffer )
- {
- // Get the address and length of the first buffer
- #ifdef NDIS51_MINIPORT// PD43 20030430 920428.3
- NdisQueryBufferSafe( pPacketBuffer, (void* *) &pBufAddr, &buf_size1, HighPagePriority );
- #else
- NdisQueryBuffer( pPacketBuffer, (void* *) &pBufAddr, &buf_size1 );
- #endif
- DataDmp( pBufAddr, buf_size1, 0);
- NdisGetNextBuffer( pPacketBuffer, &pPacketBuffer);
- }
- }
- #endif
-*/
- //
- // Can be sent now?
- //
- if( pWbNdis->shutdown || !CURRENT_LINK_ON ||
- (
- #ifdef _WPA2_
- CURRENT_DESIRED_WPA2_ENABLE &&
- #endif //end def _WPA2_
- CURRENT_DESIRED_WPA_ENABLE && CURRENT_CONTROL_PORT_BLOCK && (*(PUSHORT)(pBufAddress+12) != cpu_to_le16(0x8e88)) ) || \
- ((psLOCAL->RadioOffStatus.boHwRadioOff == TRUE) || (psLOCAL->RadioOffStatus.boSwRadioOff == TRUE)) )
- {
- NDIS_SET_PACKET_STATUS( pNdisPacket, NDIS_STATUS_FAILURE );
- NdisMSendComplete( Adapter->WbNdis.MiniportAdapterHandle, pNdisPacket, NDIS_STATUS_FAILURE);
- #ifdef _PE_TX_DUMP_
- WBDEBUG(("CURRENT_LINK_OFF + Block\n"));
- #endif
- }
- else
- {
- //
- // Queuing the ndis packet
- //
- OS_SPIN_LOCK_ACQUIRED( &pWbNdis->SpinLock );
- RESERVED(pNdisPacket)->Next = NULL;
-
- if( pWbNdis->first_packet==NULL)
- pWbNdis->first_packet = pNdisPacket;
- else
- RESERVED(pWbNdis->last_packet)->Next = pNdisPacket;
-
- pWbNdis->last_packet = pNdisPacket;
- Adapter->sLocalPara._NumTxMSDU++;
- OS_SPIN_LOCK_RELEASED( &pWbNdis->SpinLock );
- }
- }
- }
-
- //
- // Start to transmit
- //
- Mds_Tx( Adapter );
-}
-
-
-//931130.5.s
-void
-WBNDIS_GetNextPacket( PADAPTER Adapter, PDESCRIPTOR pDes )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- PNDIS_PACKET pNdisPacket;
- PNDIS_BUFFER pNdisPacketBuffer;
- PUCHAR pBufAddress, pTgtBufAddress;
- u32 NdisPacketBufferCount, NdisPacketSize, buf_size;
- u8 first_in;
-
-
- //Get a Ndis packet to transmit
- OS_SPIN_LOCK_ACQUIRED(&pWbNdis->SpinLock);
- pNdisPacket = pWbNdis->first_packet;
- if( pNdisPacket == pWbNdis->last_packet )
- pWbNdis->last_packet = NULL;
- pWbNdis->first_packet = RESERVED(pWbNdis->first_packet)->Next;
- OS_SPIN_LOCK_RELEASED(&pWbNdis->SpinLock);//Release spinlock
-
- //================================================== ==============================
- // Fill the related information into descriptor //
- //================================================== ==============================
- pWbNdis->TxByteCount += RESERVED(pNdisPacket)->NdisPacketSize; // 940803 Add
-
- pWbNdis->packet_return = pNdisPacket;
- if( RESERVED(pNdisPacket)->pNdisPacketBuffer )
- {
- pNdisPacketBuffer = RESERVED(pNdisPacket)->pNdisPacketBuffer;
-
- //Add buffer
- first_in = 0;
- while( pNdisPacketBuffer )
- {
- // Get the address and length of the first buffer
- #ifdef NDIS51_MINIPORT// PD43 20030430 920428.3
- NdisQueryBufferSafe( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size, HighPagePriority );
- #else
- NdisQueryBuffer( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size );
- #endif
-
- #ifdef _PE_TX_DUMP_
- //[WK DUMP]
- //WBDEBUG(("=== DUMP TX PACKET ===\n"));
- //DataDmp( pBufAddress, buf_size, 0);
- #endif
-
- //931130.5.t
- // +------------+
- // | header + 2 | <-- DA + SA + T/L
- // +------------+
- // +-------------------------------+
- // | data |
- // +-------------------------------+
- // :
- // :
- //
- if( first_in == 0 )
- {
- //931130.5.u
- if( buf_size < (DOT_3_TYPE_OFFSET+2) )
- {
- #ifdef _PE_RX_DUMP_
- WBDEBUG(("First buffer of Ndis Packet too small\n"));
- #endif
- NDIS_SET_PACKET_STATUS( pNdisPacket, NDIS_STATUS_FAILURE );
- NdisMSendComplete( Adapter->WbNdis.MiniportAdapterHandle, pNdisPacket, NDIS_STATUS_FAILURE);
- pWbNdis->packet_return = NULL;
- return;
- }
-
- DESCRIPTOR_ADD_BUFFER( pDes, pBufAddress, DOT_3_TYPE_OFFSET+2 );
-
- buf_size -= (DOT_3_TYPE_OFFSET+2);
- pBufAddress += (DOT_3_TYPE_OFFSET+2);
- first_in = 1;
- }
-
- if( buf_size )// Add the left data 931130.5.v
- DESCRIPTOR_ADD_BUFFER( pDes, pBufAddress, (u16)buf_size );
-
- //Get the next ndis packet buffer
- NdisGetNextBuffer( pNdisPacketBuffer, &pNdisPacketBuffer);
- }
- }
- else
- {
- // Copy frame into temp buffer due to too many piece of buffer
- NdisQueryPacket( pNdisPacket, NULL, &NdisPacketBufferCount, &pNdisPacketBuffer, &NdisPacketSize);
- pTgtBufAddress = pWbNdis->NdisBufferTmp;
-
- // Copy buffer
- while( pNdisPacketBuffer )
- {
- // Get the address and length of the first buffer
- #ifdef NDIS51_MINIPORT// PD43 20030430 920428.3
- NdisQueryBufferSafe( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size, HighPagePriority );
- #else
- NdisQueryBuffer( pNdisPacketBuffer, (void* *) &pBufAddress, &buf_size );
- #endif
-
- memcpy( pTgtBufAddress, pBufAddress, buf_size );
- pTgtBufAddress += buf_size;
-
- //Get the next ndis packet buffer
- NdisGetNextBuffer( pNdisPacketBuffer, &pNdisPacketBuffer);
- }
-
- // Add buffer
- DESCRIPTOR_ADD_BUFFER( pDes, pWbNdis->NdisBufferTmp, DOT_3_TYPE_OFFSET+2 );
- DESCRIPTOR_ADD_BUFFER( pDes, pWbNdis->NdisBufferTmp+DOT_3_TYPE_OFFSET+2, NdisPacketSize - (DOT_3_TYPE_OFFSET+2) );
- }
-}
-
-void WBNDIS_GetNextPacketCompleted( PADAPTER Adapter, PDESCRIPTOR pDes )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- PNDIS_PACKET pNdisPacket;
-
- //
- // Return the send result to NDIS
- //
- pNdisPacket = pWbNdis->packet_return;
- if( !pNdisPacket )
- {
- #ifdef _PE_TX_DUMP_
- WBDEBUG(("WBNDIS Tx null point error\n"));
- #endif
- return;
- }
-
- //In 2m_wlan_wep of HCT test, if the key is removed, the transmitting data should
- //still return "success". Or this test item will be failed.
- //[WK DUMP]
- //WBDEBUG(("Packet tx completely. addr =%x\n", pNdisPacket));
- NdisMSendComplete( Adapter->WbNdis.MiniportAdapterHandle,
- pNdisPacket,
- NDIS_STATUS_SUCCESS );
- MIB_GS_XMIT_OK_INC;
- pWbNdis->packet_return = NULL;
-}
-
-void
-WBNDIS_stop( PADAPTER Adapter )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- PNDIS_PACKET pNdisPacket;
-
-
- if( OS_ATOMIC_INC( Adapter, &pWbNdis->ThreadCount ) == 1 )
- {
- // Shutdown module immediately
- pWbNdis->shutdown = 1;
-
- // Return all the ndis packet handle in sending queue
- OS_SPIN_LOCK_ACQUIRED(&pWbNdis->SpinLock);
- while( pWbNdis->first_packet != NULL )
- {
- // Update queue point before exit spin-lock protect
- pNdisPacket = pWbNdis->first_packet;
- pWbNdis->first_packet = RESERVED(pWbNdis->first_packet)->Next;
- OS_SPIN_LOCK_RELEASED(&pWbNdis->SpinLock);//release spinlock
- NdisMSendComplete( Adapter->WbNdis.MiniportAdapterHandle,
- pNdisPacket,
- NDIS_STATUS_FAILURE );
- OS_SPIN_LOCK_ACQUIRED(&pWbNdis->SpinLock);
- }
- pWbNdis->last_packet = NULL;
- OS_SPIN_LOCK_RELEASED(&pWbNdis->SpinLock);//release spinlock
- }
-
- OS_ATOMIC_DEC( Adapter, &pWbNdis->ThreadCount );
-}
-
-void
-WBNDIS_Destroy( PADAPTER Adapter )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- u32 i;
- unsigned char Cancel;
-
-
- WBNDIS_stop( Adapter );
-// OS_SLEEP(10000);
-
- //================================================== ====================
- // Release the Rx NDIS resource
- //================================================== ====================
- if( pWbNdis->NdisBufferPoolOk )// Free NDIS buffer pool handle
- NdisFreeBufferPool( pWbNdis->BufferPoolHandle );
-
- for( i=0; iPacketAllocateCount; i++ ) // Free NDIS packet
- NdisFreePacket( pWbNdis->ReceivePacket[i] );
-
- if( pWbNdis->NdisPacketPoolOk )
- NdisFreePacketPool( pWbNdis->PacketPoolHandle );// Free NDIS packet pool handle
-
- OS_SPIN_LOCK_FREE( &pWbNdis->SpinLock );
-
- OS_TIMER_CANCEL( &pWbNdis->TxRateTimer, &Cancel );
-}
-
-
-
-unsigned char
-WBNDIS_Initial( PADAPTER Adapter, NDIS_HANDLE MiniportAdapterHandle )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- NDIS_STATUS status;
- u8 i;
-
- do
- {
- pWbNdis->MiniportAdapterHandle = MiniportAdapterHandle;// Saving the Adapter Handler
- pWbNdis->connect_status = NDIS_STATUS_MEDIA_DISCONNECT; // Media disconnect
-
- OS_SPIN_LOCK_ALLOCATE( &pWbNdis->SpinLock );
-
- // Allocate ndis packet pool handle
- NdisAllocatePacketPool( &status, &pWbNdis->PacketPoolHandle, ETHERNET_RX_DESCRIPTORS, 16 );
- if( status != NDIS_STATUS_SUCCESS )
- break;
- pWbNdis->NdisPacketPoolOk = 1;
-
- // Allocate ndis packet
- for( i=0; i - {
- NdisAllocatePacket( &status, &pWbNdis->ReceivePacket[i], pWbNdis->PacketPoolHandle );
- if( status != NDIS_STATUS_SUCCESS)
- break;
- NDIS_SET_PACKET_HEADER_SIZE( pWbNdis->ReceivePacket[i], 14 );
- }
- pWbNdis->PacketAllocateCount = i;
- if( i != ETHERNET_RX_DESCRIPTORS )
- break;
-
- // Allocate ndis bufer pool
- NdisAllocateBufferPool( &status, &pWbNdis->BufferPoolHandle, ETHERNET_RX_DESCRIPTORS );
- if( status != NDIS_STATUS_SUCCESS )
- break;
- pWbNdis->NdisBufferPoolOk = 1;
-
- // Allocate timer for Tx rate show
- pWbNdis->TxRateShowResult = RATE_1M;
- OS_TIMER_INITIAL( &pWbNdis->TxRateTimer, WbNdis_TxRateShow, Adapter );
- OS_TIMER_SET( &pWbNdis->TxRateTimer, 5000 );
-
- return TRUE;
-
- }while(FALSE);
-
- return FALSE;
-}
-
-void
-WBNDIS_ReceivePacket( PADAPTER Adapter, PRXLAYER1 pRxLayer1 )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
- PNDIS_PACKET pNdisPacket;
- PNDIS_BUFFER pBufferHandle;
- NDIS_STATUS BufStatus;
- PUCHAR BufAddr;
- u32 ByteCount = 0;
- u16 BufSize;
- u8 BufIndex;
- u8 i;
-
-/* if( pRxLayer1->BufferNumber == 1 )
- {
- BufIndex = pRxLayer1->BufferQueue[0].BufferIndex;
- BufSize = pRxLayer1->BufferQueue[0].BufferSize;
- BufAddr = pRxLayer1->BufferQueue[0].pBufferAddress;
-
- NdisMEthIndicateReceive( Adapter->WbNdis.MiniportAdapterHandle,
- NULL,
- BufAddr,
- 14,
- BufAddr + 14,
- BufSize - 14,
- BufSize );
- NdisMEthIndicateReceiveComplete( Adapter->WbNdis.MiniportAdapterHandle );
- }
- else
- {*/
- for( i=0; iBufferNumber; i++ )
- {
- BufIndex = pRxLayer1->BufferQueue[i].BufferIndex;
- BufSize = pRxLayer1->BufferQueue[i].BufferSize;
- BufAddr = pRxLayer1->BufferQueue[i].pBufferAddress;
- ByteCount += BufSize;
-
- NdisAllocateBuffer( &BufStatus,
- &Adapter->WbNdis.ReceiveBuffer[BufIndex],
- Adapter->WbNdis.BufferPoolHandle,
- (void*)BufAddr,
- BufSize);
-
- if( BufStatus == NDIS_STATUS_SUCCESS )
- {
- if( i == 0 )
- {
- pNdisPacket = Adapter->WbNdis.ReceivePacket[BufIndex];//Get the ndis packet handle
- }
- NdisChainBufferAtBack( pNdisPacket, Adapter->WbNdis.ReceiveBuffer[BufIndex] );
- }
- }
-
- pWbNdis->RxByteCount += ByteCount; // 940803 Add
-
- // Indicate to NDIS
- NDIS_SET_PACKET_STATUS( pNdisPacket, NDIS_STATUS_RESOURCES );
- NdisMIndicateReceivePacket( Adapter->WbNdis.MiniportAdapterHandle, &pNdisPacket, 1) ;
-
- // DeAllocate the NDIS buffer
- for( i=0; iBufferNumber; i++ )
- {
- NdisUnchainBufferAtBack(Adapter->WbNdis.ReceivePacket[0], &pBufferHandle);
-
- if( pBufferHandle ) NdisFreeBuffer(pBufferHandle);
- }
-// }
-}
-
-
-void WbNdis_TxRateShow( void* S1, PADAPTER Adapter, void* S3, void* S4 )
-{
- PWBNDIS pWbNdis = &Adapter->WbNdis;
-
- if( CURRENT_LINK_ON )
- {
- if( ((pWbNdis->TxByteCount - pWbNdis->TxByteCount_last) == 0 ) &&
- ( Adapter->sLocalPara.TxRateMode == RATE_AUTO ) )
- pWbNdis->TxRateShowResult = psLOCAL->SRateSet[psLOCAL->NumOfSRate - 1]; // Get the maximum of Tx rate; // No traffic
- else
- pWbNdis->TxRateShowResult = psLOCAL->CurrentTxRate;
-
- pWbNdis->TxByteCount_last = pWbNdis->TxByteCount;
- }
- else
- pWbNdis->TxRateShowResult = RATE_1M;
-
- // 20060317 The variable maybe set to 0 due to Radio On/Off. Ignore the condition here
-// if( !pWbNdis->shutdown )
- OS_TIMER_SET( &pWbNdis->TxRateTimer, 5000 ); // 5 sec
-}
-
-void WBNDIS_ConnectStatus( PADAPTER Adapter, u32 flag )
-{
- Adapter->WbNdis.connect_status = NDIS_STATUS_MEDIA_DISCONNECT;
- if( flag == OS_CONNECTED )
- Adapter->WbNdis.connect_status = NDIS_STATUS_MEDIA_CONNECT;
-
- NdisMIndicateStatus( Adapter->WbNdis.MiniportAdapterHandle,
- Adapter->WbNdis.connect_status,
- NULL, 0 );
- NdisMIndicateStatusComplete( Adapter->WbNdis.MiniportAdapterHandle );
-}
-
-#ifdef NDIS50_MINIPORT
-void WbInitializeString( PNDIS_STRING DestinationString, PUCHAR SourceString )
-{
- u16 i, len;
-
- len = (u16)strlen( SourceString );
- if ((OS_MEMORY_ALLOC( (void* *)&DestinationString->Buffer, 100 ) != 1) || // 100 byte maximum
- (len >= 50 ) )
- {
- DestinationString->MaximumLength = 0;
- DestinationString->Length = 0;
- return;
- }
-
- OS_MEMORY_CLEAR( DestinationString->Buffer, 100 );
- DestinationString->MaximumLength = 100/2;
- DestinationString->Length = len*2;
- for( i=0; i - DestinationString->Buffer[i] = SourceString[i];
-}
-
-void WbFreeString( NDIS_STRING String)
-{
- kfree(String.Buffer);
- String.Buffer = NULL;
-}
-#endif
-
-
-
+/* No more Window$ c0d3 */
diff --git a/drivers/net/wireless/winbond/winbondport/wbndis51.c b/drivers/net/wireless/winbond/winbondport/wbndis51.c
index 4da4f54..db124b9 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis51.c
+++ b/drivers/net/wireless/winbond/winbondport/wbndis51.c
@@ -1,2310 +1 @@
-//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++
-// wbndis51.c
-//
-// history :
-//
-// Description:
-// Implement the incremental OIDs in NIDS5.1
-//
-//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++
-#include "os_common.h"
-
-/*-------------------- Local function definition ---------------------------*/
-void drv_translate_bss_ex( PWB32_ADAPTER Adapter, NDIS_WLAN_BSSID_EX *pndis_bss, bss_desc_tt *pbss );
-void NetworkTypeConvert(PNDIS_802_11_NETWORK_TYPE pNetworkType, u8 band);
-void ChannelNumToFreq(u8 NetworkType, u8 ChannelNumber, u32 *freq);
-u8* get_name_of_region(WLAN_REGION_CODE region);
-//u32* get_channels_of_region(WLAN_REGION_CODE region);
-u16 ChanNo2String(u8 ChNo, u8 * Str);
-
-// 20040114.3 Add
-void WbNdis51_initial( PWB32_ADAPTER Adapter )
-{
- PNDIS51_DESIRED_PARAMETER pN51 = &Adapter->DesiredNdis51Parameter;
-
- NdisMInitializeTimer( &pN51->scan_sync_timer,
- Adapter->WbNdis.MiniportAdapterHandle,
- WbNdis51_oid_sync,
- Adapter);
-
- NdisMInitializeTimer( &pN51->Connect_timer,
- Adapter->WbNdis.MiniportAdapterHandle,
- WbNdis51_connect,
- Adapter);
-
- // Modify to 2sec due to First disconnect event will be indicated
- NdisMSetTimer( &pN51->scan_sync_timer, 2000 );
-
- if( !psSCAN->BScanEnable )
- NdisMSetTimer( &pN51->Connect_timer, 1000 );
-}
-void WbNdis51_destroy( PWB32_ADAPTER Adapter )
-{
- PNDIS51_DESIRED_PARAMETER pN51 = &Adapter->DesiredNdis51Parameter;
- unsigned char cancel;
-
- NdisMCancelTimer( &pN51->scan_sync_timer, &cancel );
- if( !psSCAN->BScanEnable ) NdisMCancelTimer( &pN51->Connect_timer, &cancel );
-}
-void WbNdis51_connect( void* s1, PWB32_ADAPTER Adapter, void* s3, void* s4 )
-{
- PNDIS51_DESIRED_PARAMETER pN51 = &Adapter->DesiredNdis51Parameter;
-
- if( pN51->ConnectCount )
- {
- if( CURRENT_LINK_ON )
- {
- pN51->ConnectCount = 0;
- pN51->ConnectInterval = 0;
- }
- else
- {
- pN51->ConnectInterval--;
- if( pN51->ConnectInterval <= 0 )
- {
- sme_set_desired_ssid( Adapter, pN51->CurrentSSID, (u8)pN51->CurrentSSIDLength );
- pN51->ConnectCount = 0;
- }
- }
- }
-
- NdisMSetTimer( &pN51->Connect_timer, 1000 );
-}
-
-void WbNdis51_oid_sync( void* s1, PWB32_ADAPTER Adapter, void* s3, void* s4 )
-{
- PNDIS51_DESIRED_PARAMETER pN51 = &Adapter->DesiredNdis51Parameter;
-
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("BG scan sec = %d\n", pN51->sync_count ));
- #endif
-
- //Periodically query the h/w radio status
- CheckHwRadioStatus( Adapter );
-
- if( pN51->sync_scan_require )
- {
- if (((u32)Adapter->WbNdis.connect_status != (u32)NDIS_STATUS_MEDIA_CONNECT) ||
- (Adapter->Mds.TxToggle == FALSE))
- {
- if ((pN51->sync_count >= 60) || (pN51->sync_count <= 66))
- psSCAN->ScanTimeStamp++;//background scan
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Issue scanning\n"));
- #endif
- sme_set_bssid_list_scan(Adapter,NULL);
- //to update pmkid table in OS
- #ifdef _WPA2_
- if(psSME->wpa_ok && psSME->bDesiredAuthMode==WPA2PSK_AUTH)
- OS_PMKID_STATUS_EVENT( Adapter );
- #endif //end def _WPA2_
- }
-
- pN51->sync_count = 0;
-
- pN51->sync_scan_require = 0;
- }
-
- pN51->sync_count += 2;
-
- //FUNK software won't issue scanning per 60 sec.
- if( !TS_RUNNING_IN_TESTSTA_MODE )
- {
- if( (pN51->sync_count == 66) && psSCAN->BScanEnable )
- pN51->sync_scan_require = 1;//Enfore to issue background scanning
- }
-
- Adapter->Mds.TxToggle = FALSE; //move from roamtask.c to clear.
- //2 seconds later it will be true if there is any tx activity.
- //If it is still false, the scan is permitted. [20050706]
-
- NdisMSetTimer( &pN51->scan_sync_timer, 2000 );
-}
-
-//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++//
-NDIS_STATUS Ndis51QueryInformation( PWB32_ADAPTER pcore_data,
- NDIS_OID Oid,
- void* InformationBuffer,
- u32 InformationBufferLength,
- PULONG pMoveBytes)
-{
- u8 count,j;
- NDIS_STATUS ret = NDIS_STATUS_SUCCESS;
- u32 bytes_needed;
- PWB32_ADAPTER Adapter = pcore_data;
-
- #ifdef _PE_OID_DUMP_
- DbgPrintfOID51(Oid, TRUE);
- #endif
- switch(Oid)
- {
- /* The follow OID must be supported ++++++++++++++++++++++++++++++++++++*/
-
- case OID_GEN_PHYSICAL_MEDIUM:
-
- bytes_needed = sizeof(NDIS_PHYSICAL_MEDIUM);
-
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_PHYSICAL_MEDIUM pPhysMedia = (PNDIS_PHYSICAL_MEDIUM)InformationBuffer;
- *pPhysMedia = NdisPhysicalMediumWirelessLan;
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_BSSID:
-
- bytes_needed = 6;
-
- if(bytes_needed <= InformationBufferLength)
- {
- if (sme_get_bssid(pcore_data, InformationBuffer) < 0)
- {
- ret = NDIS_STATUS_ADAPTER_NOT_READY;
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_SSID:
-
- bytes_needed = sizeof(NDIS_802_11_SSID);
-
- if (bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_SSID p;
-
- p = (PNDIS_802_11_SSID) InformationBuffer;
-
- p->SsidLength = 0;
- sme_get_ssid(pcore_data, p->Ssid, (u8 *)&(p->SsidLength));
- #ifdef _PE_OID_DUMP_
- {
- u8 ssid[50];
-
- memcpy(ssid, (u8 *)p->Ssid, (u8)p->SsidLength);
- ssid[p->SsidLength] = '\0';
- WBDEBUG(("GET ssid=%s\n", ssid));
- }
- #endif
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_NETWORK_TYPES_SUPPORTED:
-
- bytes_needed = sizeof(NDIS_802_11_NETWORK_TYPE_LIST);
- switch (psLOCAL->bMacOperationMode)
- {
- case MODE_802_11_A:
- case MODE_802_11_B:
- break;
- case MODE_802_11_ABG:
- bytes_needed += (sizeof(NDIS_802_11_NETWORK_TYPE)*2);
- break;
- default:
- bytes_needed += sizeof(NDIS_802_11_NETWORK_TYPE);
- break;
- }
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_NETWORK_TYPE_LIST p;
- u32 tmpp = 0;
-
- tmpp = sizeof(NDIS_802_11_NETWORK_TYPE);
- p = (PNDIS_802_11_NETWORK_TYPE_LIST) InformationBuffer;
- if (psLOCAL->bMacOperationMode == MODE_802_11_A)
- {
- p->NumberOfItems = 1;
- p->NetworkType[0] = Ndis802_11OFDM5;
- }
- else if (psLOCAL->bMacOperationMode == MODE_802_11_ABG)
- {
- p->NumberOfItems = 3;
- p->NetworkType[0] = Ndis802_11DS;
- p->NetworkType[1] = Ndis802_11OFDM5;
- p->NetworkType[2] = Ndis802_11OFDM24;
- }
- else if (psLOCAL->bMacOperationMode == MODE_802_11_B)
- {
- p->NumberOfItems = 1;
- p->NetworkType[0] = Ndis802_11DS;
- }
- else
- {
- p->NumberOfItems = 2;
- p->NetworkType[0] = Ndis802_11DS;
- p->NetworkType[1] = Ndis802_11OFDM24;
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_NETWORK_TYPE_IN_USE:
-
- bytes_needed = sizeof(NDIS_802_11_NETWORK_TYPE);
-
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_NETWORK_TYPE p;
- u8 BandType;
-
- p = (PNDIS_802_11_NETWORK_TYPE) InformationBuffer;
-
- sme_get_network_type_in_use(pcore_data, &BandType);
- NetworkTypeConvert(p, BandType);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_RSSI:
-
- bytes_needed = sizeof(NDIS_802_11_RSSI);
-
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_RSSI *p;
-
- p = (NDIS_802_11_RSSI *) InformationBuffer;
- sme_get_rssi(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_INFRASTRUCTURE_MODE:
-
- bytes_needed = sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE);
-
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_NETWORK_INFRASTRUCTURE p;
- u8 bss_type;
-
- p = (PNDIS_802_11_NETWORK_INFRASTRUCTURE) InformationBuffer;
-
- *p = Ndis802_11AutoUnknown;// Default value setting
- if (sme_get_bss_type(pcore_data, &bss_type) != -1)
- {
- if(bss_type == ESS_NET)
- *p = Ndis802_11Infrastructure;
- else if(bss_type == IBSS_NET)
- *p = Ndis802_11IBSS;
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_FRAGMENTATION_THRESHOLD:
-
- bytes_needed = sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD);
-
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_FRAGMENTATION_THRESHOLD *p;
-
- p = (NDIS_802_11_FRAGMENTATION_THRESHOLD *) InformationBuffer;
- sme_get_fragment_threshold(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_RTS_THRESHOLD:
-
- bytes_needed = sizeof(NDIS_802_11_RTS_THRESHOLD);
-
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_RTS_THRESHOLD *p;
-
- p = (NDIS_802_11_RTS_THRESHOLD *) InformationBuffer;
- sme_get_rts_threshold(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_SUPPORTED_RATES:
-
- bytes_needed = 8;
-
- if(bytes_needed <= InformationBufferLength)
- {
- PUCHAR p;
-
- //The size of NDIS_802_11_RATES is 8 bytes
- p = (PUCHAR) InformationBuffer;
- p[0] = 0x82; // Basic and operating rate for 1Mbps
- p[1] = 0x84; // Basic and operating rate for 2Mbps
- p[2] = 0x8b; // Basic and operating rate for 5.5Mbps
- p[3] = 0x96; // Basic and operating rate for 11Mbps
- p[4] = 0x00; // End
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CONFIGURATION:
-
- bytes_needed = sizeof(NDIS_802_11_CONFIGURATION);
-
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_CONFIGURATION p;
- u8 current_channel, current_band;
- NDIS_802_11_NETWORK_TYPE NetworkType;
- u32 channel_freq = 0;
-
- p = (PNDIS_802_11_CONFIGURATION) InformationBuffer;
- p->Length = sizeof(NDIS_802_11_CONFIGURATION);
- // PD43 20030530
- p->BeaconPeriod = 0;
- sme_get_beacon_period(pcore_data, (u16 *)&(p->BeaconPeriod));
- // PD43 20030530
- p->ATIMWindow = 0;
- sme_get_atim_window(pcore_data, (u16 *)&(p->ATIMWindow));
- sme_get_current_channel(pcore_data, &current_channel);
- sme_get_current_band(pcore_data, &current_band);
- NetworkTypeConvert(&NetworkType, current_band);
- ChannelNumToFreq( (u8)NetworkType, current_channel, &channel_freq);
- p->DSConfig = channel_freq * 1000;
-
- p->FHConfig.Length = sizeof(NDIS_802_11_CONFIGURATION_FH);
- p->FHConfig.HopPattern = 0;
- p->FHConfig.HopSet = 0;
- p->FHConfig.DwellTime = 0;
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_BSSID_LIST:
-
- sme_get_scan_bss_count(pcore_data, &count);
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[DRV] ** bss_count = %d\n", count));
- #endif
- //
- bytes_needed = sizeof(u32);
-
- {
- u8 boMsRadioOff;
- RadioOff RadioOffData;
-
- // 1: off, 0: on
- sme_get_radio_mode(Adapter, &RadioOffData);
- sme_get_ms_radio_mode(Adapter, &boMsRadioOff);
- if (boMsRadioOff || RadioOffData.boHwRadioOff || RadioOffData.boSwRadioOff)
- {
- count = 0;
- bytes_needed += sizeof(NDIS_WLAN_BSSID_EX);
- }
- }
-
- for (j=0; j < count; j++)
- {
- bss_desc_tt *pbss;
-
- bytes_needed += (sizeof(NDIS_WLAN_BSSID_EX)-4);
- sme_get_scan_bss(pcore_data, j, &pbss);
- Assemble_IE(pcore_data, pbss->wIndex);
-
- // 20061108 Add for WPS
- bytes_needed += pbss->WPS_IE_length;
-
- bytes_needed += ((pbss->ies_len + 3) & ~0x03);
- }
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("InformationBufferLength =%d\n", InformationBufferLength));
- WBDEBUG(("bytes_needed =%d\n", bytes_needed));
- #endif
- //------------------
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_BSSID_LIST_EX *p;
- NDIS_WLAN_BSSID_EX *pndis_bss;
-
- u8 i;
- bss_desc_tt *pscan_bss = NULL; // important!!!
-
- NdisZeroMemory(InformationBuffer, bytes_needed);
- p = (NDIS_802_11_BSSID_LIST_EX *)InformationBuffer;
-
-
- // get and translate all the BSSs found during the scan
- pndis_bss = (NDIS_WLAN_BSSID_EX*) &(p->Bssid[0]);
-
- for (i=0; i < count; i++)
- {
- sme_get_scan_bss(pcore_data, i, &pscan_bss);
- drv_translate_bss_ex( Adapter, pndis_bss, pscan_bss );
-
- pndis_bss = (NDIS_WLAN_BSSID_EX*) ((u8*)pndis_bss + pndis_bss->Length);
- }
- p->NumberOfItems = i;
- }
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("***** OID_802_11_BSSID_LIST return value =%x\n", ret));
- #endif
- //------------------------------------------
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_AUTHENTICATION_MODE:
- bytes_needed = sizeof(NDIS_802_11_AUTHENTICATION_MODE);
- if(bytes_needed <= InformationBufferLength)
- {
- PNDIS_802_11_AUTHENTICATION_MODE p;
- u8 auth_mode;
-
- p = (PNDIS_802_11_AUTHENTICATION_MODE) InformationBuffer;
- if(sme_get_auth_mode(pcore_data, &auth_mode) != -1)
- {
- #ifdef _PE_OID_DUMP_
- //_asm{int 3}
- WBDEBUG(("GET Auth mode = %x\n", auth_mode));
- #endif
- switch(auth_mode)
- {
- case OPEN_AUTH:
- *p = Ndis802_11AuthModeOpen;
- break;
- case SHARE_AUTH:
- *p = Ndis802_11AuthModeShared;
- break;
- case ANY_AUTH:
- *p = Ndis802_11AuthModeAutoSwitch;
- break;
- case WPA_AUTH:
- *p = Ndis802_11AuthModeWPA;
- break;
- case WPAPSK_AUTH:
- *p = Ndis802_11AuthModeWPAPSK;
- break;
- case WPANONE_AUTH:
- *p = Ndis802_11AuthModeWPANone;
- break;
- #ifdef _WPA2_
- case WPA2_AUTH: //for WPA2 added by WS 19/4/04
- *p = Ndis802_11AuthModeWPA2;
- break;
- case WPA2PSK_AUTH:
- *p = Ndis802_11AuthModeWPA2PSK;//for WPA2 added by WS 19/4/04
- break;
- #endif //end def _WPA2_
- default:
- break;
- }
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- //case OID_802_11_WEP_STATUS:
- case OID_802_11_ENCRYPTION_STATUS: // same as OID_802_11_WEP_STATUS
-
- bytes_needed = sizeof(NDIS_802_11_WEP_STATUS);
-
- if(bytes_needed <= InformationBufferLength)
- {
- //----------------------------------------------------------
- PNDIS_802_11_ENCRYPTION_STATUS p = (PNDIS_802_11_ENCRYPTION_STATUS) InformationBuffer;
- u8 EncryptStatus;
-
- sme_get_encryption_status(pcore_data, &EncryptStatus);
- #ifdef _PE_OID_DUMP_
- //_asm{int 3}
- WBDEBUG(("GET encrypt status = %x\n", EncryptStatus));
- #endif
- switch (EncryptStatus)
- {
- /*
- case ENCRYPT_NOTSUPPORT:
- *p = Ndis802_11EncryptionNotSupported;
- break;
- */
- case ENCRYPT_DISABLE:
- *p = Ndis802_11EncryptionDisabled;
- break;
- case ENCRYPT_WEP:
- *p = Ndis802_11Encryption1Enabled;
- break;
- case ENCRYPT_WEP_NOKEY:
- *p = Ndis802_11Encryption1KeyAbsent;
- break;
- case ENCRYPT_TKIP:
- *p = Ndis802_11Encryption2Enabled;
- break;
- case ENCRYPT_TKIP_NOKEY:
- *p = Ndis802_11Encryption2KeyAbsent;
- break;
- case ENCRYPT_CCMP:
- *p = Ndis802_11Encryption3Enabled;
- break;
- case ENCRYPT_CCMP_NOKEY:
- *p = Ndis802_11Encryption3KeyAbsent;
- break;
- default:
- *p = Ndis802_11EncryptionNotSupported;
- break;
- }
- //----------------------------------------------------------
- }
- break;
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_ASSOCIATION_INFORMATION:
- //WBDEBUG(("[DRV] OID_802_11_ASSOCIATION_INFORMATION (QUERY)\n"));
-
- bytes_needed = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) +
- psSME->AssocReqVarLen + psSME->AssocRespVarLen;
-
- //PDEBUG(("[DRV] byte_needed = %d\n", bytes_needed));
- //PDEBUG(("[DRV] InfoBufferLength = %d\n", InfoBufferLength));
- if (bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_ASSOCIATION_INFORMATION *p;
- u8 *pie;
- u8 conn_status;
-
- p = (NDIS_802_11_ASSOCIATION_INFORMATION *) InformationBuffer;
-
- //WBDEBUG(("addr of conn_status = %x\n", &conn_status));
- sme_get_connect_status(pcore_data, &conn_status);
-
- if (conn_status == MEDIA_STATE_CONNECTED)
- {
- p->Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
- // Association Request
- p->AvailableRequestFixedIEs =
- NDIS_802_11_AI_REQFI_CAPABILITIES |
- NDIS_802_11_AI_REQFI_LISTENINTERVAL;
- if (psSME->boReassoc)
- p->AvailableRequestFixedIEs |= NDIS_802_11_AI_REQFI_CURRENTAPADDRESS;
-
- //p->RequestFixedIEs.Capabilities = pcore_data->sSmePara.wCapabilityInfo;
- p->RequestFixedIEs.Capabilities =
- pcore_data->asBSSDescriptElement[pcore_data->sLocalPara.wConnectedSTAindex].CapabilityInformation.wValue;
- p->RequestFixedIEs.ListenInterval = pcore_data->sLocalPara.ListenInterval;
- if (psSME->boReassoc)
- memcpy( p->RequestFixedIEs.CurrentAPAddress,
- pcore_data->asBSSDescriptElement[pcore_data->sLocalPara.wConnectedSTAindex].abBssID,
- MAC_ADDR_LENGTH );
-
- p->RequestIELength = psSME->AssocReqVarLen;
- p->OffsetRequestIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
-
- // Association Response
- p->AvailableResponseFixedIEs =
- NDIS_802_11_AI_RESFI_CAPABILITIES |
- NDIS_802_11_AI_RESFI_STATUSCODE |
- NDIS_802_11_AI_RESFI_ASSOCIATIONID;
- //TODO:
- p->ResponseFixedIEs.Capabilities = psSME->AssocRespCapability;
- p->ResponseFixedIEs.StatusCode = psSME->AssocRespStatus;
- p->ResponseFixedIEs.AssociationId = pcore_data->sLocalPara.Association_ID&0x3fff;
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("AID =%x\n", p->ResponseFixedIEs.AssociationId));
- #endif
-
- p->ResponseIELength = psSME->AssocRespVarLen;
- p->OffsetResponseIEs =
- sizeof(NDIS_802_11_ASSOCIATION_INFORMATION)+
- psSME->AssocReqVarLen;
-
-
- pie = ((u8*) p) + sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
- memcpy( pie, psSME->AssocReqVarIE, psSME->AssocReqVarLen );
-
- pie += psSME->AssocReqVarLen;
- memcpy( pie, psSME->AssocRespVarIE, psSME->AssocRespVarLen );
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("ASSOCIATION INFORMATION\n"));
- DataDmp((u8 *)p, p->Length+psSME->AssocReqVarLen+psSME->AssocRespVarLen, 0);
- #endif
- bytes_needed = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION)+
- psSME->AssocReqVarLen+psSME->AssocRespVarLen;
- //--------------------------------------------------------
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_TX_POWER_LEVEL:
- bytes_needed = sizeof(NDIS_802_11_TX_POWER_LEVEL);
-
- if(bytes_needed <= InformationBufferLength)
- {
- u32 *p;
-
- p = (NDIS_802_11_TX_POWER_LEVEL *) InformationBuffer;
- sme_get_tx_power_level(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_NUMBER_OF_ANTENNAS:
- bytes_needed = sizeof(u32);
-
- if(bytes_needed <= InformationBufferLength)
- {
- u32 *p;
-
- p = (u32 *) InformationBuffer;
- sme_get_antenna_count(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_RX_ANTENNA_SELECTED:
- bytes_needed = sizeof(u32);
-
- if(bytes_needed <= InformationBufferLength)
- {
- u32 *p;
-
- p = (u32 *) InformationBuffer;
- sme_get_rx_antenna(pcore_data, p);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_TX_ANTENNA_SELECTED:
- bytes_needed = sizeof(u32);
-
- if(bytes_needed <= InformationBufferLength)
- {
- u32 *p;
-
- p = (u32 *) InformationBuffer;
- sme_get_tx_antenna(pcore_data, p);
- }
- break;
-
- //++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++
- //added by ws 04/29/04
- #ifdef _WPA2_
- case OID_802_11_CAPABILITY:
- {
- static NDIS_802_11_AUTHENTICATION_ENCRYPTION Suppt_AUTH_ENCR_MODE[14]=
- {
- {Ndis802_11AuthModeOpen, Ndis802_11EncryptionDisabled},
- {Ndis802_11AuthModeOpen, Ndis802_11Encryption1Enabled},
- {Ndis802_11AuthModeShared, Ndis802_11EncryptionDisabled},
- {Ndis802_11AuthModeShared, Ndis802_11Encryption1Enabled},
- {Ndis802_11AuthModeWPA, Ndis802_11Encryption2Enabled},
- {Ndis802_11AuthModeWPA, Ndis802_11Encryption3Enabled},
- {Ndis802_11AuthModeWPAPSK, Ndis802_11Encryption2Enabled},
- {Ndis802_11AuthModeWPAPSK, Ndis802_11Encryption3Enabled},
- {Ndis802_11AuthModeWPANone, Ndis802_11Encryption2Enabled},
- {Ndis802_11AuthModeWPANone, Ndis802_11Encryption3Enabled},
- {Ndis802_11AuthModeWPA2, Ndis802_11Encryption2Enabled},
- {Ndis802_11AuthModeWPA2, Ndis802_11Encryption3Enabled},
- {Ndis802_11AuthModeWPA2PSK, Ndis802_11Encryption2Enabled},
- {Ndis802_11AuthModeWPA2PSK, Ndis802_11Encryption3Enabled}
- };
-
- //PDEBUG(("[DRV] OID_802_11_CAPABIlITY(QUERY)\n"));
- bytes_needed = sizeof(NDIS_802_11_CAPABILITY)
- +sizeof(NDIS_802_11_AUTHENTICATION_ENCRYPTION)*13;
-
- if(bytes_needed <=InformationBufferLength)
- {
- PNDIS_802_11_CAPABILITY p=(PNDIS_802_11_CAPABILITY) InformationBuffer;
- p->Length=bytes_needed;
- p->Version=2;
- p->NoOfPMKIDs=16;
- p->NoOfAuthEncryptPairsSupported=sizeof(Suppt_AUTH_EN CR_MODE)
- /sizeof(Suppt_AUTH_ENCR_MODE[0]);
- memcpy( p->AuthenticationEncryptionSupported, Suppt_AUTH_ENCR_MODE, sizeof(Suppt_AUTH_ENCR_MODE) );
-
- }
- }
- break;//added by ws
- //++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++
- case OID_802_11_PMKID:
- {
- NDIS_802_11_PMKID *p=(PNDIS_802_11_PMKID)InformationBuffer;
- bytes_needed=sizeof(psSME->PmkIdTable);
- if(bytes_needed <=InformationBufferLength)
- {
- p->Length=((NDIS_802_11_PMKID *)psSME->PmkIdTable)->Length;
- p->BSSIDInfoCount=((NDIS_802_11_PMKID *)psSME->PmkIdTable)->BSSIDInfoCount;
- memcpy( p->BSSIDInfo,
- ((NDIS_802_11_PMKID*)psSME->PmkIdTable)->BSSIDInfo,
- sizeof(BSSID_Info)* p->BSSIDInfoCount );
- }
- }
- break;//added by ws
- #endif //end def _WPA2_
- //++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +
- case OID_802_11_DESIRED_RATES://added by ws 08/04/04
- {
- //TODO : [1004]
- NDIS_802_11_RATES *p=(NDIS_802_11_RATES *)InformationBuffer;
-
- bytes_needed=sizeof(NDIS_802_11_RATES);
- if(bytes_needed < InformationBufferLength)
- {
- //memcpy(p,&psLOCAL->CurrentTxRate,sizeof(NDIS_802_11_RATES));//??
- *(*p+0) = (u8)Adapter->WbNdis.TxRateShowResult; //psLOCAL->CurrentTxRate;
- *(*p+1) = 0;
- }
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_POWER_MODE:
-
- bytes_needed = sizeof(NDIS_802_11_POWER_MODE);
-
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_POWER_MODE *p;
- u8 PowerMode;
-
- p = (NDIS_802_11_POWER_MODE *) InformationBuffer;
- sme_get_power_mode(pcore_data, &PowerMode);
- *p = PowerMode;
- }
- break;
-
- #if 0
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_MEDIA_STREAM_MODE:
-
- bytes_needed = sizeof(NDIS_802_11_MEDIA_STREAM_MODE);
-
- if(bytes_needed <= InformationBufferLength)
- {
- NDIS_802_11_MEDIA_STREAM_MODE *p;
-
- p = (NDIS_802_11_MEDIA_STREAM_MODE *) InformationBuffer;
- *p = Ndis802_11MediaStreamOff;
- }
- break;
- #endif
-
- //++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++
- case OID_802_11_CUST_LINK_QUALITY://added by ws 07/26/04
- {
- PULONG p = (PULONG)InformationBuffer;
- bytes_needed = sizeof(u32);
-
- if (InformationBufferLength >= bytes_needed)
- *p = hal_get_est_sq3( &Adapter->sHwData, 5 ); // Average filter parameter = 5( more smooth)
- }
- break;
-
- case OID_802_11_CUST_HW_VERSION:
- {
- u32 *p=(u32 *)InformationBuffer;
- bytes_needed = sizeof(u32);
-
- if (InformationBufferLength >= bytes_needed)
- *p = 0x0200; // Only support FB5886
- }
- break;
- case OID_802_11_CUST_DRV_VERSION:
- {
- //TODO : [1004]
- u16 * p=(u16 *)InformationBuffer;
- bytes_needed=sizeof(u16)*4;
- if(bytes_needed <=InformationBufferLength)
- {
- PUCHAR pVerStr = VER_FILEVERSION_STR;
- u16 i, k, stmp;
-
- i = 0;
- k = 0;
- stmp = 0;
- while( pVerStr[i] )
- {
- if( pVerStr[i] == '.' )
- {
- p[k] = stmp;
- k++;
- stmp = 0;
- }
- else
- {
- stmp *= 10;
- stmp += pVerStr[i] - 0x30;
- }
- i++;
- }
- p[k] = stmp;
- }
- }//ws
- break;
-
-#ifdef NDIS50_MINIPORT
- case OID_802_11_CUST_DRV_NAME://for window 98 and me only
- if(NULL != InformationBuffer && InformationBufferLength >= g_String.Length)
- {
- ANSI_STRING *global_String=&g_String;
- bytes_needed = g_String.Length;
- NdisMoveMemory(InformationBuffer,global_String->Buffer,global_String->Length);
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[WS]OID_802_11_CUST_DRV_NAME %s \n %x \n",InformationBuffer,bytes_needed));
- #endif
- }
- else
- ret = NDIS_STATUS_FAILURE;
-
- break;
-#endif
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_RADIO:
-
- bytes_needed = sizeof(WLAN_RADIO_STATUS);
-
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[QUERY RADIO OID]\n"));
- #endif
-
- if(bytes_needed <= InformationBufferLength)
- {
- WLAN_RADIO_STATUS *p;
- RadioOff RadioOffData;
-
- p = (WLAN_RADIO_STATUS *) InformationBuffer;
- // 1: off, 0: on
- sme_get_radio_mode(pcore_data, &RadioOffData);
- p->HWStatus = RadioOffData.boHwRadioOff; //fist cut is always on
- p->SWStatus = RadioOffData.boSwRadioOff;
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_REGION:
-
- bytes_needed = sizeof(u32);
-
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[QUERY REGION OID]\n"));
- #endif
-
- if(bytes_needed <= InformationBufferLength)
- {
- u32 *p;
-
- p = (u32 *) InformationBuffer;
- *p = psLOCAL->region;
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- // 20041102 1.1.91.1000 ybjiang
- case OID_802_11_CUST_REGION_CAPABILITIES:
- {
- phw_data_t pHwData = &Adapter->sHwData;
- u32 i, j, Item;
- CHAN_LIST ChanForRegionCap[6]; //support 6 region
- u8 PhyType, EEPROMRegion;
- u8 aRegion[6] = {1,2,3,4,5,6};
-
- bytes_needed = 0;
-
- hal_get_phy_type( pHwData, &PhyType );
- EEPROMRegion = hal_get_region_from_EEPROM( pHwData );
-
- if( EEPROMRegion != REGION_AUTO )
- {
- switch( EEPROMRegion )
- {
- case 2: JAPAN_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- case 3: USA_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- case 4: FRANCE_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- case 5: SPAIN_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- case 6: ISRAEL_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- default: EUROPE_ChanRange( Adapter, PhyType, ChanForRegionCap ); break;
- }
- Item = 1;
- aRegion[0] = EEPROMRegion;
- }
- else
- {
- EUROPE_ChanRange(Adapter, PhyType, ChanForRegionCap+0);
- JAPAN_ChanRange(Adapter, PhyType, ChanForRegionCap+1);
- USA_ChanRange(Adapter, PhyType, ChanForRegionCap+2);
-
- FRANCE_ChanRange(Adapter, PhyType, ChanForRegionCap+3);
- SPAIN_ChanRange(Adapter, PhyType, ChanForRegionCap+4);
- ISRAEL_ChanRange(Adapter, PhyType, ChanForRegionCap+5);
-
- Item = 6;
- }
-
- // calculate required memory size
- for (i = 0; i < Item; ++i)
- {
- bytes_needed += sizeof(WLAN_REGION_CHANNELS) - sizeof(u32);
-
- bytes_needed += sizeof(u32) * ChanForRegionCap[i].Count;
- }
-
- // include WLAN_REGION_CAPABILITIES::NumberOfItems
- bytes_needed += sizeof(u32);
-
- if (InformationBufferLength >= bytes_needed)
- {
- WLAN_REGION_CAPABILITIES *Capa = (WLAN_REGION_CAPABILITIES*) InformationBuffer;
- WLAN_REGION_CHANNELS *Channels = &Capa->Region[0];
- u8 *name, *pntmp;
- u32 freq;
- u8 NetworkType;
- u16 StrLen;
-
- Capa->NumberOfItems = Item; //EUROPE, JAPAN, USA
-
- for (i=0; i - {
- Channels->Code = aRegion[i];
-
- pntmp = get_name_of_region(aRegion[i]);
- name = Channels->Name;
- StrLen = (u16)strlen(pntmp);
- NdisMoveMemory(name, pntmp, StrLen);
- name += StrLen;
-
- //FreqArry = get_channels_of_region(region);
- for (j=0; j - {
- if (ChanForRegionCap[i].Channel[j].band == BAND_TYPE_DSSS)
- NetworkType = Ndis802_11DS;
- else if (ChanForRegionCap[i].Channel[j].band == BAND_TYPE_OFDM_24)
- NetworkType = Ndis802_11OFDM24;
- else if (ChanForRegionCap[i].Channel[j].band == BAND_TYPE_OFDM_5)
- NetworkType = Ndis802_11OFDM5;
- ChannelNumToFreq( NetworkType, ChanForRegionCap[i].Channel[j].ChanNo, &freq );
- Channels->Frequency[j] = freq;
-
- if (ChanForRegionCap[i].Channel[j].band > BAND_TYPE_OFDM_24)
- {
- StrLen = ChanNo2String(ChanForRegionCap[i].Channel[j].ChanNo, name);
- name += StrLen;
- }
- }
- Channels->Length = sizeof(WLAN_REGION_CHANNELS) - sizeof(u32) + j * sizeof(u32);
- *(name-1) = '\0'; //replace last ','
- Channels->NameLength = strlen(Channels->Name);
-
- // move to the next structure
- Channels = (WLAN_REGION_CHANNELS*) ((u8*) Channels + Channels->Length);
- }
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("** dump Query OID_802_11_CUST_REGION_CAPABILITIES **\n"));
- DataDmp((u8 *)Capa, bytes_needed, 0);
- #endif
- }
- }
- break;
- //--------------------------------------------------------------------------
- case OID_802_11_CUST_ENCRYPTION_STATUS:
-
- bytes_needed = sizeof(u32);
-
- if (InformationBufferLength >= bytes_needed)
- {
- //WBDEBUG(("[WS]the wepkey error =%d",pcore_data->sLocalPara.bWepKeyError));
- *(u32 *) InformationBuffer = pcore_data->sLocalPara.bWepKeyError;
- }
- break;
-
- //sky added 20050803
- //----------------------------------------------------------------------------
- case OID_802_11_CUST_TX_THROUGHPUT:
- bytes_needed = sizeof(u32);
- if (InformationBufferLength >= bytes_needed)
- {
- *(u32 *) InformationBuffer = pcore_data->WbNdis.TxByteCount;
- }
- break;
-
- //---------------------------------------------------------------------------
- case OID_802_11_CUST_RX_THROUGHPUT:
- bytes_needed = sizeof(u32);
- if (InformationBufferLength >= bytes_needed)
- {
- *(u32 *) InformationBuffer = pcore_data->WbNdis.RxByteCount;
- }
- break;
-
- //----------------------------------------------------------------------------
- //sky added 2005.0817
- case OID_802_11_CUST_RF_TYPE:
- bytes_needed = sizeof(u8);
- if (InformationBufferLength >= bytes_needed)
- {
- *(u8 *) InformationBuffer = pcore_data->sHwData.phy_type;
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- default:
- ret = WB_NDIS_STATUS_NOT_SUPPORTED;
- }
-
- *pMoveBytes = bytes_needed;
-
- return ret;
-}
-
-/************************************************** **************************/
-/* translate bss description to NDIS_WLAN_BSSID */
-void drv_translate_bss_ex( PWB32_ADAPTER Adapter, NDIS_WLAN_BSSID_EX *pndis_bss, bss_desc_tt *pbss )
-{
- PNDIS_802_11_CONFIGURATION pconfig;
- u32 channel_freq = 0;
-
- //TODO:
- /* Length */
- //pndis_bss->Length = (sizeof(NDIS_WLAN_BSSID_EX) -4 + pbss->ies_len + 3) & ~0x03;
- // 20061108 WPS
- pndis_bss->Length = (sizeof(NDIS_WLAN_BSSID_EX) -4 + pbss->ies_len + pbss->WPS_IE_length + 3) & ~0x03;
-
- /* MacAddress */
- NdisMoveMemory(pndis_bss->MacAddress, pbss->abBssID, 6);
-
- /* Ssid */
- pndis_bss->Ssid.SsidLength = pbss->SSID.Length;
- NdisMoveMemory(pndis_bss->Ssid.Ssid, pbss->SSID.SSID, pbss->SSID.Length);
-
- /* Privacy */
- pndis_bss->Privacy = pbss->CapabilityInformation.Capability.CF_Privacy;
-
- /* RSSI */
- if( OS_RSSI_TEST_SET( Adapter ) )
- pndis_bss->Rssi = OS_RSSI_TEST_SET( Adapter );
- else
- pndis_bss->Rssi = hal_get_rssi( &Adapter->sHwData, pbss->HalRssi, 1 ); // 20060329 modify for real
-
- /* NetworkTypeInUse */
- if (pbss->DS_Parameter_Set.Current_Channel >14)
- pndis_bss->NetworkTypeInUse = Ndis802_11OFDM5;
- else
- {
- if (pbss->boERP)
- pndis_bss->NetworkTypeInUse = Ndis802_11OFDM24;
- else
- pndis_bss->NetworkTypeInUse = Ndis802_11DS;
- }
-
- /* Configuration */
- pconfig = &(pndis_bss->Configuration);
- pconfig->Length = sizeof(NDIS_802_11_CONFIGURATION);
- pconfig->BeaconPeriod = pbss->Beacon_Period;
- pconfig->ATIMWindow = *((PUSHORT)pbss->IBSS_Parameter_Set.ATIM_Window);//Current ATIMWindow
- ChannelNumToFreq(pndis_bss->NetworkTypeInUse,
- pbss->DS_Parameter_Set.Current_Channel,
- &channel_freq);
- pconfig->DSConfig = channel_freq * 1000;
-
- pconfig->FHConfig.Length = sizeof(NDIS_802_11_CONFIGURATION_FH);
- pconfig->FHConfig.HopPattern = 0;
- pconfig->FHConfig.HopSet = 0;
- pconfig->FHConfig.DwellTime = 0;
-
- /* InfrastructureMode (BSS mode setting) */
- pndis_bss->InfrastructureMode = pbss->CapabilityInformation.Capability.ESS ? \
- Ndis802_11Infrastructure : Ndis802_11IBSS;
- /* SupportRates */
- NdisMoveMemory(pndis_bss->SupportedRates,
- pbss->SupportedRateSet.SupportedRates,
- pbss->SupportedRateSet.Length);
- pndis_bss->SupportedRates[pbss->SupportedRateSet.Length] = 0;
-
- //TODO:
- //pndis_bss->IELength = 0;
- pndis_bss->IELength = pbss->ies_len;
- NdisMoveMemory(pndis_bss->IEs, pbss->ies, pbss->ies_len);
-
- // 20061108 Add WPS IE
- if( pbss->WPS_IE_length )
- {
- pndis_bss->IELength += pbss->WPS_IE_length;
- NdisMoveMemory( (PUCHAR)pndis_bss->IEs + pbss->ies_len, pbss->WPS_IE_Data, pbss->WPS_IE_length );
- }
-}
-
-NDIS_STATUS Ndis51SetInformation( PWB32_ADAPTER pcore_data,
- NDIS_OID Oid,
- void* InformationBuffer,
- u32 InformationBufferLength,
- PULONG pBytesNeed)
-{
- NDIS_STATUS StatusToReturn = NDIS_STATUS_SUCCESS;
- PWB32_ADAPTER Adapter = pcore_data;
- PNDIS51_DESIRED_PARAMETER pN51 = &Adapter->DesiredNdis51Parameter;
-
- #ifdef _PE_OID_DUMP_
- DbgPrintfOID51(Oid, FALSE);
- #endif
-
- *pBytesNeed =0;
-
-
- if( TS_RUNNING_IN_TESTSTA_MODE )
- return StatusToReturn;
-
- switch(Oid)
- {
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- //case OID_802_11_WEP_STATUS:
- case OID_802_11_ENCRYPTION_STATUS: // same as OID_802_11_WEP_STATUS
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_WEP_STATUS))
- {
- PNDIS_802_11_ENCRYPTION_STATUS p = (PNDIS_802_11_ENCRYPTION_STATUS)InformationBuffer;
- u8 EncryptStatus;
-
- switch (*p)
- {
- case Ndis802_11EncryptionNotSupported:
- //EncryptStatus = ENCRYPT_NOTSUPPORT;
- EncryptStatus = ENCRYPT_DISABLE;
- psSME->DesiredEncrypt=Cipher_Disabled;//added by ws 04/22/05
- break;
- case Ndis802_11EncryptionDisabled:
- EncryptStatus = ENCRYPT_DISABLE;
- psSME->DesiredEncrypt=Cipher_Disabled;
- break;
- case Ndis802_11Encryption1Enabled:
- EncryptStatus = ENCRYPT_WEP;
- psSME->DesiredEncrypt=Cipher_Wep;
- break;
- case Ndis802_11Encryption1KeyAbsent:
- EncryptStatus = ENCRYPT_WEP_NOKEY;
- psSME->DesiredEncrypt=Cipher_Wep;
- break;
- case Ndis802_11Encryption2Enabled:
- EncryptStatus = ENCRYPT_TKIP;
- psSME->DesiredEncrypt=Cipher_Tkip;
- break;
- case Ndis802_11Encryption2KeyAbsent:
- EncryptStatus = ENCRYPT_TKIP_NOKEY;
- psSME->DesiredEncrypt=Cipher_Tkip;
- break;
- case Ndis802_11Encryption3Enabled:
- EncryptStatus = ENCRYPT_CCMP;
- psSME->DesiredEncrypt=Cipher_Ccmp;
- break;
- case Ndis802_11Encryption3KeyAbsent:
- EncryptStatus = ENCRYPT_CCMP_NOKEY;
- psSME->DesiredEncrypt=Cipher_Ccmp;
- break;
- default:
- EncryptStatus = ENCRYPT_DISABLE;
- psSME->DesiredEncrypt=Cipher_Disabled;
- break;
- }
- sme_set_encryption_status(pcore_data, EncryptStatus);
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("SET Encrypt status = %x\n", EncryptStatus));
- #endif
- }
- else
- StatusToReturn = NDIS_STATUS_NOT_ACCEPTED;
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_FRAGMENTATION_THRESHOLD:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD))
- {
- NDIS_802_11_FRAGMENTATION_THRESHOLD TxFragThres;
-
- TxFragThres = *((NDIS_802_11_FRAGMENTATION_THRESHOLD *)InformationBuffer);
-
- if(sme_set_fragment_threshold(pcore_data, TxFragThres) == -1)
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_RTS_THRESHOLD:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_RTS_THRESHOLD))
- {
- NDIS_802_11_RTS_THRESHOLD RtsThres;
-
- RtsThres = *((NDIS_802_11_RTS_THRESHOLD *)InformationBuffer);
-
- if(sme_set_rts_threshold(pcore_data, RtsThres) == -1)
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_RTS_THRESHOLD);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_ADD_WEP:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_WEP))
- {
- PNDIS_802_11_WEP pWEPdata = (PNDIS_802_11_WEP)InformationBuffer;
- u8 bssid[MAC_ADDR_LENGTH];
-
- //WBDEBUG(("addr of bssid = %x\n", bssid));
- sme_get_bssid(pcore_data, bssid);
- if(sme_set_add_wep(pcore_data,
- pWEPdata->KeyIndex,
- pWEPdata->KeyLength,
- bssid, //address
- pWEPdata->KeyMaterial)==-1)
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- sme_set_encryption_status(pcore_data, ENCRYPT_WEP);
-
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_WEP);
-
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_REMOVE_WEP:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_KEY_INDEX))
- {
- NDIS_802_11_KEY_INDEX KeyIndex;
-
- KeyIndex = *((NDIS_802_11_KEY_INDEX *)InformationBuffer);
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("OID_ Removing Key[%x]\n", KeyIndex));
- #endif
-
- if (sme_set_remove_wep(pcore_data, KeyIndex) == -1)
- {
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("OID_802_11_REMOVE_WEP fail!\n"));
- #endif
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_KEY_INDEX);
-
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_INFRASTRUCTURE_MODE:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE))
- {
- NDIS_802_11_NETWORK_INFRASTRUCTURE BSSmode;
- u8 BssType;
-
- //[20060824] Added to avoid the reissue of this OID even in the CONNECT state
- sme_set_disassociate(Adapter);
-
- BSSmode = *((NDIS_802_11_NETWORK_INFRASTRUCTURE *)InformationBuffer);
- BssType = (BSSmode == Ndis802_11IBSS) ? IBSS_NET : ESS_NET;
- sme_set_desired_bss_type(pcore_data, BssType);
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("OID: set infrastructure mode=%x\n", BssType));
- #endif
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CONFIGURATION:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_CONFIGURATION))
- {
- PNDIS_802_11_CONFIGURATION pConfig = (PNDIS_802_11_CONFIGURATION)InformationBuffer;
- u32 ChanFreq;
- ChanInfo chan;
-
- sme_set_beacon_period(pcore_data, (u16)pConfig->BeaconPeriod);
- sme_set_atim_window(pcore_data, (u16)pConfig->ATIMWindow);
- ChanFreq = pConfig->DSConfig/1000; //convert to MHz
- if (ChanFreq >= 3000)
- chan.band = BAND_TYPE_OFDM_5;
- else
- chan.band = BAND_TYPE_OFDM_24;
- FreqToChannelNum(chan.band,
- &chan.ChanNo,
- ChanFreq);
- sme_set_IBSS_chan(pcore_data, chan);
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_CONFIGURATION);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_AUTHENTICATION_MODE:
- if(InformationBufferLength >= sizeof(NDIS_802_11_AUTHENTICATION_MODE))
- {
- NDIS_802_11_AUTHENTICATION_MODE NdisAuthMode = *((PNDIS_802_11_AUTHENTICATION_MODE)InformationBuf fer);
- u8 auth_mode;
-
- switch(NdisAuthMode)
- {
- case Ndis802_11AuthModeOpen:
- auth_mode = OPEN_AUTH;
- break;
- case Ndis802_11AuthModeShared:
- auth_mode = SHARE_AUTH;
- break;
- case Ndis802_11AuthModeAutoSwitch:
- auth_mode = ANY_AUTH;
- break;
- case Ndis802_11AuthModeWPA:
- auth_mode = WPA_AUTH;
- break;
- case Ndis802_11AuthModeWPAPSK:
- auth_mode = WPAPSK_AUTH;
- break;
- case Ndis802_11AuthModeWPANone:
- auth_mode = WPANONE_AUTH;
- break;
- #ifdef _WPA2_
- case Ndis802_11AuthModeWPA2:
- auth_mode = WPA2_AUTH;
- break;
- case Ndis802_11AuthModeWPA2PSK:
- auth_mode = WPA2PSK_AUTH;
- break;
- #endif //end def _WPA2_
- default:
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- break;
- }
- if (StatusToReturn != NDIS_STATUS_INVALID_DATA)
- {
- sme_set_auth_mode(pcore_data, auth_mode);
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("SET Auth mode = %x\n", auth_mode));
- #endif
- }
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_AUTHENTICATION_MODE);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- //Real-time service with pending return if needed
- case OID_802_11_BSSID:
- if( InformationBufferLength >= 6 )
- {
- sme_set_desired_bssid(pcore_data, InformationBuffer);
- }
- else
- *pBytesNeed = 6;
-
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_SSID:
-
- if( InformationBufferLength >= sizeof(NDIS_802_11_SSID) )
- {
- PNDIS_802_11_SSID pSSID = (PNDIS_802_11_SSID)InformationBuffer;
-
- #ifdef _PE_OID_DUMP_
- u8 ssid[50];
- memcpy( ssid, (u8 *)pSSID->Ssid, (u8)pSSID->SsidLength );
- ssid[pSSID->SsidLength] = '\0';
- WBDEBUG(("SET ssid=%s\n", ssid));
- #endif
- if (pSSID->SsidLength > 32)
- {
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- {
- PUCHAR pctmp;
- int i, AcceptSsid;
- u8 boMsRadioOff;
-
- //Radio on : 0, Radio off : 1
- // ** 20060828 [Anson] DDK2600 and DDK5048 are Different description **
- sme_get_ms_radio_mode(Adapter, &boMsRadioOff);
- if (boMsRadioOff == 1)
- sme_set_ms_radio_mode(Adapter, 0); //Radio On
- psSME->boDUTmode = FALSE;
- memcpy( pN51->CurrentSSID, (u8 *)pSSID->Ssid, (u8)pSSID->SsidLength );
- pN51->CurrentSSIDLength = pSSID->SsidLength;
- sme_set_desired_ssid(pcore_data, (u8 *)pSSID->Ssid, (u8)pSSID->SsidLength);
-
- pctmp = (u8 *)pSSID->Ssid;
- AcceptSsid = 1;
- for( i=0; i<(int)pSSID->SsidLength; i++ )
- {
- if( (pctmp[i]>126) || (pctmp[i]<32 ) )
- {
- AcceptSsid = 0;
- break;
- }
- }
- if( AcceptSsid )
- {
- pN51->ConnectInterval = 8;
- pN51->ConnectCount = 1;
- }
- else
- pN51->ConnectCount = 0;
- }
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_SSID);
-
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_DISASSOCIATE:
- sme_set_disassociate(pcore_data);
- //Radio on : 0, Radio off : 1
- sme_set_ms_radio_mode(Adapter, 1);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_BSSID_LIST_SCAN:
-
- pcore_data->DesiredNdis51Parameter.sync_scan_require = 1;
- NdisMSetTimer( &pcore_data->DesiredNdis51Parameter.scan_sync_timer, 0 );
- break;
-
- case OID_802_11_RELOAD_DEFAULTS:
-
- if(InformationBufferLength >= sizeof(NDIS_802_11_RELOAD_DEFAULTS))
- {
- PNDIS_802_11_RELOAD_DEFAULTS pReloadDefaultType = (PNDIS_802_11_RELOAD_DEFAULTS)InformationBuffer;
-
- if (*pReloadDefaultType == Ndis802_11ReloadWEPKeys)
- {
- sme_set_reload_defaults(Adapter, ENCRYPT_WEP);
- }
- else
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_RELOAD_DEFAULTS);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_ADD_KEY:
-
- if (InformationBufferLength >= 37) // 37 for WEP40
- {
- NDIS_802_11_KEY *p = (NDIS_802_11_KEY *)InformationBuffer;
- u8 *ptx_tsc = NULL;
- u8 *prx_tsc = NULL;
- u8 key_type;
- u8 key_len;
- //u8 EncryptStatus;
-
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("[DRV] ** Length = %d\n", p->Length));
- WBDEBUG(("[DRV] ** KeyIndex = 0x%08X\n", p->KeyIndex));
- WBDEBUG(("[DRV] ** KeyLength = %d\n", p->KeyLength));
- WBDEBUG(("[DRV] ** BSSID = " MACSTR "\n", MAC2STR(p->BSSID)));
- WBDEBUG(("[DRV] ** KeyRSC (hi) = %d\n", p->KeyRSC >> 32));
- WBDEBUG(("[DRV] ** KeyRSC (lo) = %d\n", p->KeyRSC));
- DataDmp(p->KeyMaterial, p->KeyLength, 0);
- #endif
-
- if (p->KeyIndex == 0xC0000001)
- {
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("** NDIS_STATUS_INVALID_DATA\n"));
- #endif
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- { //TODO: ??Should it set encryption status for the some XP OID sequence??
- switch (p->KeyLength)
- {
- case 5:
- //WBDEBUG(("Key Type = WEP40\n"));
- key_type = HAL_KEYTYPE_WEP40;
- key_len = 5;
- //sme_set_encryption_status(Adapter, ENCRYPT_WEP);
- break;
- case 13:
- //WBDEBUG(("Key Type = WEP104\n"));
- key_type = HAL_KEYTYPE_WEP104;
- key_len = 13;
- //sme_set_encryption_status(Adapter, ENCRYPT_WEP);
- break;
- case 16:
- //WBDEBUG(("Key Type = CCMP\n"));
- key_type = HAL_KEYTYPE_AES_CCMP;
- key_len = 16;
- //sme_set_encryption_status(Adapter, ENCRYPT_CCMP);
- break;
- case 32:
- //WBDEBUG(("Key Type = TKIP\n"));
- key_type = HAL_KEYTYPE_TKIP;
- key_len = 16;
- //sme_set_encryption_status(Adapter, ENCRYPT_TKIP);
- break;
- default:
- //WBDEBUG(("Key Type = UNKNOWN\n"));
- return NDIS_STATUS_INVALID_DATA;
- }
-
- if (p->KeyIndex & BIT(29))
- {
- // the KeyRSC should be used to set the initial receive
- // SC for the key when BIT 29 is set to 1.
-
- // If the encryption cipher needs less bytes than supplied
- // by KeyRSC, the least significant bytes should be used.
- prx_tsc = (u8*) &p->KeyRSC;
- }
-
- if (sme_add_key(Adapter,
- p->KeyIndex,
- key_len,
- key_type,
- p->BSSID,
- ptx_tsc,
- prx_tsc,
- //p->KeyRSC,
- p->KeyMaterial) == -1)
- return NDIS_STATUS_INVALID_DATA;
- }
- }
- else
- {
- *pBytesNeed = sizeof(NDIS_802_11_KEY);
-
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("[DRV] ** buffer size (%d) < %d\n", InformationBufferLength, sizeof(NDIS_802_11_KEY)));
- DataDmp(InformationBuffer, InformationBufferLength, 0);
- #endif
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_REMOVE_KEY:
- //WBDEBUG(("[DRV] OID_802_11_REMOVE_KEY (SET)\n"));
-
- //size = sizeof(NDIS_802_11_REMOVE_KEY);
-
- if (InformationBufferLength >= sizeof(NDIS_802_11_REMOVE_KEY))
- {
- NDIS_802_11_REMOVE_KEY *p = (NDIS_802_11_REMOVE_KEY *)InformationBuffer;
-
- #ifdef _PE_OID_DUMP_
- WBDEBUG(("[DRV] ** Length = %d\n", p->Length));
- WBDEBUG(("[DRV] ** KeyIndex = %d\n", p->KeyIndex));
- WBDEBUG(("[DRV] ** BSSID = " MACSTR "\n", MAC2STR(p->BSSID)));
- #endif
- if ((p->KeyIndex & (~BIT(30))) > 0xff)
- {
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- break;
- }
- if (BIT(30) == (p->KeyIndex & BIT(30)))
- {
- //if(IS_BROADCAST_BSSID(p->BSSID))
- if( boCmpMacAddr( p->BSSID, "\xff\xff\xff\xff\xff\xff" ) )
- {
- sme_clear_all_mapping_key(pcore_data);
- }
- else
- {
- sme_remove_mapping_key(pcore_data, p->BSSID);
- }
- }
- else if (p->KeyIndex < 4)
- {
- sme_remove_default_key(pcore_data, p->KeyIndex & 0xff);
- }
- else
- {
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- break;
- }
- }
- else
- {
- *pBytesNeed = sizeof(NDIS_802_11_REMOVE_KEY);
- }
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_ASSOCIATION_INFORMATION:
- //WBDEBUG(("[DRV] OID_802_11_ASSOCIATION_INFORMATION (SET)\n"));
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_TEST:
- //WBDEBUG(("[DRV] OID_802_11_TEST (SET)\n"));
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_TX_POWER_LEVEL:
- //WBDEBUG(("[DRV] OID_802_11_TX_POWER_LEVEL (SET)\n"));
- if( InformationBufferLength >= sizeof(u32) )
- {
- NDIS_802_11_TX_POWER_LEVEL TxPower= *(NDIS_802_11_TX_POWER_LEVEL *)InformationBuffer;
-
- sme_set_tx_power_level(Adapter, TxPower);
- }
- else
- *pBytesNeed = sizeof(u32);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_RX_ANTENNA_SELECTED:
- //WBDEBUG(("[DRV] OID_802_11_RX_ANTENNA_SELECTED (SET)\n"));
- if( InformationBufferLength >= sizeof(u32) )
- {
- u32 RxAntenna = *(u32 *)InformationBuffer;
-
- sme_set_rx_antenna(Adapter, RxAntenna);
- }
- else
- *pBytesNeed = sizeof(u32);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_TX_ANTENNA_SELECTED:
- //WBDEBUG(("[DRV] OID_802_11_TX_ANTENNA_SELECTED (SET)\n"));
- if( InformationBufferLength >= sizeof(u32) )
- {
- u32 TxAntenna = *(u32 *)InformationBuffer;
-
- sme_set_tx_antenna(Adapter, TxAntenna);
- }
- else
- *pBytesNeed = sizeof(u32);
- break;
-
- //++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++
- case OID_802_11_DESIRED_RATES://added by ws 08/04/04
- //TODO : [1004]
- //WBDEBUG(("[WS]OID_802_11Desired_rate,the informationBuffer=%x\n",*((NDIS_802_11_RATES *)InformationBuffer)));
- //bytes_needed=sizeof(NDIS_802_11_RATES)*8;
- if(InformationBufferLength >= sizeof(NDIS_802_11_RATES))
- {
- u8 *p=(u8 *)InformationBuffer;
- int i;
-
- for (i=0; i<8; ++i)
- if (p[i] == 0)
- break;
- // Use auto tx rate if no rate assigned.
- if (i==1 || i==0)
- {
- //WWU defines "AUTO" as 0(DTO on).
- psLOCAL->TxRateMode = *(u8 *)InformationBuffer;
- if (psLOCAL->TxRateMode != RATE_AUTO)
- {
- if (psLOCAL->TxRateMode == RATE_MAX)
- {
- if (psLOCAL->wConnectedSTAindex != 0)
- {
- SetMaxTxRate(Adapter);
- }
- else
- {
- psLOCAL->CurrentTxRate = psLOCAL->CurrentTxRateForMng;
- psLOCAL->CurrentTxFallbackRate = psLOCAL->CurrentTxRate;
- }
- }
- else
- {
- psLOCAL->CurrentTxRate = psLOCAL->TxRateMode;
- psLOCAL->CurrentTxFallbackRate = psLOCAL->CurrentTxRate;
- }
- }
- }
- }
- break;
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- #ifdef _WPA2_
- case OID_802_11_PMKID://added by ws
- {
- PNDIS_802_11_PMKID p=(PNDIS_802_11_PMKID) InformationBuffer;
- PMKID_Table *PmkIdTable=(PMKID_Table*)pcore_data->sSmePara.PmkIdTable;
- u8 i,j;
- unsigned char bExistPmkid=FALSE;
-
- for(j=0;jBSSIDInfoCount;j++)
- {
- for(i=0;iBSSIDInfoCount;i++)
- {
- //if PMKID is existing in the PMKID table, it will be stored into the same space.
- if( boCmpMacAddr( PmkIdTable->BSSIDInfo[i].PreAuthBssID, (p->BSSIDInfo + j*sizeof(BSSID_INFO))->BSSID ) )
- {
- memcpy( &PmkIdTable->BSSIDInfo[i],
- &p->BSSIDInfo+j*sizeof(BSSID_INFO), sizeof(BSSID_INFO) );
- bExistPmkid=TRUE;
- break;
- }
- }
- //if PMKID is not existing in PMKID table,the PMKID is stored into the available space
- if( !bExistPmkid )
- {
- memcpy( &PmkIdTable->BSSIDInfo[psSME->PmkidTableIndex],
- &p->BSSIDInfo+j*sizeof(BSSID_INFO), sizeof(BSSID_INFO) );
- PmkIdTable->Length +=sizeof(BSSID_INFO);
- PmkIdTable->BSSIDInfoCount++;
- if( psSME->PmkidTableIndex > 16 )
- psSME->PmkidTableIndex=0;
- else
- psSME->PmkidTableIndex++;
- bExistPmkid=FALSE;
- }
- }
- }
- break;
- #endif // end def _WPA2_
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_NETWORK_TYPE_IN_USE:
- if(InformationBufferLength >= sizeof(NDIS_802_11_NETWORK_TYPE))
- {
- NDIS_802_11_NETWORK_TYPE NetworkType;
- u8 OpMode;
-
- NetworkType = *((NDIS_802_11_NETWORK_TYPE *)InformationBuffer);
- //Check whether the data is correct
- if (NetworkType < Ndis802_11NetworkTypeMax)
- {
- switch (NetworkType)
- {
- case Ndis802_11DS:
- OpMode = MODE_802_11_B;
- break;
- case Ndis802_11OFDM24:
- OpMode = MODE_802_11_BG;
- break;
- case Ndis802_11OFDM5:
- OpMode = MODE_802_11_A;
- break;
- default:
- OpMode = MODE_802_11_BG;
- break;
- }
- sme_set_network_type_in_use(Adapter, OpMode);
- }
- else
- StatusToReturn = NDIS_STATUS_INVALID_DATA;
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_NETWORK_TYPE);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_POWER_MODE:
- if(InformationBufferLength >= sizeof(NDIS_802_11_POWER_MODE))
- {
- NDIS_802_11_POWER_MODE pPmValue;
- u8 PowerMode;
-
- pPmValue = *((NDIS_802_11_POWER_MODE *)InformationBuffer);
- PowerMode = (u8)pPmValue;
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set POWER MODE OID] PowerMode = %d\n", PowerMode));
- #endif
- sme_set_power_mode(Adapter, PowerMode);
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_POWER_MODE);
- break;
-
- #if 0
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_MEDIA_STREAM_MODE:
- if(InformationBufferLength >= sizeof(NDIS_802_11_MEDIA_STREAM_MODE))
- {
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set OID_802_11_MEDIA_STREAM_MODE] = %d\n", *(NDIS_802_11_MEDIA_STREAM_MODE *)InformationBuffer));
- #endif
- StatusToReturn = NDIS_STATUS_SUCCESS;
- }
- else
- *pBytesNeed = sizeof(NDIS_802_11_MEDIA_STREAM_MODE);
- break;
- #endif
-
- //---------------------------------------------------------------------------------------------
- //added by ws 08/23/04
- case OID_802_11_CUST_PREAMBLE_TYPE:
-
- {
- //TODO: [1004]
- //WBDEBUG(("[ws]OID_802_11_CUST_PREAMBLE_TYPE\n"));
- if(InformationBufferLength >=sizeof(u32))
- {
- u32 *p=(u32*)InformationBuffer;
- if(*p&0x1)
- psLOCAL->boShortPreamble = 0; //long preamble
- else
- psLOCAL->boShortPreamble = 1; //short preamble
-
- }
- }
- break;
- //---------------------------------------------------------------------------------------------
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_IE_APPEND: // 20061108 WPS
- if( sme_set_IE_append( pcore_data, (PUCHAR)InformationBuffer, (u16)InformationBufferLength) )
- StatusToReturn = NDIS_STATUS_FAILURE;
- break;
-
- case OID_802_11_CUST_LED_CONTROL: // 20061108 WPS LED control
- hal_set_LED( &Adapter->sHwData, *(PULONG)InformationBuffer );
- break;
-
- case OID_802_11_CUST_RADIO:
-
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set RADIO OID]\n"));
- #endif
-
- if(InformationBufferLength >= sizeof(WLAN_RADIO_STATUS))
- {
- WLAN_RADIO_STATUS *p = (WLAN_RADIO_STATUS *)InformationBuffer;
- RadioOff DesiredRadioOffData, CurrentRadioOffData;;
-
- //Radio on : 0, Radio off : 1
- DesiredRadioOffData.boSwRadioOff = p->SWStatus;
- DesiredRadioOffData.boHwRadioOff = p->HWStatus;
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("Set CUST RADIO h/w Radio off = %x, s/w Radio off =%x\n",
- psLOCAL->RadioOffStatus.boHwRadioOff,
- psLOCAL->RadioOffStatus.boSwRadioOff));
- #endif
- sme_get_radio_mode(Adapter, &CurrentRadioOffData);
- CheckRadioOffForDisassoc( Adapter, DesiredRadioOffData, CurrentRadioOffData );
- sme_set_radio_mode(Adapter, DesiredRadioOffData);
- }
- else
- *pBytesNeed = sizeof(WLAN_RADIO_STATUS);
-
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_REGION:
- if( InformationBufferLength >= sizeof(u32) )
- {
- u32 *p;
-
- p = (u32 *) InformationBuffer;
- psLOCAL->region = (u8)*p;
- //Region has been changed. Reconnect it!!
- GetSupportChanRange(Adapter);
- GetIbssChan(Adapter);
- Scan_SetScanChanRange(Adapter, psSCANREQ);
- sme_set_disassociate(Adapter);
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set REGION OID] psLOCAL->region = %d\n", psLOCAL->region));
- #endif
- }
- else
- *pBytesNeed = sizeof(u32);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_RADIO_NOTIFICATION:
-
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set RADIO NOTIFICATION OID]\n"));
- #endif
-
- if(InformationBufferLength >= sizeof(WLAN_RADIO_NOTIFICATION))
- {
- WLAN_RADIO_NOTIFICATION *p = (WLAN_RADIO_NOTIFICATION *)InformationBuffer;
-
- // send a radio notification directly
- if (p->RadioChangeHandler != 0 && p->Data != 0)
- {
- WLAN_RADIO_STATUS Status;
- RadioOff RadioOffData;
-
- //Radio on : 0, Radio off : 1
- sme_get_radio_mode(pcore_data, &RadioOffData);
- Status.HWStatus = RadioOffData.boHwRadioOff; //first cut is always on
- Status.SWStatus = RadioOffData.boSwRadioOff;
- (*p->RadioChangeHandler)(p->Data, &Status, sizeof(Status));
- }
-
- }
- else
- *pBytesNeed = sizeof(WLAN_RADIO_NOTIFICATION);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- case OID_802_11_CUST_IBSS_FREQUENCY:
-
- if( InformationBufferLength >= sizeof(u32) )
- {
- u32 frequency;
- ChanInfo chan;
-
- frequency = *(u32 *) InformationBuffer;
- if (frequency > 3000)
- chan.band = BAND_TYPE_OFDM_5;
- else
- chan.band = BAND_TYPE_OFDM_24;
- FreqToChannelNum(chan.band, &chan.ChanNo, frequency);
- sme_set_IBSS_chan(Adapter, chan);
- #ifdef _PE_STATE_DUMP_
- WBDEBUG(("[Set IBSS_FREQUENCY OID] frequency = %d\n", frequency));
- #endif
- }
- else
- *pBytesNeed = sizeof(u32);
- break;
-
- /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++*/
- default:
- StatusToReturn = WB_NDIS_STATUS_NOT_SUPPORTED;
- }
-
- return StatusToReturn;
-}
-//=============================== NDIS 5.1 OID Set stop ===================================
-//Convert band(definition of driver) to network type(definition of NDIS)
-void NetworkTypeConvert(PNDIS_802_11_NETWORK_TYPE pNetworkType, u8 band)
-{
- switch (band)
- {
- case BAND_TYPE_DSSS:
- *pNetworkType = Ndis802_11DS;
- break;
- case BAND_TYPE_OFDM_24:
- *pNetworkType = Ndis802_11OFDM24;
- break;
- case BAND_TYPE_OFDM_5:
- *pNetworkType = Ndis802_11OFDM5;
- break;
- default:
- *pNetworkType = Ndis802_11DS;
- break;
- }
-}
-
-// channel number -> channel freq.
-void ChannelNumToFreq(u8 NetworkType, u8 ChannelNumber, u32 *freq)
-{
- //freg : MHz
- switch ( NetworkType)
- {
- case Ndis802_11DS:
- case Ndis802_11OFDM24:
- if (ChannelNumber <=13)
- *freq = 2407 + ChannelNumber*5;
- else
- *freq = 2484;
- break;
- case Ndis802_11OFDM5:
- if (ChannelNumber <= 161)
- *freq = 5000 + ChannelNumber*5;
- else
- *freq = 4000 + ChannelNumber*5;
- break;
- default:
- break;
- }
-}
-
-// channel freq. -> channel number
-void FreqToChannelNum(u8 Band, u8 *ChannelNumber, u32 freq)
-{
- //freg : MHz
- switch ( Band )
- {
- case BAND_TYPE_DSSS:
- case BAND_TYPE_OFDM_24:
- if (freq < 2484)
- *ChannelNumber = (u8)((freq-2407)/5);
- else
- *ChannelNumber = 14;
- break;
- case BAND_TYPE_OFDM_5:
- if (freq < 4920)
- *ChannelNumber = (u8)((freq-5000)/5);
- else
- *ChannelNumber = (u8)((freq-4000)/5);
- break;
- default:
- break;
- }
-}
-
-//Suppose ChNo will not be larger than 1000
-u16 ChanNo2String(u8 ChNo, u8 * Str)
-{
- u8 tmp1, tmp2, flag=0, i=0;
-
- tmp1 = ChNo/100;
- tmp2 = ChNo%100;
- if (tmp1 != 0)
- {
- Str[i++]= 0x30 + tmp1;
- flag = 1;
- }
-
- tmp1 = tmp2/10;
- tmp2 = tmp2%10;
- if (tmp1 != 0)
- {
- Str[i++]= 0x30 + tmp1;
- flag = 1;
- }
- else if (flag == 1)
- Str[i++] = 0x30;
-
- if (tmp2 != 0)
- Str[i++] = 0x30 + tmp2;
- else
- Str[i++] = 0x30;
- Str[i++] = ',';
- return (i);
-}
-
-
-//-------------------------------------------------------------------------------
-u32 USA_channel[] =
-{
- 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, // 2.4G
- 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5745, 5765, 5785, 5805, // 5G
- 0
-};
-
-u32 Europe_channel[] =
-{
- 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, // 2.4G
- 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, // 5G
- 5600, 5620, 5640, 5660, 5680, 5700,
- 0
-};
-
-u32 Spain_channel[] =
-{
- 2457, 2462, // 2.4G
- 0
-};
-
-u32 France_channel[] =
-{
- 2457, 2462, 2467, 2472, // 2.4G
- 0
-};
-
-u32 Japan_channel[] =
-{
- 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484, // 2.4G
- 5040, 5060, 5080, 5170, 5190, 5210, 5230, 4920, 4940, 4960, 4980, // 5G
- 0
-};
-
-u32 Israel_channel[] =
-{
- 2422, 2427, 2432, 2437, 2442, 2447, 2457, // 2.4G
- 0
-};
-//The above frequency list are not used actually. [20050929]
-
-
-static region_name_map regions[] =
-{
- { WLAN_REGION_EUROPE, "Channel 1-13,", Europe_channel },
- { WLAN_REGION_JAPAN, "Channel 1-14,", Japan_channel },
- { WLAN_REGION_USA, "Channel 1-11,", USA_channel },
- { WLAN_REGION_FRANCE, "Channel 10-13,", France_channel },
- { WLAN_REGION_SPAIN, "Channel 10-11,", Spain_channel },
- { WLAN_REGION_ISRAEL, "Channel 3-9,", Israel_channel },
- //{ WLAN_REGION_CANADA, "Canada-IC", USA_channel },
- { WLAN_REGION_MAX, 0, 0 } // defined as a sentry
-};
-
-u8* get_name_of_region(WLAN_REGION_CODE region)
-{
- region_name_map *p = regions;
-
- while (p->region != WLAN_REGION_MAX)
- {
- if (p->region == region)
- return p->name;
- ++p;
- }
-
- //ASSERT(!"Unrecognized region code");
- return 0;
-}
-
-/*
-u32* get_channels_of_region(WLAN_REGION_CODE region)
-{
- region_name_map *p = regions;
-
- while (p->region != WLAN_REGION_MAX)
- {
- if (p->region == region)
- return p->channels;
- ++p;
- }
-
- //ASSERT(!"Unrecognized region code!");
- return 0;
-}
-*/
-//================================================== ===================
-void DbgPrintfOID51(NDIS_OID Oid, unsigned char IsQuery)
-{
- #ifdef _PE_OID_DUMP_
- if(IsQuery)
- WBDEBUG((" QUERY:"));
- else
- WBDEBUG((" SET:"));
-
- //=======================
- // Print information
- //=======================
- switch (Oid) {
-
- case OID_GEN_SUPPORTED_LIST: WBDEBUG(("OID_GEN_SUPPORTED_LIST")); break;
- case OID_GEN_HARDWARE_STATUS: WBDEBUG(("OID_GEN_HARDWARE_STATUS")); break;
- case OID_GEN_MEDIA_SUPPORTED: WBDEBUG(("OID_GEN_MEDIA_SUPPORTED")); break;
- case OID_GEN_MEDIA_IN_USE: WBDEBUG(("OID_GEN_MEDIA_IN_USE")); break;
- case OID_GEN_MAXIMUM_LOOKAHEAD: WBDEBUG(("OID_GEN_MAXIMUM_LOOKAHEAD")); break;
- case OID_GEN_MAXIMUM_FRAME_SIZE: WBDEBUG(("OID_GEN_MAXIMUM_FRAME_SIZE")); break;
- case OID_GEN_MAXIMUM_TOTAL_SIZE: WBDEBUG(("OID_GEN_MAXIMUM_TOTAL_SIZE")); break;
- case OID_GEN_MAC_OPTIONS: WBDEBUG(("OID_GEN_MAC_OPTIONS")); break;
- case OID_GEN_MEDIA_CONNECT_STATUS: WBDEBUG(("OID_GEN_MEDIA_CONNECT_STATUS")); break;
- case OID_GEN_MAXIMUM_SEND_PACKETS: WBDEBUG(("OID_GEN_MAXIMUM_SEND_PACKETS")); break;
- case OID_GEN_VENDOR_DRIVER_VERSION: WBDEBUG(("OID_GEN_VENDOR_DRIVER_VERSION")); break;
- case OID_GEN_PROTOCOL_OPTIONS: WBDEBUG(("OID_GEN_PROTOCOL_OPTIONS")); break;
- //case OID_GEN_LINK_SPEED: WBDEBUG(("OID_GEN_LINK_SPEED")); break;
- case OID_GEN_TRANSMIT_BUFFER_SPACE: WBDEBUG(("OID_GEN_TRANSMIT_BUFFER_SPACE")); break;
- case OID_GEN_RECEIVE_BUFFER_SPACE: WBDEBUG(("OID_GEN_RECEIVE_BUFFER_SPACE")); break;
- case OID_GEN_TRANSMIT_BLOCK_SIZE: WBDEBUG(("OID_GEN_TRANSMIT_BLOCK_SIZE")); break;
- case OID_GEN_RECEIVE_BLOCK_SIZE: WBDEBUG(("OID_GEN_RECEIVE_BLOCK_SIZE")); break;
- case OID_GEN_VENDOR_DESCRIPTION: WBDEBUG(("OID_GEN_VENDOR_DESCRIPTION")); break;
- case OID_GEN_VENDOR_ID: WBDEBUG(("OID_GEN_VENDOR_ID")); break;
- case OID_GEN_DRIVER_VERSION: WBDEBUG(("OID_GEN_DRIVER_VERSION")); break;
- case OID_GEN_CURRENT_PACKET_FILTER: WBDEBUG(("OID_GEN_CURRENT_PACKET_FILTER")); break;
- case OID_GEN_CURRENT_LOOKAHEAD: WBDEBUG(("OID_GEN_CURRENT_LOOKAHEAD")); break;
- //case OID_GEN_XMIT_OK: WBDEBUG(("OID_GEN_XMIT_OK")); break;
- //case OID_GEN_RCV_OK: WBDEBUG(("OID_GEN_RCV_OK")); break;
- //case OID_GEN_XMIT_ERROR: WBDEBUG(("OID_GEN_XMIT_ERROR")); break;
- //case OID_GEN_RCV_ERROR: WBDEBUG(("OID_GEN_RCV_ERROR")); break;
- case OID_GEN_RCV_NO_BUFFER: WBDEBUG(("OID_GEN_RCV_NO_BUFFER")); break;
- case OID_802_3_PERMANENT_ADDRESS: WBDEBUG(("OID_802_3_PERMANENT_ADDRESS")); break;
- case OID_802_3_CURRENT_ADDRESS: WBDEBUG(("OID_802_3_CURRENT_ADDRESS")); break;
- case OID_802_3_MULTICAST_LIST: WBDEBUG(("OID_802_3_MULTICAST_LIST")); break;
- case OID_802_3_MAXIMUM_LIST_SIZE: WBDEBUG(("OID_802_3_MAXIMUM_LIST_SIZE")); break;
- case OID_802_3_XMIT_ONE_COLLISION: WBDEBUG(("OID_802_3_XMIT_ONE_COLLISION")); break;
- case OID_802_3_XMIT_MORE_COLLISIONS:WBDEBUG(("OID_802_3_XMIT_MORE_COLLISIONS")); break;
- case OID_PNP_CAPABILITIES: WBDEBUG(("OID_PNP_CAPABILITIES")); break;
- case OID_PNP_ENABLE_WAKE_UP: WBDEBUG(("OID_PNP_ENABLE_WAKE_UP")); break;
- case OID_PNP_QUERY_POWER: WBDEBUG(("OID_PNP_QUERY_POWER")); break;
- case OID_PNP_ADD_WAKE_UP_PATTERN: WBDEBUG(("OID_PNP_ADD_WAKE_UP_PATTERN")); break;
- case OID_PNP_REMOVE_WAKE_UP_PATTERN:WBDEBUG(("OID_PNP_REMOVE_WAKE_UP_PATTERN")); break;
- case OID_PNP_SET_POWER: WBDEBUG(("OID_PNP_SET_POWER")); break;
- case OID_GEN_PHYSICAL_MEDIUM: WBDEBUG(("OID_GEN_PHYSICAL_MEDIUM")); break;
- case OID_802_11_BSSID: WBDEBUG(("OID_802_11_BSSID")); break;
- case OID_802_11_SSID: WBDEBUG(("OID_802_11_SSID")); break;
- case OID_802_11_NETWORK_TYPES_SUPPORTED:WBDEBUG(("OID_802_11_NETWORK_TYPES_SUPPORTED")); break;
- case OID_802_11_NETWORK_TYPE_IN_USE:WBDEBUG(("OID_802_11_NETWORK_TYPE_IN_USE")); break;
- //case OID_802_11_RSSI: WBDEBUG(("OID_802_11_RSSI")); break;
- case OID_802_11_INFRASTRUCTURE_MODE:WBDEBUG(("OID_802_11_INFRASTRUCTURE_MODE")); break;
- case OID_802_11_FRAGMENTATION_THRESHOLD:WBDEBUG(("OID_802_11_FRAGMENTATION_THRESHOLD")); break;
- case OID_802_11_RTS_THRESHOLD: WBDEBUG(("OID_802_11_RTS_THRESHOLD")); break;
- case OID_802_11_SUPPORTED_RATES: WBDEBUG(("OID_802_11_SUPPORTED_RATES")); break;
- case OID_802_11_CONFIGURATION: WBDEBUG(("OID_802_11_CONFIGURATION")); break;
- case OID_802_11_ADD_WEP: WBDEBUG(("OID_802_11_ADD_WEP")); break;
- case OID_802_11_REMOVE_WEP: WBDEBUG(("OID_802_11_REMOVE_WEP")); break;
- case OID_802_11_DISASSOCIATE: WBDEBUG(("OID_802_11_DISASSOCIATE")); break;
- case OID_802_11_BSSID_LIST: WBDEBUG(("OID_802_11_BSSID_LIST")); break;
- case OID_802_11_AUTHENTICATION_MODE:WBDEBUG(("OID_802_11_AUTHENTICATION_MODE")); break;
- case OID_802_11_BSSID_LIST_SCAN: WBDEBUG(("OID_802_11_BSSID_LIST_SCAN")); break;
- //case OID_802_11_WEP_STATUS: WBDEBUG(("OID_802_11_WEP_STATUS")); break;
- case OID_802_11_ENCRYPTION_STATUS: WBDEBUG(("OID_802_11_ENCRYPTION_STATUS")); break;
- case OID_802_11_RELOAD_DEFAULTS: WBDEBUG(("OID_802_11_RELOAD_DEFAULTS")); break;
- case OID_802_11_ADD_KEY: WBDEBUG(("OID_802_11_ADD_KEY")); break;
- case OID_802_11_REMOVE_KEY: WBDEBUG(("OID_802_11_REMOVE_KEY")); break;
- case OID_802_11_ASSOCIATION_INFORMATION: WBDEBUG(("OID_802_11_ASSOCIATION_INFORMATION")); break;
- case OID_802_11_TEST: WBDEBUG(("OID_802_11_TEST")); break;
- default:
- //WBDEBUG(("UNKNOWN"));
- break;
- }
- #endif
-}
-
-//from pd50(0209)
-void vNetAuthEventInd(PWB32_ADAPTER Adapter, u8 *bssid, u32 flag)
-{
- struct event_t
- {
- NDIS_802_11_STATUS_INDICATION indication;
- NDIS_802_11_AUTHENTICATION_REQUEST request;
- } event;
- u8 NdisFlag;
-
- if( flag == AUTH_REQUEST_PAIRWISE_ERROR )
- NdisFlag = NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR;
- else
- NdisFlag = NDIS_802_11_AUTH_REQUEST_GROUP_ERROR;
-
- #ifdef _PE_RX_DUMP_
- WBDEBUG(("!!!!!WPA countermeasure: Auth event\n"));
- #endif
- event.indication.StatusType = Ndis802_11StatusType_Authentication;
- event.request.Length = sizeof(NDIS_802_11_AUTHENTICATION_REQUEST);
- memcpy( event.request.Bssid, bssid, 6 );
- event.request.Flags = NdisFlag;
- NdisMIndicateStatus(Adapter->WbNdis.MiniportAdapterHandle,
- NDIS_STATUS_MEDIA_SPECIFIC_INDICATION,
- &event,
- sizeof(NDIS_802_11_STATUS_INDICATION) + sizeof(NDIS_802_11_AUTHENTICATION_REQUEST));
- NdisMIndicateStatusComplete(Adapter->WbNdis.MiniportAdapterHandle);
-}
-
-//TODO : WPA2
-///////////////////////////////////////////////////////////////////////////////////////////////
-//pre authentication request to OS
-#ifdef _WPA2_
-void vPmkIdStatusEvent(PWB32_ADAPTER Adapter) //added by ws 05/04/04
-{
- int i,j=0;
- struct status_event{
- NDIS_802_11_STATUS_INDICATION indication;
- NDIS_802_11_PMKID_CANDIDATE_LIST candidatelist;
- } *p;
- char temp_status_event[sizeof(NDIS_802_11_STATUS_INDICATION)+sizeof(NDIS_ 802_11_PMKID_CANDIDATE_LIST)+sizeof(PMKID_CANDIDAT E)*MAX_PMKID_CandidateList];
- PPMKID_CANDIDATE pmkid_candidate;
- p=(struct status_event *)temp_status_event;
- pmkid_candidate=p->candidatelist.CandidateList;
- p->indication.StatusType=Ndis802_11StatusType_PMKID_C andidateList;
- p->candidatelist.Version=1;
-
- for(i=1;i - {
- if(psBSS(i)->wState >=IDLE_SCAN && boCmpSSID(&psBSS(i)->SSID,&psSME->sDesiredSSID))
- {
- memcpy( pmkid_candidate->BSSID, psBSS(i)->abBssID, 6 );
- if(psBSS(i)->pre_auth)
- pmkid_candidate->Flags=NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED;
- else
- pmkid_candidate->Flags=0x0;
- pmkid_candidate ++;
- j++;
- if(j>MAX_PMKID_Accunt)
- break;
- }
- }
- p->candidatelist.NumCandidates=(u32)j;
- NdisMIndicateStatus(
- Adapter->WbNdis.MiniportAdapterHandle,NDIS_STATUS_MEDIA_SPE CIFIC_INDICATION,
- &temp_status_event,
- sizeof(NDIS_802_11_STATUS_INDICATION)+
- sizeof(NDIS_802_11_PMKID_CANDIDATE_LIST)+
- sizeof(PMKID_CANDIDATE)*j);
-
- NdisMIndicateStatusComplete(Adapter->WbNdis.MiniportAdapterHandle);
-
-}
-#endif //end def _WPA2_
-
-
-
+/* We don't need no windows code */
diff --git a/drivers/net/wireless/winbond/winbondport/wbndis51_f.h b/drivers/net/wireless/winbond/winbondport/wbndis51_f.h
index 97c501a..e69de29 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis51_f.h
+++ b/drivers/net/wireless/winbond/winbondport/wbndis51_f.h
@@ -1,27 +0,0 @@
-// Function definition
-extern NDIS_STATUS Ndis51QueryInformation( PWB32_ADAPTER,
- NDIS_OID,
- void*,
- u32,
- PULONG);
-
-extern NDIS_STATUS Ndis51SetInformation( PWB32_ADAPTER,
- NDIS_OID,
- void*,
- u32,
- PULONG);
-
-extern void DbgPrintfOID51(NDIS_OID, unsigned char);
-
-extern void WbNdis51_initial( PWB32_ADAPTER Adapter );
-extern void WbNdis51_oid_sync( void* s1, PWB32_ADAPTER Adapter, void* s3, void* s4 );
-extern void WbNdis51_connect( void* s1, PWB32_ADAPTER Adapter, void* s3, void* s4 );
-extern void WbNdis51_destroy( PWB32_ADAPTER Adapter );
-void FreqToChannelNum(u8 Band, u8 *ChannelNumber, u32 freq);
-
-void vNetAuthEventInd( PWB32_ADAPTER Adapter, u8 *bssid, u32 flag );
-#ifdef _WPA2_
-void vPmkIdStatusEvent( PWB32_ADAPTER Adapter );
-#endif
-
-
diff --git a/drivers/net/wireless/winbond/winbondport/wbndis51_s.h b/drivers/net/wireless/winbond/winbondport/wbndis51_s.h
index 65cbf2d..e69de29 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis51_s.h
+++ b/drivers/net/wireless/winbond/winbondport/wbndis51_s.h
@@ -1,27 +0,0 @@
-#define OS_EVENT_INDICATE( _A, _B, _F ) vNetAuthEventInd( _A, _B, _F )
-#ifdef _WPA2_
-#define OS_PMKID_STATUS_EVENT( _A ) vPmkIdStatusEvent( _A ) //added by ws 05/05/04
-#endif
-
-typedef struct _NDIS51_DESIRED_PARAMETER
-{
- OS_TIMER scan_sync_timer;//20040114.3 ADD
- OS_TIMER Connect_timer;
-
- u16 sync_count;
- u16 sync_scan_require;
-
- u8 CurrentSSID[36];
- u32 CurrentSSIDLength;
-
- u32 ConnectCount;
- s32 ConnectInterval;
-
-}NDIS51_DESIRED_PARAMETER, *PNDIS51_DESIRED_PARAMETER;
-
-
-//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++//
-//#define bss_desc_t WB_BSSDESCRIPTION // For convert
-#define bss_desc_tt WB_BSSDESCRIPTION // For convert
-
-
diff --git a/drivers/net/wireless/winbond/winbondport/wbndis_f.h b/drivers/net/wireless/winbond/winbondport/wbndis_f.h
index 7cc8ee9..e69de29 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis_f.h
+++ b/drivers/net/wireless/winbond/winbondport/wbndis_f.h
@@ -1,42 +0,0 @@
-//=================================
-// Function definition
-//=================================
-#ifdef NDIS51_MINIPORT
-void WBNDIS_PnPNotify( PADAPTER Adapter, NDIS_DEVICE_PNP_EVENT PnPEvent, void* InformationBuffer, u32 InformationBufferLength );
-#endif
-
-void WBNDIS_SendPackets( NDIS_HANDLE MiniportAdapterContext, PPNDIS_PACKET PacketArray, u32 NumberOfPackets );
-void WBNDIS_stop( PADAPTER Adapter );
-void WBNDIS_Destroy( PADAPTER Adapter );
-unsigned char WBNDIS_Initial( PADAPTER Adapter, NDIS_HANDLE MiniportAdapterHandle );
-void WBNDIS_GetNextPacket( PADAPTER Adapter, PDESCRIPTOR pDes );
-void WBNDIS_GetNextPacketCompleted( PADAPTER Adapter, PDESCRIPTOR pDes );
-void WBNDIS_ReceivePacket( PADAPTER Adapter, PRXLAYER1 pRxLayer1 );
-void WbNdis_TxRateShow( void* S1, PADAPTER Adapter, void* S3, void* S4 );
-NDIS_STATUS WbWLanReset( PBOOLEAN AddressingReset, NDIS_HANDLE MiniportAdapterContext );
-NDIS_STATUS WbWLanInitialize( PNDIS_STATUS OpenErrorStatus, PUINT SelectedMediumIndex,
- PNDIS_MEDIUM MediumArray, u32 MediumArraySize,
- NDIS_HANDLE MiniportAdapterHandle, NDIS_HANDLE ConfigurationHandle );
-NDIS_STATUS WbReadNdisConfigration( PADAPTER Adapter, NDIS_HANDLE ConfigurationHandle );
-void WbWLanHalt( NDIS_HANDLE MiniportAdapterContext );
-NDIS_STATUS WbWLanReset( PBOOLEAN AddressingReset, NDIS_HANDLE MiniportAdapterContext );
-NDIS_STATUS WbWLanQueryInformation( NDIS_HANDLE MiniportAdapterContext, NDIS_OID Oid,
- void* InformationBuffer, u32 InformationBufferLength,
- PULONG BytesWritten, PULONG BytesNeeded );
-NDIS_STATUS WbWLanSetInformation( NDIS_HANDLE MiniportAdapterContext, NDIS_OID Oid,
- void* InformationBuffer, u32 InformationBufferLength,
- PULONG BytesRead, PULONG BytesNeeded );
-void WBNDIS_ConnectStatus( PADAPTER Adapter, u32 flag );
-#ifdef NDIS50_MINIPORT
-void WbInitializeString( PNDIS_STRING DestinationString, PUCHAR SourceString );
-void WbFreeString( NDIS_STRING String );
-#else
-#define WbInitializeString( _D, _S ) NdisInitializeString( _D, _S )
-#define WbFreeString( _S ) NdisFreeString( _S )
-#endif
-
-
-
-
-
-
diff --git a/drivers/net/wireless/winbond/winbondport/wbndis_s.h b/drivers/net/wireless/winbond/winbondport/wbndis_s.h
index c32863d..e69de29 100644
--- a/drivers/net/wireless/winbond/winbondport/wbndis_s.h
+++ b/drivers/net/wireless/winbond/winbondport/wbndis_s.h
@@ -1,158 +0,0 @@
-//================================================== ==========
-// WbNdis.h
-//
-
-#define OS_PACKET_SIZE( _A ) \
- (!Adapter->WbNdis.shutdown && Adapter->WbNdis.first_packet) ? RESERVED(Adapter->WbNdis.first_packet)->NdisPacketSize : 0
-#define OS_LINK_STATUS (Adapter->WbNdis.connect_status==NDIS_STATUS_MEDIA_CONNECT)
-#define OS_SET_SHUTDOWN( _A ) WBNDIS_SET_SHUTDOWN( _A )
-#define OS_SET_RESUME( _A ) WBNDIS_SET_RESUME( _A )
-#define OS_CONNECT_STATUS_INDICATE( _A, _F ) WBNDIS_ConnectStatus( _A, _F )
-#define OS_CURRENT_RX_BYTE( _A ) (_A->WbNdis.RxByteCount)
-#define OS_CURRENT_TX_BYTE( _A ) (_A->WbNdis.TxByteCount)
-#define OS_RECEIVE_PACKET_INDICATE( _A, _D ) WBNDIS_ReceivePacket( _A, _D )
-#define OS_STOP( _A ) WBNDIS_stop( _A )
-#define OS_GET_PACKET( _A, _D ) WBNDIS_GetNextPacket( _A, _D )
-#define OS_GET_PACKET_COMPLETE( _A, _D ) WBNDIS_GetNextPacketCompleted( _A, _D )
-#define OS_SEND_RESULT( _A, _ID, _R )
-
-//++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++
-#ifdef NDIS50_MINIPORT // 20060726
-#define WB_NDIS_STATUS_NOT_SUPPORTED NDIS_STATUS_FAILURE
-#else
-#define WB_NDIS_STATUS_NOT_SUPPORTED NDIS_STATUS_NOT_SUPPORTED
-#endif
-
-// NDIS Version definition
-#define WB32_NDIS_MAJOR_VERSION 5
-#define WB32_NDIS_MINOR_VERSION 0
-
-//Customize OID by vender
-#define OID_802_11_CUST_LINK_QUALITY 0xFF000000
-#define OID_802_11_CUST_HW_VERSION 0xFF000001
-#define OID_802_11_CUST_DRV_VERSION 0xFF000002
-#define OID_802_11_CUST_PREAMBLE_TYPE 0xFF000003//added by ws 09/28/04
-// add for radio on/off control
-#define OID_802_11_CUST_RADIO 0xFF000004
-// add for region control
-#define OID_802_11_CUST_REGION 0xFF000005
-#define OID_802_11_CUST_DRV_NAME 0xFF000006
-
-// 20041021 1.1.81.1000 ybjiang
-// add for radio notification
-#define OID_802_11_CUST_RADIO_NOTIFICATION 0xFF000007
-
-// 20041026 1.1.83.1000 ybjiang
-#define OID_802_11_CUST_IBSS_FREQUENCY 0xFF000008
-
-// 20041102 1.1.91.1000 ybjiang
-#define OID_802_11_CUST_REGION_CAPABILITIES 0xFF000009
-
-/** 1.1.97 Turbo add for Qcom case */
-#define OID_802_11_CUST_ENCRYPTION_STATUS 0xFF00000A
-
-//sky added 20050803
-#define OID_802_11_CUST_TX_THROUGHPUT 0xFF00000B
-#define OID_802_11_CUST_RX_THROUGHPUT 0xFF00000C
-//sky added 20050817
-#define OID_802_11_CUST_RF_TYPE 0xFF00000D
-
-// 20061108 WPS
-#define OID_802_11_CUST_IE_APPEND 0xFF00000E
-#define OID_802_11_CUST_LED_CONTROL 0xFF00000F
-
-#define WBNDIS_SET_SHUTDOWN( _A ) _A->WbNdis.shutdown=1
-#define WBNDIS_SET_RESUME( _A ) _A->WbNdis.shutdown=0
-
-#define MAX_ADAPTER_COUNT 8
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////
-typedef struct _WBNDIS
-{
- NDIS_SPIN_LOCK SpinLock; // For Tx spinlock
- u32 shutdown;// 931130.4.s
-
- // For storing the 802.3 NDIS packet
- PNDIS_PACKET first_packet;
- PNDIS_PACKET last_packet;
- PNDIS_PACKET packet_return;
-
- OS_ATOMIC ThreadCount;
-
- //==============================================
- // For NDIS
- //==============================================
- NDIS_HANDLE PacketPoolHandle;
- NDIS_HANDLE BufferPoolHandle;
-
- u8 NdisPacketPoolOk;// 931130.4.t
- u8 PacketAllocateCount;// 931130.4.t
- u8 NdisBufferPoolOk;// 931130.4.t
- u8 RESERVED_c;
-
- PNDIS_PACKET ReceivePacket[ ETHERNET_RX_DESCRIPTORS ];
- PNDIS_BUFFER ReceiveBuffer[ ETHERNET_RX_DESCRIPTORS ];
-
- NDIS_HANDLE MiniportAdapterHandle;
- //NDIS_HANDLE ConfigurationHandle;
- NDIS_STATUS connect_status;
-
- // For collect each buffer
- u8 NdisBufferTmp[1520];
-
- // For counting throughput for 802.3 frame
- u32 TxByteCount; // 802.3 frame send byte count
- u32 RxByteCount; // 802.3 frame receive byte count
- u32 TxByteCount_last; // 802.3 frame send byte count
- u32 TxRateShowResult;
- OS_TIMER TxRateTimer;
-
- NDIS_STRING DeviceName; // 20060721 move here
- NDIS_STRING DeviceLinkUnicodeString;
-
- u32 DisconnectIndicate;
-
-} WBNDIS, *PWBNDIS;
-
-
-//
-// Type of an interrupt.
-//--------------------------------------------
-
-/*typedef enum
-{
- BUSERR = 0x01,
- RECEIVE = 0x02,
- TRANSMIT = 0x04,
- RXBUFFERUNAVAILABLE = 0x08,
- TSFSYNCOK = 0x10,
- UNKNOWN = 0x11,
-} INTERRUPT_TYPE;
-*/
-
-// Using this OOB for store additional information : 4+4+2+1+1=12
-typedef struct _MINIPORT_RESERVED {
- PNDIS_PACKET Next; // used to link in the queues (4 bytes)
- union
- {
- PUCHAR MLME_DataBuffer; //
- PNDIS_BUFFER pNdisPacketBuffer;
- };
-
- union
- {
- u16 MLME_Size; //
- u16 NdisPacketSize;
- };
- u8 Flag; //
- u8 FrameType; //
-} MINIPORT_RESERVED, *PMINIPORT_RESERVED;
-
-//
-// Retrieve the MINIPORT_RESERVED structure from a packet.
-// MiniportReservedEx = 3*4=12
-#define RESERVED(Packet) \
- ((PMINIPORT_RESERVED)((Packet)->MiniportReservedEx))
-
-extern ANSI_STRING g_String;
-extern char g_NicName[100];

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pav...rses/blog.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/