linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code
@ 2009-05-22 14:40 Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 2/4] rndis_wlan: explain bits used in key setup code Jussi Kivilinna
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jussi Kivilinna @ 2009-05-22 14:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville

BCM4320 doesn't support OID_802_11_TX_POWER_LEVEL (chip implements
the command but setting value has no effect and getting txpower value
always returns 0xff, full power). So remove the code for cleanup.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---

 drivers/net/wireless/rndis_wlan.c |   46 ++++++-------------------------------
 1 files changed, 8 insertions(+), 38 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 52fc647..f9b0a35 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -2,7 +2,7 @@
  * Driver for RNDIS based wireless USB devices.
  *
  * Copyright (C) 2007 by Bjorge Dijkstra <bjd@jooz.net>
- * Copyright (C) 2008 by Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
+ * Copyright (C) 2008-2009 by Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -309,7 +309,6 @@ enum wpa_key_mgmt { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE,
 #define CAP_MODE_80211B		2
 #define CAP_MODE_80211G		4
 #define CAP_MODE_MASK		7
-#define CAP_SUPPORT_TXPOWER	8
 
 #define WORK_LINK_UP		(1<<0)
 #define WORK_LINK_DOWN		(1<<1)
@@ -1849,18 +1848,10 @@ static int rndis_iw_get_txpower(struct net_device *dev,
 	struct usbnet *usbdev = netdev_priv(dev);
 	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
 	__le32 tx_power;
-	int ret = 0, len;
 
 	if (priv->radio_on) {
-		if (priv->caps & CAP_SUPPORT_TXPOWER) {
-			len = sizeof(tx_power);
-			ret = rndis_query_oid(usbdev, OID_802_11_TX_POWER_LEVEL,
-							&tx_power, &len);
-			if (ret != 0)
-				return ret;
-		} else
-			/* fake incase not supported */
-			tx_power = cpu_to_le32(get_bcm4320_power(priv));
+		/* fake since changing tx_power (by userlevel) not supported */
+		tx_power = cpu_to_le32(get_bcm4320_power(priv));
 
 		wrqu->txpower.flags = IW_TXPOW_MWATT;
 		wrqu->txpower.value = le32_to_cpu(tx_power);
@@ -1873,7 +1864,7 @@ static int rndis_iw_get_txpower(struct net_device *dev,
 
 	devdbg(usbdev, "SIOCGIWTXPOW: %d", wrqu->txpower.value);
 
-	return ret;
+	return 0;
 }
 
 
@@ -1883,7 +1874,6 @@ static int rndis_iw_set_txpower(struct net_device *dev,
 	struct usbnet *usbdev = netdev_priv(dev);
 	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
 	__le32 tx_power = 0;
-	int ret = 0;
 
 	if (!wrqu->txpower.disabled) {
 		if (wrqu->txpower.flags == IW_TXPOW_MWATT)
@@ -1906,22 +1896,10 @@ static int rndis_iw_set_txpower(struct net_device *dev,
 	devdbg(usbdev, "SIOCSIWTXPOW: %d", le32_to_cpu(tx_power));
 
 	if (le32_to_cpu(tx_power) != 0) {
-		if (priv->caps & CAP_SUPPORT_TXPOWER) {
-			/* turn radio on first */
-			if (!priv->radio_on)
-				disassociate(usbdev, 1);
-
-			ret = rndis_set_oid(usbdev, OID_802_11_TX_POWER_LEVEL,
-						&tx_power, sizeof(tx_power));
-			if (ret != 0)
-				ret = -EOPNOTSUPP;
-			return ret;
-		} else {
-			/* txpower unsupported, just turn radio on */
-			if (!priv->radio_on)
-				return disassociate(usbdev, 1);
-			return 0; /* all ready on */
-		}
+		/* txpower unsupported, just turn radio on */
+		if (!priv->radio_on)
+			return disassociate(usbdev, 1);
+		return 0; /* all ready on */
 	}
 
 	/* tx_power == 0, turn off radio */
@@ -2130,16 +2108,8 @@ static int rndis_wext_get_caps(struct usbnet *usbdev)
 		__le32	items[8];
 	} networks_supported;
 	int len, retval, i, n;
-	__le32 tx_power;
 	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
 
-	/* determine if supports setting txpower */
-	len = sizeof(tx_power);
-	retval = rndis_query_oid(usbdev, OID_802_11_TX_POWER_LEVEL, &tx_power,
-									&len);
-	if (retval == 0 && le32_to_cpu(tx_power) != 0xFF)
-		priv->caps |= CAP_SUPPORT_TXPOWER;
-
 	/* determine supported modes */
 	len = sizeof(networks_supported);
 	retval = rndis_query_oid(usbdev, OID_802_11_NETWORK_TYPES_SUPPORTED,


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] rndis_wlan: explain bits used in key setup code.
  2009-05-22 14:40 [PATCH 1/4] rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code Jussi Kivilinna
@ 2009-05-22 14:40 ` Jussi Kivilinna
  2009-05-22 15:05   ` Dan Williams
  2009-05-22 14:40 ` [PATCH 3/4] rndis_wlan: split add_wpa_key from rndis_iw_set_encode_ext Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 4/4] rndis_wlan: do not try to restore wpa keys using add_wep_key() Jussi Kivilinna
  2 siblings, 1 reply; 7+ messages in thread
From: Jussi Kivilinna @ 2009-05-22 14:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville

Driver uses some unnamed bits to control encryption setup. Move these to
enumerations with proper names explaining their meaning.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---

 drivers/net/wireless/rndis_wlan.c |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index f9b0a35..8609d28 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -196,6 +196,18 @@ enum ndis_80211_priv_filter {
 	ndis_80211_priv_8021x_wep
 };
 
+enum ndis_80211_addkey_bits {
+	ndis_80211_addkey_8021x_auth = cpu_to_le32(1 << 28),
+	ndis_80211_addkey_set_init_recv_seq = cpu_to_le32(1 << 29),
+	ndis_80211_addkey_pairwise_key = cpu_to_le32(1 << 30),
+	ndis_80211_addkey_transmit_key = cpu_to_le32(1 << 31),
+};
+
+enum ndis_80211_addwep_bits {
+	ndis_80211_addwep_perclient_key = cpu_to_le32(1 << 30),
+	ndis_80211_addwep_transmit_key = cpu_to_le32(1 << 31),
+};
+
 struct ndis_80211_ssid {
 	__le32 length;
 	u8 essid[NDIS_802_11_LENGTH_SSID];
@@ -998,7 +1010,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index)
 	memcpy(&ndis_key.material, key, key_len);
 
 	if (index == priv->encr_tx_key_index) {
-		ndis_key.index |= cpu_to_le32(1 << 31);
+		ndis_key.index |= ndis_80211_addwep_transmit_key;
 		ret = set_encr_mode(usbdev, IW_AUTH_CIPHER_WEP104,
 						IW_AUTH_CIPHER_NONE);
 		if (ret)
@@ -1044,7 +1056,8 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN])
 		if (bssid) {
 			/* pairwise key */
 			if (memcmp(bssid, ffff_bssid, ETH_ALEN) != 0)
-				remove_key.index |= cpu_to_le32(1 << 30);
+				remove_key.index |=
+					ndis_80211_addkey_pairwise_key;
 			memcpy(remove_key.bssid, bssid,
 					sizeof(remove_key.bssid));
 		} else
@@ -1626,7 +1639,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
 
 	if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
 		memcpy(ndis_key.rsc, ext->rx_seq, 6);
-		ndis_key.index |= cpu_to_le32(1 << 29);
+		ndis_key.index |= ndis_80211_addkey_set_init_recv_seq;
 	}
 
 	addr = ext->addr.sa_data;
@@ -1638,12 +1651,12 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
 			get_bssid(usbdev, ndis_key.bssid);
 	} else {
 		/* pairwise key */
-		ndis_key.index |= cpu_to_le32(1 << 30);
+		ndis_key.index |= ndis_80211_addkey_pairwise_key;
 		memcpy(ndis_key.bssid, addr, ETH_ALEN);
 	}
 
 	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
-		ndis_key.index |= cpu_to_le32(1 << 31);
+		ndis_key.index |= ndis_80211_addkey_transmit_key;
 
 	if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) {
 		/* wpa_supplicant gives us the Michael MIC RX/TX keys in


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] rndis_wlan: split add_wpa_key from rndis_iw_set_encode_ext
  2009-05-22 14:40 [PATCH 1/4] rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 2/4] rndis_wlan: explain bits used in key setup code Jussi Kivilinna
@ 2009-05-22 14:40 ` Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 4/4] rndis_wlan: do not try to restore wpa keys using add_wep_key() Jussi Kivilinna
  2 siblings, 0 replies; 7+ messages in thread
From: Jussi Kivilinna @ 2009-05-22 14:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville

Split add_wpa_key() from rndis_iw_set_encode_ext so that conversion to cfg80211
would be easier later on.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---

 drivers/net/wireless/rndis_wlan.c |  129 ++++++++++++++++++++++---------------
 1 files changed, 76 insertions(+), 53 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 8609d28..16427a6 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -1033,6 +1033,73 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index)
 }
 
 
+static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len,
+			int index, const struct sockaddr *addr,
+			const u8 *rx_seq, int alg, int flags)
+{
+	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
+	struct ndis_80211_key ndis_key;
+	int ret;
+
+	if (index < 0 || index >= 4)
+		return -EINVAL;
+	if (key_len > sizeof(ndis_key.material) || key_len < 0)
+		return -EINVAL;
+	if ((flags & ndis_80211_addkey_set_init_recv_seq) && !rx_seq)
+		return -EINVAL;
+	if ((flags & ndis_80211_addkey_pairwise_key) && !addr)
+		return -EINVAL;
+
+	devdbg(usbdev, "add_wpa_key(%i): flags:%i%i%i", index,
+			!!(flags & ndis_80211_addkey_transmit_key),
+			!!(flags & ndis_80211_addkey_pairwise_key),
+			!!(flags & ndis_80211_addkey_set_init_recv_seq));
+
+	memset(&ndis_key, 0, sizeof(ndis_key));
+
+	ndis_key.size = cpu_to_le32(sizeof(ndis_key) -
+				sizeof(ndis_key.material) + key_len);
+	ndis_key.length = cpu_to_le32(key_len);
+	ndis_key.index = cpu_to_le32(index) | flags;
+
+	if (alg == IW_ENCODE_ALG_TKIP && key_len == 32) {
+		/* wpa_supplicant gives us the Michael MIC RX/TX keys in
+		 * different order than NDIS spec, so swap the order here. */
+		memcpy(ndis_key.material, key, 16);
+		memcpy(ndis_key.material + 16, key + 24, 8);
+		memcpy(ndis_key.material + 24, key + 16, 8);
+	} else
+		memcpy(ndis_key.material, key, key_len);
+
+	if (flags & ndis_80211_addkey_set_init_recv_seq)
+		memcpy(ndis_key.rsc, rx_seq, 6);
+
+	if (flags & ndis_80211_addkey_pairwise_key) {
+		/* pairwise key */
+		memcpy(ndis_key.bssid, addr->sa_data, ETH_ALEN);
+	} else {
+		/* group key */
+		if (priv->infra_mode == ndis_80211_infra_adhoc)
+			memset(ndis_key.bssid, 0xff, ETH_ALEN);
+		else
+			get_bssid(usbdev, ndis_key.bssid);
+	}
+
+	ret = rndis_set_oid(usbdev, OID_802_11_ADD_KEY, &ndis_key,
+					le32_to_cpu(ndis_key.size));
+	devdbg(usbdev, "add_wpa_key: OID_802_11_ADD_KEY -> %08X", ret);
+	if (ret != 0)
+		return ret;
+
+	priv->encr_key_len[index] = key_len;
+	memcpy(&priv->encr_keys[index], ndis_key.material, key_len);
+	if (flags & ndis_80211_addkey_transmit_key)
+		priv->encr_tx_key_index = index;
+
+	return 0;
+}
+
+
 /* remove_key is for both wep and wpa */
 static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN])
 {
@@ -1602,9 +1669,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
 	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
 	struct usbnet *usbdev = netdev_priv(dev);
 	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
-	struct ndis_80211_key ndis_key;
-	int keyidx, ret;
-	u8 *addr;
+	int keyidx, flags;
 
 	keyidx = wrqu->encoding.flags & IW_ENCODE_INDEX;
 
@@ -1627,58 +1692,16 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
 	    ext->alg == IW_ENCODE_ALG_NONE || ext->key_len == 0)
 		return remove_key(usbdev, keyidx, NULL);
 
-	if (ext->key_len > sizeof(ndis_key.material))
-		return -1;
-
-	memset(&ndis_key, 0, sizeof(ndis_key));
-
-	ndis_key.size = cpu_to_le32(sizeof(ndis_key) -
-				sizeof(ndis_key.material) + ext->key_len);
-	ndis_key.length = cpu_to_le32(ext->key_len);
-	ndis_key.index = cpu_to_le32(keyidx);
-
-	if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
-		memcpy(ndis_key.rsc, ext->rx_seq, 6);
-		ndis_key.index |= ndis_80211_addkey_set_init_recv_seq;
-	}
-
-	addr = ext->addr.sa_data;
-	if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) {
-		/* group key */
-		if (priv->infra_mode == ndis_80211_infra_adhoc)
-			memset(ndis_key.bssid, 0xff, ETH_ALEN);
-		else
-			get_bssid(usbdev, ndis_key.bssid);
-	} else {
-		/* pairwise key */
-		ndis_key.index |= ndis_80211_addkey_pairwise_key;
-		memcpy(ndis_key.bssid, addr, ETH_ALEN);
-	}
-
+	flags = 0;
+	if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID)
+		flags |= ndis_80211_addkey_set_init_recv_seq;
+	if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY))
+		flags |= ndis_80211_addkey_pairwise_key;
 	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
