diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-08-28 17:01:55 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:48:52 -0400 |
commit | 3aefaa3294193c931b20a574f718efee6baf27d4 (patch) | |
tree | 11e488c4edf67d0c279ab0aaf54d182d77bc301d /net | |
parent | f658eb90d065c2d76ab3f3eb676ebf53462e323b (diff) |
[MAC80211]: remove fake set_key() call
Remove adding a fake key with a NONE key algorithm for each
associated STA. If we have hardware with such TX filtering
we should probably extend the sta_table_notification()
callback with the sta information instead; the fact that
it's treated as a key for some atheros hardware shouldn't
bother the stack.
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/debugfs_sta.c | 1 | ||||
-rw-r--r-- | net/mac80211/sta_info.c | 18 | ||||
-rw-r--r-- | net/mac80211/sta_info.h | 4 | ||||
-rw-r--r-- | net/mac80211/tx.c | 5 |
4 files changed, 1 insertions, 27 deletions
diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c index da34ea70276f..2daaa802bbd0 100644 --- a/net/mac80211/debugfs_sta.c +++ b/net/mac80211/debugfs_sta.c | |||
@@ -60,7 +60,6 @@ static const struct file_operations sta_ ##name## _ops = { \ | |||
60 | STA_OPS(name) | 60 | STA_OPS(name) |
61 | 61 | ||
62 | STA_FILE(aid, aid, D); | 62 | STA_FILE(aid, aid, D); |
63 | STA_FILE(key_idx_compression, key_idx_compression, D); | ||
64 | STA_FILE(dev, dev->name, S); | 63 | STA_FILE(dev, dev->name, S); |
65 | STA_FILE(vlan_id, vlan_id, D); | 64 | STA_FILE(vlan_id, vlan_id, D); |
66 | STA_FILE(rx_packets, rx_packets, LU); | 65 | STA_FILE(rx_packets, rx_packets, LU); |
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index a1f766fcf966..fba2d79e4d2b 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -165,7 +165,6 @@ struct sta_info * sta_info_add(struct ieee80211_local *local, | |||
165 | local->ops->sta_table_notification(local_to_hw(local), | 165 | local->ops->sta_table_notification(local_to_hw(local), |
166 | local->num_sta); | 166 | local->num_sta); |
167 | write_unlock_bh(&local->sta_lock); | 167 | write_unlock_bh(&local->sta_lock); |
168 | sta->key_idx_compression = HW_KEY_IDX_INVALID; | ||
169 | 168 | ||
170 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | 169 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
171 | printk(KERN_DEBUG "%s: Added STA " MAC_FMT "\n", | 170 | printk(KERN_DEBUG "%s: Added STA " MAC_FMT "\n", |
@@ -226,23 +225,6 @@ void sta_info_free(struct sta_info *sta) | |||
226 | dev_kfree_skb(skb); | 225 | dev_kfree_skb(skb); |
227 | } | 226 | } |
228 | 227 | ||
229 | if (sta->key) { | ||
230 | if (local->ops->set_key) { | ||
231 | local->ops->set_key(local_to_hw(local), | ||
232 | DISABLE_KEY, sta->addr, | ||
233 | &sta->key->conf); | ||
234 | } | ||
235 | } else if (sta->key_idx_compression != HW_KEY_IDX_INVALID) { | ||
236 | struct ieee80211_key_conf conf; | ||
237 | memset(&conf, 0, sizeof(conf)); | ||
238 | conf.hw_key_idx = sta->key_idx_compression; | ||
239 | conf.alg = ALG_NONE; | ||
240 | conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT; | ||
241 | local->ops->set_key(local_to_hw(local), DISABLE_KEY, | ||
242 | sta->addr, &conf); | ||
243 | sta->key_idx_compression = HW_KEY_IDX_INVALID; | ||
244 | } | ||
245 | |||
246 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | 228 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
247 | printk(KERN_DEBUG "%s: Removed STA " MAC_FMT "\n", | 229 | printk(KERN_DEBUG "%s: Removed STA " MAC_FMT "\n", |
248 | local->mdev->name, MAC_ARG(sta->addr)); | 230 | local->mdev->name, MAC_ARG(sta->addr)); |
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 4afa7df2a180..3b0fcb255717 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -90,10 +90,6 @@ struct sta_info { | |||
90 | int channel_use; | 90 | int channel_use; |
91 | int channel_use_raw; | 91 | int channel_use_raw; |
92 | 92 | ||
93 | int key_idx_compression; /* key table index for compression and TX | ||
94 | * filtering; used only if sta->key is not | ||
95 | * set */ | ||
96 | |||
97 | int assoc_ap; /* whether this is an AP that we are | 93 | int assoc_ap; /* whether this is an AP that we are |
98 | * associated with as a client */ | 94 | * associated with as a client */ |
99 | 95 | ||
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 684f928def93..d70140cbd66a 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -426,10 +426,7 @@ ieee80211_tx_h_ps_buf(struct ieee80211_txrx_data *tx) | |||
426 | static ieee80211_txrx_result | 426 | static ieee80211_txrx_result |
427 | ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx) | 427 | ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx) |
428 | { | 428 | { |
429 | if (tx->sta) | 429 | tx->u.tx.control->key_idx = HW_KEY_IDX_INVALID; |
430 | tx->u.tx.control->key_idx = tx->sta->key_idx_compression; | ||
431 | else | ||
432 | tx->u.tx.control->key_idx = HW_KEY_IDX_INVALID; | ||
433 | 430 | ||
434 | if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) | 431 | if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) |
435 | tx->key = NULL; | 432 | tx->key = NULL; |