* Re: [PATCH] RFC: ath: Fix WEP hardware encryption
[not found] ` <201101221130.25322.br1@einfach.org>
@ 2011-01-24 11:21 ` Vasanthakumar Thiagarajan
0 siblings, 0 replies; only message in thread
From: Vasanthakumar Thiagarajan @ 2011-01-24 11:21 UTC (permalink / raw)
To: Bruno Randolf
Cc: Vasanth Thiagarajan, ath5k-devel@lists.ath5k.org, nbd@openwrt.org,
Sujith Manoharan, Luis Rodriguez, linux-wireless
Adding linux-wireless in CC
On Sat, Jan 22, 2011 at 08:00:25AM +0530, Bruno Randolf wrote:
> On Saturday 22 January 2011 00:10:23 Vasanthakumar Thiagarajan wrote:
> > On Fri, Jan 21, 2011 at 03:46:08PM +0530, Bruno Randolf wrote:
> > > I need this to enable HW encryption for WEP.
> > > Otherwise we fall back to software decryption - i only checked the
> > > decryption case.
> >
> > Encryption/Decryption is done in hw by default. In which case are you
> > seeing it done in sw?.
>
> Sorry i was not very verbose in my description yesterday.
>
> I'm seeing the problem when i have an AP configured with WEP.
>
> The reason is that the index returned by the "reserve_keycache_entry" function
> (sorry i dont have the code here right now) is >= 4 (hw_key_index) while the
> key index in the packet header is 0-3. This is ok for transmit but received
> packets are not decrypted and therefore mac80211 has to decrypt it in SW -
> this can be easily seen by adding some debug prints in mac80211/wep.c. I have
> noticed it by watching the system CPU load under high traffic.
>
> bruno
>
> > > Any comments?
> > >
> > > bruno
> > > ---
> > >
> > > drivers/net/wireless/ath/key.c | 14 +++++++++++---
> > > 1 files changed, 11 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/net/wireless/ath/key.c
> > > b/drivers/net/wireless/ath/key.c index 5d465e5..5748dae 100644
> > > --- a/drivers/net/wireless/ath/key.c
> > > +++ b/drivers/net/wireless/ath/key.c
> > > @@ -465,6 +465,16 @@ int ath_key_config(struct ath_common *common,
> > >
> > > hk.kv_len = key->keylen;
> > > memcpy(hk.kv_val, key->key, key->keylen);
> > >
> > > + /* set WEP keys directly to index */
> > > + if ((key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
> > > + key->cipher == WLAN_CIPHER_SUITE_WEP104) && key->keyidx < 4) {
> > > + ret = ath_hw_set_keycache_entry(common, key->keyidx, &hk,
> NULL);
> > > + if (!ret)
> > > + return -EIO;
> > > + set_bit(key->keyidx, common->keymap);
> > > + return key->keyidx;
> > > + }
> > > +
> > >
> > > if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) {
> > >
> > > switch (vif->type) {
> > >
> > > case NL80211_IFTYPE_AP:
> > > @@ -541,10 +551,8 @@ EXPORT_SYMBOL(ath_key_config);
> > >
> > > void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf
> > > *key) {
> > >
> > > ath_hw_keyreset(common, key->hw_key_idx);
> > >
> > > - if (key->hw_key_idx < IEEE80211_WEP_NKID)
> > > - return;
> > > -
> > >
> > > clear_bit(key->hw_key_idx, common->keymap);
> > >
> > > +
> > >
> > > if (key->cipher != WLAN_CIPHER_SUITE_TKIP)
> > >
> > > return;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-01-24 11:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20110121101608.22697.88960.stgit@localhost6.localdomain6>
[not found] ` <20110121151023.GE20058@vasanth-laptop>
[not found] ` <201101221130.25322.br1@einfach.org>
2011-01-24 11:21 ` [PATCH] RFC: ath: Fix WEP hardware encryption Vasanthakumar Thiagarajan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.