From: Johannes Berg <johannes@sipsolutions.net>
To: John Linville <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Subject: [PATCH 15/15] mac80211: make use of the new cfg80211 key threshold notification
Date: Fri, 24 Aug 2007 14:27:20 +0200 [thread overview]
Message-ID: <20070824122913.231672000@sipsolutions.net> (raw)
In-Reply-To: 20070824122705.549190000@sipsolutions.net
This makes mac80211 use the cfg80211 facilities for key threshold
notification.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/mac80211/cfg.c | 1 +
net/mac80211/ieee80211_ioctl.c | 3 ++-
net/mac80211/ieee80211_key.h | 4 +++-
net/mac80211/key.c | 3 ++-
net/mac80211/rx.c | 10 ++++++++--
net/mac80211/tx.c | 17 ++++++++++++-----
6 files changed, 28 insertions(+), 10 deletions(-)
--- wireless-dev.orig/net/mac80211/ieee80211_key.h 2007-08-24 14:11:42.149417211 +0200
+++ wireless-dev/net/mac80211/ieee80211_key.h 2007-08-24 14:18:16.959417211 +0200
@@ -86,6 +86,8 @@ struct ieee80211_key {
/* number of times this key has been used */
int tx_rx_count;
+ /* threshold for notification */
+ u32 tx_rx_threshold;
#ifdef CONFIG_MAC80211_DEBUGFS
struct {
@@ -115,7 +117,7 @@ struct ieee80211_key {
struct ieee80211_key *ieee80211_key_alloc(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta,
ieee80211_key_alg alg,
- int idx,
+ int idx, u32 threshold,
size_t key_len,
const u8 *key_data);
void ieee80211_key_free(struct ieee80211_key *key);
--- wireless-dev.orig/net/mac80211/key.c 2007-08-24 14:13:37.299417211 +0200
+++ wireless-dev/net/mac80211/key.c 2007-08-24 14:18:16.959417211 +0200
@@ -124,7 +124,7 @@ void ieee80211_key_removed(struct ieee80
struct ieee80211_key *ieee80211_key_alloc(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta,
ieee80211_key_alg alg,
- int idx,
+ int idx, u32 threshold,
size_t key_len,
const u8 *key_data)
{
@@ -151,6 +151,7 @@ struct ieee80211_key *ieee80211_key_allo
key->local = sdata->local;
key->sdata = sdata;
key->sta = sta;
+ key->tx_rx_threshold = threshold;
if (alg == ALG_CCMP) {
/*
--- wireless-dev.orig/net/mac80211/cfg.c 2007-08-24 14:16:51.139417211 +0200
+++ wireless-dev/net/mac80211/cfg.c 2007-08-24 14:18:16.959417211 +0200
@@ -103,6 +103,7 @@ static int ieee80211_add_key(struct wiph
ret = 0;
if (!ieee80211_key_alloc(sdata, sta, alg, params->key_idx,
+ params->threshold,
params->key_len, params->key))
ret = -ENOMEM;
--- wireless-dev.orig/net/mac80211/ieee80211_ioctl.c 2007-08-24 14:16:56.449417211 +0200
+++ wireless-dev/net/mac80211/ieee80211_ioctl.c 2007-08-24 14:18:16.969417211 +0200
@@ -431,7 +431,8 @@ static int ieee80211_set_encryption(stru
* set_key() callback becomes confused.
*/
ieee80211_key_free(key);
- key = ieee80211_key_alloc(sdata, sta, alg, idx, key_len, _key);
+ key = ieee80211_key_alloc(sdata, sta, alg, idx, 0,
+ key_len, _key);
if (!key) {
ret = -ENOMEM;
goto err_out;
--- wireless-dev.orig/net/mac80211/rx.c 2007-08-24 14:16:56.449417211 +0200
+++ wireless-dev/net/mac80211/rx.c 2007-08-24 14:18:16.969417211 +0200
@@ -322,6 +322,7 @@ ieee80211_rx_h_load_key(struct ieee80211
int keyidx;
int hdrlen;
int trying_wep = 0;
+ u8 *sta_mac = NULL;
/*
* Key selection 101
@@ -401,11 +402,16 @@ ieee80211_rx_h_load_key(struct ieee80211
trying_wep = 1;
goto find_by_index;
}
+ sta_mac = rx->sta->addr;
}
- if (rx->key && (rx->flags & IEEE80211_TXRXD_RXRA_MATCH)) {
+ if (rx->key) {
rx->key->tx_rx_count++;
- /* TODO: add threshold stuff again */
+ if (rx->key->tx_rx_threshold &&
+ rx->key->tx_rx_count > rx->key->tx_rx_threshold)
+ cfg80211_key_threshold_notify(rx->key->sdata->dev,
+ rx->key->conf.keyidx,
+ sta_mac);
}
return TXRX_CONTINUE;
--- wireless-dev.orig/net/mac80211/tx.c 2007-08-24 14:16:56.459417211 +0200
+++ wireless-dev/net/mac80211/tx.c 2007-08-24 14:18:16.989417211 +0200
@@ -426,11 +426,14 @@ ieee80211_tx_h_ps_buf(struct ieee80211_t
static ieee80211_txrx_result
ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx)
{
+ u8 *sta_mac = NULL;
+
if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT))
tx->key = NULL;
- else if (tx->sta && tx->sta->key)
+ else if (tx->sta && tx->sta->key) {
+ sta_mac = tx->sta->addr;
tx->key = tx->sta->key;
- else if (tx->sdata->default_key)
+ } else if (tx->sdata->default_key)
tx->key = tx->sdata->default_key;
else if (tx->sdata->drop_unencrypted &&
!(tx->sdata->eapol && ieee80211_is_eapol(tx->skb))) {
@@ -441,9 +444,13 @@ ieee80211_tx_h_select_key(struct ieee802
tx->u.tx.control->flags |= IEEE80211_TXCTL_DO_NOT_ENCRYPT;
}
- if (tx->key) {
- tx->key->tx_rx_count++;
- /* TODO: add threshold stuff again */
+ if (tx->key) {
+ tx->key->tx_rx_count++;
+ if (tx->key->tx_rx_threshold &&
+ tx->key->tx_rx_count > tx->key->tx_rx_threshold)
+ cfg80211_key_threshold_notify(tx->key->sdata->dev,
+ tx->key->conf.keyidx,
+ sta_mac);
}
return TXRX_CONTINUE;
--
next prev parent reply other threads:[~2007-08-24 12:31 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-24 12:27 [PATCH 00/15] more key handling updates Johannes Berg
2007-08-24 12:27 ` [PATCH 01/15] mac80211: improve key selection comment Johannes Berg
2007-08-24 12:27 ` [PATCH 02/15] mac80211: rework hardware crypto flags Johannes Berg
2007-08-24 12:27 ` [PATCH 03/15] mac80211: remove set_key_idx callback Johannes Berg
2007-08-24 12:27 ` [PATCH 04/15] mac80211: some more documentation Johannes Berg
2007-08-24 12:27 ` [PATCH 05/15] mac80211: remove HW_KEY_IDX_INVALID Johannes Berg
2007-08-24 17:14 ` Larry Finger
2007-08-24 21:21 ` Michael Buesch
2007-08-24 19:33 ` Larry Finger
2007-08-27 11:00 ` Johannes Berg
2007-08-27 15:10 ` Larry Finger
2007-08-28 8:41 ` Johannes Berg
2007-08-24 12:27 ` [PATCH 06/15] mac80211: remove TKIP mixing for hw accel again Johannes Berg
2007-08-24 21:17 ` Michael Buesch
2007-08-24 12:27 ` [PATCH 07/15] mac80211: ignore key index on pairwise key (WEP only) Johannes Berg
2007-08-24 12:27 ` [PATCH 08/15] cfg80211: clean up key add/remove interface Johannes Berg
2007-08-24 18:55 ` Larry Finger
2007-08-25 7:57 ` Johannes Berg
2007-08-27 11:02 ` Johannes Berg
2007-08-27 15:27 ` Larry Finger
2007-08-28 8:43 ` Johannes Berg
2007-08-24 12:27 ` [PATCH 09/15] mac80211: rename ieee80211_cfg.c to cfg.c Johannes Berg
2007-08-24 12:27 ` [PATCH 10/15] mac80211: support adding/removing keys via cfg80211 Johannes Berg
2007-08-24 12:27 ` [PATCH 11/15] cfg80211: add hook for changing default key index Johannes Berg
2007-08-24 12:27 ` [PATCH 12/15] mac80211: support changing default key index via cfg80211 Johannes Berg
2007-08-24 12:27 ` [PATCH 13/15] mac80211: remove key threshold stuff Johannes Berg
2007-08-24 12:27 ` [PATCH 14/15] cfg80211: add " Johannes Berg
2007-08-24 12:27 ` Johannes Berg [this message]
2007-08-24 12:46 ` [PATCH 00/15] more key handling updates Johannes Berg
2007-08-27 14:45 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070824122913.231672000@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).