diff options
author | James Ketrenos <jketreno@linux.intel.com> | 2005-09-21 12:54:22 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-21 23:01:52 -0400 |
commit | 259bf1fd8a7cc0f6b47fd8a9ac5e2dfc33182a3d (patch) | |
tree | 6c59c778280f899929c3d09c7f5564d80da830c2 | |
parent | 0ad0c3c64484b1458b51167bd3e614d8d9d070f8 (diff) |
[PATCH] ieee80211: Allow drivers to fix an issue when using wpa_supplicant with WEP
tree 898fedef6ca1b5b58b8bdf7e6d8894a78bbde4cd
parent 8720fff53090ae428d2159332b6f4b2749dea10f
author Zhu Yi <jketreno@io.(none)> 1124435746 -0500
committer James Ketrenos <jketreno@linux.intel.com> 1127312509 -0500
Allow drivers to fix an issue when using wpa_supplicant with WEP.
The problem is introduced by the hwcrypto patch. We changed indicator of
the encryption request from the upper layer (i.e. wpa_supplicant):
In the original host based crypto the driver could use: crypt &&
crypt->ops.
In the new hardware based crypto, the driver should use the flags
specified in ieee->sec.encrypt.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r-- | include/net/ieee80211.h | 2 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_wx.c | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index 6cc0674e5606..c7ab7cd9de13 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
@@ -439,7 +439,7 @@ struct ieee80211_device; | |||
439 | #define SEC_UNICAST_GROUP (1<<6) | 439 | #define SEC_UNICAST_GROUP (1<<6) |
440 | #define SEC_LEVEL (1<<7) | 440 | #define SEC_LEVEL (1<<7) |
441 | #define SEC_ENABLED (1<<8) | 441 | #define SEC_ENABLED (1<<8) |
442 | #define SEC_TGI_KEY_RESET (1<<9) | 442 | #define SEC_ENCRYPT (1<<9) |
443 | 443 | ||
444 | #define SEC_LEVEL_0 0 /* None */ | 444 | #define SEC_LEVEL_0 0 /* None */ |
445 | #define SEC_LEVEL_1 1 /* WEP 40 and 104 bit */ | 445 | #define SEC_LEVEL_1 1 /* WEP 40 and 104 bit */ |
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c index df64bf3716b7..49afea7989d0 100644 --- a/net/ieee80211/ieee80211_wx.c +++ b/net/ieee80211/ieee80211_wx.c | |||
@@ -322,7 +322,7 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | |||
322 | sec.enabled = 0; | 322 | sec.enabled = 0; |
323 | sec.encrypt = 0; | 323 | sec.encrypt = 0; |
324 | sec.level = SEC_LEVEL_0; | 324 | sec.level = SEC_LEVEL_0; |
325 | sec.flags |= SEC_ENABLED | SEC_LEVEL; | 325 | sec.flags |= SEC_ENABLED | SEC_LEVEL | SEC_ENCRYPT; |
326 | } | 326 | } |
327 | 327 | ||
328 | goto done; | 328 | goto done; |
@@ -330,7 +330,7 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | |||
330 | 330 | ||
331 | sec.enabled = 1; | 331 | sec.enabled = 1; |
332 | sec.encrypt = 1; | 332 | sec.encrypt = 1; |
333 | sec.flags |= SEC_ENABLED; | 333 | sec.flags |= SEC_ENABLED | SEC_ENCRYPT; |
334 | 334 | ||
335 | if (*crypt != NULL && (*crypt)->ops != NULL && | 335 | if (*crypt != NULL && (*crypt)->ops != NULL && |
336 | strcmp((*crypt)->ops->name, "WEP") != 0) { | 336 | strcmp((*crypt)->ops->name, "WEP") != 0) { |
@@ -412,8 +412,6 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | |||
412 | sec.flags |= SEC_ACTIVE_KEY; | 412 | sec.flags |= SEC_ACTIVE_KEY; |
413 | } | 413 | } |
414 | } | 414 | } |
415 | |||
416 | done: | ||
417 | ieee->open_wep = !(erq->flags & IW_ENCODE_RESTRICTED); | 415 | ieee->open_wep = !(erq->flags & IW_ENCODE_RESTRICTED); |
418 | sec.auth_mode = ieee->open_wep ? WLAN_AUTH_OPEN : WLAN_AUTH_SHARED_KEY; | 416 | sec.auth_mode = ieee->open_wep ? WLAN_AUTH_OPEN : WLAN_AUTH_SHARED_KEY; |
419 | sec.flags |= SEC_AUTH_MODE; | 417 | sec.flags |= SEC_AUTH_MODE; |
@@ -425,6 +423,7 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | |||
425 | sec.flags |= SEC_LEVEL; | 423 | sec.flags |= SEC_LEVEL; |
426 | sec.level = SEC_LEVEL_1; /* 40 and 104 bit WEP */ | 424 | sec.level = SEC_LEVEL_1; /* 40 and 104 bit WEP */ |
427 | 425 | ||
426 | done: | ||
428 | if (ieee->set_security) | 427 | if (ieee->set_security) |
429 | ieee->set_security(dev, &sec); | 428 | ieee->set_security(dev, &sec); |
430 | 429 | ||