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

📄 rtusb_info.c

📁 华硕无线网卡 167G linux 驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
	if (val != pAdapter->PortCfg.RtsThreshold)		pAdapter->PortCfg.RtsThreshold = val;	return 0;}int rtusb_ioctl_giwrts(struct net_device *dev,		       struct iw_request_info *info,		       struct iw_param *rts, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	rts->value = pAdapter->PortCfg.RtsThreshold;	rts->disabled = (rts->value == MAX_RTS_THRESHOLD);	rts->fixed = 1;	return 0;}int rtusb_ioctl_siwfrag(struct net_device *dev,			struct iw_request_info *info,			struct iw_param *rts, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	u16 val;	if (rts->disabled)		val = MAX_FRAG_THRESHOLD;	else if (rts->value < 256 || rts->value > MAX_FRAG_THRESHOLD)		return -EINVAL;	else		val = __cpu_to_le16(rts->value & ~0x1); /* even numbers only */	pAdapter->PortCfg.FragmentThreshold = val;	return 0;}int rtusb_ioctl_giwfrag(struct net_device *dev,			struct iw_request_info *info,			struct iw_param *rts, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	rts->value = pAdapter->PortCfg.FragmentThreshold;	rts->disabled = (rts->value == 2346);	rts->fixed = 1;	return 0;}int rtusb_ioctl_siwencode(struct net_device *dev,			  struct iw_request_info *info,			  struct iw_point *erq, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	NDIS_802_11_WEP	WepKey;	int 	index, len;	CHAR	kid = 0;	memset(&WepKey, 0, sizeof(NDIS_802_11_WEP));	if (erq->flags & IW_ENCODE_DISABLED)	{		pAdapter->PortCfg.PairCipher = Ndis802_11WEPDisabled;		pAdapter->PortCfg.GroupCipher = Ndis802_11WEPDisabled;		pAdapter->PortCfg.WepStatus = Ndis802_11WEPDisabled;	}	else	{		pAdapter->PortCfg.PairCipher = Ndis802_11WEPEnabled;		pAdapter->PortCfg.GroupCipher = Ndis802_11WEPEnabled;		pAdapter->PortCfg.WepStatus = Ndis802_11WEPEnabled;	}	if (erq->flags & IW_ENCODE_RESTRICTED)		pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared;	else if(erq->flags & IW_ENCODE_OPEN)		pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen;	if(pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled)		pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen;    	if ((erq->flags & IW_ENCODE_DISABLED) == 0 && erq->pointer) 	{		/* Enable crypto. */		if (erq->length > IFNAMSIZ)			return -EINVAL;		/* Old solution to take  default key  */		index = (erq->flags & IW_ENCODE_INDEX) ;		if((index < 0) || (index > NR_WEP_KEYS))			return -EINVAL;     			DBGPRINT(RT_DEBUG_TRACE," erq->flags = %x\n",erq->flags);				if (index != 0)		{			pAdapter->PortCfg.DefaultKeyId = index -1;		}				if ((erq->length == 1) && (index == 0))		{			/* New solution to take  default key  when old way not work, not change KeyMaterial*/			memcpy(&kid, erq->pointer, 1 );			if((index < 0) || (index >= NR_WEP_KEYS))				return -EINVAL;     			//WepKey.KeyIndex = 0x80000000 + index;			DBGPRINT(RT_DEBUG_TRACE,"kid = %d , erq->length = %d\n",kid, erq->length);			if (kid > 0)				pAdapter->PortCfg.DefaultKeyId = kid-1;			else 				pAdapter->PortCfg.DefaultKeyId = 0;		}		else		{			DBGPRINT(RT_DEBUG_TRACE,"DefaultKeyId = %d , erq->length = %d, flags 0x%x\n",pAdapter->PortCfg.DefaultKeyId, erq->length,erq->flags);			len = erq->length;			if(len > WEP_LARGE_KEY_LEN)				len = WEP_LARGE_KEY_LEN;			// If this instruction default key			memset(pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key,  0, MAX_LEN_OF_KEY);			memcpy(pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, erq->pointer, len);			memcpy(WepKey.KeyMaterial, erq->pointer, len);			WepKey.KeyIndex = 0x80000000 + pAdapter->PortCfg.DefaultKeyId; 			WepKey.KeyLength = len;			pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen =(UCHAR) (len <= WEP_SMALL_KEY_LEN ? WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN);			// need to enqueue cmd to thread			RTUSBEnqueueCmdFromNdis(pAdapter, OID_802_11_ADD_WEP, TRUE, &WepKey, sizeof(WepKey));		}			}	DBGPRINT(RT_DEBUG_TRACE, "==>AuthMode=%x\n",pAdapter->PortCfg.AuthMode);	DBGPRINT(RT_DEBUG_TRACE, "==>DefaultKeyId=%x, KeyLen = %d\n",pAdapter->PortCfg.DefaultKeyId , pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen);	DBGPRINT(RT_DEBUG_TRACE, "==>WepStatus=%x\n",pAdapter->PortCfg.WepStatus);	return 0;}intrtusb_ioctl_giwencode(struct net_device *dev,			  struct iw_request_info *info,			  struct iw_point *erq, char *key){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	int kid;		kid = erq->flags & IW_ENCODE_INDEX;	DBGPRINT(RT_DEBUG_TRACE, "===>rtusb_ioctl_giwencode %d\n", erq->flags & IW_ENCODE_INDEX);	if (pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled)	{		erq->length = 0;		erq->flags = IW_ENCODE_DISABLED;		return 0;	}	erq->flags = IW_ENCODE_ENABLED;	if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeShared)		erq->flags |= IW_ENCODE_RESTRICTED;	else		erq->flags |= IW_ENCODE_OPEN;	if ((kid > 0) && (kid <=4))	{		// copy wep key		erq->flags |= kid & IW_ENCODE_INDEX;			/* NB: base 1 */		if (erq->length > pAdapter->PortCfg.SharedKey[kid-1].KeyLen)			erq->length = pAdapter->PortCfg.SharedKey[kid-1].KeyLen;		memcpy(key, pAdapter->PortCfg.SharedKey[kid-1].Key, erq->length);	}	else if (kid == 0)	{		// copy default key ID		erq->flags |= (pAdapter->PortCfg.DefaultKeyId + 1) & IW_ENCODE_INDEX;		/* NB: base 1 */		erq->length = pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen;		memcpy(key, pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, erq->length);	}			return 0;}static intrtusb_ioctl_setauth(struct net_device *dev, struct iw_request_info *info,			 void *w, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	int param = *(int *) extra;  	switch(param)	{		case 1:			pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen;			DBGPRINT(RT_DEBUG_TRACE, "===>rtusb_ioctl_setauth RTPRIV802_11AuthModeOpen\n");			break;		case 2:			pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared;			DBGPRINT(RT_DEBUG_TRACE, "===>rtusb_ioctl_setauth RTPRIV802_11AuthModeShared\n");			break;		case 3:			pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPAPSK;			pAdapter->PortCfg.WpaState = SS_START;			DBGPRINT(RT_DEBUG_TRACE, "===>rtusb_ioctl_setauth RTPRIV802_11AuthModeWPAPSK\n");			break;		case 4:			pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPANone;			DBGPRINT(RT_DEBUG_TRACE, "===>rtusb_ioctl_setauth Ndis802_11AuthModeWPANone\n");			break;		default:			return -EOPNOTSUPP;	}	pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;	return 0;}#if 0static int rtusb_ioctl_setkeyid(struct net_device *dev, struct iw_request_info *info,			 void *w, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;  	int param = *(int *)extra;	USHORT	Value;	switch(param)	{		case 1:			pAdapter->PortCfg.DefaultKeyId = 0;			break;		case 2:			pAdapter->PortCfg.DefaultKeyId = 1;			break;		case 3:			pAdapter->PortCfg.DefaultKeyId = 2;			break;		case 4:			pAdapter->PortCfg.DefaultKeyId = 3;			break;		default:			return -EOPNOTSUPP;	}	if (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen == 5)		pAdapter->PortCfg.CipherAlg = CIPHER_WEP64;	else		pAdapter->PortCfg.CipherAlg = CIPHER_WEP128;						RTUSBReadMACRegister(pAdapter, TXRX_CSR0, &Value);	Value &= 0xfe00;	Value |= ((LENGTH_802_11 << 3) | (pAdapter->PortCfg.CipherAlg));	RTUSBWriteMACRegister(pAdapter, TXRX_CSR0, Value);        	DBGPRINT(RT_DEBUG_TRACE, "===>DefaultKeyId = [%d]\n",pAdapter->PortCfg.DefaultKeyId);	return 0;}#endifstatic intrtusb_ioctl_setencryp(struct net_device *dev, struct iw_request_info *info,			 void *w, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	int param = *(int *)extra;	NDIS_802_11_WEP_STATUS				WepStatus;//set by OID_802_11_WEP_STATUS	DBGPRINT(RT_DEBUG_TRACE, "===>setencryp\n");	DBGPRINT(RT_DEBUG_TRACE, "===>info->cmd 0x%x   \n",(info->cmd));	DBGPRINT(RT_DEBUG_TRACE, "===>info->flags 0x%x  , param %x , extra %x\n",(info->flags), param,*extra);	switch(param)	{		case 1:			pAdapter->PortCfg.WepStatus= Ndis802_11WEPDisabled;			pAdapter->PortCfg.PairCipher= Ndis802_11WEPDisabled;			pAdapter->PortCfg.GroupCipher= Ndis802_11WEPDisabled;			pAdapter->PortCfg.CipherAlg = CIPHER_NONE;			WepStatus = Ndis802_11WEPDisabled;			break;		case 2:			pAdapter->PortCfg.WepStatus= Ndis802_11Encryption1Enabled;			pAdapter->PortCfg.PairCipher= Ndis802_11Encryption1Enabled;			pAdapter->PortCfg.GroupCipher= Ndis802_11Encryption1Enabled;			WepStatus = Ndis802_11Encryption1Enabled;			break;		case 3:			pAdapter->PortCfg.WepStatus= Ndis802_11Encryption2Enabled;			pAdapter->PortCfg.PairCipher= Ndis802_11Encryption2Enabled;			pAdapter->PortCfg.GroupCipher= Ndis802_11Encryption2Enabled;			pAdapter->PortCfg.CipherAlg = CIPHER_TKIP;			WepStatus = Ndis802_11Encryption2Enabled;			break;		default:			return -EOPNOTSUPP;	}	RTUSBEnqueueCmdFromNdis(pAdapter, OID_802_11_WEP_STATUS, TRUE, &WepStatus, sizeof(WepStatus));	return 0;}static intrtusb_ioctl_setwpapsk(struct net_device *dev, struct iw_request_info *info,			 void *w, char *extra){	PRT2570ADAPTER pAdapter = (PRT2570ADAPTER) dev->priv;	NDIS_802_11_KEY                    Key;	// rtusb_ioctl_setwpapsk accept > 16 chars, so data is passed through w instead of extra.	struct iw_point *iwp = (struct iw_point *)w;	UCHAR                               keyMaterial[80];	UCHAR                               keyMaterial2[80];	INT			Status = NDIS_STATUS_SUCCESS;	int	i;	DBGPRINT(RT_DEBUG_TRACE, "===>\n");	DBGPRINT(RT_DEBUG_TRACE, "===>info->cmd 0x%x   \n",(info->cmd));	DBGPRINT(RT_DEBUG_TRACE, "===>info->flags 0x%x   \n",(info->flags));	memset(Key.KeyMaterial, 0, 64);	memset(keyMaterial2, 0, 80);	memcpy(Key.BSSID, pAdapter->PortCfg.Bssid.Octet, 6);	//memcpy(&Key.KeyRSC, pMsg3->KeyDesc.KeyRsc, LEN_KEY_DESC_RSC);	if (iwp->length < 64)	{		if(copy_from_user(&keyMaterial2, iwp->pointer, iwp->length))			Status = -EINVAL;		PasswordHash(keyMaterial2, pAdapter->Mlme.CntlAux.Ssid, pAdapter->Mlme.CntlAux.SsidLen, keyMaterial);		Key.Length    = sizeof(Key);		Key.KeyIndex  = 0x80000000;           		Key.KeyLength = 32;		DBGPRINT_RAW(RT_DEBUG_TEMP,"pAdapter->Mlme.CntlAux.Ssid: ");		for(i = 0; i < pAdapter->Mlme.CntlAux.SsidLen; i++)			DBGPRINT_RAW(RT_DEBUG_TEMP,"%c ", pAdapter->Mlme.CntlAux.Ssid[i]);		DBGPRINT_RAW(RT_DEBUG_TEMP,"\n");		memcpy(pAdapter->PortCfg.PskKey.Key, keyMaterial, 32);		memcpy(Key.KeyMaterial, keyMaterial, 32);		DBGPRINT_RAW(RT_DEBUG_TEMP,"WPAPSK Key : ");		for(i = 0; i < 32; i++)			DBGPRINT_RAW(RT_DEBUG_TEMP,"%x ", Key.KeyMaterial[i]);		DBGPRINT_RAW(RT_DEBUG_TEMP,"\n");	}	else if (iwp->length == 64)	{                if(copy_from_user(&keyMaterial2, iwp->pointer, iwp->length))			Status = -EINVAL;		AtoH(Key.KeyMaterial, keyMaterial, 32);		DBGPRINT_RAW(RT_DEBUG_TEMP,"WPAPSK Key : ");		for(i = 0; i < 32; i++)			DBGPRINT_RAW(RT_DEBUG_TEMP,"%x ", keyMaterial[i]);		DBGPRINT_RAW(RT_DEBUG_TEMP,"\n");		memcpy(pAdapter->PortCfg.PskKey.Key, keyMaterial, 32);		memcpy(Key.KeyMaterial, keyMaterial, 32);	}		else		return -EOPNOTSUPP;	RTUSBEnqueueCmdFromNdis(pAdapter, OID_802_11_ADD_KEY, TRUE, &Key, sizeof(Key));	pAdapter->PortCfg.WepStatus= Ndis802_11Encryption2Enabled;	pAdapter->PortCfg.PairCipher= Ndis802_11Encryption2Enabled;	pAdapter->PortCfg.GroupCipher= Ndis802_11Encryption2Enabled;	pAdapter->PortCfg.CipherAlg= CIPHER_TKIP;	// Start STA supplicant state machine		return 0;}static int rtusb_ioctl_setrfmontx(struct net_device *dev,                                  struct iw_request_info *info,

⌨️ 快捷键说明

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