2007-09-20 21:13:29

by Luis R. Rodriguez

[permalink] [raw]
Subject: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

I was not get getting DHCP replies back with ath5k on a AR5212. Turns
out out of all filter flags if I enable AR5K_RX_FILTER_PROM I get my
replies back. I've tested enabling AR5K_RX_FILTER_BCAST and
AR5K_RX_FILTER_MCAST but AR5K_RX_FILTER_PROM only does the trick. This
may fix this for other cards if you are not getting DHCP replies
please let us know. For now we can enable AR5K_RX_FILTER_PROM on STA
and Ad-hoc only for AR5212 until we sort out the filter flags
properly. This patch also takes into account new changes to mac80211
for ieee80211_ops's set_key().

Filter API changes to come soon.

In summary this patch has these changes:

* AR5212 now receives broadcasts (DHCP works now)
* ath5k_hw_set_key() was checking against key table size against
key->keyid -- this can only be 0, 1, 2 or 3. Check against key->keylen
and divide the table size by 8.
* return proper values for WEP setting as per mac80211 documenation

This patch applies to the ath5k branch of wireless-dev.

Changes to ath5k_base.c
Changes-licensed-under: BSD

Changes to ath5k_hw.c, ath5k_reg.h
Changes-licensed-under: ISC

Signed-off-by: Luis R. Rodriguez <[email protected]>

---

drivers/net/wireless/ath5k_base.c | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-

drivers/net/wireless/ath5k_hw.c | 12 +++++++++---
drivers/net/wireless/ath5k_reg.h | 12 ++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)


Attachments:
(No filename) (1.41 kB)
ath5k-fix-filter.diff (4.08 kB)
Download all attachments

2007-09-20 21:26:09

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

On 09/20/2007 11:24 PM, Luis R. Rodriguez wrote:
> On 9/20/07, Jiri Slaby <[email protected]> wrote:
> int ret = 0;
>> + switch(key->alg) {
>> + case ALG_WEP:
>> + break;
>> + case ALG_TKIP:
>> + case ALG_CCMP:
>> + return -EOPNOTSUPP;
>>
>> Some broken whitespace here :).
>
> You mean all the extra spaces on the left instead of Tabs? If so then
> ACK, attached v2.

Yes, nice.

--
Jiri Slaby ([email protected])
Faculty of Informatics, Masaryk University

2007-09-20 21:24:30

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

On 9/20/07, Jiri Slaby <[email protected]> wrote:
int ret = 0;
>
> + switch(key->alg) {
> + case ALG_WEP:
> + break;
> + case ALG_TKIP:
> + case ALG_CCMP:
> + return -EOPNOTSUPP;
>
> Some broken whitespace here :).

You mean all the extra spaces on the left instead of Tabs? If so then
ACK, attached v2.

Luis


Attachments:
(No filename) (373.00 B)
ath5k-fix-filter.diff (4.06 kB)
Download all attachments

2007-09-22 18:35:06

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

Forgot to mention...

Signed-off-by: Nick Kossifidis <[email protected]>
Changes-licensed-under: ISC

2007/9/22, Nick Kossifidis <[email protected]>:
> Ppl can someone plz port also these changes from madwifi svn ??? Sorry
> for not doing this myself i'm really out of time these days...
>
> http://madwifi.org/changeset/2704
> http://madwifi.org/changeset/2703
> http://madwifi.org/changeset/2701
> http://madwifi.org/changeset/2700
> http://madwifi.org/changeset/2698
>
> 2007/9/21, Jiri Slaby <[email protected]>:
> > On 09/20/2007 11:24 PM, Luis R. Rodriguez wrote:
> > > On 9/20/07, Jiri Slaby <[email protected]> wrote:
> > > int ret = 0;
> > >> + switch(key->alg) {
> > >> + case ALG_WEP:
> > >> + break;
> > >> + case ALG_TKIP:
> > >> + case ALG_CCMP:
> > >> + return -EOPNOTSUPP;
> > >>
> > >> Some broken whitespace here :).
> > >
> > > You mean all the extra spaces on the left instead of Tabs? If so then
> > > ACK, attached v2.
> >
> > Yes, nice.
> >
> > --
> > Jiri Slaby ([email protected])
> > Faculty of Informatics, Masaryk University
> >
>
>
> --
> GPG ID: 0xD21DB2DB
> As you read this post global entropy rises. Have Fun ;-)
> Nick
>


--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2007-09-20 21:18:38

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

On 09/20/2007 11:13 PM, Luis R. Rodriguez wrote:
> I was not get getting DHCP replies back with ath5k on a AR5212. Turns
> out out of all filter flags if I enable AR5K_RX_FILTER_PROM I get my
> replies back. I've tested enabling AR5K_RX_FILTER_BCAST and
> AR5K_RX_FILTER_MCAST but AR5K_RX_FILTER_PROM only does the trick. This
> may fix this for other cards if you are not getting DHCP replies
> please let us know. For now we can enable AR5K_RX_FILTER_PROM on STA
> and Ad-hoc only for AR5212 until we sort out the filter flags
> properly. This patch also takes into account new changes to mac80211
> for ieee80211_ops's set_key().
>
> Filter API changes to come soon.
>
> In summary this patch has these changes:
>
> * AR5212 now receives broadcasts (DHCP works now)
> * ath5k_hw_set_key() was checking against key table size against
> key->keyid -- this can only be 0, 1, 2 or 3. Check against key->keylen
> and divide the table size by 8.
> * return proper values for WEP setting as per mac80211 documenation
>
> This patch applies to the ath5k branch of wireless-dev.
>
> Changes to ath5k_base.c
> Changes-licensed-under: BSD
>
> Changes to ath5k_hw.c, ath5k_reg.h
> Changes-licensed-under: ISC
>
> Signed-off-by: Luis R. Rodriguez <[email protected]>
>
> ---
>
> drivers/net/wireless/ath5k_base.c | 26 ++++++++++++++++++--------
> 1 files changed, 18 insertions(+), 8 deletions(-
>
> drivers/net/wireless/ath5k_hw.c | 12 +++++++++---
> drivers/net/wireless/ath5k_reg.h | 12 ++++++++++++
> 2 files changed, 21 insertions(+), 3 deletions(-)
>
diff --git a/drivers/net/wireless/ath5k_base.c b/drivers/net/wireless/ath5k_base.c
index fead9a7..c49a744 100644
--- a/drivers/net/wireless/ath5k_base.c
+++ b/drivers/net/wireless/ath5k_base.c
@@ -734,7 +734,7 @@ static u32 ath_calcrxfilter(struct ath_softc *sc)
AR5K_RX_FILTER_UCAST | AR5K_RX_FILTER_BCAST |
AR5K_RX_FILTER_MCAST | AR5K_RX_FILTER_RADARERR;

- if (sc->opmode == IEEE80211_IF_TYPE_MNTR)
+ if (opmode == IEEE80211_IF_TYPE_MNTR)
rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;
if (opmode != IEEE80211_IF_TYPE_STA)
@@ -742,8 +742,14 @@ static u32 ath_calcrxfilter(struct ath_softc *sc)
if (opmode != IEEE80211_IF_TYPE_AP && test_bit(ATH_STAT_PROMISC,
sc->status))
rfilt |= AR5K_RX_FILTER_PROM;
- if (opmode == IEEE80211_IF_TYPE_STA || opmode == IEEE80211_IF_TYPE_IBSS)
+ if (opmode == IEEE80211_IF_TYPE_STA || opmode == IEEE80211_IF_TYPE_IBSS) {
rfilt |= AR5K_RX_FILTER_BEACON;
+ /* Note: AR5212 requires AR5K_RX_FILTER_PROM to receive broadcasts,
+ * perhaps the flags are off, for now to be safe we'll enable it for
+ * STA and ADHOC until we have this properly mapped */
+ if (ah->ah_version == AR5K_AR5212)
+ rfilt |= AR5K_RX_FILTER_PROM;
+ }

return rfilt;
}
@@ -1437,21 +1443,28 @@ static int ath_set_key(struct ieee80211_hw *hw,
set_key_cmd cmd,
struct ath_softc *sc = hw->priv;
int ret = 0;

+ switch(key->alg) {
+ case ALG_WEP:
+ break;
+ case ALG_TKIP:
+ case ALG_CCMP:
+ return -EOPNOTSUPP;

Some broken whitespace here :).

+ case ALG_NONE:
+ break;
+ default:
+ WARN_ON(1);
+ return -EINVAL;
+ }
+
mutex_lock(&sc->lock);

thanks,
--
Jiri Slaby ([email protected])
Faculty of Informatics, Masaryk University

2007-09-22 18:32:05

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [PATCH] ath5k - Fix filters for AR5212, correct return values for WEP

Ppl can someone plz port also these changes from madwifi svn ??? Sorry
for not doing this myself i'm really out of time these days...

http://madwifi.org/changeset/2704
http://madwifi.org/changeset/2703
http://madwifi.org/changeset/2701
http://madwifi.org/changeset/2700
http://madwifi.org/changeset/2698

2007/9/21, Jiri Slaby <[email protected]>:
> On 09/20/2007 11:24 PM, Luis R. Rodriguez wrote:
> > On 9/20/07, Jiri Slaby <[email protected]> wrote:
> > int ret = 0;
> >> + switch(key->alg) {
> >> + case ALG_WEP:
> >> + break;
> >> + case ALG_TKIP:
> >> + case ALG_CCMP:
> >> + return -EOPNOTSUPP;
> >>
> >> Some broken whitespace here :).
> >
> > You mean all the extra spaces on the left instead of Tabs? If so then
> > ACK, attached v2.
>
> Yes, nice.
>
> --
> Jiri Slaby ([email protected])
> Faculty of Informatics, Masaryk University
>


--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick