diff options
Diffstat (limited to 'drivers/staging/rt2860/common/cmm_info.c')
-rw-r--r-- | drivers/staging/rt2860/common/cmm_info.c | 820 |
1 files changed, 518 insertions, 302 deletions
diff --git a/drivers/staging/rt2860/common/cmm_info.c b/drivers/staging/rt2860/common/cmm_info.c index 019cc4474ce8..49e9bdfad3da 100644 --- a/drivers/staging/rt2860/common/cmm_info.c +++ b/drivers/staging/rt2860/common/cmm_info.c @@ -23,154 +23,154 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * ************************************************************************* -*/ + */ #include <linux/sched.h> #include "../rt_config.h" INT Show_SSID_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_WirelessMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_TxBurst_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_TxPreamble_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_TxPower_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_Channel_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_BGProtection_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_RTSThreshold_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_FragThreshold_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtBw_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtMcs_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtGi_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtOpMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtExtcha_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtMpduDensity_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtBaWinSize_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtRdg_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtAmsdu_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_HtAutoBa_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_CountryRegion_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_CountryRegionABand_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_CountryCode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); #ifdef AGGREGATION_SUPPORT INT Show_PktAggregate_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); #endif // AGGREGATION_SUPPORT // #ifdef WMM_SUPPORT INT Show_WmmCapable_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); #endif // WMM_SUPPORT // INT Show_IEEE80211H_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_NetworkType_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_AuthMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_EncrypType_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_DefaultKeyID_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_Key1_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_Key2_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_Key3_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_Key4_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); INT Show_WPAPSK_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf); + OUT PSTRING pBuf); static struct { - CHAR *name; - INT (*show_proc)(PRTMP_ADAPTER pAdapter, PUCHAR arg); + PSTRING name; + INT (*show_proc)(PRTMP_ADAPTER pAdapter, PSTRING arg); } *PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC, RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC[] = { {"SSID", Show_SSID_Proc}, {"WirelessMode", Show_WirelessMode_Proc}, @@ -224,8 +224,9 @@ static struct { */ INT Set_DriverVersion_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { + DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s\n", STA_DRIVER_VERSION)); return TRUE; @@ -242,32 +243,14 @@ INT Set_DriverVersion_Proc( */ INT Set_CountryRegion_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG region; + int retval; - region = simple_strtol(arg, 0, 10); - // Country can be set only when EEPROM not programmed - if (pAd->CommonCfg.CountryRegion & 0x80) - { - DBGPRINT(RT_DEBUG_ERROR, ("Set_CountryRegion_Proc::parameter of CountryRegion in eeprom is programmed \n")); + retval = RT_CfgSetCountryRegion(pAd, arg, BAND_24G); + if (retval == FALSE) return FALSE; - } - - if((region >= 0) && (region <= REGION_MAXIMUM_BG_BAND)) - { - pAd->CommonCfg.CountryRegion = (UCHAR) region; - } - else if (region == REGION_31_BG_BAND) - { - pAd->CommonCfg.CountryRegion = (UCHAR) region; - } - else - { - DBGPRINT(RT_DEBUG_ERROR, ("Set_CountryRegion_Proc::parameters out of range\n")); - return FALSE; - } // if set country region, driver needs to be reset BuildChannelList(pAd); @@ -288,28 +271,14 @@ INT Set_CountryRegion_Proc( */ INT Set_CountryRegionABand_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG region; - - region = simple_strtol(arg, 0, 10); + int retval; - // Country can be set only when EEPROM not programmed - if (pAd->CommonCfg.CountryRegionForABand & 0x80) - { - DBGPRINT(RT_DEBUG_ERROR, ("Set_CountryRegionABand_Proc::parameter of CountryRegion in eeprom is programmed \n")); - return FALSE; - } - if((region >= 0) && (region <= REGION_MAXIMUM_A_BAND)) - { - pAd->CommonCfg.CountryRegionForABand = (UCHAR) region; - } - else - { - DBGPRINT(RT_DEBUG_ERROR, ("Set_CountryRegionABand_Proc::parameters out of range\n")); + retval = RT_CfgSetCountryRegion(pAd, arg, BAND_5G); + if (retval == FALSE) return FALSE; - } // if set country region, driver needs to be reset BuildChannelList(pAd); @@ -329,22 +298,17 @@ INT Set_CountryRegionABand_Proc( */ INT Set_WirelessMode_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG WirelessMode; INT success = TRUE; - WirelessMode = simple_strtol(arg, 0, 10); - + success = RT_CfgSetWirelessMode(pAd, arg); + if (success) { - INT MaxPhyMode = PHY_11G; - - MaxPhyMode = PHY_11N_5G; - - if (WirelessMode <= MaxPhyMode) { - RTMPSetPhyMode(pAd, WirelessMode); + LONG WirelessMode = pAd->CommonCfg.PhyMode; + RTMPSetPhyMode(pAd, WirelessMode); if (WirelessMode >= PHY_11ABGN_MIXED) { pAd->CommonCfg.BACapability.field.AutoBA = TRUE; @@ -364,17 +328,10 @@ INT Set_WirelessMode_Proc( AsicEnableIbssSync(pAd); // copy to on-chip memory } } - else - { - success = FALSE; - } - } // it is needed to set SSID to take effect - if (success == TRUE) - { SetCommonHT(pAd); - DBGPRINT(RT_DEBUG_TRACE, ("Set_WirelessMode_Proc::(=%ld)\n", WirelessMode)); + DBGPRINT(RT_DEBUG_TRACE, ("Set_WirelessMode_Proc::(=%d)\n", pAd->CommonCfg.PhyMode)); } else { @@ -394,7 +351,7 @@ INT Set_WirelessMode_Proc( */ INT Set_Channel_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { INT success = TRUE; UCHAR Channel; @@ -451,24 +408,18 @@ INT Set_Channel_Proc( */ INT Set_ShortSlot_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG ShortSlot; - - ShortSlot = simple_strtol(arg, 0, 10); - - if (ShortSlot == 1) - pAd->CommonCfg.bUseShortSlotTime = TRUE; - else if (ShortSlot == 0) - pAd->CommonCfg.bUseShortSlotTime = FALSE; - else - return FALSE; //Invalid argument + int retval; + retval = RT_CfgSetShortSlot(pAd, arg); + if (retval == TRUE) DBGPRINT(RT_DEBUG_TRACE, ("Set_ShortSlot_Proc::(ShortSlot=%d)\n", pAd->CommonCfg.bUseShortSlotTime)); - return TRUE; + return retval; } + /* ========================================================================== Description: @@ -479,12 +430,12 @@ INT Set_ShortSlot_Proc( */ INT Set_TxPower_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG TxPower; + LONG TxPower; INT success = FALSE; - TxPower = (ULONG) simple_strtol(arg, 0, 10); + TxPower = simple_strtol(arg, 0, 10); if (TxPower <= 100) { { @@ -511,7 +462,7 @@ INT Set_TxPower_Proc( */ INT Set_BGProtection_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { switch (simple_strtol(arg, 0, 10)) { @@ -544,7 +495,7 @@ INT Set_BGProtection_Proc( */ INT Set_TxPreamble_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { RT_802_11_PREAMBLE Preamble; @@ -585,7 +536,7 @@ INT Set_TxPreamble_Proc( */ INT Set_RTSThreshold_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { NDIS_802_11_RTS_THRESHOLD RtsThresh; @@ -613,7 +564,7 @@ INT Set_RTSThreshold_Proc( */ INT Set_FragThreshold_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; @@ -657,9 +608,9 @@ INT Set_FragThreshold_Proc( */ INT Set_TxBurst_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG TxBurst; + LONG TxBurst; TxBurst = simple_strtol(arg, 0, 10); if (TxBurst == 1) @@ -685,9 +636,9 @@ INT Set_TxBurst_Proc( */ INT Set_PktAggregate_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG aggre; + LONG aggre; aggre = simple_strtol(arg, 0, 10); @@ -716,9 +667,9 @@ INT Set_PktAggregate_Proc( */ INT Set_IEEE80211H_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { - ULONG ieee80211h; + LONG ieee80211h; ieee80211h = simple_strtol(arg, 0, 10); @@ -746,7 +697,7 @@ INT Set_IEEE80211H_Proc( */ INT Set_Debug_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { DBGPRINT(RT_DEBUG_TRACE, ("==> Set_Debug_Proc *******************\n")); @@ -761,10 +712,11 @@ INT Set_Debug_Proc( INT Show_DescInfo_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { -#ifdef RT2860 +#ifdef RTMP_MAC_PCI INT i, QueIdx=0; +// ULONG RegValue; PRT28XX_RXD_STRUC pRxD; PTXD_STRUC pTxD; PRTMP_TX_RING pTxRing = &pAd->TxRing[QueIdx]; @@ -774,27 +726,28 @@ INT Show_DescInfo_Proc( for(i=0;i<TX_RING_SIZE;i++) { pTxD = (PTXD_STRUC) pTxRing->Cell[i].AllocVa; - printk("Desc #%d\n",i); - hex_dump("Tx Descriptor", (char *)pTxD, 16); - printk("pTxD->DMADONE = %x\n", pTxD->DMADONE); + DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i)); + hex_dump("Tx Descriptor", (PUCHAR)pTxD, 16); + DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE)); } - printk("---------------------------------------------------\n"); + DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n")); for(i=0;i<MGMT_RING_SIZE;i++) { pTxD = (PTXD_STRUC) pMgmtRing->Cell[i].AllocVa; - printk("Desc #%d\n",i); - hex_dump("Mgmt Descriptor", (char *)pTxD, 16); - printk("pMgmt->DMADONE = %x\n", pTxD->DMADONE); + DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i)); + hex_dump("Mgmt Descriptor", (PUCHAR)pTxD, 16); + DBGPRINT(RT_DEBUG_OFF, ("pMgmt->DMADONE = %x\n", pTxD->DMADONE)); } - printk("---------------------------------------------------\n"); + DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n")); for(i=0;i<RX_RING_SIZE;i++) { pRxD = (PRT28XX_RXD_STRUC) pRxRing->Cell[i].AllocVa; - printk("Desc #%d\n",i); - hex_dump("Rx Descriptor", (char *)pRxD, 16); - printk("pRxD->DDONE = %x\n", pRxD->DDONE); + DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i)); + hex_dump("Rx Descriptor", (PUCHAR)pRxD, 16); + DBGPRINT(RT_DEBUG_OFF, ("pRxD->DDONE = %x\n", pRxD->DDONE)); } -#endif /* RT2860 */ +#endif // RTMP_MAC_PCI // + return TRUE; } @@ -813,8 +766,11 @@ INT Show_DescInfo_Proc( */ INT Set_ResetStatCounter_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { + //UCHAR i; + //MAC_TABLE_ENTRY *pEntry; + DBGPRINT(RT_DEBUG_TRACE, ("==>Set_ResetStatCounter_Proc\n")); // add the most up-to-date h/w raw counters into software counters @@ -824,9 +780,33 @@ INT Set_ResetStatCounter_Proc( NdisZeroMemory(&pAd->Counters8023, sizeof(COUNTER_802_3)); NdisZeroMemory(&pAd->RalinkCounters, sizeof(COUNTER_RALINK)); + // Reset HotSpot counter + + return TRUE; } +/* + ======================================================================== + + Routine Description: + Add WPA key process. + In Adhoc WPANONE, bPairwise = 0; KeyIdx = 0; + + Arguments: + pAd Pointer to our adapter + pBuf Pointer to the where the key stored + + Return Value: + NDIS_SUCCESS Add key successfully + + IRQL = DISPATCH_LEVEL + + Note: + + ======================================================================== +*/ + BOOLEAN RTMPCheckStrPrintAble( IN CHAR *pInPutStr, IN UCHAR strLen) @@ -1100,7 +1080,7 @@ VOID RTMPWPARemoveAllKeys( UCHAR i; DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveAllKeys(AuthMode=%d, WepStatus=%d)\n", pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus)); - + RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP); // For WEP/CKIP, there is no need to remove it, since WinXP won't set it again after // Link up. And it will be replaced if user changed it. if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA) @@ -1122,9 +1102,33 @@ VOID RTMPWPARemoveAllKeys( AsicRemoveSharedKeyEntry(pAd, BSS0, i); } - + RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP); } + +/* + ======================================================================== + + Routine Description: + As STA's BSSID is a WC too, it uses shared key table. + This function write correct unicast TX key to ASIC WCID. + And we still make a copy in our MacTab.Content[BSSID_WCID].PairwiseKey. + Caller guarantee TKIP/AES always has keyidx = 0. (pairwise key) + Caller guarantee WEP calls this function when set Txkey, default key index=0~3. + + Arguments: + pAd Pointer to our adapter + pKey Pointer to the where the key stored + + Return Value: + NDIS_SUCCESS Add key successfully + + IRQL = DISPATCH_LEVEL + + Note: + + ======================================================================== +*/ /* ======================================================================== Routine Description: @@ -1147,6 +1151,11 @@ VOID RTMPSetPhyMode( INT i; // the selected phymode must be supported by the RF IC encoded in E2PROM + // if no change, do nothing + /* bug fix + if (pAd->CommonCfg.PhyMode == phymode) + return; + */ pAd->CommonCfg.PhyMode = (UCHAR)phymode; DBGPRINT(RT_DEBUG_TRACE,("RTMPSetPhyMode : PhyMode=%d, channel=%d \n", pAd->CommonCfg.PhyMode, pAd->CommonCfg.Channel)); @@ -1466,7 +1475,10 @@ VOID RTMPSetHT( } AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm); + { RTMPSetIndividualHT(pAd, 0); + } + } /* @@ -1657,12 +1669,8 @@ VOID RTMPAddWcidAttributeEntry( // 1. In ADHOC mode, the AID is wcid number. And NO mesh link exists. // 2. In Infra mode, the AID:1 MUST be wcid of infra STA. // the AID:2~ assign to mesh link entry. - if (pEntry && ADHOC_ON(pAd)) + if (pEntry) Wcid = pEntry->Aid; - else if (pEntry && INFRA_ON(pAd)) - { - Wcid = BSSID_WCID; - } else Wcid = MCAST_WCID; } @@ -1697,12 +1705,12 @@ VOID RTMPAddWcidAttributeEntry( } // For key index and ext IV bit, so only need to update the position(offset+3). -#ifdef RT2860 +#ifdef RTMP_MAC_PCI RTMP_IO_WRITE8(pAd, offset+3, IVEIV); -#endif -#ifdef RT2870 +#endif // RTMP_MAC_PCI // +#ifdef RTMP_MAC_USB RTUSBMultiWrite_OneByte(pAd, offset+3, &IVEIV); -#endif // RT2870 // +#endif // RTMP_MAC_USB // DBGPRINT(RT_DEBUG_TRACE,("RTMPAddWcidAttributeEntry: WCID #%d, KeyIndex #%d, Alg=%s\n",Wcid, KeyIdx, CipherName[CipherAlg])); DBGPRINT(RT_DEBUG_TRACE,(" WCIDAttri = 0x%x \n", WCIDAttri)); @@ -1723,7 +1731,7 @@ Arguments: Note: ========================================================================== */ -CHAR *GetEncryptType(CHAR enc) +PSTRING GetEncryptType(CHAR enc) { if(enc == Ndis802_11WEPDisabled) return "NONE"; @@ -1739,7 +1747,7 @@ CHAR *GetEncryptType(CHAR enc) return "UNKNOW"; } -CHAR *GetAuthMode(CHAR auth) +PSTRING GetAuthMode(CHAR auth) { if(auth == Ndis802_11AuthModeOpen) return "OPEN"; @@ -1783,71 +1791,133 @@ CHAR *GetAuthMode(CHAR auth) 3.) UI needs to prepare at least 4096bytes to get the results ========================================================================== */ -#define LINE_LEN (4+33+20+8+10+9+7+3) // Channel+SSID+Bssid+WepStatus+AuthMode+Signal+WiressMode+NetworkType -VOID RTMPIoctlGetSiteSurvey( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq) +#define LINE_LEN (4+33+20+23+9+7+7+3) // Channel+SSID+Bssid+Security+Signal+WiressMode+ExtCh+NetworkType +VOID RTMPCommSiteSurveyData( + IN PSTRING msg, + IN PBSS_ENTRY pBss) { - CHAR *msg; - INT i=0; - INT WaitCnt; - INT Status=0; - CHAR Ssid[MAX_LEN_OF_SSID +1]; - INT Rssi = 0, max_len = LINE_LEN; + INT Rssi = 0; UINT Rssi_Quality = 0; NDIS_802_11_NETWORK_TYPE wireless_mode; + CHAR Ssid[MAX_LEN_OF_SSID +1]; + STRING SecurityStr[32] = {0}; + NDIS_802_11_ENCRYPTION_STATUS ap_cipher = Ndis802_11EncryptionDisabled; + NDIS_802_11_AUTHENTICATION_MODE ap_auth_mode = Ndis802_11AuthModeOpen; - os_alloc_mem(NULL, (PUCHAR *)&msg, sizeof(CHAR)*((MAX_LEN_OF_BSS_TABLE)*max_len)); - - if (msg == NULL) - { - DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - msg memory alloc fail.\n")); - return; - } - - memset(msg, 0 ,(MAX_LEN_OF_BSS_TABLE)*max_len ); memset(Ssid, 0 ,(MAX_LEN_OF_SSID +1)); - sprintf(msg,"%s","\n"); - sprintf(msg+strlen(msg),"%-4s%-33s%-20s%-8s%-10s%-9s%-7s%-3s\n", - "Ch", "SSID", "BSSID", "Enc", "Auth", "Siganl(%)", "W-Mode", " NT"); - - WaitCnt = 0; - pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE; - - while ((ScanRunning(pAdapter) == TRUE) && (WaitCnt++ < 200)) - OS_WAIT(500); - - for(i=0; i<pAdapter->ScanTab.BssNr ;i++) - { - if( pAdapter->ScanTab.BssEntry[i].Channel==0) - break; - - if((strlen(msg)+max_len ) >= IW_SCAN_MAX_DATA) - break; //Channel - sprintf(msg+strlen(msg),"%-4d", pAdapter->ScanTab.BssEntry[i].Channel); + sprintf(msg+strlen(msg),"%-4d", pBss->Channel); //SSID - memcpy(Ssid, pAdapter->ScanTab.BssEntry[i].Ssid, pAdapter->ScanTab.BssEntry[i].SsidLen); - Ssid[pAdapter->ScanTab.BssEntry[i].SsidLen] = '\0'; + memcpy(Ssid, pBss->Ssid, pBss->SsidLen); + Ssid[pBss->SsidLen] = '\0'; sprintf(msg+strlen(msg),"%-33s", Ssid); //BSSID sprintf(msg+strlen(msg),"%02x:%02x:%02x:%02x:%02x:%02x ", - pAdapter->ScanTab.BssEntry[i].Bssid[0], - pAdapter->ScanTab.BssEntry[i].Bssid[1], - pAdapter->ScanTab.BssEntry[i].Bssid[2], - pAdapter->ScanTab.BssEntry[i].Bssid[3], - pAdapter->ScanTab.BssEntry[i].Bssid[4], - pAdapter->ScanTab.BssEntry[i].Bssid[5]); - //Encryption Type - sprintf(msg+strlen(msg),"%-8s",GetEncryptType(pAdapter->ScanTab.BssEntry[i].WepStatus)); - //Authentication Mode - if (pAdapter->ScanTab.BssEntry[i].WepStatus == Ndis802_11WEPEnabled) - sprintf(msg+strlen(msg),"%-10s", "UNKNOW"); + pBss->Bssid[0], + pBss->Bssid[1], + pBss->Bssid[2], + pBss->Bssid[3], + pBss->Bssid[4], + pBss->Bssid[5]); + + //Security + if ((Ndis802_11AuthModeWPA <= pBss->AuthMode) && + (pBss->AuthMode <= Ndis802_11AuthModeWPA1PSKWPA2PSK)) + { + if (pBss->AuthModeAux == Ndis802_11AuthModeWPANone) + { + ap_auth_mode = pBss->AuthMode; + if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled) + ap_cipher = pBss->WPA.PairCipher; + else + ap_cipher = Ndis802_11Encryption4Enabled; + } + else if (pBss->AuthModeAux == Ndis802_11AuthModeOpen) + { + ap_auth_mode = pBss->AuthMode; + if ((ap_auth_mode == Ndis802_11AuthModeWPA) || + (ap_auth_mode == Ndis802_11AuthModeWPAPSK)) + { + if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled) + ap_cipher = pBss->WPA.PairCipher; + else + ap_cipher = Ndis802_11Encryption4Enabled; + } + else if ((ap_auth_mode == Ndis802_11AuthModeWPA2) || + (ap_auth_mode == Ndis802_11AuthModeWPA2PSK)) + { + if (pBss->WPA2.PairCipherAux == Ndis802_11WEPDisabled) + ap_cipher = pBss->WPA2.PairCipher; + else + ap_cipher = Ndis802_11Encryption4Enabled; + } + } + else if ((pBss->AuthMode == Ndis802_11AuthModeWPAPSK) || + (pBss->AuthMode == Ndis802_11AuthModeWPA2PSK)) + { + if ((pBss->AuthModeAux == Ndis802_11AuthModeWPAPSK) || + (pBss->AuthModeAux == Ndis802_11AuthModeWPA2PSK)) + ap_auth_mode = Ndis802_11AuthModeWPA1PSKWPA2PSK; + else + ap_auth_mode = pBss->AuthMode; + + if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux)) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) && + (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled)) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) && + (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)) + ap_cipher = pBss->WPA.PairCipher; + } + else if ((pBss->AuthMode == Ndis802_11AuthModeWPA) || + (pBss->AuthMode == Ndis802_11AuthModeWPA2)) + { + if ((pBss->AuthModeAux == Ndis802_11AuthModeWPA) || + (pBss->AuthMode == Ndis802_11AuthModeWPA2)) + ap_auth_mode = Ndis802_11AuthModeWPA1WPA2; + else + ap_auth_mode = pBss->AuthMode; + + if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux)) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) && + (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled)) + ap_cipher = Ndis802_11Encryption4Enabled; + else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) && + (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) && + (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)) + ap_cipher = pBss->WPA.PairCipher; + } + + sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher)); + } + else + { + ap_auth_mode = pBss->AuthMode; + ap_cipher = pBss->WepStatus; + if (ap_cipher == Ndis802_11WEPDisabled) + sprintf(SecurityStr, "NONE"); + else if (ap_cipher == Ndis802_11WEPEnabled) + sprintf(SecurityStr, "WEP"); else - sprintf(msg+strlen(msg),"%-10s",GetAuthMode(pAdapter->ScanTab.BssEntry[i].AuthMode)); + sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher)); + } + + sprintf(msg+strlen(msg), "%-23s", SecurityStr); + // Rssi - Rssi = (INT)pAdapter->ScanTab.BssEntry[i].Rssi; + Rssi = (INT)pBss->Rssi; if (Rssi >= -50) Rssi_Quality = 100; else if (Rssi >= -80) // between -50 ~ -80dbm @@ -1858,7 +1928,7 @@ VOID RTMPIoctlGetSiteSurvey( Rssi_Quality = 0; sprintf(msg+strlen(msg),"%-9d", Rssi_Quality); // Wireless Mode - wireless_mode = NetworkTypeInUseSanity(&pAdapter->ScanTab.BssEntry[i]); + wireless_mode = NetworkTypeInUseSanity(pBss); if (wireless_mode == Ndis802_11FH || wireless_mode == Ndis802_11DS) sprintf(msg+strlen(msg),"%-7s", "11b"); @@ -1872,13 +1942,79 @@ VOID RTMPIoctlGetSiteSurvey( sprintf(msg+strlen(msg),"%-7s", "11b/g/n"); else sprintf(msg+strlen(msg),"%-7s", "unknow"); + + // Ext Channel + if (pBss->AddHtInfoLen > 0) + { + if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE) + sprintf(msg+strlen(msg),"%-7s", " ABOVE"); + else if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW) + sprintf(msg+strlen(msg),"%-7s", " BELOW"); + else + sprintf(msg+strlen(msg),"%-7s", " NONE"); + } + else + { + sprintf(msg+strlen(msg),"%-7s", " NONE"); + } + //Network Type - if (pAdapter->ScanTab.BssEntry[i].BssType == BSS_ADHOC) + if (pBss->BssType == BSS_ADHOC) sprintf(msg+strlen(msg),"%-3s", " Ad"); else sprintf(msg+strlen(msg),"%-3s", " In"); sprintf(msg+strlen(msg),"\n"); + + return; +} + +VOID RTMPIoctlGetSiteSurvey( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq) +{ + PSTRING msg; + INT i=0; + INT WaitCnt; + INT Status=0; + INT max_len = LINE_LEN; + PBSS_ENTRY pBss; + + + os_alloc_mem(NULL, (PUCHAR *)&msg, sizeof(CHAR)*((MAX_LEN_OF_BSS_TABLE)*max_len)); + + if (msg == NULL) + { + DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - msg memory alloc fail.\n")); + return; + } + + memset(msg, 0 ,(MAX_LEN_OF_BSS_TABLE)*max_len ); + sprintf(msg,"%s","\n"); + sprintf(msg+strlen(msg),"%-4s%-33s%-20s%-23s%-9s%-7s%-7s%-3s\n", + "Ch", "SSID", "BSSID", "Security", "Siganl(%)", "W-Mode", " ExtCH"," NT"); + + + + WaitCnt = 0; + pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE; + while ((ScanRunning(pAdapter) == TRUE) && (WaitCnt++ < 200)) + OS_WAIT(500); + + for(i=0; i<pAdapter->ScanTab.BssNr ;i++) + { + pBss = &pAdapter->ScanTab.BssEntry[i]; + + if( pBss->Channel==0) + break; + + if((strlen(msg)+max_len ) >= IW_SCAN_MAX_DATA) + break; + + + RTMPCommSiteSurveyData(msg, pBss); + + } pAdapter->StaCfg.bScanReqIsFromWebUI = FALSE; @@ -1933,7 +2069,12 @@ VOID RTMPIoctlGetMacTable( DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __func__)); } - msg = (CHAR *) kmalloc(sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN), MEM_ALLOC_FLAG); + msg = kmalloc(sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN), MEM_ALLOC_FLAG); + if (msg == NULL) + { + DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __func__)); + return; + } memset(msg, 0 ,MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN ); sprintf(msg,"%s","\n"); sprintf(msg+strlen(msg),"%-14s%-4s%-4s%-10s%-10s%-10s%-6s%-6s\n", @@ -1968,12 +2109,14 @@ VOID RTMPIoctlGetMacTable( kfree(msg); } + INT Set_BASetup_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR mac[6], tid; - char *token, sepValue[] = ":", DASH = '-'; + PSTRING token; + STRING sepValue[] = ":", DASH = '-'; INT i; MAC_TABLE_ENTRY *pEntry; @@ -1982,6 +2125,7 @@ INT Set_BASetup_Proc( =>The six 2 digit hex-decimal number previous are the Mac address, =>The seventh decimal number is the tid value. */ + //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg)); if(strlen(arg) < 19) //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format. return FALSE; @@ -1989,7 +2133,7 @@ INT Set_BASetup_Proc( token = strchr(arg, DASH); if ((token != NULL) && (strlen(token)>1)) { - tid = simple_strtol((token+1), 0, 10); + tid = (UCHAR) simple_strtol((token+1), 0, 10); if (tid > 15) return FALSE; @@ -1998,18 +2142,18 @@ INT Set_BASetup_Proc( { if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1)))) return FALSE; - AtoH(token, (PUCHAR)(&mac[i]), 1); + AtoH(token, (&mac[i]), 1); } if(i != 6) return FALSE; - printk("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x\n", mac[0], mac[1], - mac[2], mac[3], mac[4], mac[5], tid); + DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid)); - pEntry = MacTableLookup(pAd, mac); + pEntry = MacTableLookup(pAd, (PUCHAR) mac); if (pEntry) { - printk("\nSetup BA Session: Tid = %d\n", tid); + DBGPRINT(RT_DEBUG_OFF, ("\nSetup BA Session: Tid = %d\n", tid)); BAOriSessionSetUp(pAd, pEntry, tid, 0, 100, TRUE); } @@ -2022,7 +2166,7 @@ INT Set_BASetup_Proc( INT Set_BADecline_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG bBADecline; @@ -2048,13 +2192,15 @@ INT Set_BADecline_Proc( INT Set_BAOriTearDown_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR mac[6], tid; - char *token, sepValue[] = ":", DASH = '-'; + PSTRING token; + STRING sepValue[] = ":", DASH = '-'; INT i; MAC_TABLE_ENTRY *pEntry; + //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg)); /* The BAOriTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, =>The six 2 digit hex-decimal number previous are the Mac address, @@ -2075,18 +2221,18 @@ INT Set_BAOriTearDown_Proc( { if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1)))) return FALSE; - AtoH(token, (PUCHAR)(&mac[i]), 1); + AtoH(token, (&mac[i]), 1); } if(i != 6) return FALSE; - printk("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", mac[0], mac[1], - mac[2], mac[3], mac[4], mac[5], tid); + DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid)); - pEntry = MacTableLookup(pAd, mac); + pEntry = MacTableLookup(pAd, (PUCHAR) mac); if (pEntry) { - printk("\nTear down Ori BA Session: Tid = %d\n", tid); + DBGPRINT(RT_DEBUG_OFF, ("\nTear down Ori BA Session: Tid = %d\n", tid)); BAOriSessionTearDown(pAd, pEntry->Aid, tid, FALSE, TRUE); } @@ -2099,14 +2245,15 @@ INT Set_BAOriTearDown_Proc( INT Set_BARecTearDown_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR mac[6], tid; - char *token, sepValue[] = ":", DASH = '-'; + PSTRING token; + STRING sepValue[] = ":", DASH = '-'; INT i; MAC_TABLE_ENTRY *pEntry; - //printk("\n%s\n", arg); + //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg)); /* The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, =>The six 2 digit hex-decimal number previous are the Mac address, @@ -2127,18 +2274,18 @@ INT Set_BARecTearDown_Proc( { if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1)))) return FALSE; - AtoH(token, (PUCHAR)(&mac[i]), 1); + AtoH(token, (&mac[i]), 1); } if(i != 6) return FALSE; - printk("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", mac[0], mac[1], - mac[2], mac[3], mac[4], mac[5], tid); + DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid)); - pEntry = MacTableLookup(pAd, mac); + pEntry = MacTableLookup(pAd, (PUCHAR) mac); if (pEntry) { - printk("\nTear down Rec BA Session: Tid = %d\n", tid); + DBGPRINT(RT_DEBUG_OFF, ("\nTear down Rec BA Session: Tid = %d\n", tid)); BARecSessionTearDown(pAd, pEntry->Aid, tid, FALSE); } @@ -2151,7 +2298,7 @@ INT Set_BARecTearDown_Proc( INT Set_HtBw_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG HtBw; @@ -2172,7 +2319,7 @@ INT Set_HtBw_Proc( INT Set_HtMcs_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG HtMcs, Mcs_tmp; BOOLEAN bAutoRate = FALSE; @@ -2226,7 +2373,7 @@ INT Set_HtMcs_Proc( INT Set_HtGi_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG HtGi; @@ -2249,7 +2396,7 @@ INT Set_HtGi_Proc( INT Set_HtTxBASize_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR Size; @@ -2265,10 +2412,32 @@ INT Set_HtTxBASize_Proc( return TRUE; } +INT Set_HtDisallowTKIP_Proc( + IN PRTMP_ADAPTER pAd, + IN PSTRING arg) +{ + ULONG Value; + + Value = simple_strtol(arg, 0, 10); + + if (Value == 1) + { + pAd->CommonCfg.HT_DisallowTKIP = TRUE; + } + else + { + pAd->CommonCfg.HT_DisallowTKIP = FALSE; + } + + DBGPRINT(RT_DEBUG_TRACE, ("Set_HtDisallowTKIP_Proc ::%s\n", + (pAd->CommonCfg.HT_DisallowTKIP == TRUE) ? "enabled" : "disabled")); + + return TRUE; +} INT Set_HtOpMode_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2292,7 +2461,7 @@ INT Set_HtOpMode_Proc( INT Set_HtStbc_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2315,7 +2484,7 @@ INT Set_HtStbc_Proc( INT Set_HtHtc_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2335,7 +2504,7 @@ INT Set_HtHtc_Proc( INT Set_HtExtcha_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2358,7 +2527,7 @@ INT Set_HtExtcha_Proc( INT Set_HtMpduDensity_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2378,7 +2547,7 @@ INT Set_HtMpduDensity_Proc( INT Set_HtBaWinSize_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2405,7 +2574,7 @@ INT Set_HtBaWinSize_Proc( INT Set_HtRdg_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2430,7 +2599,7 @@ INT Set_HtRdg_Proc( INT Set_HtLinkAdapt_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2452,7 +2621,7 @@ INT Set_HtLinkAdapt_Proc( INT Set_HtAmsdu_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2473,7 +2642,7 @@ INT Set_HtAmsdu_Proc( INT Set_HtAutoBa_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2504,7 +2673,7 @@ INT Set_HtAutoBa_Proc( INT Set_HtProtect_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2523,14 +2692,15 @@ INT Set_HtProtect_Proc( INT Set_SendPSMPAction_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR mac[6], mode; - char *token, sepValue[] = ":", DASH = '-'; + PSTRING token; + STRING sepValue[] = ":", DASH = '-'; INT i; MAC_TABLE_ENTRY *pEntry; - //printk("\n%s\n", arg); + //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg)); /* The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, =>The six 2 digit hex-decimal number previous are the Mac address, @@ -2551,18 +2721,18 @@ INT Set_SendPSMPAction_Proc( { if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1)))) return FALSE; - AtoH(token, (PUCHAR)(&mac[i]), 1); + AtoH(token, (&mac[i]), 1); } if(i != 6) return FALSE; - printk("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", mac[0], mac[1], - mac[2], mac[3], mac[4], mac[5], mode); + DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], mode)); pEntry = MacTableLookup(pAd, mac); if (pEntry) { - printk("\nSendPSMPAction MIPS mode = %d\n", mode); + DBGPRINT(RT_DEBUG_OFF, ("\nSendPSMPAction MIPS mode = %d\n", mode)); SendPSMPAction(pAd, pEntry->Aid, mode); } @@ -2576,7 +2746,7 @@ INT Set_SendPSMPAction_Proc( INT Set_HtMIMOPSmode_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2597,7 +2767,7 @@ INT Set_HtMIMOPSmode_Proc( INT Set_ForceShortGI_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2620,7 +2790,7 @@ INT Set_ForceShortGI_Proc( INT Set_ForceGF_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2641,7 +2811,7 @@ INT Set_ForceGF_Proc( INT Set_HtMimoPs_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { ULONG Value; @@ -2682,7 +2852,7 @@ INT SetCommonHT( INT Set_FixedTxMode_Proc( IN PRTMP_ADAPTER pAd, - IN PUCHAR arg) + IN PSTRING arg) { UCHAR fix_tx_mode = FIXED_TXMODE_HT; @@ -2702,8 +2872,57 @@ INT Set_FixedTxMode_Proc( return TRUE; } +#if defined(RT305x)||defined(RT3070) +INT Set_HiPower_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PSTRING arg) +{ + pAdapter->CommonCfg.HighPowerPatchDisabled = !(simple_strtol(arg, 0, 10)); + + if (pAdapter->CommonCfg.HighPowerPatchDisabled != 0) + { + RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R82, 0x62); + RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R67, 0x20); +#ifdef RT3070 + if ((IS_RT3070(pAdapter) && ((pAdapter->MACVersion & 0xffff) < 0x0201))) +#endif // RT3070 // + RT30xxWriteRFRegister(pAdapter, RF_R27, 0x23); + } + return TRUE; +} +#endif + +INT Set_LongRetryLimit_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PSTRING arg) +{ + TX_RTY_CFG_STRUC tx_rty_cfg; + UCHAR LongRetryLimit = (UCHAR)simple_strtol(arg, 0, 10); + + RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word); + tx_rty_cfg.field.LongRtyLimit = LongRetryLimit; + RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word); + DBGPRINT(RT_DEBUG_TRACE, ("IF Set_LongRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word)); + return TRUE; +} + +INT Set_ShortRetryLimit_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PSTRING arg) +{ + TX_RTY_CFG_STRUC tx_rty_cfg; + UCHAR ShortRetryLimit = (UCHAR)simple_strtol(arg, 0, 10); + + RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word); + tx_rty_cfg.field.ShortRtyLimit = ShortRetryLimit; + RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word); + DBGPRINT(RT_DEBUG_TRACE, ("IF Set_ShortRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word)); + return TRUE; +} + + ///////////////////////////////////////////////////////////////////////// -PCHAR RTMPGetRalinkAuthModeStr( +PSTRING RTMPGetRalinkAuthModeStr( IN NDIS_802_11_AUTHENTICATION_MODE authMode) { switch(authMode) @@ -2731,14 +2950,11 @@ PCHAR RTMPGetRalinkAuthModeStr( } } -PCHAR RTMPGetRalinkEncryModeStr( +PSTRING RTMPGetRalinkEncryModeStr( IN USHORT encryMode) { switch(encryMode) { -#if defined(RT2860) || defined(RT30xx) - default: -#endif case Ndis802_11WEPDisabled: return "NONE"; case Ndis802_11WEPEnabled: @@ -2749,17 +2965,15 @@ PCHAR RTMPGetRalinkEncryModeStr( return "AES"; case Ndis802_11Encryption4Enabled: return "TKIPAES"; -#if !defined(RT2860) && !defined(RT30xx) default: return "UNKNOW"; -#endif } } INT RTMPShowCfgValue( IN PRTMP_ADAPTER pAd, - IN PUCHAR pName, - IN PUCHAR pBuf) + IN PSTRING pName, + IN PSTRING pBuf) { INT Status = 0; @@ -2785,7 +2999,7 @@ INT RTMPShowCfgValue( INT Show_SSID_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.Ssid); return 0; @@ -2793,7 +3007,7 @@ INT Show_SSID_Proc( INT Show_WirelessMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.PhyMode) { @@ -2843,7 +3057,7 @@ INT Show_WirelessMode_Proc( INT Show_TxBurst_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.bEnableTxBurst ? "TRUE":"FALSE"); return 0; @@ -2851,7 +3065,7 @@ INT Show_TxBurst_Proc( INT Show_TxPreamble_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.TxPreamble) { @@ -2874,7 +3088,7 @@ INT Show_TxPreamble_Proc( INT Show_TxPower_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%lu", pAd->CommonCfg.TxPowerPercentage); return 0; @@ -2882,7 +3096,7 @@ INT Show_TxPower_Proc( INT Show_Channel_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%d", pAd->CommonCfg.Channel); return 0; @@ -2890,7 +3104,7 @@ INT Show_Channel_Proc( INT Show_BGProtection_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.UseBGProtection) { @@ -2912,7 +3126,7 @@ INT Show_BGProtection_Proc( INT Show_RTSThreshold_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%u", pAd->CommonCfg.RtsThreshold); return 0; @@ -2920,7 +3134,7 @@ INT Show_RTSThreshold_Proc( INT Show_FragThreshold_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%u", pAd->CommonCfg.FragmentThreshold); return 0; @@ -2928,7 +3142,7 @@ INT Show_FragThreshold_Proc( INT Show_HtBw_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40) { @@ -2943,7 +3157,7 @@ INT Show_HtBw_Proc( INT Show_HtMcs_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%u", pAd->StaCfg.DesiredTransmitSetting.field.MCS); return 0; @@ -2951,7 +3165,7 @@ INT Show_HtMcs_Proc( INT Show_HtGi_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.RegTransmitSetting.field.ShortGI) { @@ -2970,7 +3184,7 @@ INT Show_HtGi_Proc( INT Show_HtOpMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.RegTransmitSetting.field.HTMODE) { @@ -2989,7 +3203,7 @@ INT Show_HtOpMode_Proc( INT Show_HtExtcha_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA) { @@ -3009,7 +3223,7 @@ INT Show_HtExtcha_Proc( INT Show_HtMpduDensity_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.MpduDensity); return 0; @@ -3017,7 +3231,7 @@ INT Show_HtMpduDensity_Proc( INT Show_HtBaWinSize_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.RxBAWinLimit); return 0; @@ -3025,7 +3239,7 @@ INT Show_HtBaWinSize_Proc( INT Show_HtRdg_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.bRdg ? "TRUE":"FALSE"); return 0; @@ -3033,7 +3247,7 @@ INT Show_HtRdg_Proc( INT Show_HtAmsdu_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AmsduEnable ? "TRUE":"FALSE"); return 0; @@ -3041,7 +3255,7 @@ INT Show_HtAmsdu_Proc( INT Show_HtAutoBa_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AutoBA ? "TRUE":"FALSE"); return 0; @@ -3049,7 +3263,7 @@ INT Show_HtAutoBa_Proc( INT Show_CountryRegion_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegion); return 0; @@ -3057,7 +3271,7 @@ INT Show_CountryRegion_Proc( INT Show_CountryRegionABand_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegionForABand); return 0; @@ -3065,7 +3279,7 @@ INT Show_CountryRegionABand_Proc( INT Show_CountryCode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.CountryCode); return 0; @@ -3074,7 +3288,7 @@ INT Show_CountryCode_Proc( #ifdef AGGREGATION_SUPPORT INT Show_PktAggregate_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.bAggregationCapable ? "TRUE":"FALSE"); return 0; @@ -3084,7 +3298,7 @@ INT Show_PktAggregate_Proc( #ifdef WMM_SUPPORT INT Show_WmmCapable_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.bWmmCapable ? "TRUE":"FALSE"); @@ -3094,7 +3308,7 @@ INT Show_WmmCapable_Proc( INT Show_IEEE80211H_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { sprintf(pBuf, "\t%s", pAd->CommonCfg.bIEEE80211H ? "TRUE":"FALSE"); return 0; @@ -3102,7 +3316,7 @@ INT Show_IEEE80211H_Proc( INT Show_NetworkType_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { switch(pAd->StaCfg.BssType) { @@ -3125,9 +3339,11 @@ INT Show_NetworkType_Proc( return 0; } + + INT Show_AuthMode_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { NDIS_802_11_AUTHENTICATION_MODE AuthMode = Ndis802_11AuthModeOpen; @@ -3144,7 +3360,7 @@ INT Show_AuthMode_Proc( INT Show_EncrypType_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { NDIS_802_11_WEP_STATUS WepStatus = Ndis802_11WEPDisabled; @@ -3161,7 +3377,7 @@ INT Show_EncrypType_Proc( INT Show_DefaultKeyID_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { UCHAR DefaultKeyId = 0; @@ -3175,7 +3391,7 @@ INT Show_DefaultKeyID_Proc( INT Show_WepKey_Proc( IN PRTMP_ADAPTER pAd, IN INT KeyIdx, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { UCHAR Key[16] = {0}, KeyLength = 0; INT index = BSS0; @@ -3184,7 +3400,7 @@ INT Show_WepKey_Proc( NdisMoveMemory(Key, pAd->SharedKey[index][KeyIdx].Key, KeyLength); //check key string is ASCII or not - if (RTMPCheckStrPrintAble(Key, KeyLength)) + if (RTMPCheckStrPrintAble((PCHAR)Key, KeyLength)) sprintf(pBuf, "\t%s", Key); else { @@ -3198,7 +3414,7 @@ INT Show_WepKey_Proc( INT Show_Key1_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { Show_WepKey_Proc(pAd, 0, pBuf); return 0; @@ -3206,7 +3422,7 @@ INT Show_Key1_Proc( INT Show_Key2_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { Show_WepKey_Proc(pAd, 1, pBuf); return 0; @@ -3214,7 +3430,7 @@ INT Show_Key2_Proc( INT Show_Key3_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { Show_WepKey_Proc(pAd, 2, pBuf); return 0; @@ -3222,7 +3438,7 @@ INT Show_Key3_Proc( INT Show_Key4_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { Show_WepKey_Proc(pAd, 3, pBuf); return 0; @@ -3230,7 +3446,7 @@ INT Show_Key4_Proc( INT Show_WPAPSK_Proc( IN PRTMP_ADAPTER pAd, - OUT PUCHAR pBuf) + OUT PSTRING pBuf) { INT idx; UCHAR PMK[32] = {0}; |