Commit 6a35a0ac authored by Yogesh Ashok Powar's avatar Yogesh Ashok Powar Committed by John W. Linville

mwifiex: use common keyinfo bitmap for different key types

Instead of having separate key information definitions for
each type of key, a common key information bitmap is used.
Signed-off-by: default avatarYogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 18bf9657
...@@ -72,33 +72,12 @@ enum KEY_TYPE_ID { ...@@ -72,33 +72,12 @@ enum KEY_TYPE_ID {
KEY_TYPE_ID_AES, KEY_TYPE_ID_AES,
KEY_TYPE_ID_WAPI, KEY_TYPE_ID_WAPI,
}; };
#define KEY_MCAST BIT(0)
enum KEY_INFO_WEP { #define KEY_UNICAST BIT(1)
KEY_INFO_WEP_MCAST = 0x01, #define KEY_ENABLED BIT(2)
KEY_INFO_WEP_UNICAST = 0x02,
KEY_INFO_WEP_ENABLED = 0x04
};
enum KEY_INFO_TKIP {
KEY_INFO_TKIP_MCAST = 0x01,
KEY_INFO_TKIP_UNICAST = 0x02,
KEY_INFO_TKIP_ENABLED = 0x04
};
enum KEY_INFO_AES {
KEY_INFO_AES_MCAST = 0x01,
KEY_INFO_AES_UNICAST = 0x02,
KEY_INFO_AES_ENABLED = 0x04
};
#define WAPI_KEY_LEN 50 #define WAPI_KEY_LEN 50
enum KEY_INFO_WAPI {
KEY_INFO_WAPI_MCAST = 0x01,
KEY_INFO_WAPI_UNICAST = 0x02,
KEY_INFO_WAPI_ENABLED = 0x04
};
#define MAX_POLL_TRIES 100 #define MAX_POLL_TRIES 100
#define MAX_MULTI_INTERFACE_POLL_TRIES 1000 #define MAX_MULTI_INTERFACE_POLL_TRIES 1000
......
...@@ -500,9 +500,8 @@ mwifiex_set_keyparamset_wep(struct mwifiex_private *priv, ...@@ -500,9 +500,8 @@ mwifiex_set_keyparamset_wep(struct mwifiex_private *priv,
key_param_set->key_type_id = key_param_set->key_type_id =
cpu_to_le16(KEY_TYPE_ID_WEP); cpu_to_le16(KEY_TYPE_ID_WEP);
key_param_set->key_info = key_param_set->key_info =
cpu_to_le16(KEY_INFO_WEP_ENABLED | cpu_to_le16(KEY_ENABLED | KEY_UNICAST |
KEY_INFO_WEP_UNICAST | KEY_MCAST);
KEY_INFO_WEP_MCAST);
key_param_set->key_len = key_param_set->key_len =
cpu_to_le16(priv->wep_key[i].key_length); cpu_to_le16(priv->wep_key[i].key_length);
/* Set WEP key index */ /* Set WEP key index */
...@@ -589,10 +588,10 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv, ...@@ -589,10 +588,10 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv,
cpu_to_le16(KEY_TYPE_ID_WAPI); cpu_to_le16(KEY_TYPE_ID_WAPI);
if (cmd_oid == KEY_INFO_ENABLED) if (cmd_oid == KEY_INFO_ENABLED)
key_material->key_param_set.key_info = key_material->key_param_set.key_info =
cpu_to_le16(KEY_INFO_WAPI_ENABLED); cpu_to_le16(KEY_ENABLED);
else else
key_material->key_param_set.key_info = key_material->key_param_set.key_info =
cpu_to_le16(!KEY_INFO_WAPI_ENABLED); cpu_to_le16(!KEY_ENABLED);
key_material->key_param_set.key[0] = enc_key->key_index; key_material->key_param_set.key[0] = enc_key->key_index;
if (!priv->sec_info.wapi_key_on) if (!priv->sec_info.wapi_key_on)
...@@ -604,10 +603,10 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv, ...@@ -604,10 +603,10 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv,
if (0 != memcmp(enc_key->mac_addr, bc_mac, sizeof(bc_mac))) { if (0 != memcmp(enc_key->mac_addr, bc_mac, sizeof(bc_mac))) {
/* WAPI pairwise key: unicast */ /* WAPI pairwise key: unicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_WAPI_UNICAST); cpu_to_le16(KEY_UNICAST);
} else { /* WAPI group key: multicast */ } else { /* WAPI group key: multicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_WAPI_MCAST); cpu_to_le16(KEY_MCAST);
priv->sec_info.wapi_key_on = true; priv->sec_info.wapi_key_on = true;
} }
...@@ -634,32 +633,32 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv, ...@@ -634,32 +633,32 @@ static int mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv,
cpu_to_le16(KEY_TYPE_ID_AES); cpu_to_le16(KEY_TYPE_ID_AES);
if (cmd_oid == KEY_INFO_ENABLED) if (cmd_oid == KEY_INFO_ENABLED)
key_material->key_param_set.key_info = key_material->key_param_set.key_info =
cpu_to_le16(KEY_INFO_AES_ENABLED); cpu_to_le16(KEY_ENABLED);
else else
key_material->key_param_set.key_info = key_material->key_param_set.key_info =
cpu_to_le16(!KEY_INFO_AES_ENABLED); cpu_to_le16(!KEY_ENABLED);
if (enc_key->key_index & MWIFIEX_KEY_INDEX_UNICAST) if (enc_key->key_index & MWIFIEX_KEY_INDEX_UNICAST)
/* AES pairwise key: unicast */ /* AES pairwise key: unicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_AES_UNICAST); cpu_to_le16(KEY_UNICAST);
else /* AES group key: multicast */ else /* AES group key: multicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_AES_MCAST); cpu_to_le16(KEY_MCAST);
} else if (enc_key->key_len == WLAN_KEY_LEN_TKIP) { } else if (enc_key->key_len == WLAN_KEY_LEN_TKIP) {
dev_dbg(priv->adapter->dev, "cmd: WPA_TKIP\n"); dev_dbg(priv->adapter->dev, "cmd: WPA_TKIP\n");
key_material->key_param_set.key_type_id = key_material->key_param_set.key_type_id =
cpu_to_le16(KEY_TYPE_ID_TKIP); cpu_to_le16(KEY_TYPE_ID_TKIP);
key_material->key_param_set.key_info = key_material->key_param_set.key_info =
cpu_to_le16(KEY_INFO_TKIP_ENABLED); cpu_to_le16(KEY_ENABLED);
if (enc_key->key_index & MWIFIEX_KEY_INDEX_UNICAST) if (enc_key->key_index & MWIFIEX_KEY_INDEX_UNICAST)
/* TKIP pairwise key: unicast */ /* TKIP pairwise key: unicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_TKIP_UNICAST); cpu_to_le16(KEY_UNICAST);
else /* TKIP group key: multicast */ else /* TKIP group key: multicast */
key_material->key_param_set.key_info |= key_material->key_param_set.key_info |=
cpu_to_le16(KEY_INFO_TKIP_MCAST); cpu_to_le16(KEY_MCAST);
} }
if (key_material->key_param_set.key_type_id) { if (key_material->key_param_set.key_type_id) {
......
...@@ -574,8 +574,7 @@ static int mwifiex_ret_802_11_key_material(struct mwifiex_private *priv, ...@@ -574,8 +574,7 @@ static int mwifiex_ret_802_11_key_material(struct mwifiex_private *priv,
&resp->params.key_material; &resp->params.key_material;
if (le16_to_cpu(key->action) == HostCmd_ACT_GEN_SET) { if (le16_to_cpu(key->action) == HostCmd_ACT_GEN_SET) {
if ((le16_to_cpu(key->key_param_set.key_info) & if ((le16_to_cpu(key->key_param_set.key_info) & KEY_MCAST)) {
KEY_INFO_TKIP_MCAST)) {
dev_dbg(priv->adapter->dev, "info: key: GTK is set\n"); dev_dbg(priv->adapter->dev, "info: key: GTK is set\n");
priv->wpa_is_gtk_set = true; priv->wpa_is_gtk_set = true;
priv->scan_block = false; priv->scan_block = false;
......
...@@ -1729,8 +1729,7 @@ static int mwifiex_sec_ioctl_set_wpa_key(struct mwifiex_adapter *adapter, ...@@ -1729,8 +1729,7 @@ static int mwifiex_sec_ioctl_set_wpa_key(struct mwifiex_adapter *adapter,
sizeof(ibss_key->key_param_set.key_len)); sizeof(ibss_key->key_param_set.key_len));
ibss_key->key_param_set.key_type_id ibss_key->key_param_set.key_type_id
= cpu_to_le16(KEY_TYPE_ID_TKIP); = cpu_to_le16(KEY_TYPE_ID_TKIP);
ibss_key->key_param_set.key_info ibss_key->key_param_set.key_info = cpu_to_le16(KEY_ENABLED);
= cpu_to_le16(KEY_INFO_TKIP_ENABLED);
/* Send the key as GTK to firmware */ /* Send the key as GTK to firmware */
encrypt_key->key_index = ~MWIFIEX_KEY_INDEX_UNICAST; encrypt_key->key_index = ~MWIFIEX_KEY_INDEX_UNICAST;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment