* [PATCH 00/0] iwmc3200wifi 802.1X fixes @ 2009-08-03 6:37 Zhu Yi 2009-08-03 6:37 ` [PATCH 1/3] iwmc3200wifi: fix set_wpa_version and set_auth_type order Zhu Yi 0 siblings, 1 reply; 4+ messages in thread From: Zhu Yi @ 2009-08-03 6:37 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi Hi, The below patches fix iwmc3200wifi for IEEE 802.1X with WEP. [PATCH 1/3] iwmc3200wifi: fix set_wpa_version and set_auth_type order [PATCH 2/3] iwmc3200wifi: set WEP key static flag correctly [PATCH 3/3] iwmc3200wifi: avoid setting default key for 802.1X and RSNA Thanks, -yi ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] iwmc3200wifi: fix set_wpa_version and set_auth_type order 2009-08-03 6:37 [PATCH 00/0] iwmc3200wifi 802.1X fixes Zhu Yi @ 2009-08-03 6:37 ` Zhu Yi 2009-08-03 6:37 ` [PATCH 2/3] iwmc3200wifi: set WEP key static flag correctly Zhu Yi 0 siblings, 1 reply; 4+ messages in thread From: Zhu Yi @ 2009-08-03 6:37 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi iwm->umac_profile->sec.flags is set by iwm_set_wpa_version and checked by iwm_set_auth_type. The patch changes the order to make the flag used correctly. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/cfg80211.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c index 3f5a08f..a6e852f 100644 --- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c +++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c @@ -484,6 +484,8 @@ static int iwm_set_auth_type(struct iwm_priv *iwm, static int iwm_set_wpa_version(struct iwm_priv *iwm, u32 wpa_version) { + IWM_DBG_WEXT(iwm, DBG, "wpa_version: %d\n", wpa_version); + if (!wpa_version) { iwm->umac_profile->sec.flags = UMAC_SEC_FLG_LEGACY_PROFILE; return 0; @@ -508,6 +510,9 @@ static int iwm_set_cipher(struct iwm_priv *iwm, u32 cipher, bool ucast) return 0; } + IWM_DBG_WEXT(iwm, DBG, "%ccast cipher is 0x%x\n", ucast ? 'u' : 'm', + cipher); + switch (cipher) { case IW_AUTH_CIPHER_NONE: *profile_cipher = UMAC_CIPHER_TYPE_NONE; @@ -584,11 +589,11 @@ static int iwm_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, iwm->umac_profile->bss_num = 0; } - ret = iwm_set_auth_type(iwm, sme->auth_type); + ret = iwm_set_wpa_version(iwm, sme->crypto.wpa_versions); if (ret < 0) return ret; - ret = iwm_set_wpa_version(iwm, sme->crypto.wpa_versions); + ret = iwm_set_auth_type(iwm, sme->auth_type); if (ret < 0) return ret; -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] iwmc3200wifi: set WEP key static flag correctly 2009-08-03 6:37 ` [PATCH 1/3] iwmc3200wifi: fix set_wpa_version and set_auth_type order Zhu Yi @ 2009-08-03 6:37 ` Zhu Yi 2009-08-03 6:37 ` [PATCH 3/3] iwmc3200wifi: avoid setting default key for 802.1X and RSNA Zhu Yi 0 siblings, 1 reply; 4+ messages in thread From: Zhu Yi @ 2009-08-03 6:37 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi We should only set the static_key flag for open and legacy authentication types. It should not be set for 802.1X and TKIP. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/commands.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c index 0d66370..6b36260 100644 --- a/drivers/net/wireless/iwmc3200wifi/commands.c +++ b/drivers/net/wireless/iwmc3200wifi/commands.c @@ -596,6 +596,8 @@ int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key) key_idx = key->hdr.key_idx; if (!remove) { + u8 auth_type = iwm->umac_profile->sec.auth_type; + IWM_DBG_WEXT(iwm, DBG, "key_idx:%d\n", key_idx); IWM_DBG_WEXT(iwm, DBG, "key_len:%d\n", key_len); IWM_DBG_WEXT(iwm, DBG, "MAC:%pM, idx:%d, multicast:%d\n", @@ -618,7 +620,9 @@ int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key) memcpy(&wep40->key_hdr, key_hdr, sizeof(struct iwm_umac_key_hdr)); memcpy(wep40->key, key_data, key_len); - wep40->static_key = 1; + wep40->static_key = + !!((auth_type != UMAC_AUTH_TYPE_8021X) && + (auth_type != UMAC_AUTH_TYPE_RSNA_PSK)); cmd_size = sizeof(struct iwm_umac_key_wep40); break; @@ -632,7 +636,9 @@ int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key) memcpy(&wep104->key_hdr, key_hdr, sizeof(struct iwm_umac_key_hdr)); memcpy(wep104->key, key_data, key_len); - wep104->static_key = 1; + wep104->static_key = + !!((auth_type != UMAC_AUTH_TYPE_8021X) && + (auth_type != UMAC_AUTH_TYPE_RSNA_PSK)); cmd_size = sizeof(struct iwm_umac_key_wep104); break; -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] iwmc3200wifi: avoid setting default key for 802.1X and RSNA 2009-08-03 6:37 ` [PATCH 2/3] iwmc3200wifi: set WEP key static flag correctly Zhu Yi @ 2009-08-03 6:37 ` Zhu Yi 0 siblings, 0 replies; 4+ messages in thread From: Zhu Yi @ 2009-08-03 6:37 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi UMAC only allows us to set default key for WEP and auth type is not 802.1X or RSNA. This patch fixes iwmc3200wifi for 802.1X with WEP104. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/commands.c | 39 +++++++++++++++++-------- 1 files changed, 26 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c index 6b36260..aef9971 100644 --- a/drivers/net/wireless/iwmc3200wifi/commands.c +++ b/drivers/net/wireless/iwmc3200wifi/commands.c @@ -526,19 +526,6 @@ int iwm_read_mac(struct iwm_priv *iwm, u8 *mac) return 0; } -int iwm_set_tx_key(struct iwm_priv *iwm, u8 key_idx) -{ - struct iwm_umac_tx_key_id tx_key_id; - - tx_key_id.hdr.oid = UMAC_WIFI_IF_CMD_GLOBAL_TX_KEY_ID; - tx_key_id.hdr.buf_size = cpu_to_le16(sizeof(struct iwm_umac_tx_key_id) - - sizeof(struct iwm_umac_wifi_if)); - - tx_key_id.key_idx = key_idx; - - return iwm_send_wifi_if_cmd(iwm, &tx_key_id, sizeof(tx_key_id), 1); -} - static int iwm_check_profile(struct iwm_priv *iwm) { if (!iwm->umac_profile_active) @@ -572,6 +559,32 @@ static int iwm_check_profile(struct iwm_priv *iwm) return 0; } +int iwm_set_tx_key(struct iwm_priv *iwm, u8 key_idx) +{ + struct iwm_umac_tx_key_id tx_key_id; + int ret; + + ret = iwm_check_profile(iwm); + if (ret < 0) + return ret; + + /* UMAC only allows to set default key for WEP and auth type is + * NOT 802.1X or RSNA. */ + if ((iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_40 && + iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_104) || + iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_8021X || + iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_RSNA_PSK) + return 0; + + tx_key_id.hdr.oid = UMAC_WIFI_IF_CMD_GLOBAL_TX_KEY_ID; + tx_key_id.hdr.buf_size = cpu_to_le16(sizeof(struct iwm_umac_tx_key_id) - + sizeof(struct iwm_umac_wifi_if)); + + tx_key_id.key_idx = key_idx; + + return iwm_send_wifi_if_cmd(iwm, &tx_key_id, sizeof(tx_key_id), 1); +} + int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key) { int ret = 0; -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-08-03 6:35 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-08-03 6:37 [PATCH 00/0] iwmc3200wifi 802.1X fixes Zhu Yi 2009-08-03 6:37 ` [PATCH 1/3] iwmc3200wifi: fix set_wpa_version and set_auth_type order Zhu Yi 2009-08-03 6:37 ` [PATCH 2/3] iwmc3200wifi: set WEP key static flag correctly Zhu Yi 2009-08-03 6:37 ` [PATCH 3/3] iwmc3200wifi: avoid setting default key for 802.1X and RSNA Zhu Yi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).