|
@@ -658,14 +658,28 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
if (connkeys && connkeys->def >= 0) {
|
|
if (connkeys && connkeys->def >= 0) {
|
|
int idx;
|
|
int idx;
|
|
|
|
+ u32 cipher;
|
|
|
|
|
|
idx = connkeys->def;
|
|
idx = connkeys->def;
|
|
|
|
+ cipher = connkeys->params[idx].cipher;
|
|
/* If given a WEP key we may need it for shared key auth */
|
|
/* If given a WEP key we may need it for shared key auth */
|
|
- if (connkeys->params[idx].cipher == WLAN_CIPHER_SUITE_WEP40 ||
|
|
|
|
- connkeys->params[idx].cipher == WLAN_CIPHER_SUITE_WEP104) {
|
|
|
|
|
|
+ if (cipher == WLAN_CIPHER_SUITE_WEP40 ||
|
|
|
|
+ cipher == WLAN_CIPHER_SUITE_WEP104) {
|
|
connect->key_idx = idx;
|
|
connect->key_idx = idx;
|
|
connect->key = connkeys->params[idx].key;
|
|
connect->key = connkeys->params[idx].key;
|
|
connect->key_len = connkeys->params[idx].key_len;
|
|
connect->key_len = connkeys->params[idx].key_len;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * If ciphers are not set (e.g. when going through
|
|
|
|
+ * iwconfig), we have to set them appropriately here.
|
|
|
|
+ */
|
|
|
|
+ if (connect->crypto.cipher_group == 0)
|
|
|
|
+ connect->crypto.cipher_group = cipher;
|
|
|
|
+
|
|
|
|
+ if (connect->crypto.n_ciphers_pairwise == 0) {
|
|
|
|
+ connect->crypto.n_ciphers_pairwise = 1;
|
|
|
|
+ connect->crypto.ciphers_pairwise[0] = cipher;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|