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