aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ipw2200.c18
-rw-r--r--drivers/net/wireless/ipw2200.h7
2 files changed, 16 insertions, 9 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index b40bfa063725..671631831226 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -6256,6 +6256,9 @@ static int ipw_wpa_set_auth_algs(struct ipw_priv *priv, int value)
6256 } else if (value & IW_AUTH_ALG_OPEN_SYSTEM) { 6256 } else if (value & IW_AUTH_ALG_OPEN_SYSTEM) {
6257 sec.auth_mode = WLAN_AUTH_OPEN; 6257 sec.auth_mode = WLAN_AUTH_OPEN;
6258 ieee->open_wep = 1; 6258 ieee->open_wep = 1;
6259 } else if (value & IW_AUTH_ALG_LEAP) {
6260 sec.auth_mode = WLAN_AUTH_LEAP;
6261 ieee->open_wep = 1;
6259 } else 6262 } else
6260 return -EINVAL; 6263 return -EINVAL;
6261 6264
@@ -7116,19 +7119,22 @@ static int ipw_associate_network(struct ipw_priv *priv,
7116 7119
7117 memset(&priv->assoc_request, 0, sizeof(priv->assoc_request)); 7120 memset(&priv->assoc_request, 0, sizeof(priv->assoc_request));
7118 priv->assoc_request.channel = network->channel; 7121 priv->assoc_request.channel = network->channel;
7122 priv->assoc_request.auth_key = 0;
7123
7119 if ((priv->capability & CAP_PRIVACY_ON) && 7124 if ((priv->capability & CAP_PRIVACY_ON) &&
7120 (priv->capability & CAP_SHARED_KEY)) { 7125 (priv->ieee->sec.auth_mode == WLAN_AUTH_SHARED_KEY)) {
7121 priv->assoc_request.auth_type = AUTH_SHARED_KEY; 7126 priv->assoc_request.auth_type = AUTH_SHARED_KEY;
7122 priv->assoc_request.auth_key = priv->ieee->sec.active_key; 7127 priv->assoc_request.auth_key = priv->ieee->sec.active_key;
7123 7128
7124 if ((priv->capability & CAP_PRIVACY_ON) && 7129 if ((priv->ieee->sec.level == SEC_LEVEL_1) &&
7125 (priv->ieee->sec.level == SEC_LEVEL_1) &&
7126 !(priv->ieee->host_encrypt || priv->ieee->host_decrypt)) 7130 !(priv->ieee->host_encrypt || priv->ieee->host_decrypt))
7127 ipw_send_wep_keys(priv, DCW_WEP_KEY_SEC_TYPE_WEP); 7131 ipw_send_wep_keys(priv, DCW_WEP_KEY_SEC_TYPE_WEP);
7128 } else { 7132
7133 } else if ((priv->capability & CAP_PRIVACY_ON) &&
7134 (priv->ieee->sec.auth_mode == WLAN_AUTH_LEAP))
7135 priv->assoc_request.auth_type = AUTH_LEAP;
7136 else
7129 priv->assoc_request.auth_type = AUTH_OPEN; 7137 priv->assoc_request.auth_type = AUTH_OPEN;
7130 priv->assoc_request.auth_key = 0;
7131 }
7132 7138
7133 if (priv->ieee->wpa_ie_len) { 7139 if (priv->ieee->wpa_ie_len) {
7134 priv->assoc_request.policy_support = 0x02; /* RSN active */ 7140 priv->assoc_request.policy_support = 0x02; /* RSN active */
diff --git a/drivers/net/wireless/ipw2200.h b/drivers/net/wireless/ipw2200.h
index 44ff76386a8e..5f32834745b5 100644
--- a/drivers/net/wireless/ipw2200.h
+++ b/drivers/net/wireless/ipw2200.h
@@ -1657,9 +1657,10 @@ enum {
1657 IPW_FW_ERROR_FATAL_ERROR 1657 IPW_FW_ERROR_FATAL_ERROR
1658}; 1658};
1659 1659
1660#define AUTH_OPEN 0 1660#define AUTH_OPEN 0
1661#define AUTH_SHARED_KEY 1 1661#define AUTH_SHARED_KEY 1
1662#define AUTH_IGNORE 3 1662#define AUTH_LEAP 2
1663#define AUTH_IGNORE 3
1663 1664
1664#define HC_ASSOCIATE 0 1665#define HC_ASSOCIATE 0
1665#define HC_REASSOCIATE 1 1666#define HC_REASSOCIATE 1