-		ndis_key.index |= ndis_80211_addkey_transmit_key;
-
-	if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) {
-		/* wpa_supplicant gives us the Michael MIC RX/TX keys in
-		 * different order than NDIS spec, so swap the order here. */
-		memcpy(ndis_key.material, ext->key, 16);
-		memcpy(ndis_key.material + 16, ext->key + 24, 8);
-		memcpy(ndis_key.material + 24, ext->key + 16, 8);
-	} else
-		memcpy(ndis_key.material, ext->key, ext->key_len);
+		flags |= ndis_80211_addkey_transmit_key;
 
-	ret = rndis_set_oid(usbdev, OID_802_11_ADD_KEY, &ndis_key,
-					le32_to_cpu(ndis_key.size));
-	devdbg(usbdev, "SIOCSIWENCODEEXT: OID_802_11_ADD_KEY -> %08X", ret);
-	if (ret != 0)
-		return ret;
-
-	priv->encr_key_len[keyidx] = ext->key_len;
-	memcpy(&priv->encr_keys[keyidx], ndis_key.material, ext->key_len);
-	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
-		priv->encr_tx_key_index = keyidx;
-
-	return 0;
+	return add_wpa_key(usbdev, ext->key, ext->key_len, keyidx, &ext->addr,
+				ext->rx_seq, ext->alg, flags);
 }
 
 


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] rndis_wlan: do not try to restore wpa keys using add_wep_key()
  2009-05-22 14:40 [PATCH 1/4] rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 2/4] rndis_wlan: explain bits used in key setup code Jussi Kivilinna
  2009-05-22 14:40 ` [PATCH 3/4] rndis_wlan: split add_wpa_key from rndis_iw_set_encode_ext Jussi Kivilinna
@ 2009-05-22 14:40 ` Jussi Kivilinna
  2 siblings, 0 replies; 7+ messages in thread
From: Jussi Kivilinna @ 2009-05-22 14:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville

set_infra_mode() tried to restore wpa keys using add_wep_key(). This never
worked so prevent driver from trying.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---

 drivers/net/wireless/rndis_wlan.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 16427a6..2465e62 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -405,6 +405,7 @@ struct rndis_wext_private {
 	int  encr_tx_key_index;
 	char encr_keys[4][32];
 	int  encr_key_len[4];
+	char encr_key_wpa[4];
 	int  wpa_version;
 	int  wpa_keymgmt;
 	int  wpa_authalg;
@@ -956,7 +957,7 @@ static int set_infra_mode(struct usbnet *usbdev, int mode)
 	if (priv->wpa_keymgmt == 0 ||
 		priv->wpa_keymgmt == IW_AUTH_KEY_MGMT_802_1X) {
 		for (i = 0; i < 4; i++) {
-			if (priv->encr_key_len[i] > 0)
+			if (priv->encr_key_len[i] > 0 && !priv->encr_key_wpa[i])
 				add_wep_key(usbdev, priv->encr_keys[i],
 						priv->encr_key_len[i], i);
 		}
@@ -1027,6 +1028,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index)
 	}
 
 	priv->encr_key_len[index] = key_len;
+	priv->encr_key_wpa[index] = 0;
 	memcpy(&priv->encr_keys[index], key, key_len);
 
 	return 0;
@@ -1092,7 +1094,8 @@ static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len,
 		return ret;
 
 	priv->encr_key_len[index] = key_len;
-	memcpy(&priv->encr_keys[index], ndis_key.material, key_len);
+	priv->encr_key_wpa[index] = 1;
+
 	if (flags & ndis_80211_addkey_transmit_key)
 		priv->encr_tx_key_index = index;
 
@@ -1112,6 +1115,7 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN])
 		return 0;
 
 	priv->encr_key_len[index] = 0;
+	priv->encr_key_wpa[index] = 0;
 	memset(&priv->encr_keys[index], 0, sizeof(priv->encr_keys[index]));
 
 	if (priv->wpa_cipher_pair == IW_AUTH_CIPHER_TKIP ||


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] rndis_wlan: explain bits used in key setup code.
  2009-05-22 14:40 ` [PATCH 2/4] rndis_wlan: explain bits used in key setup code Jussi Kivilinna
@ 2009-05-22 15:05   ` Dan Williams
  2009-05-23  6:56     ` Jussi Kivilinna
  0 siblings, 1 reply; 7+ messages in thread
From: Dan Williams @ 2009-05-22 15:05 UTC (permalink / raw)
  To: Jussi Kivilinna; +Cc: linux-wireless, linville

On Fri, 2009-05-22 at 17:40 +0300, Jussi Kivilinna wrote:
> Driver uses some unnamed bits to control encryption setup. Move these to
> enumerations with proper names explaining their meaning.
> 
> Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
> ---
> 
>  drivers/net/wireless/rndis_wlan.c |   23 ++++++++++++++++++-----
>  1 files changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
> index f9b0a35..8609d28 100644
> --- a/drivers/net/wireless/rndis_wlan.c
> +++ b/drivers/net/wireless/rndis_wlan.c
> @@ -196,6 +196,18 @@ enum ndis_80211_priv_filter {
>  	ndis_80211_priv_8021x_wep
>  };
>  
> +enum ndis_80211_addkey_bits {
> +	ndis_80211_addkey_8021x_auth = cpu_to_le32(1 << 28),
> +	ndis_80211_addkey_set_init_recv_seq = cpu_to_le32(1 << 29),
> +	ndis_80211_addkey_pairwise_key = cpu_to_le32(1 << 30),
> +	ndis_80211_addkey_transmit_key = cpu_to_le32(1 << 31),
> +};

Enums and defines are usually capitalized in Linux, ie
NDIS_80211_ADDKEY_8021X_AUTH, so that they can be separated from
non-constant stuff and from function names.  Makes the code more
readable.  Any chance you'd mind doing that in this patch since you're
touching these bits?

Dan

> +enum ndis_80211_addwep_bits {
> +	ndis_80211_addwep_perclient_key = cpu_to_le32(1 << 30),
> +	ndis_80211_addwep_transmit_key = cpu_to_le32(1 << 31),
> +};
> +
>  struct ndis_80211_ssid {
>  	__le32 length;
>  	u8 essid[NDIS_802_11_LENGTH_SSID];
> @@ -998,7 +1010,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index)
>  	memcpy(&ndis_key.material, key, key_len);
>  
>  	if (index == priv->encr_tx_key_index) {
> -		ndis_key.index |= cpu_to_le32(1 << 31);
> +		ndis_key.index |= ndis_80211_addwep_transmit_key;
>  		ret = set_encr_mode(usbdev, IW_AUTH_CIPHER_WEP104,
>  						IW_AUTH_CIPHER_NONE);
>  		if (ret)
> @@ -1044,7 +1056,8 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN])
>  		if (bssid) {
>  			/* pairwise key */
>  			if (memcmp(bssid, ffff_bssid, ETH_ALEN) != 0)
> -				remove_key.index |= cpu_to_le32(1 << 30);
> +				remove_key.index |=
> +					ndis_80211_addkey_pairwise_key;
>  			memcpy(remove_key.bssid, bssid,
>  					sizeof(remove_key.bssid));
>  		} else
> @@ -1626,7 +1639,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
>  
>  	if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
>  		memcpy(ndis_key.rsc, ext->rx_seq, 6);
> -		ndis_key.index |= cpu_to_le32(1 << 29);
> +		ndis_key.index |= ndis_80211_addkey_set_init_recv_seq;
>  	}
>  
>  	addr = ext->addr.sa_data;
> @@ -1638,12 +1651,12 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
>  			get_bssid(usbdev, ndis_key.bssid);
>  	} else {
>  		/* pairwise key */
> -		ndis_key.index |= cpu_to_le32(1 << 30);
> +		ndis_key.index |= ndis_80211_addkey_pairwise_key;
>  		memcpy(ndis_key.bssid, addr, ETH_ALEN);
>  	}
>  
>  	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
> -		ndis_key.index |= cpu_to_le32(1 << 31);
> +		ndis_key.index |= ndis_80211_addkey_transmit_key;
>  
>  	if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) {
>  		/* wpa_supplicant gives us the Michael MIC RX/TX keys in
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] rndis_wlan: explain bits used in key setup code.
  2009-05-22 15:05   ` Dan Williams
@ 2009-05-23  6:56     ` Jussi Kivilinna
  2009-05-24 13:18       ` Dan Williams
  0 siblings, 1 reply; 7+ messages in thread
From: Jussi Kivilinna @ 2009-05-23  6:56 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-wireless, linville

Quoting "Dan Williams" <dcbw@redhat.com>:

> On Fri, 2009-05-22 at 17:40 +0300, Jussi Kivilinna wrote:
>> Driver uses some unnamed bits to control encryption setup. Move these to
>> enumerations with proper names explaining their meaning.
>>
>> Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
>> ---
>>
>>  drivers/net/wireless/rndis_wlan.c |   23 ++++++++++++++++++-----
>>  1 files changed, 18 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/wireless/rndis_wlan.c  
>> b/drivers/net/wireless/rndis_wlan.c
>> index f9b0a35..8609d28 100644
>> --- a/drivers/net/wireless/rndis_wlan.c
>> +++ b/drivers/net/wireless/rndis_wlan.c
>> @@ -196,6 +196,18 @@ enum ndis_80211_priv_filter {
>>  	ndis_80211_priv_8021x_wep
>>  };
>>
>> +enum ndis_80211_addkey_bits {
>> +	ndis_80211_addkey_8021x_auth = cpu_to_le32(1 << 28),
>> +	ndis_80211_addkey_set_init_recv_seq = cpu_to_le32(1 << 29),
>> +	ndis_80211_addkey_pairwise_key = cpu_to_le32(1 << 30),
>> +	ndis_80211_addkey_transmit_key = cpu_to_le32(1 << 31),
>> +};
>
> Enums and defines are usually capitalized in Linux, ie
> NDIS_80211_ADDKEY_8021X_AUTH, so that they can be separated from
> non-constant stuff and from function names.  Makes the code more
> readable.  Any chance you'd mind doing that in this patch since you're
> touching these bits?
>
> Dan

All the ndis_80211_* enums in rndis_wlan.c are lower case now, so I'd  
keep it consistent here and change all the enums upper case in  
separate patch.

-Jussi


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] rndis_wlan: explain bits used in key setup code.
  2009-05-23  6:56     ` Jussi Kivilinna
@ 2009-05-24 13:18       ` Dan Williams
  0 siblings, 0 replies; 7+ messages in thread
From: Dan Williams @ 2009-05-24 13:18 UTC (permalink / raw)
  To: Jussi Kivilinna; +Cc: linux-wireless, linville

On Sat, 2009-05-23 at 09:56 +0300, Jussi Kivilinna wrote:
> Quoting "Dan Williams" <dcbw@redhat.com>:
> 
> > On Fri, 2009-05-22 at 17:40 +0300, Jussi Kivilinna wrote:
> >> Driver uses some unnamed bits to control encryption setup. Move these to
> >> enumerations with proper names explaining their meaning.
> >>
> >> Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
> >> ---
> >>
> >>  drivers/net/wireless/rndis_wlan.c |   23 ++++++++++++++++++-----
> >>  1 files changed, 18 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/net/wireless/rndis_wlan.c  
> >> b/drivers/net/wireless/rndis_wlan.c
> >> index f9b0a35..8609d28 100644
> >> --- a/drivers/net/wireless/rndis_wlan.c
> >> +++ b/drivers/net/wireless/rndis_wlan.c
> >> @@ -196,6 +196,18 @@ enum ndis_80211_priv_filter {
> >>  	ndis_80211_priv_8021x_wep
> >>  };
> >>
> >> +enum ndis_80211_addkey_bits {
> >> +	ndis_80211_addkey_8021x_auth = cpu_to_le32(1 << 28),
> >> +	ndis_80211_addkey_set_init_recv_seq = cpu_to_le32(1 << 29),
> >> +	ndis_80211_addkey_pairwise_key = cpu_to_le32(1 << 30),
> >> +	ndis_80211_addkey_transmit_key = cpu_to_le32(1 << 31),
> >> +};
> >
> > Enums and defines are usually capitalized in Linux, ie
> > NDIS_80211_ADDKEY_8021X_AUTH, so that they can be separated from
> > non-constant stuff and from function names.  Makes the code more
> > readable.  Any chance you'd mind doing that in this patch since you're
> > touching these bits?
> >
> > Dan
> 
> All the ndis_80211_* enums in rndis_wlan.c are lower case now, so I'd  
> keep it consistent here and change all the enums upper case in  
> separate patch.

Ok, sounds fine.

Dan



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-05-24 13:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-22 14:40 [PATCH 1/4] rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code Jussi Kivilinna
2009-05-22 14:40 ` [PATCH 2/4] rndis_wlan: explain bits used in key setup code Jussi Kivilinna
2009-05-22 15:05   ` Dan Williams
2009-05-23  6:56     ` Jussi Kivilinna
2009-05-24 13:18       ` Dan Williams
2009-05-22 14:40 ` [PATCH 3/4] rndis_wlan: split add_wpa_key from rndis_iw_set_encode_ext Jussi Kivilinna
2009-05-22 14:40 ` [PATCH 4/4] rndis_wlan: do not try to restore wpa keys using add_wep_key() Jussi Kivilinna

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).