[ath5k-devel] [PATCH 0/8] ath5k 802.11j preparation and cleanup

2011-01-19 Thread Bruno Randolf
This series prepares ath5k for 802.11j (4.9GHz) support but most of the patches
are just cleaning up things i found in the process. 802.11j is still not
enabled.

bruno

---

Bruno Randolf (8):
  ath5k: Use mac80211 channel mapping function
  ath5k: Simplify loop when setting up channels
  ath5k: Rename ath5k_copy_channels
  ath5k: ath5k_setup_channels cleanup and whitespace
  ath5k: Add 802.11j 4.9GHz channels to allowed channels
  ath5: Remove unused CTL definitions
  ath5k: Remove unused sc-curmode
  ath5k: Remove redundant sc-curband


 drivers/net/wireless/ath/ath5k/base.c   |   95 +++
 drivers/net/wireless/ath/ath5k/base.h   |3 -
 drivers/net/wireless/ath/ath5k/eeprom.h |   23 
 3 files changed, 34 insertions(+), 87 deletions(-)

-- 
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 1/8] ath5k: Use mac80211 channel mapping function

2011-01-19 Thread Bruno Randolf
Use mac80211 channel mapping function instead of own homegrown version.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/base.c |   23 ---
 1 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index 09ae4ef..6850112 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -242,18 +242,6 @@ static int ath5k_reg_notifier(struct wiphy *wiphy, struct 
regulatory_request *re
 \/
 
 /*
- * Convert IEEE channel number to MHz frequency.
- */
-static inline short
-ath5k_ieee2mhz(short chan)
-{
-   if (chan = 14 || chan = 27)
-   return ieee80211chan2mhz(chan);
-   else
-   return 2212 + chan * 20;
-}
-
-/*
  * Returns true for the channel numbers used without all_channels modparam.
  */
 static bool ath5k_is_standard_channel(short chan)
@@ -274,6 +262,7 @@ ath5k_copy_channels(struct ath5k_hw *ah,
unsigned int max)
 {
unsigned int i, count, size, chfreq, freq, ch;
+   enum ieee80211_band band;
 
if (!test_bit(mode, ah-ah_modes))
return 0;
@@ -283,11 +272,13 @@ ath5k_copy_channels(struct ath5k_hw *ah,
/* 1..220, but 2GHz frequencies are filtered by check_channel */
size = 220 ;
chfreq = CHANNEL_5GHZ;
+   band = IEEE80211_BAND_5GHZ;
break;
case AR5K_MODE_11B:
case AR5K_MODE_11G:
size = 26;
chfreq = CHANNEL_2GHZ;
+   band = IEEE80211_BAND_2GHZ;
break;
default:
ATH5K_WARN(ah-ah_sc, bad mode, not copying channels\n);
@@ -296,7 +287,10 @@ ath5k_copy_channels(struct ath5k_hw *ah,
 
for (i = 0, count = 0; i  size  max  0; i++) {
ch = i + 1 ;
-   freq = ath5k_ieee2mhz(ch);
+   freq = ieee80211_channel_to_frequency(ch, band);
+
+   if (freq == 0) /* mapping failed - not a standard channel */
+   continue;
 
/* Check if channel is supported by the chipset */
if (!ath5k_channel_ok(ah, freq, chfreq))
@@ -307,8 +301,7 @@ ath5k_copy_channels(struct ath5k_hw *ah,
 
/* Write channel info and increment counter */
channels[count].center_freq = freq;
-   channels[count].band = (chfreq == CHANNEL_2GHZ) ?
-   IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ;
+   channels[count].band = band;
switch (mode) {
case AR5K_MODE_11A:
case AR5K_MODE_11G:

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 3/8] ath5k: Rename ath5k_copy_channels

2011-01-19 Thread Bruno Randolf
Rename ath5k_copy_channels() to ath5k_setup_channels() - nothing is copied
here.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/base.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index 0387acb..9e8b1f4 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -256,7 +256,7 @@ static bool ath5k_is_standard_channel(short chan)
 }
 
 static unsigned int
-ath5k_copy_channels(struct ath5k_hw *ah,
+ath5k_setup_channels(struct ath5k_hw *ah,
struct ieee80211_channel *channels,
unsigned int mode,
unsigned int max)
@@ -356,7 +356,7 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
sband-n_bitrates = 12;
 
sband-channels = sc-channels;
-   sband-n_channels = ath5k_copy_channels(ah, sband-channels,
+   sband-n_channels = ath5k_setup_channels(ah, sband-channels,
AR5K_MODE_11G, max_c);
 
hw-wiphy-bands[IEEE80211_BAND_2GHZ] = sband;
@@ -382,7 +382,7 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
}
 
sband-channels = sc-channels;
-   sband-n_channels = ath5k_copy_channels(ah, sband-channels,
+   sband-n_channels = ath5k_setup_channels(ah, sband-channels,
AR5K_MODE_11B, max_c);
 
hw-wiphy-bands[IEEE80211_BAND_2GHZ] = sband;
@@ -402,7 +402,7 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
sband-n_bitrates = 8;
 
sband-channels = sc-channels[count_c];
-   sband-n_channels = ath5k_copy_channels(ah, sband-channels,
+   sband-n_channels = ath5k_setup_channels(ah, sband-channels,
AR5K_MODE_11A, max_c);
 
hw-wiphy-bands[IEEE80211_BAND_5GHZ] = sband;

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 4/8] ath5k: ath5k_setup_channels cleanup and whitespace

2011-01-19 Thread Bruno Randolf
Remove useless test_bit - it's not going to happen because of the way this
function is called only when that bit is set.

And fix some whitespace.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/base.c |   11 +++
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index 9e8b1f4..a28ad58 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -256,21 +256,16 @@ static bool ath5k_is_standard_channel(short chan)
 }
 
 static unsigned int
-ath5k_setup_channels(struct ath5k_hw *ah,
-   struct ieee80211_channel *channels,
-   unsigned int mode,
-   unsigned int max)
+ath5k_setup_channels(struct ath5k_hw *ah, struct ieee80211_channel *channels,
+   unsigned int mode, unsigned int max)
 {
unsigned int count, size, chfreq, freq, ch;
enum ieee80211_band band;
 
-   if (!test_bit(mode, ah-ah_modes))
-   return 0;
-
switch (mode) {
case AR5K_MODE_11A:
/* 1..220, but 2GHz frequencies are filtered by check_channel */
-   size = 220 ;
+   size = 220;
chfreq = CHANNEL_5GHZ;
band = IEEE80211_BAND_5GHZ;
break;

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 5/8] ath5k: Add 802.11j 4.9GHz channels to allowed channels

2011-01-19 Thread Bruno Randolf
Add the 802.11j (20MHz channel width) channels to the allowed channels. This
still does not enable 802.11j in ath5k since these frequencies are out of the
configured range. A later patch will deal with that.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/base.c |   19 +--
 1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index a28ad58..6900543 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -244,15 +244,21 @@ static int ath5k_reg_notifier(struct wiphy *wiphy, struct 
regulatory_request *re
 /*
  * Returns true for the channel numbers used without all_channels modparam.
  */
-static bool ath5k_is_standard_channel(short chan)
+static bool ath5k_is_standard_channel(short chan, enum ieee80211_band band)
 {
-   return ((chan = 14) ||
-   /* UNII 1,2 */
-   ((chan  3) == 0  chan = 36  chan = 64) ||
+   if (band == IEEE80211_BAND_2GHZ  chan = 14)
+   return true;
+
+   return  /* UNII 1,2 */
+   (((chan  3) == 0  chan = 36  chan = 64) ||
/* midband */
((chan  3) == 0  chan = 100  chan = 140) ||
/* UNII-3 */
-   ((chan  3) == 1  chan = 149  chan = 165));
+   ((chan  3) == 1  chan = 149  chan = 165) ||
+   /* 802.11j 5.030-5.080 GHz (20MHz) */
+   (chan == 8 || chan == 12 || chan == 16) ||
+   /* 802.11j 4.9GHz (20MHz) */
+   (chan == 184 || chan == 188 || chan == 192 || chan == 196));
 }
 
 static unsigned int
@@ -291,7 +297,8 @@ ath5k_setup_channels(struct ath5k_hw *ah, struct 
ieee80211_channel *channels,
if (!ath5k_channel_ok(ah, freq, chfreq))
continue;
 
-   if (!modparam_all_channels  !ath5k_is_standard_channel(ch))
+   if (!modparam_all_channels 
+   !ath5k_is_standard_channel(ch, band))
continue;
 
/* Write channel info and increment counter */

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 6/8] ath5: Remove unused CTL definitions

2011-01-19 Thread Bruno Randolf
They are unused in ath5k and a more detailled definition is in
ath/regd_common.h.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/eeprom.h |   23 ---
 1 files changed, 0 insertions(+), 23 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/eeprom.h 
b/drivers/net/wireless/ath/ath5k/eeprom.h
index d46f105..6511c27 100644
--- a/drivers/net/wireless/ath/ath5k/eeprom.h
+++ b/drivers/net/wireless/ath/ath5k/eeprom.h
@@ -268,29 +268,6 @@ enum ath5k_ctl_mode {
AR5K_CTL_MODE_M = 15,
 };
 
-/* Default CTL ids for the 3 main reg domains.
- * Atheros only uses these by default but vendors
- * can have up to 32 different CTLs for different
- * scenarios. Note that theese values are ORed with
- * the mode id (above) so we can have up to 24 CTL
- * datasets out of these 3 main regdomains. That leaves
- * 8 ids that can be used by vendors and since 0x20 is
- * missing from HAL sources i guess this is the set of
- * custom CTLs vendors can use. */
-#defineAR5K_CTL_FCC0x10
-#defineAR5K_CTL_CUSTOM 0x20
-#defineAR5K_CTL_ETSI   0x30
-#defineAR5K_CTL_MKK0x40
-
-/* Indicates a CTL with only mode set and
- * no reg domain mapping, such CTLs are used
- * for world roaming domains or simply when
- * a reg domain is not set */
-#defineAR5K_CTL_NO_REGDOMAIN   0xf0
-
-/* Indicates an empty (invalid) CTL */
-#define AR5K_CTL_NO_CTL0xff
-
 /* Per channel calibration data, used for power table setup */
 struct ath5k_chan_pcal_info_rf5111 {
/* Power levels in half dbm units

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH 8/8] ath5k: Remove redundant sc-curband

2011-01-19 Thread Bruno Randolf
Remove sc-curband because the band is already stored in the current channel.

Signed-off-by: Bruno Randolf b...@einfach.org
---
 drivers/net/wireless/ath/ath5k/base.c |   11 ---
 drivers/net/wireless/ath/ath5k/base.h |2 --
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index a00cc11..0e39ee8 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -551,7 +551,7 @@ ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix)
hw_rix out of bounds: %x\n, hw_rix))
return 0;
 
-   rix = sc-rate_idx[sc-curband-band][hw_rix];
+   rix = sc-rate_idx[sc-curchan-band][hw_rix];
if (WARN(rix  0, invalid hw_rix: %x\n, hw_rix))
rix = 0;
 
@@ -1361,7 +1361,7 @@ ath5k_receive_frame(struct ath5k_softc *sc, struct 
sk_buff *skb,
rxs-flag |= RX_FLAG_TSFT;
 
rxs-freq = sc-curchan-center_freq;
-   rxs-band = sc-curband-band;
+   rxs-band = sc-curchan-band;
 
rxs-signal = sc-ah-ah_noise_floor + rs-rs_rssi;
 
@@ -1376,7 +1376,7 @@ ath5k_receive_frame(struct ath5k_softc *sc, struct 
sk_buff *skb,
rxs-flag |= ath5k_rx_decrypted(sc, skb, rs);
 
if (rxs-rate_idx = 0  rs-rs_rate ==
-   sc-curband-bitrates[rxs-rate_idx].hw_value_short)
+   
sc-sbands[sc-curchan-band].bitrates[rxs-rate_idx].hw_value_short)
rxs-flag |= RX_FLAG_SHORTPRE;
 
ath5k_debug_dump_skb(sc, skb, RX  , 0);
@@ -2536,7 +2536,6 @@ ath5k_init_hw(struct ath5k_softc *sc)
 * and then setup of the interrupt mask.
 */
sc-curchan = sc-hw-conf.channel;
-   sc-curband = sc-sbands[sc-curchan-band];
sc-imask = AR5K_INT_RXOK | AR5K_INT_RXERR | AR5K_INT_RXEOL |
AR5K_INT_RXORN | AR5K_INT_TXDESC | AR5K_INT_TXEOL |
AR5K_INT_FATAL | AR5K_INT_GLOBAL | AR5K_INT_MIB;
@@ -2663,10 +2662,8 @@ ath5k_reset(struct ath5k_softc *sc, struct 
ieee80211_channel *chan,
 * so we should also free any remaining
 * tx buffers */
ath5k_drain_tx_buffs(sc);
-   if (chan) {
+   if (chan)
sc-curchan = chan;
-   sc-curband = sc-sbands[chan-band];
-   }
ret = ath5k_hw_reset(ah, sc-opmode, sc-curchan, chan != NULL,
skip_pcu);
if (ret) {
diff --git a/drivers/net/wireless/ath/ath5k/base.h 
b/drivers/net/wireless/ath/ath5k/base.h
index 58660e4..8f919dc 100644
--- a/drivers/net/wireless/ath/ath5k/base.h
+++ b/drivers/net/wireless/ath/ath5k/base.h
@@ -183,8 +183,6 @@ struct ath5k_softc {
enum nl80211_iftype opmode;
struct ath5k_hw *ah;/* Atheros HW */
 
-   struct ieee80211_supported_band *curband;
-
 #ifdef CONFIG_ATH5K_DEBUG
struct ath5k_dbg_info   debug;  /* debug info */
 #endif /* CONFIG_ATH5K_DEBUG */

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] [PATCH] RFC: ath5k: Enable 802.11j 4.9GHz frequencies

2011-01-19 Thread Bruno Randolf
RFC:

This enables 4.9GHz frequencies in ath5k if the regdomain is set to MKK9_MKKC
(0xfe).

I have added a helper function to common ath/regd.c since we know about
MKK9_MKKC there, however in the place where i'm using the function we don't
have an ath_regulatory structure yet, so i'm passing the regdomain code as u16.

I'm using MKK9_MKKC only because this is the regdomain in the 802.11j enabled
sample cards we got from our vendor. I'm not sure if this is commonly used or
if there are other domain codes which indicate 802.11j support for Atheros
hardware (allthough some comments in the HAL suggest that). Also I don't know
if this is common between ath9k and ath5k.

Could someone from Atheros shed some light on this? Other comments?
---
 drivers/net/wireless/ath/ath5k/caps.c |   13 -
 drivers/net/wireless/ath/regd.c   |6 ++
 drivers/net/wireless/ath/regd.h   |1 +
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/caps.c 
b/drivers/net/wireless/ath/ath5k/caps.c
index 31cad80..52fa808 100644
--- a/drivers/net/wireless/ath/ath5k/caps.c
+++ b/drivers/net/wireless/ath/ath5k/caps.c
@@ -56,9 +56,8 @@ int ath5k_hw_set_capabilities(struct ath5k_hw *ah)
 * XXX current ieee80211 implementation because the IEEE
 * XXX channel mapping does not support negative channel
 * XXX numbers (2312MHz is channel -19). Of course, this
-* XXX doesn't matter because these channels are out of range
-* XXX but some regulation domains like MKK (Japan) will
-* XXX support frequencies somewhere around 4.8GHz.
+* XXX doesn't matter because these channels are out of the
+* XXX legal range.
 */
 
/*
@@ -66,8 +65,12 @@ int ath5k_hw_set_capabilities(struct ath5k_hw *ah)
 */
 
if (AR5K_EEPROM_HDR_11A(ee_header)) {
-   /* 4920 */
-   ah-ah_capabilities.cap_range.range_5ghz_min = 5005;
+   if (ath_is_11j_regd(
+ ah-ah_capabilities.cap_eeprom.ee_regdomain))
+   /* 802.11j enabled card */
+   ah-ah_capabilities.cap_range.range_5ghz_min = 
4920; /* 4910? */
+   else
+   ah-ah_capabilities.cap_range.range_5ghz_min = 
5005;
ah-ah_capabilities.cap_range.range_5ghz_max = 6100;
 
/* Set supported modes */
diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c
index 2b14775..8d60089 100644
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -158,6 +158,12 @@ ieee80211_regdomain *ath_world_regdomain(struct 
ath_regulatory *reg)
}
 }
 
+bool ath_is_11j_regd(u16 regdomain)
+{
+   return regdomain == MKK9_MKKC;
+}
+EXPORT_SYMBOL(ath_is_11j_regd);
+
 /* Frequency is one where radar detection is required */
 static bool ath_is_radar_freq(u16 center_freq)
 {
diff --git a/drivers/net/wireless/ath/regd.h b/drivers/net/wireless/ath/regd.h
index 345dd97..18d9acb 100644
--- a/drivers/net/wireless/ath/regd.h
+++ b/drivers/net/wireless/ath/regd.h
@@ -250,6 +250,7 @@ enum CountryCode {
 };
 
 bool ath_is_world_regd(struct ath_regulatory *reg);
+bool ath_is_11j_regd(u16 redomain);
 int ath_regd_init(struct ath_regulatory *reg, struct wiphy *wiphy,
  int (*reg_notifier)(struct wiphy *wiphy,
  struct regulatory_request *request));

___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] [PATCH 1/8] ath5k: Use mac80211 channel mapping function

2011-01-19 Thread Bob Copeland
On Wed, Jan 19, 2011 at 3:54 AM, Bruno Randolf b...@einfach.org wrote:
 Use mac80211 channel mapping function instead of own homegrown version.

 Signed-off-by: Bruno Randolf b...@einfach.org
 ---

 @@ -274,6 +262,7 @@ ath5k_copy_channels(struct ath5k_hw *ah,
                unsigned int max)
  {
        unsigned int i, count, size, chfreq, freq, ch;
 +       enum ieee80211_band band;

I like this, but we can also change ath5k_channel_ok and get rid of chfreq
completely, no?  And then maybe the CHANNEL_ defines.

Could be a follow-on patch.

-- 
Bob Copeland %% www.bobcopeland.com
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] [PATCH 1/8] ath5k: Use mac80211 channel mapping function

2011-01-19 Thread Bruno Randolf
On Wed January 19 2011 20:03:38 you wrote:
 On Wed, Jan 19, 2011 at 3:54 AM, Bruno Randolf b...@einfach.org wrote:
  Use mac80211 channel mapping function instead of own homegrown version.
  
  Signed-off-by: Bruno Randolf b...@einfach.org
  ---
  
  @@ -274,6 +262,7 @@ ath5k_copy_channels(struct ath5k_hw *ah,
 unsigned int max)
   {
 unsigned int i, count, size, chfreq, freq, ch;
  +   enum ieee80211_band band;
 
 I like this, but we can also change ath5k_channel_ok and get rid of chfreq
 completely, no?  And then maybe the CHANNEL_ defines.

True. Could be done and would be a nice cleanup too. We have too many 
redundant CHANNEL_ and MODE_ defines...

 Could be a follow-on patch.

Please... ;)

bruno
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] multiple access points broke on nl80211

2011-01-19 Thread Cory Coager
On Tue, Jan 18, 2011 at 07:04:26PM -0800, Ben Greear wrote:
 Worked fine last I tried.  I'm not sure the ath5k virtualization stuff
 got into stock 2.6.36, by the way.  It *should* be in .37.
 
 Thanks,
 Ben
Anymore suggestions?  Should I upgrade my kernel?  Should I
submit a bug report?
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] [PATCH 1/8] ath5k: Use mac80211 channel mapping function

2011-01-19 Thread Nick Kossifidis
2011/1/19 Bruno Randolf b...@einfach.org:
 On Wed January 19 2011 20:03:38 you wrote:
 On Wed, Jan 19, 2011 at 3:54 AM, Bruno Randolf b...@einfach.org wrote:
  Use mac80211 channel mapping function instead of own homegrown version.
 
  Signed-off-by: Bruno Randolf b...@einfach.org
  ---
 
  @@ -274,6 +262,7 @@ ath5k_copy_channels(struct ath5k_hw *ah,
                 unsigned int max)
   {
         unsigned int i, count, size, chfreq, freq, ch;
  +       enum ieee80211_band band;

 I like this, but we can also change ath5k_channel_ok and get rid of chfreq
 completely, no?  And then maybe the CHANNEL_ defines.

 True. Could be done and would be a nice cleanup too. We have too many
 redundant CHANNEL_ and MODE_ defines...

 Could be a follow-on patch.

 Please... ;)

 bruno

Cool ;-)

Acked-by: Nick Kossifidis mickfl...@gmail.com


-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


[ath5k-devel] (multicast) key search documentation and behaviour for the AR5213?

2011-01-19 Thread Adrian Chadd
Hi all,

I'm working on fixing up the FreeBSD ath codebase, both for new 11n
chipsets and older chipsets that ath5k supports.

I've noticed something strange with the AR5213. (I don't have any
AR5212 chips or variants thereof.) It happens on MIPS, not on i386. It
doesn't happen with exactly the same software when using an AR9160.

For broadcast packets sent w/ WPA encryption, matching a keycache
entry, I see corruption which always begins in the packet half-way
through the IV word. So, the first four bytes of the IV are fine, but
everything after byte 5 (and the payload) are corrupt.

After the first group rekeying from hostap, the problem rights itself.

If I disable hardware encryption (which still uses keycache entries,
they're just clear entries), I still see the packet corruption until
the first group rekey.

If I then disable the keyid on packets sent w/ a group key, the
packets are correctly TX'ed verbatim.

WEP and OPEN are fine.

Has anyone seen this behaviour before?

Is there any documentation available on the AR5213 keycache behaviour,
both normal and broadcast? Why would this occur even when it's not
doing hardware encryption? There's a couple of hints in the codebases:

* AR_KEYTABLE_VALID is in the ath9k/ath5k shared code, but from what I
can gather it's involved in packet RX, not TX. Is this right?
* Is the multicast keycache search behaviour briefly touched on here
and there in the codebases for packet TX, RX, or both?
* This comment seems a bit misleading:

/*
 * Group key allocation must be handled specially for
 * parts that do not support multicast key cache search
 * functionality.  For those parts the key id must match
 * the h/w key index so lookups find the right key.  On
 * parts w/ the key search facility we install the sender's
 * mac address (with the high bit set) and let the hardware
 * find the key w/o using the key id.  This is preferred as
 * it permits us to support multiple users for adhoc and/or
 * multi-station operation.
 */

But if I program the hardware with the high bit set in the MAC entry,
then TX packets without a key id set, it doesn't seem to match the
keycache entry and the packet isn't encrypted.

Any/all help and pointers will be very appreciated, thankyou.


Adrian
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] multiple access points broke on nl80211

2011-01-19 Thread Bruno Randolf
On Wed January 19 2011 23:15:11 Cory Coager wrote:
 On Tue, Jan 18, 2011 at 07:04:26PM -0800, Ben Greear wrote:
  Worked fine last I tried.  I'm not sure the ath5k virtualization stuff
  got into stock 2.6.36, by the way.  It *should* be in .37.
  
  Thanks,
  Ben
 
 Anymore suggestions?  Should I upgrade my kernel?  Should I
 submit a bug report?

Upgrade your kernel. Only submit a bug report if it does not work with current 
wireless-testing, please.

bruno
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel


Re: [ath5k-devel] [PATCH 1/8] ath5k: Use mac80211 channel mapping function

2011-01-19 Thread Bruno Randolf
On Wed January 19 2011 20:48:28 Bruno Randolf wrote:
  I like this, but we can also change ath5k_channel_ok and get rid of
  chfreq completely, no?  And then maybe the CHANNEL_ defines.
 
 True. Could be done and would be a nice cleanup too. We have too many
 redundant CHANNEL_ and MODE_ defines...
 
  Could be a follow-on patch.
 
 Please... ;)

Maybe that got lost in translation. What i meant is Feel free to do it ;)

It's not so easy because in ath5k_hw_nic_wakeup we have only the flags, so 
that would have to be changed. I guess it's no major problem but i can't be 
bothered right now.

bruno
___
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel