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

📄 cmm_info.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
				return;			}			// 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)				Wcid = pEntry->Aid;			else				Wcid = MCAST_WCID;		}#endif // CONFIG_STA_SUPPORT //	}	// Update WCID attribute table	offset = MAC_WCID_ATTRIBUTE_BASE + (Wcid * HW_WCID_ATTRI_SIZE);#ifdef CONFIG_STA_SUPPORT	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)	{		if (pEntry && pEntry->ValidAsMesh)			WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;#ifdef QOS_DLS_SUPPORT		else if ((pEntry) && (pEntry->ValidAsDls) &&					((CipherAlg == CIPHER_TKIP) || 				 	(CipherAlg == CIPHER_TKIP_NO_MIC) || 					(CipherAlg == CIPHER_AES) || 				 	(CipherAlg == CIPHER_NONE))) 			WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;#endif // QOS_DLS_SUPPORT //		else		WCIDAttri = (CipherAlg<<1) | SHAREDKEYTABLE;	}#endif // CONFIG_STA_SUPPORT //			RTMP_IO_WRITE32(pAd, offset, WCIDAttri);			// Update IV/EIV table	offset = MAC_IVEIV_TABLE_BASE + (Wcid * HW_IVEIV_ENTRY_SIZE);	// WPA mode	if ((CipherAlg == CIPHER_TKIP) || (CipherAlg == CIPHER_TKIP_NO_MIC) || (CipherAlg == CIPHER_AES))	{			// Eiv bit on. keyid always is 0 for pairwise key 					IVEIV = (KeyIdx <<6) | 0x20;		}	 	else	{		// WEP KeyIdx is default tx key. 		IVEIV = (KeyIdx << 6);		}	// For key index and ext IV bit, so only need to update the position(offset+3).#ifdef RTMP_MAC_USB	RTUSBMultiWrite_OneByte(pAd, offset+3, &IVEIV);#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));	}/*     ==========================================================================    Description:        Parse encryption typeArguments:    pAdapter                    Pointer to our adapter    wrq                         Pointer to the ioctl argument    Return Value:        None    Note:    ==========================================================================*/PSTRING GetEncryptType(CHAR enc){    if(enc == Ndis802_11WEPDisabled)        return "NONE";    if(enc == Ndis802_11WEPEnabled)    	return "WEP";    if(enc == Ndis802_11Encryption2Enabled)    	return "TKIP";    if(enc == Ndis802_11Encryption3Enabled)    	return "AES";	if(enc == Ndis802_11Encryption4Enabled)    	return "TKIPAES";    else    	return "UNKNOW";}PSTRING GetAuthMode(CHAR auth){    if(auth == Ndis802_11AuthModeOpen)    	return "OPEN";    if(auth == Ndis802_11AuthModeShared)    	return "SHARED";	if(auth == Ndis802_11AuthModeAutoSwitch)    	return "AUTOWEP";    if(auth == Ndis802_11AuthModeWPA)    	return "WPA";    if(auth == Ndis802_11AuthModeWPAPSK)    	return "WPAPSK";    if(auth == Ndis802_11AuthModeWPANone)    	return "WPANONE";    if(auth == Ndis802_11AuthModeWPA2)    	return "WPA2";    if(auth == Ndis802_11AuthModeWPA2PSK)    	return "WPA2PSK";	if(auth == Ndis802_11AuthModeWPA1WPA2)    	return "WPA1WPA2";	if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)    	return "WPA1PSKWPA2PSK";	    	return "UNKNOW";}		/*     ==========================================================================    Description:        Get site survey results	Arguments:	    pAdapter                    Pointer to our adapter	    wrq                         Pointer to the ioctl argument    Return Value:        None    Note:        Usage:        		1.) UI needs to wait 4 seconds after issue a site survey command        		2.) iwpriv ra0 get_site_survey        		3.) UI needs to prepare at least 4096bytes to get the results    ==========================================================================*/#define	LINE_LEN	(4+33+20+23+9+7+3)	// Channel+SSID+Bssid+Security+Signal+WiressMode+NetworkType#ifdef CONFIG_STA_SUPPORT#endif // CONFIG_STA_SUPPORT //VOID	RTMPCommSiteSurveyData(	IN  PSTRING		msg,	IN  PBSS_ENTRY	pBss){	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;	memset(Ssid, 0 ,(MAX_LEN_OF_SSID +1));		//Channel		sprintf(msg+strlen(msg),"%-4d", pBss->Channel);		//SSID		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   ", 			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(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));			}		sprintf(msg+strlen(msg), "%-23s", SecurityStr);		// Rssi		Rssi = (INT)pBss->Rssi;		if (Rssi >= -50)			Rssi_Quality = 100;		else if (Rssi >= -80)    // between -50 ~ -80dbm			Rssi_Quality = (UINT)(24 + ((Rssi + 80) * 26)/10);		else if (Rssi >= -90)   // between -80 ~ -90dbm			Rssi_Quality = (UINT)(((Rssi + 90) * 26)/10);		else    // < -84 dbm			Rssi_Quality = 0;		sprintf(msg+strlen(msg),"%-9d", Rssi_Quality);		// Wireless Mode		wireless_mode = NetworkTypeInUseSanity(pBss);		if (wireless_mode == Ndis802_11FH ||			wireless_mode == Ndis802_11DS)			sprintf(msg+strlen(msg),"%-7s", "11b");		else if (wireless_mode == Ndis802_11OFDM5)			sprintf(msg+strlen(msg),"%-7s", "11a");		else if (wireless_mode == Ndis802_11OFDM5_N)			sprintf(msg+strlen(msg),"%-7s", "11a/n");		else if (wireless_mode == Ndis802_11OFDM24)			sprintf(msg+strlen(msg),"%-7s", "11b/g");		else if (wireless_mode == Ndis802_11OFDM24_N)			sprintf(msg+strlen(msg),"%-7s", "11b/g/n");		else			sprintf(msg+strlen(msg),"%-7s", "unknow");		//Network Type				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;#ifdef CONFIG_STA_SUPPORT#endif // CONFIG_STA_SUPPORT //	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%-3s\n",	    "Ch", "SSID", "BSSID", "Security", "Siganl(%)", "W-Mode", " NT");		#ifdef CONFIG_STA_SUPPORT#endif // CONFIG_STA_SUPPORT //	WaitCnt = 0;#ifdef CONFIG_STA_SUPPORT	pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE;	while ((ScanRunning(pAdapter) == TRUE) && (WaitCnt++ < 200))		OS_WAIT(500);	#endif // CONFIG_STA_SUPPORT //	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);		#ifdef CONFIG_STA_SUPPORT#endif // CONFIG_STA_SUPPORT //	}#ifdef CONFIG_STA_SUPPORT	pAdapter->StaCfg.bScanReqIsFromWebUI = FALSE;#endif // CONFIG_STA_SUPPORT //	wrq->u.data.length = strlen(msg);	Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);	DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - wrq->u.data.length = %d\n", wrq->u.data.length));	os_free_mem(NULL, (PUCHAR)msg);	}#define	MAC_LINE_LEN	(14+4+4+10+10+10+6+6)	// Addr+aid+psm+datatime+rxbyte+txbyte+current tx rate+last tx rateVOID RTMPIoctlGetMacTable(	IN PRTMP_ADAPTER pAd, 	IN struct iwreq *wrq){	INT i;	RT_802_11_MAC_TABLE MacTab;	char *msg;	MacTab.Num = 0;	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)	{		if (pAd->MacTab.Content[i].ValidAsCLI && (pAd->MacTab.Content[i].Sst == SST_ASSOC))		{			COPY_MAC_ADDR(MacTab.Entry[MacTab.Num].Addr, &pAd->MacTab.Content[i].Addr);			MacTab.Entry[MacTab.Num].Aid = (UCHAR)pAd->MacTab.Content[i].Aid;			MacTab.Entry[MacTab.Num].Psm = pAd->MacTab.Content[i].PsMode;#ifdef DOT11_N_SUPPORT			MacTab.Entry[MacTab.Num].MimoPs = pAd->MacTab.Content[i].MmpsMode;#endif // DOT11_N_SUPPORT //			// Fill in RSSI per entry			MacTab.Entry[MacTab.Num].AvgRssi0 = pAd->MacTab.Content[i].RssiSample.AvgRssi0;			MacTab.Entry[MacTab.Num].AvgRssi1 = pAd->MacTab.Content[i].RssiSample.AvgRssi1;			MacTab.Entry[MacTab.Num].AvgRssi2 = pAd->MacTab.Content[i].RssiSample.AvgRssi2;			// the connected time per entry			MacTab.Entry[MacTab.Num].ConnectedTime = pAd->MacTab.Content[i].StaConnectTime;			MacTab.Entry[MacTab.Num].TxRate.field.MCS = pAd->MacTab.Content[i].HTPhyMode.field.MCS;			MacTab.Entry[MacTab.Num].TxRate.field.BW = pAd->MacTab.Content[i].HTPhyMode.field.BW;			MacTab.Entry[MacTab.Num].TxRate.field.ShortGI = pAd->MacTab.Content[i].HTPhyMode.field.ShortGI;			MacTab.Entry[MacTab.Num].TxRate.field.STBC = pAd->MacTab.Content[i].HTPhyMode.field.STBC;			MacTab.Entry[MacTab.Num].TxRate.field.rsv = pAd->MacTab.Content[i].HTPhyMode.field.rsv;			MacTab.Entry[MacTab.Num].TxRate.field.MODE = pAd->MacTab.Content[i].HTPhyMode.field.MODE;			MacTab.Entry[MacTab.Num].TxRate.word = pAd->MacTab.Content[i].HTPhyMode.word;												MacTab.Num += 1;		}	}	wrq->u.data.length = sizeof(RT_802_11_MAC_TABLE);	if (copy_to_user(wrq->u.data.pointer, &MacTab, wrq->u.data.length))	{		DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));	}	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", __FUNCTION__));		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",		"MAC", "AID", "PSM", "LDT", "RxB", "TxB","CTxR", "LTxR");		for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)	{		PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];		if (

⌨️ 快捷键说明

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