summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-08-28 17:01:54 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 16:48:52 -0700
commitf658eb90d065c2d76ab3f3eb676ebf53462e323b (patch)
treeff6cbdfc690114390c073fe94c5a28e27046ee78
parent8f37171a6243a8370211a1e86d58be683ccf01f0 (diff)
downloadlinux-f658eb90d065c2d76ab3f3eb676ebf53462e323b.tar.bz2
[MAC80211] key handling: remove default_wep_only
Remove the default_wep_only stuff, this wasn't really done well and no current driver actually cares. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Michael Wu <flamingice@sourmilk.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/mac80211.h3
-rw-r--r--net/mac80211/ieee80211_i.h5
-rw-r--r--net/mac80211/ieee80211_iface.c5
-rw-r--r--net/mac80211/ieee80211_ioctl.c97
-rw-r--r--net/mac80211/sta_info.c6
5 files changed, 6 insertions, 110 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 056c225173d8..3437fa16eea5 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -632,8 +632,7 @@ struct ieee80211_ops {
* selected by the low-level driver.
*/
int (*set_key)(struct ieee80211_hw *hw, set_key_cmd cmd,
- u8 *address, struct ieee80211_key_conf *key,
- int static_wep_only);
+ u8 *address, struct ieee80211_key_conf *key);
/*
* Set TX key index for default/broadcast keys. This is needed in cases
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index cc87e9d988f8..7b5cc146c81b 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -551,9 +551,6 @@ struct ieee80211_local {
#endif /* CONFIG_MAC80211_DEBUG_COUNTERS */
- int default_wep_only; /* only default WEP keys are used with this
- * interface; this is used to decide when hwaccel
- * can be used with default keys */
int total_ps_buffered; /* total number of all buffered unicast and
* multicast packets for power saving stations
*/
@@ -733,8 +730,6 @@ void ieee80211_key_threshold_notify(struct net_device *dev,
/* ieee80211_ioctl.c */
extern const struct iw_handler_def ieee80211_iw_handler_def;
-void ieee80211_update_default_wep_only(struct ieee80211_local *local);
-
/* Least common multiple of the used rates (in 100 kbps). This is used to
* calculate rate_inv values for each rate so that only integers are needed. */
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c
index 3e59afa23e4e..8bb85f194385 100644
--- a/net/mac80211/ieee80211_iface.c
+++ b/net/mac80211/ieee80211_iface.c
@@ -88,8 +88,6 @@ int ieee80211_if_add(struct net_device *dev, const char *name,
*new_dev = ndev;
write_unlock_bh(&local->sub_if_lock);
- ieee80211_update_default_wep_only(local);
-
return 0;
fail:
@@ -154,7 +152,6 @@ void ieee80211_if_del_mgmt(struct ieee80211_local *local)
void ieee80211_if_set_type(struct net_device *dev, int type)
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
int oldtype = sdata->type;
dev->hard_start_xmit = ieee80211_subif_start_xmit;
@@ -205,7 +202,6 @@ void ieee80211_if_set_type(struct net_device *dev, int type)
dev->name, __FUNCTION__, type);
}
ieee80211_debugfs_change_if_type(sdata, oldtype);
- ieee80211_update_default_wep_only(local);
}
/* Must be called with rtnl lock held. */
@@ -336,7 +332,6 @@ int ieee80211_if_remove(struct net_device *dev, const char *name, int id)
list_del(&sdata->list);
write_unlock_bh(&local->sub_if_lock);
__ieee80211_if_del(local, sdata);
- ieee80211_update_default_wep_only(local);
return 0;
}
}
diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c
index 380670c7a0ca..dc05bc66fbb8 100644
--- a/net/mac80211/ieee80211_ioctl.c
+++ b/net/mac80211/ieee80211_ioctl.c
@@ -40,7 +40,7 @@ static void ieee80211_set_hw_encryption(struct net_device *dev,
if (key && local->ops->set_key) {
if (local->ops->set_key(local_to_hw(local), SET_KEY, addr,
- &key->conf, local->default_wep_only)) {
+ &key->conf)) {
key->conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
key->conf.hw_key_idx = HW_KEY_IDX_INVALID;
}
@@ -111,7 +111,7 @@ static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr,
* possibility of conflict with default keys. This can maybe later be
* optimized by using non-default keys (at least with Atheros ar521x).
*/
- if (!sta && alg == ALG_WEP && !local->default_wep_only &&
+ if (!sta && alg == ALG_WEP &&
sdata->type != IEEE80211_IF_TYPE_IBSS &&
sdata->type != IEEE80211_IF_TYPE_AP) {
try_hwaccel = 0;
@@ -148,8 +148,7 @@ static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr,
key->conf.hw_key_idx != HW_KEY_IDX_INVALID &&
local->ops->set_key &&
local->ops->set_key(local_to_hw(local), DISABLE_KEY,
- sta_addr, &key->conf,
- local->default_wep_only)) {
+ sta_addr, &key->conf)) {
printk(KERN_DEBUG "%s: set_encrypt - low-level disable"
" failed\n", dev->name);
ret = -EINVAL;
@@ -924,96 +923,6 @@ static int ieee80211_ioctl_giwretry(struct net_device *dev,
return 0;
}
-static void ieee80211_key_enable_hwaccel(struct ieee80211_local *local,
- struct ieee80211_key *key)
-{
- u8 addr[ETH_ALEN];
-
- if (!key || key->conf.alg != ALG_WEP ||
- !(key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) ||
- (local->hw.flags & IEEE80211_HW_DEVICE_HIDES_WEP))
- return;
-
- memset(addr, 0xff, ETH_ALEN);
-
- if (local->ops->set_key)
- local->ops->set_key(local_to_hw(local),
- SET_KEY, addr, &key->conf,
- local->default_wep_only);
-}
-
-
-static void ieee80211_key_disable_hwaccel(struct ieee80211_local *local,
- struct ieee80211_key *key)
-{
- u8 addr[ETH_ALEN];
-
- if (!key || key->conf.alg != ALG_WEP ||
- (key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) ||
- (local->hw.flags & IEEE80211_HW_DEVICE_HIDES_WEP))
- return;
-
- memset(addr, 0xff, ETH_ALEN);
- if (local->ops->set_key)
- local->ops->set_key(local_to_hw(local), DISABLE_KEY,
- addr, &key->conf,
- local->default_wep_only);
- key->conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
-}
-
-
-static int ieee80211_ioctl_default_wep_only(struct ieee80211_local *local,
- int value)
-{
- int i;
- struct ieee80211_sub_if_data *sdata;
-
- local->default_wep_only = value;
- read_lock(&local->sub_if_lock);
- list_for_each_entry(sdata, &local->sub_if_list, list)
- for (i = 0; i < NUM_DEFAULT_KEYS; i++)
- if (value)
- ieee80211_key_enable_hwaccel(local,
- sdata->keys[i]);
- else
- ieee80211_key_disable_hwaccel(local,
- sdata->keys[i]);
- read_unlock(&local->sub_if_lock);
-
- return 0;
-}
-
-
-void ieee80211_update_default_wep_only(struct ieee80211_local *local)
-{
- int i = 0;
- struct ieee80211_sub_if_data *sdata;
-
- read_lock(&local->sub_if_lock);
- list_for_each_entry(sdata, &local->sub_if_list, list) {
-
- if (sdata->dev == local->mdev)
- continue;
-
- /* If there is an AP interface then depend on userspace to
- set default_wep_only correctly. */
- if (sdata->type == IEEE80211_IF_TYPE_AP) {
- read_unlock(&local->sub_if_lock);
- return;
- }
-
- i++;
- }
-
- read_unlock(&local->sub_if_lock);
-
- if (i <= 1)
- ieee80211_ioctl_default_wep_only(local, 1);
- else
- ieee80211_ioctl_default_wep_only(local, 0);
-}
-
-
static int ieee80211_ioctl_prism2_param(struct net_device *dev,
struct iw_request_info *info,
void *wrqu, char *extra)
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 7e10c692c4ad..a1f766fcf966 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -230,8 +230,7 @@ void sta_info_free(struct sta_info *sta)
if (local->ops->set_key) {
local->ops->set_key(local_to_hw(local),
DISABLE_KEY, sta->addr,
- &sta->key->conf,
- local->default_wep_only);
+ &sta->key->conf);
}
} else if (sta->key_idx_compression != HW_KEY_IDX_INVALID) {
struct ieee80211_key_conf conf;
@@ -240,8 +239,7 @@ void sta_info_free(struct sta_info *sta)
conf.alg = ALG_NONE;
conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
local->ops->set_key(local_to_hw(local), DISABLE_KEY,
- sta->addr, &conf,
- local->default_wep_only);
+ sta->addr, &conf);
sta->key_idx_compression = HW_KEY_IDX_INVALID;
}