diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2009-05-22 17:40:34 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-05-22 14:06:04 -0400 |
commit | 9839178e92bf205728c754aeb1933f631a9962d9 (patch) | |
tree | 59c24cb073b018449dfa2dff00a32887105cd1d9 /drivers/net/wireless/rndis_wlan.c | |
parent | b145ee0ce1e325497e5bb91f78f1545b552b518f (diff) | |
download | op-kernel-dev-9839178e92bf205728c754aeb1933f631a9962d9.zip op-kernel-dev-9839178e92bf205728c754aeb1933f631a9962d9.tar.gz |
rndis_wlan: do not try to restore wpa keys using add_wep_key()
set_infra_mode() tried to restore wpa keys using add_wep_key(). This never
worked so prevent driver from trying.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rndis_wlan.c')
-rw-r--r-- | drivers/net/wireless/rndis_wlan.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index 98f6ff7..c254fdf 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c @@ -405,6 +405,7 @@ struct rndis_wext_private { int encr_tx_key_index; char encr_keys[4][32]; int encr_key_len[4]; + char encr_key_wpa[4]; int wpa_version; int wpa_keymgmt; int wpa_authalg; @@ -956,7 +957,7 @@ static int set_infra_mode(struct usbnet *usbdev, int mode) if (priv->wpa_keymgmt == 0 || priv->wpa_keymgmt == IW_AUTH_KEY_MGMT_802_1X) { for (i = 0; i < 4; i++) { - if (priv->encr_key_len[i] > 0) + if (priv->encr_key_len[i] > 0 && !priv->encr_key_wpa[i]) add_wep_key(usbdev, priv->encr_keys[i], priv->encr_key_len[i], i); } @@ -1027,6 +1028,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) } priv->encr_key_len[index] = key_len; + priv->encr_key_wpa[index] = 0; memcpy(&priv->encr_keys[index], key, key_len); return 0; @@ -1092,7 +1094,8 @@ static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len, return ret; priv->encr_key_len[index] = key_len; - memcpy(&priv->encr_keys[index], ndis_key.material, key_len); + priv->encr_key_wpa[index] = 1; + if (flags & ndis_80211_addkey_transmit_key) priv->encr_tx_key_index = index; @@ -1112,6 +1115,7 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN]) return 0; priv->encr_key_len[index] = 0; + priv->encr_key_wpa[index] = 0; memset(&priv->encr_keys[index], 0, sizeof(priv->encr_keys[index])); if (priv->wpa_cipher_pair == IW_AUTH_CIPHER_TKIP || |