From efd4216c2d558f2faf03284e95a9c1c1297d801a Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Tue, 24 Jun 2014 15:03:49 +0200 Subject: [PATCH] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): No more string parsing to determine cipher Signed-off-by: Jes Sorensen Signed-off-by: Greg Kroah-Hartman --- .../staging/rtl8723au/os_dep/ioctl_cfg80211.c | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c index 7aaa3f8bda9d..7e34f890a3b3 100644 --- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c @@ -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; } -- 2.20.1