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

Commit 2dcf6b4c authored by Jes Sorensen's avatar Jes Sorensen Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723au: Eliminate set_wep_key() and call set_group_key() directly



This also eliminates another round of determine algorithm based on key
length, followed by determine key length based on algorithm.

Signed-off-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7ef2743d
Loading
Loading
Loading
Loading
+6 −39
Original line number Diff line number Diff line
@@ -417,10 +417,9 @@ static int set_pairwise_key(struct rtw_adapter *padapter, struct sta_info *psta)
	return res;
}

static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,
			 u8 keyid)
static int set_group_key(struct rtw_adapter *padapter, struct key_params *parms,
			 u32 alg, u8 keyid)
{
	u8 keylen;
	struct cmd_obj *pcmd;
	struct setkey_parm *psetkeyparm;
	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
@@ -453,20 +452,7 @@ static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,

	psetkeyparm->set_tx = 1;

	switch (alg) {
	case WLAN_CIPHER_SUITE_WEP40:
		keylen = 5;
		break;
	case WLAN_CIPHER_SUITE_WEP104:
		keylen = 13;
		break;
	case WLAN_CIPHER_SUITE_TKIP:
	case WLAN_CIPHER_SUITE_CCMP:
	default:
		keylen = 16;
	}

	memcpy(&psetkeyparm->key[0], key, keylen);
	memcpy(&psetkeyparm->key, parms->key, parms->key_len);

	pcmd->cmdcode = _SetKey_CMD_;
	pcmd->parmbuf = (u8 *) psetkeyparm;
@@ -480,25 +466,6 @@ static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,
	return res;
}

static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
		       u8 keyid)
{
	u32 alg;

	switch (keylen) {
	case 5:
		alg = WLAN_CIPHER_SUITE_WEP40;
		break;
	case 13:
		alg = WLAN_CIPHER_SUITE_WEP104;
		break;
	default:
		alg = 0;
	}

	return set_group_key(padapter, key, alg, keyid);
}

static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
					  int set_tx, const u8 *sta_addr,
					  struct key_params *keyparms)
@@ -548,7 +515,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,

		psecuritypriv->wep_key[key_index].keylen = key_len;

		set_wep_key(padapter, keyparms->key, key_len, key_index);
		set_group_key(padapter, keyparms, keyparms->cipher, key_index);

		goto exit;
	}
@@ -612,7 +579,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
			psecuritypriv->dot11PrivacyAlgrthm =
				psecuritypriv->dot118021XGrpPrivacy;

			set_group_key(padapter, keyparms->key,
			set_group_key(padapter, keyparms,
				      psecuritypriv->dot118021XGrpPrivacy,
				      key_index);

@@ -723,7 +690,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
			psecuritypriv->dot11PrivacyAlgrthm =
				psecuritypriv->dot118021XGrpPrivacy;

			set_group_key(padapter, keyparms->key,
			set_group_key(padapter, keyparms,
				      psecuritypriv->dot118021XGrpPrivacy,
				      key_index);