From: Ivo van Doorn <ivdoorn@gmail.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
Chr <chunkeey@web.de>, Tomas Winkler <tomasw@gmail.com>,
"Luis R. Rodriguez" <mcgrof@gmail.com>,
Nick Kossifidis <mickflemm@gmail.com>,
Bob Copeland <me@bobcopeland.com>, Michael Buesch <mb@bu3sch.de>,
Sujith Manoharan <Sujith.Manoharan@atheros.com>,
Kalle Valo <kalle.valo@nokia.com>
Subject: Re: [RFT] mac80211: clean up set_key callback
Date: Mon, 8 Dec 2008 23:53:57 +0100 [thread overview]
Message-ID: <200812082353.58453.IvDoorn@gmail.com> (raw)
In-Reply-To: <1228757035.22164.94.camel@johannes.berg>
On Monday 08 December 2008, Johannes Berg wrote:
> The set_key callback now seems rather odd, passing a MAC address
> instead of a station struct, and a local address instead of a
> vif struct. Change that.
>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
ACK for the rt2x00 changes,
I'm especially happy with the ieee80211_find_sta() removal from rt2x00. :)
I'll see if I can test this in a few days,
One small change request though.
> --- everything.orig/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-12-08 17:48:03.000000000 +0100
> +++ everything/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-12-08 17:57:43.000000000 +0100
> @@ -483,15 +483,17 @@ EXPORT_SYMBOL_GPL(rt2x00mac_configure_fi
>
> #ifdef CONFIG_RT2X00_LIB_CRYPTO
> int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
> - const u8 *local_address, const u8 *address,
> + struct ieee80211_vif *vif, struct ieee80211_sta *sta,
> struct ieee80211_key_conf *key)
> {
> struct rt2x00_dev *rt2x00dev = hw->priv;
> - struct ieee80211_sta *sta;
> + struct rt2x00_intf *intf = vif_to_intf(vif);
> int (*set_key) (struct rt2x00_dev *rt2x00dev,
> struct rt2x00lib_crypto *crypto,
> struct ieee80211_key_conf *key);
> struct rt2x00lib_crypto crypto;
> + static const u8 bcast_addr[ETH_ALEN] =
> + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, };
>
> if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
> return 0;
> @@ -509,15 +511,14 @@ int rt2x00mac_set_key(struct ieee80211_h
> if (rt2x00dev->intf_sta_count)
> crypto.bssidx = 0;
> else
> - crypto.bssidx =
> - local_address[5] & (rt2x00dev->ops->max_ap_intf - 1);
> + crypto.bssidx = intf->mac[5] & (rt2x00dev->ops->max_ap_intf - 1);
>
> crypto.cipher = rt2x00crypto_key_to_cipher(key);
> if (crypto.cipher == CIPHER_NONE)
> return -EOPNOTSUPP;
>
> crypto.cmd = cmd;
> - crypto.address = address;
> + crypto.address = sta ? sta->addr : bcast_addr;
>
> if (crypto.cipher == CIPHER_TKIP) {
> if (key->keylen > NL80211_TKIP_DATA_OFFSET_ENCR_KEY)
> @@ -542,11 +543,8 @@ int rt2x00mac_set_key(struct ieee80211_h
> * Some drivers need this information when updating the
> * hardware key (either adding or removing).
> */
> - rcu_read_lock();
> - sta = ieee80211_find_sta(hw, address);
> if (sta)
> crypto.aid = sta->aid;
> - rcu_read_unlock();
Please move this bit up a bit to merge it with the address if-statement:
if (sta) {
crypto.address = sta->addr;
crypto.aid = sta->aid
} else
crypto.address = bcast_addr;
that would group the sta dependencies together so we only need to check
if sta is valid once.
Thanks!
Ivo
next prev parent reply other threads:[~2008-12-08 22:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-08 17:23 [RFT] mac80211: clean up set_key callback Johannes Berg
2008-12-08 20:11 ` Michael Buesch
2008-12-08 20:13 ` Johannes Berg
2008-12-08 22:53 ` Ivo van Doorn [this message]
2008-12-08 23:01 ` Johannes Berg
2008-12-09 1:01 ` Bob Copeland
2008-12-09 1:07 ` Johannes Berg
2008-12-09 10:23 ` Kalle Valo
2008-12-09 10:38 ` Samuel Ortiz
2008-12-09 12:36 ` Christian Lamparter
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=200812082353.58453.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=Sujith.Manoharan@atheros.com \
--cc=chunkeey@web.de \
--cc=johannes@sipsolutions.net \
--cc=kalle.valo@nokia.com \
--cc=linux-wireless@vger.kernel.org \
--cc=mb@bu3sch.de \
--cc=mcgrof@gmail.com \
--cc=me@bobcopeland.com \
--cc=mickflemm@gmail.com \
--cc=tomasw@gmail.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).