Commit 6f2a73f9 authored by Vasanthakumar Thiagarajan's avatar Vasanthakumar Thiagarajan Committed by Kalle Valo

ath6kl: Move key information to vif structure

Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent f74bac54
...@@ -419,7 +419,7 @@ static int ath6kl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, ...@@ -419,7 +419,7 @@ static int ath6kl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
return -ENOENT; return -ENOENT;
} }
key = &ar->keys[sme->key_idx]; key = &vif->keys[sme->key_idx];
key->key_len = sme->key_len; key->key_len = sme->key_len;
memcpy(key->key, sme->key, key->key_len); memcpy(key->key, sme->key, key->key_len);
key->cipher = vif->prwise_crypto; key->cipher = vif->prwise_crypto;
...@@ -856,7 +856,7 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -856,7 +856,7 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
return -ENOENT; return -ENOENT;
} }
key = &ar->keys[key_index]; key = &vif->keys[key_index];
memset(key, 0, sizeof(struct ath6kl_key)); memset(key, 0, sizeof(struct ath6kl_key));
if (pairwise) if (pairwise)
...@@ -934,8 +934,9 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -934,8 +934,9 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
*/ */
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "Delay WEP key configuration " ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "Delay WEP key configuration "
"until AP mode has been started\n"); "until AP mode has been started\n");
ar->wep_key_list[key_index].key_len = key->key_len; vif->wep_key_list[key_index].key_len = key->key_len;
memcpy(ar->wep_key_list[key_index].key, key->key, key->key_len); memcpy(vif->wep_key_list[key_index].key, key->key,
key->key_len);
return 0; return 0;
} }
...@@ -955,6 +956,7 @@ static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -955,6 +956,7 @@ static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
const u8 *mac_addr) const u8 *mac_addr)
{ {
struct ath6kl *ar = (struct ath6kl *)ath6kl_priv(ndev); struct ath6kl *ar = (struct ath6kl *)ath6kl_priv(ndev);
struct ath6kl_vif *vif = netdev_priv(ndev);
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: index %d\n", __func__, key_index); ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: index %d\n", __func__, key_index);
...@@ -968,13 +970,13 @@ static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -968,13 +970,13 @@ static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
return -ENOENT; return -ENOENT;
} }
if (!ar->keys[key_index].key_len) { if (!vif->keys[key_index].key_len) {
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, ath6kl_dbg(ATH6KL_DBG_WLAN_CFG,
"%s: index %d is empty\n", __func__, key_index); "%s: index %d is empty\n", __func__, key_index);
return 0; return 0;
} }
ar->keys[key_index].key_len = 0; vif->keys[key_index].key_len = 0;
return ath6kl_wmi_deletekey_cmd(ar->wmi, key_index); return ath6kl_wmi_deletekey_cmd(ar->wmi, key_index);
} }
...@@ -986,6 +988,7 @@ static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -986,6 +988,7 @@ static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
struct key_params *)) struct key_params *))
{ {
struct ath6kl *ar = (struct ath6kl *)ath6kl_priv(ndev); struct ath6kl *ar = (struct ath6kl *)ath6kl_priv(ndev);
struct ath6kl_vif *vif = netdev_priv(ndev);
struct ath6kl_key *key = NULL; struct ath6kl_key *key = NULL;
struct key_params params; struct key_params params;
...@@ -1001,7 +1004,7 @@ static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1001,7 +1004,7 @@ static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
return -ENOENT; return -ENOENT;
} }
key = &ar->keys[key_index]; key = &vif->keys[key_index];
memset(&params, 0, sizeof(params)); memset(&params, 0, sizeof(params));
params.cipher = key->cipher; params.cipher = key->cipher;
params.key_len = key->key_len; params.key_len = key->key_len;
...@@ -1038,14 +1041,14 @@ static int ath6kl_cfg80211_set_default_key(struct wiphy *wiphy, ...@@ -1038,14 +1041,14 @@ static int ath6kl_cfg80211_set_default_key(struct wiphy *wiphy,
return -ENOENT; return -ENOENT;
} }
if (!ar->keys[key_index].key_len) { if (!vif->keys[key_index].key_len) {
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: invalid key index %d\n", ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: invalid key index %d\n",
__func__, key_index); __func__, key_index);
return -EINVAL; return -EINVAL;
} }
vif->def_txkey_index = key_index; vif->def_txkey_index = key_index;
key = &ar->keys[vif->def_txkey_index]; key = &vif->keys[vif->def_txkey_index];
key_usage = GROUP_USAGE; key_usage = GROUP_USAGE;
if (vif->prwise_crypto == WEP_CRYPT) if (vif->prwise_crypto == WEP_CRYPT)
key_usage |= TX_USAGE; key_usage |= TX_USAGE;
......
...@@ -413,6 +413,8 @@ struct ath6kl_vif { ...@@ -413,6 +413,8 @@ struct ath6kl_vif {
u8 req_bssid[ETH_ALEN]; u8 req_bssid[ETH_ALEN];
u16 ch_hint; u16 ch_hint;
u16 bss_ch; u16 bss_ch;
struct ath6kl_wep_key wep_key_list[WMI_MAX_KEY_INDEX + 1];
struct ath6kl_key keys[WMI_MAX_KEY_INDEX + 1];
}; };
/* Flag info */ /* Flag info */
...@@ -441,7 +443,6 @@ struct ath6kl { ...@@ -441,7 +443,6 @@ struct ath6kl {
struct ath6kl_vif *vif; struct ath6kl_vif *vif;
spinlock_t lock; spinlock_t lock;
struct semaphore sem; struct semaphore sem;
struct ath6kl_wep_key wep_key_list[WMI_MAX_KEY_INDEX + 1];
u16 listen_intvl_b; u16 listen_intvl_b;
u16 listen_intvl_t; u16 listen_intvl_t;
u8 lrssi_roam_threshold; u8 lrssi_roam_threshold;
...@@ -480,7 +481,6 @@ struct ath6kl { ...@@ -480,7 +481,6 @@ struct ath6kl {
u8 rx_meta_ver; u8 rx_meta_ver;
struct wireless_dev *wdev; struct wireless_dev *wdev;
struct cfg80211_scan_request *scan_req; struct cfg80211_scan_request *scan_req;
struct ath6kl_key keys[WMI_MAX_KEY_INDEX + 1];
enum sme_state sme_state; enum sme_state sme_state;
enum wlan_low_pwr_state wlan_pwr_state; enum wlan_low_pwr_state wlan_pwr_state;
struct wmi_scan_params_cmd sc_params; struct wmi_scan_params_cmd sc_params;
......
...@@ -87,7 +87,7 @@ void ath6kl_init_profile_info(struct ath6kl *ar) ...@@ -87,7 +87,7 @@ void ath6kl_init_profile_info(struct ath6kl *ar)
vif->prwise_crypto_len = 0; vif->prwise_crypto_len = 0;
vif->grp_crypto = NONE_CRYPT; vif->grp_crypto = NONE_CRYPT;
vif->grp_crypto_len = 0; vif->grp_crypto_len = 0;
memset(ar->wep_key_list, 0, sizeof(ar->wep_key_list)); memset(vif->wep_key_list, 0, sizeof(vif->wep_key_list));
memset(vif->req_bssid, 0, sizeof(vif->req_bssid)); memset(vif->req_bssid, 0, sizeof(vif->req_bssid));
memset(vif->bssid, 0, sizeof(vif->bssid)); memset(vif->bssid, 0, sizeof(vif->bssid));
vif->bss_ch = 0; vif->bss_ch = 0;
...@@ -248,11 +248,12 @@ static int ath6kl_init_service_ep(struct ath6kl *ar) ...@@ -248,11 +248,12 @@ static int ath6kl_init_service_ep(struct ath6kl *ar)
void ath6kl_init_control_info(struct ath6kl *ar) void ath6kl_init_control_info(struct ath6kl *ar)
{ {
/* TODO: Findout vif */
struct ath6kl_vif *vif = ar->vif; struct ath6kl_vif *vif = ar->vif;
ath6kl_init_profile_info(ar); ath6kl_init_profile_info(ar);
vif->def_txkey_index = 0; vif->def_txkey_index = 0;
memset(ar->wep_key_list, 0, sizeof(ar->wep_key_list)); memset(vif->wep_key_list, 0, sizeof(vif->wep_key_list));
vif->ch_hint = 0; vif->ch_hint = 0;
} }
......
...@@ -506,7 +506,7 @@ static void ath6kl_install_static_wep_keys(struct ath6kl *ar) ...@@ -506,7 +506,7 @@ static void ath6kl_install_static_wep_keys(struct ath6kl *ar)
u8 keyusage; u8 keyusage;
for (index = WMI_MIN_KEY_INDEX; index <= WMI_MAX_KEY_INDEX; index++) { for (index = WMI_MIN_KEY_INDEX; index <= WMI_MAX_KEY_INDEX; index++) {
if (ar->wep_key_list[index].key_len) { if (vif->wep_key_list[index].key_len) {
keyusage = GROUP_USAGE; keyusage = GROUP_USAGE;
if (index == vif->def_txkey_index) if (index == vif->def_txkey_index)
keyusage |= TX_USAGE; keyusage |= TX_USAGE;
...@@ -515,9 +515,9 @@ static void ath6kl_install_static_wep_keys(struct ath6kl *ar) ...@@ -515,9 +515,9 @@ static void ath6kl_install_static_wep_keys(struct ath6kl *ar)
index, index,
WEP_CRYPT, WEP_CRYPT,
keyusage, keyusage,
ar->wep_key_list[index].key_len, vif->wep_key_list[index].key_len,
NULL, NULL,
ar->wep_key_list[index].key, vif->wep_key_list[index].key,
KEY_OP_INIT_VAL, NULL, KEY_OP_INIT_VAL, NULL,
NO_SYNC_WMIFLAG); NO_SYNC_WMIFLAG);
} }
...@@ -1384,7 +1384,7 @@ void ath6kl_disconnect_event(struct ath6kl *ar, u8 reason, u8 *bssid, ...@@ -1384,7 +1384,7 @@ void ath6kl_disconnect_event(struct ath6kl *ar, u8 reason, u8 *bssid,
} }
if (memcmp(ar->net_dev->dev_addr, bssid, ETH_ALEN) == 0) { if (memcmp(ar->net_dev->dev_addr, bssid, ETH_ALEN) == 0) {
memset(ar->wep_key_list, 0, sizeof(ar->wep_key_list)); memset(vif->wep_key_list, 0, sizeof(vif->wep_key_list));
clear_bit(CONNECTED, &vif->flags); clear_bit(CONNECTED, &vif->flags);
} }
return; return;
......
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