Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 043dfdd3 authored by Mike McCormack's avatar Mike McCormack Committed by Greg Kroah-Hartman
Browse files

staging: rtl8192e: Pass priv to SetKey

parent 282fa9f3
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -1122,7 +1122,8 @@ void rtl8192_commit(struct r8192_priv *priv);
void write_phy(struct net_device *dev, u8 adr, u8 data);
void write_phy(struct net_device *dev, u8 adr, u8 data);
void CamResetAllEntry(struct r8192_priv *priv);
void CamResetAllEntry(struct r8192_priv *priv);
void EnableHWSecurityConfig8192(struct r8192_priv *priv);
void EnableHWSecurityConfig8192(struct r8192_priv *priv);
void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent );
void setKey(struct r8192_priv *priv, u8 EntryNo, u8 KeyIndex, u16 KeyType,
	    const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent);
void firmware_init_param(struct net_device *dev);
void firmware_init_param(struct net_device *dev);
RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len);
RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len);


+7 −13
Original line number Original line Diff line number Diff line
@@ -3542,7 +3542,6 @@ static int r8192_set_mac_adr(struct net_device *dev, void *mac)
static void r8192e_set_hw_key(struct r8192_priv *priv, struct ieee_param *ipw)
static void r8192e_set_hw_key(struct r8192_priv *priv, struct ieee_param *ipw)
{
{
	struct ieee80211_device *ieee = priv->ieee80211;
	struct ieee80211_device *ieee = priv->ieee80211;
	struct net_device *dev = priv->ieee80211->dev;
	u8 broadcast_addr[6] = {0xff,0xff,0xff,0xff,0xff,0xff};
	u8 broadcast_addr[6] = {0xff,0xff,0xff,0xff,0xff,0xff};
	u32 key[4];
	u32 key[4];


@@ -3567,13 +3566,13 @@ static void r8192e_set_hw_key(struct r8192_priv *priv, struct ieee_param *ipw)
			 * key as in IPW interface, adhoc will only get here,
			 * key as in IPW interface, adhoc will only get here,
			 * so we need index entry for its default key serching!
			 * so we need index entry for its default key serching!
			 */
			 */
			setKey(dev, 4, ipw->u.crypt.idx,
			setKey(priv, 4, ipw->u.crypt.idx,
			       ieee->pairwise_key_type,
			       ieee->pairwise_key_type,
			       (u8*)ieee->ap_mac_addr, 0, key);
			       (u8*)ieee->ap_mac_addr, 0, key);


			/* LEAP WEP will never set this. */
			/* LEAP WEP will never set this. */
			if (ieee->auth_mode != 2)
			if (ieee->auth_mode != 2)
				setKey(dev, ipw->u.crypt.idx, ipw->u.crypt.idx,
				setKey(priv, ipw->u.crypt.idx, ipw->u.crypt.idx,
				       ieee->pairwise_key_type,
				       ieee->pairwise_key_type,
				       (u8*)ieee->ap_mac_addr, 0, key);
				       (u8*)ieee->ap_mac_addr, 0, key);
		}
		}
@@ -3596,7 +3595,7 @@ static void r8192e_set_hw_key(struct r8192_priv *priv, struct ieee_param *ipw)
			ieee->group_key_type = KEY_TYPE_NA;
			ieee->group_key_type = KEY_TYPE_NA;


		if (ieee->group_key_type) {
		if (ieee->group_key_type) {
			setKey(dev, ipw->u.crypt.idx, ipw->u.crypt.idx,
			setKey(priv, ipw->u.crypt.idx, ipw->u.crypt.idx,
			       ieee->group_key_type, broadcast_addr, 0, key);
			       ieee->group_key_type, broadcast_addr, 0, key);
		}
		}
	}
	}
@@ -4950,21 +4949,16 @@ void EnableHWSecurityConfig8192(struct r8192_priv *priv)
}
}
#define TOTAL_CAM_ENTRY 32
#define TOTAL_CAM_ENTRY 32
//#define CAM_CONTENT_COUNT 8
//#define CAM_CONTENT_COUNT 8
void setKey(	struct net_device *dev,
void setKey(struct r8192_priv *priv, u8 EntryNo, u8 KeyIndex, u16 KeyType,
		u8 EntryNo,
	    const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent)
		u8 KeyIndex,
		u16 KeyType,
		const u8 *MacAddr,
		u8 DefaultKey,
		u32 *KeyContent )
{
{
	u32 TargetCommand = 0;
	u32 TargetCommand = 0;
	u32 TargetContent = 0;
	u32 TargetContent = 0;
	u16 usConfig = 0;
	u16 usConfig = 0;
	u8 i;
	u8 i;
#ifdef ENABLE_IPS
#ifdef ENABLE_IPS
	struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
	RT_RF_POWER_STATE	rtState;
	RT_RF_POWER_STATE	rtState;

	rtState = priv->eRFPowerState;
	rtState = priv->eRFPowerState;
	if (priv->PowerSaveControl.bInactivePs){
	if (priv->PowerSaveControl.bInactivePs){
		if(rtState == eRfOff){
		if(rtState == eRfOff){
@@ -4986,7 +4980,7 @@ void setKey( struct net_device *dev,
	if (EntryNo >= TOTAL_CAM_ENTRY)
	if (EntryNo >= TOTAL_CAM_ENTRY)
		RT_TRACE(COMP_ERR, "cam entry exceeds in setKey()\n");
		RT_TRACE(COMP_ERR, "cam entry exceeds in setKey()\n");


	RT_TRACE(COMP_SEC, "====>to setKey(), dev:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr%pM\n", dev,EntryNo, KeyIndex, KeyType, MacAddr);
	RT_TRACE(COMP_SEC, "====>to setKey(), priv:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr%pM\n", priv, EntryNo, KeyIndex, KeyType, MacAddr);


	if (DefaultKey)
	if (DefaultKey)
		usConfig |= BIT15 | (KeyType<<2);
		usConfig |= BIT15 | (KeyType<<2);
+8 −35
Original line number Original line Diff line number Diff line
@@ -686,25 +686,15 @@ static int r8192_wx_set_enc(struct net_device *dev,
		if(wrqu->encoding.length==0x5){
		if(wrqu->encoding.length==0x5){
		ieee->pairwise_key_type = KEY_TYPE_WEP40;
		ieee->pairwise_key_type = KEY_TYPE_WEP40;
			EnableHWSecurityConfig8192(priv);
			EnableHWSecurityConfig8192(priv);
			setKey( dev,
			setKey(priv, key_idx, key_idx, KEY_TYPE_WEP40,
				key_idx,                //EntryNo
			       zero_addr[key_idx], 0, hwkey);
				key_idx,                //KeyIndex
				KEY_TYPE_WEP40,         //KeyType
				zero_addr[key_idx],
				0,                      //DefaultKey
				hwkey);                 //KeyContent
		}
		}


		else if(wrqu->encoding.length==0xd){
		else if(wrqu->encoding.length==0xd){
			ieee->pairwise_key_type = KEY_TYPE_WEP104;
			ieee->pairwise_key_type = KEY_TYPE_WEP104;
				EnableHWSecurityConfig8192(priv);
				EnableHWSecurityConfig8192(priv);
			setKey( dev,
			setKey(priv, key_idx, key_idx, KEY_TYPE_WEP104,
				key_idx,                //EntryNo
			       zero_addr[key_idx], 0, hwkey);
				key_idx,                //KeyIndex
				KEY_TYPE_WEP104,        //KeyType
				zero_addr[key_idx],
				0,                      //DefaultKey
				hwkey);                 //KeyContent
		}
		}
		else printk("wrong type in WEP, not WEP40 and WEP104\n");
		else printk("wrong type in WEP, not WEP40 and WEP104\n");
	}
	}
@@ -909,37 +899,20 @@ static int r8192_wx_set_enc_ext(struct net_device *dev,
		{
		{
			if (ext->key_len == 13)
			if (ext->key_len == 13)
				ieee->pairwise_key_type = alg = KEY_TYPE_WEP104;
				ieee->pairwise_key_type = alg = KEY_TYPE_WEP104;
			setKey( dev,
			setKey(priv, idx, idx, alg, zero, 0, key);
					idx,//EntryNo
					idx, //KeyIndex
					alg,  //KeyType
					zero, //MacAddr
					0,              //DefaultKey
					key);           //KeyContent
		}
		}
		else if (group)
		else if (group)
		{
		{
			ieee->group_key_type = alg;
			ieee->group_key_type = alg;
			setKey( dev,
			setKey(priv, idx, idx, alg, broadcast_addr, 0, key);
					idx,//EntryNo
					idx, //KeyIndex
					alg,  //KeyType
					broadcast_addr, //MacAddr
					0,              //DefaultKey
					key);           //KeyContent
		}
		}
		else //pairwise key
		else //pairwise key
		{
		{
			if ((ieee->pairwise_key_type == KEY_TYPE_CCMP) && ieee->pHTInfo->bCurrentHTSupport){
			if ((ieee->pairwise_key_type == KEY_TYPE_CCMP) && ieee->pHTInfo->bCurrentHTSupport){
							write_nic_byte(priv, 0x173, 1); //fix aes bug
							write_nic_byte(priv, 0x173, 1); //fix aes bug
			}
			}
			setKey( dev,
			setKey(priv, 4, idx, alg,
					4,//EntryNo
			       (u8*)ieee->ap_mac_addr, 0, key);
					idx, //KeyIndex
					alg,  //KeyType
					(u8*)ieee->ap_mac_addr, //MacAddr
					0,              //DefaultKey
					key);           //KeyContent
		}
		}