linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).