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

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

staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): No more string parsing to determine cipher

parent 6e6e2d63
Loading
Loading
Loading
Loading
+13 −24
Original line number Diff line number Diff line
@@ -855,7 +855,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
			} else {
				/* Jeff: don't disable ieee8021x_blocked
				   while clearing key */
				if (strcmp(param->u.crypt.alg, "none") != 0)
				if (keyparms->cipher != IW_AUTH_CIPHER_NONE &&
				    keyparms->cipher != 0)
					psta->ieee8021x_blocked = false;

				if ((padapter->securitypriv.ndisencryptstatus ==
@@ -922,7 +923,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
			if (pbcmc_sta) {
				/* Jeff: don't disable ieee8021x_blocked
				   while clearing key */
				if (strcmp(param->u.crypt.alg, "none") != 0)
				if (keyparms->cipher != IW_AUTH_CIPHER_NONE &&
				    keyparms->cipher != 0)
					pbcmc_sta->ieee8021x_blocked = false;

				if ((padapter->securitypriv.ndisencryptstatus ==
@@ -951,7 +953,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
				u8 key_index, bool pairwise,
				const u8 *mac_addr, struct key_params *params)
{
	char *alg_name;
	u32 param_len;
	struct ieee_param *param;
	int set_tx, ret = 0;
@@ -967,37 +968,25 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
	DBG_8723A("key_index =%d\n", key_index);
	DBG_8723A("pairwise =%d\n", pairwise);

	param_len = sizeof(struct ieee_param) + params->key_len;
	param = kzalloc(param_len, GFP_KERNEL);
	if (!param)
		return -ENOMEM;

	param->cmd = IEEE_CMD_SET_ENCRYPTION;
	eth_broadcast_addr(param->sta_addr);

	switch (params->cipher) {
	case IW_AUTH_CIPHER_NONE:
		/* todo: remove key */
		/* remove = 1; */
		alg_name = "none";
		break;
	case WLAN_CIPHER_SUITE_WEP40:
	case WLAN_CIPHER_SUITE_WEP104:
		alg_name = "WEP";
		break;
	case WLAN_CIPHER_SUITE_TKIP:
		alg_name = "TKIP";
		break;
	case WLAN_CIPHER_SUITE_CCMP:
		alg_name = "CCMP";
		break;

	default:
		ret = -ENOTSUPP;
		goto addkey_end;
		goto exit;
	}

	strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
	param_len = sizeof(struct ieee_param) + params->key_len;
	param = kzalloc(param_len, GFP_KERNEL);
	if (!param)
		return -ENOMEM;

	param->cmd = IEEE_CMD_SET_ENCRYPTION;
	eth_broadcast_addr(param->sta_addr);

	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
		set_tx = 0;	/* for wpa/wpa2 group key */
@@ -1021,9 +1010,9 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,

	}

addkey_end:
	kfree(param);

exit:
	return ret;
}