2008-12-07 16:30:55

by Johannes Berg

[permalink] [raw]
Subject: [RFT] mac80211: fix HT channel selection

HT management is done differently for AP and STA modes, unify
to just the ->config() callback since HT is fundamentally a
PHY property and cannot be per-BSS.

Signed-off-by: Johannes Berg <[email protected]>
---
Please test. Mats, this might fix your problem (if it applies on top of
the patch that fixes the panic)

drivers/net/wireless/ath9k/main.c | 71 ---------------------------------
drivers/net/wireless/iwlwifi/iwl-agn.c | 21 ++++++---
drivers/net/wireless/mac80211_hwsim.c | 7 ---
include/net/mac80211.h | 5 --
net/mac80211/ht.c | 57 --------------------------
net/mac80211/ieee80211_i.h | 3 -
net/mac80211/mlme.c | 67 +++++++++++++++++++++++++++++++
7 files changed, 85 insertions(+), 146 deletions(-)

--- everything.orig/include/net/mac80211.h 2008-12-07 16:59:20.000000000 +0100
+++ everything/include/net/mac80211.h 2008-12-07 16:59:25.000000000 +0100
@@ -165,14 +165,9 @@ enum ieee80211_bss_change {

/**
* struct ieee80211_bss_ht_conf - BSS's changing HT configuration
- * @secondary_channel_offset: secondary channel offset, uses
- * %IEEE80211_HT_PARAM_CHA_SEC_ values
- * @width_40_ok: indicates that 40 MHz bandwidth may be used for TX
* @operation_mode: HT operation mode (like in &struct ieee80211_ht_info)
*/
struct ieee80211_bss_ht_conf {
- u8 secondary_channel_offset;
- bool width_40_ok;
u16 operation_mode;
};

--- everything.orig/net/mac80211/ht.c 2008-12-07 16:59:44.000000000 +0100
+++ everything/net/mac80211/ht.c 2008-12-07 17:07:24.000000000 +0100
@@ -84,63 +84,6 @@ void ieee80211_ht_cap_ie_to_sta_ht_cap(s
ht_cap->mcs.rx_mask[32/8] |= 1;
}

-/*
- * ieee80211_enable_ht should be called only after the operating band
- * has been determined as ht configuration depends on the hw's
- * HT abilities for a specific band.
- */
-u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
- struct ieee80211_ht_info *hti,
- u16 ap_ht_cap_flags)
-{
- struct ieee80211_local *local = sdata->local;
- struct ieee80211_supported_band *sband;
- struct ieee80211_bss_ht_conf ht;
- u32 changed = 0;
- bool enable_ht = true, ht_changed;
-
- sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
-
- memset(&ht, 0, sizeof(ht));
-
- /* HT is not supported */
- if (!sband->ht_cap.ht_supported)
- enable_ht = false;
-
- /* check that channel matches the right operating channel */
- if (local->hw.conf.channel->center_freq !=
- ieee80211_channel_to_frequency(hti->control_chan))
- enable_ht = false;
-
- /*
- * XXX: This is totally incorrect when there are multiple virtual
- * interfaces, needs to be fixed later.
- */
- ht_changed = local->hw.conf.ht.enabled != enable_ht;
- local->hw.conf.ht.enabled = enable_ht;
- if (ht_changed)
- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT);
-
- /* disable HT */
- if (!enable_ht)
- return 0;
- ht.secondary_channel_offset =
- hti->ht_param & IEEE80211_HT_PARAM_CHA_SEC_OFFSET;
- ht.width_40_ok =
- !(ap_ht_cap_flags & IEEE80211_HT_CAP_40MHZ_INTOLERANT) &&
- (sband->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
- (hti->ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY);
- ht.operation_mode = le16_to_cpu(hti->operation_mode);
-
- /* if bss configuration changed store the new one */
- if (memcmp(&sdata->vif.bss_conf.ht, &ht, sizeof(ht))) {
- changed |= BSS_CHANGED_HT;
- sdata->vif.bss_conf.ht = ht;
- }
-
- return changed;
-}
-
static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata,
const u8 *da, u16 tid,
u8 dialog_token, u16 start_seq_num,
--- everything.orig/net/mac80211/mlme.c 2008-12-07 17:04:34.000000000 +0100
+++ everything/net/mac80211/mlme.c 2008-12-07 17:07:15.000000000 +0100
@@ -864,6 +864,7 @@ static void ieee80211_set_disassoc(struc
rcu_read_unlock();

local->hw.conf.ht.enabled = false;
+ local->hw.conf.ht.sec_chan_offset = 0;
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT);

ieee80211_bss_info_change_notify(sdata, changed);
@@ -1192,6 +1193,72 @@ static void ieee80211_rx_mgmt_disassoc(s
ieee80211_set_disassoc(sdata, ifsta, false, false, reason_code);
}

+/*
+ * ieee80211_enable_ht should be called only after the operating band
+ * has been determined as ht configuration depends on the hw's
+ * HT abilities for a specific band.
+ */
+static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
+ struct ieee80211_ht_info *hti,
+ u16 ap_ht_cap_flags)
+{
+ struct ieee80211_local *local = sdata->local;
+ struct ieee80211_supported_band *sband;
+ struct ieee80211_bss_ht_conf ht;
+ u32 changed = 0;
+ bool enable_ht = true, ht_changed;
+ s8 secchan = 0;
+
+ sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
+
+ memset(&ht, 0, sizeof(ht));
+
+ /* HT is not supported */
+ if (!sband->ht_cap.ht_supported)
+ enable_ht = false;
+
+ /* check that channel matches the right operating channel */
+ if (local->hw.conf.channel->center_freq !=
+ ieee80211_channel_to_frequency(hti->control_chan))
+ enable_ht = false;
+
+ if (enable_ht &&
+ !(ap_ht_cap_flags & IEEE80211_HT_CAP_40MHZ_INTOLERANT) &&
+ (sband->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
+ (hti->ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) {
+ switch (hti->ht_param & IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {
+ case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ secchan = 1;
+ break;
+ case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
+ secchan = -1;
+ break;
+ }
+ }
+
+ ht_changed = local->hw.conf.ht.enabled != enable_ht ||
+ secchan != local->hw.conf.ht.sec_chan_offset;
+
+ local->hw.conf.ht.sec_chan_offset = secchan;
+ local->hw.conf.ht.enabled = enable_ht;
+
+ if (ht_changed)
+ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT);
+
+ /* disable HT */
+ if (!enable_ht)
+ return 0;
+
+ ht.operation_mode = le16_to_cpu(hti->operation_mode);
+
+ /* if bss configuration changed store the new one */
+ if (memcmp(&sdata->vif.bss_conf.ht, &ht, sizeof(ht))) {
+ changed |= BSS_CHANGED_HT;
+ sdata->vif.bss_conf.ht = ht;
+ }
+
+ return changed;
+}

static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
struct ieee80211_if_sta *ifsta,
--- everything.orig/net/mac80211/ieee80211_i.h 2008-12-07 17:06:16.000000000 +0100
+++ everything/net/mac80211/ieee80211_i.h 2008-12-07 17:06:19.000000000 +0100
@@ -930,9 +930,6 @@ int ieee80211_subif_start_xmit(struct sk
void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband,
struct ieee80211_ht_cap *ht_cap_ie,
struct ieee80211_sta_ht_cap *ht_cap);
-u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
- struct ieee80211_ht_info *hti,
- u16 ap_ht_cap_flags);
void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn);

void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *da,
--- everything.orig/drivers/net/wireless/mac80211_hwsim.c 2008-12-07 17:10:34.000000000 +0100
+++ everything/drivers/net/wireless/mac80211_hwsim.c 2008-12-07 17:10:48.000000000 +0100
@@ -497,11 +497,8 @@ static void mac80211_hwsim_bss_info_chan
}

if (changed & BSS_CHANGED_HT) {
- printk(KERN_DEBUG " %s: HT: sec_ch_offs=%d width_40_ok=%d "
- "op_mode=%d\n",
- wiphy_name(hw->wiphy),
- info->ht.secondary_channel_offset,
- info->ht.width_40_ok, info->ht.operation_mode);
+ printk(KERN_DEBUG " %s: HT: op_mode=%d\n",
+ wiphy_name(hw->wiphy), info->ht.operation_mode);
}

if (changed & BSS_CHANGED_BASIC_RATES) {
--- everything.orig/drivers/net/wireless/ath9k/main.c 2008-12-07 17:12:02.000000000 +0100
+++ everything/drivers/net/wireless/ath9k/main.c 2008-12-07 17:19:14.000000000 +0100
@@ -825,42 +825,11 @@ static void setup_ht_cap(struct ieee8021
ht_info->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
}

-static void ath9k_ht_conf(struct ath_softc *sc,
- struct ieee80211_bss_conf *bss_conf)
-{
- if (sc->hw->conf.ht.enabled) {
- if (bss_conf->ht.width_40_ok)
- sc->tx_chan_width = ATH9K_HT_MACMODE_2040;
- else
- sc->tx_chan_width = ATH9K_HT_MACMODE_20;
-
- ath9k_hw_set11nmac2040(sc->sc_ah, sc->tx_chan_width);
-
- DPRINTF(sc, ATH_DBG_CONFIG,
- "BSS Changed HT, chanwidth: %d\n", sc->tx_chan_width);
- }
-}
-
-static inline int ath_sec_offset(u8 ext_offset)
-{
- if (ext_offset == IEEE80211_HT_PARAM_CHA_SEC_NONE)
- return 0;
- else if (ext_offset == IEEE80211_HT_PARAM_CHA_SEC_ABOVE)
- return 1;
- else if (ext_offset == IEEE80211_HT_PARAM_CHA_SEC_BELOW)
- return -1;
-
- return 0;
-}
-
static void ath9k_bss_assoc_info(struct ath_softc *sc,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *bss_conf)
{
- struct ieee80211_hw *hw = sc->hw;
- struct ieee80211_channel *curchan = hw->conf.channel;
struct ath_vap *avp = (void *)vif->drv_priv;
- int pos;
DECLARE_MAC_BUF(mac);

if (bss_conf->assoc) {
@@ -883,40 +852,6 @@ static void ath9k_bss_assoc_info(struct
sc->sc_halstats.ns_avgtxrssi = ATH_RSSI_DUMMY_MARKER;
sc->sc_halstats.ns_avgtxrate = ATH_RATE_DUMMY_MARKER;

- /* Update chainmask */
- ath_update_chainmask(sc, hw->conf.ht.enabled);
-
- DPRINTF(sc, ATH_DBG_CONFIG,
- "bssid %s aid 0x%x\n",
- print_mac(mac, sc->sc_curbssid), sc->sc_curaid);
-
- pos = ath_get_channel(sc, curchan);
- if (pos == -1) {
- DPRINTF(sc, ATH_DBG_FATAL,
- "Invalid channel: %d\n", curchan->center_freq);
- return;
- }
-
- if (hw->conf.ht.enabled) {
- int offset =
- ath_sec_offset(bss_conf->ht.secondary_channel_offset);
- sc->tx_chan_width = (bss_conf->ht.width_40_ok) ?
- ATH9K_HT_MACMODE_2040 : ATH9K_HT_MACMODE_20;
-
- sc->sc_ah->ah_channels[pos].chanmode =
- ath_get_extchanmode(sc, curchan,
- offset, sc->tx_chan_width);
- } else {
- sc->sc_ah->ah_channels[pos].chanmode =
- (curchan->band == IEEE80211_BAND_2GHZ) ?
- CHANNEL_G : CHANNEL_A;
- }
-
- /* set h/w channel */
- if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0)
- DPRINTF(sc, ATH_DBG_FATAL, "Unable to set channel: %d\n",
- curchan->center_freq);
-
/* Start ANI */
mod_timer(&sc->sc_ani.timer,
jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
@@ -2151,7 +2086,8 @@ static int ath9k_config(struct ieee80211
struct ath_softc *sc = hw->priv;
struct ieee80211_conf *conf = &hw->conf;

- if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
+ if (changed & (IEEE80211_CONF_CHANGE_CHANNEL |
+ IEEE80211_CONF_CHANGE_HT)) {
struct ieee80211_channel *curchan = hw->conf.channel;
int pos;

@@ -2424,9 +2360,6 @@ static void ath9k_bss_info_changed(struc
sc->sc_flags &= ~SC_OP_PROTECT_ENABLE;
}

- if (changed & BSS_CHANGED_HT)
- ath9k_ht_conf(sc, bss_conf);
-
if (changed & BSS_CHANGED_ASSOC) {
DPRINTF(sc, ATH_DBG_CONFIG, "BSS Changed ASSOC %d\n",
bss_conf->assoc);
--- everything.orig/drivers/net/wireless/iwlwifi/iwl-agn.c 2008-12-07 17:20:25.000000000 +0100
+++ everything/drivers/net/wireless/iwlwifi/iwl-agn.c 2008-12-07 17:25:57.000000000 +0100
@@ -516,19 +516,26 @@ static void iwl_ht_conf(struct iwl_priv
iwl_conf->supported_chan_width =
!!(ht_conf->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40);

- iwl_conf->extension_chan_offset = bss_conf->ht.secondary_channel_offset;
- /* If no above or below channel supplied disable FAT channel */
- if (iwl_conf->extension_chan_offset != IEEE80211_HT_PARAM_CHA_SEC_ABOVE &&
- iwl_conf->extension_chan_offset != IEEE80211_HT_PARAM_CHA_SEC_BELOW) {
- iwl_conf->extension_chan_offset = IEEE80211_HT_PARAM_CHA_SEC_NONE;
- iwl_conf->supported_chan_width = 0;
+ /*
+ * XXX: The HT configuration needs to be moved into iwl_mac_config()
+ * to be done there correctly.
+ */
+
+ iwl_conf->extension_chan_offset = IEEE80211_HT_PARAM_CHA_SEC_NONE;
+ switch (priv->hw->conf.ht.sec_chan_offset) {
+ case -1:
+ iwl_conf->extension_chan_offset = IEEE80211_HT_PARAM_CHA_SEC_BELOW;
+ break;
+ case 1:
+ iwl_conf->extension_chan_offset = IEEE80211_HT_PARAM_CHA_SEC_ABOVE;
+ break;
}

iwl_conf->sm_ps = (u8)((ht_conf->cap & IEEE80211_HT_CAP_SM_PS) >> 2);

memcpy(&iwl_conf->mcs, &ht_conf->mcs, 16);

- iwl_conf->tx_chan_width = bss_conf->ht.width_40_ok;
+ iwl_conf->tx_chan_width = iwl_conf->extension_chan_offset != 0;
iwl_conf->ht_protection =
bss_conf->ht.operation_mode & IEEE80211_HT_OP_MODE_PROTECTION;
iwl_conf->non_GF_STA_present =




2008-12-07 16:48:45

by Sujith

[permalink] [raw]
Subject: [RFT] mac80211: fix HT channel selection

Johannes Berg wrote:
> @@ -2151,7 +2086,8 @@ static int ath9k_config(struct ieee80211
> struct ath_softc *sc = hw->priv;
> struct ieee80211_conf *conf = &hw->conf;
>
> - if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
> + if (changed & (IEEE80211_CONF_CHANGE_CHANNEL |
> + IEEE80211_CONF_CHANGE_HT)) {
> struct ieee80211_channel *curchan = hw->conf.channel;
> int pos;
>

The check for AP mode should be removed. The patch below applies on top of your
patch and should handle the new changes properly.

But I'll test it tomorrow by switching like crazy among ht20/ht40/legacy,
in both STA and AP mode. :)

diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 3f3d75f..dc2adfd 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -2089,6 +2089,8 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
DPRINTF(sc, ATH_DBG_CONFIG, "Set channel: %d MHz\n",
curchan->center_freq);

+ ath_update_chainmask(sc, conf->ht.enabled);
+
pos = ath_get_channel(sc, curchan);
if (pos == -1) {
DPRINTF(sc, ATH_DBG_FATAL, "Invalid channel: %d\n",
@@ -2101,8 +2103,7 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
(curchan->band == IEEE80211_BAND_2GHZ) ?
CHANNEL_G : CHANNEL_A;

- if ((sc->sc_ah->ah_opmode == NL80211_IFTYPE_AP) &&
- (conf->ht.enabled)) {
+ if (conf->ht.enabled) {
sc->tx_chan_width = (!!conf->ht.sec_chan_offset) ?
ATH9K_HT_MACMODE_2040 : ATH9K_HT_MACMODE_20;

@@ -2118,9 +2119,6 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
}
}

- if (changed & IEEE80211_CONF_CHANGE_HT)
- ath_update_chainmask(sc, conf->ht.enabled);
-
if (changed & IEEE80211_CONF_CHANGE_POWER)
sc->sc_config.txpowlimit = 2 * conf->power_level;


2008-12-07 18:38:32

by Mats Johannesson

[permalink] [raw]
Subject: Re: [RFT] mac80211: fix HT channel selection

On Sun, 07 Dec 2008 17:30:46 +0100 Johannes Berg wrote:
> HT management is done differently for AP and STA modes, unify
> to just the ->config() callback since HT is fundamentally a
> PHY property and cannot be per-BSS.
>
> Signed-off-by: Johannes Berg <[email protected]>
> ---
> Please test. Mats, this might fix your problem (if it applies on top
> of the patch that fixes the panic)

Crazy results. Made two 2.6.28-rc7-wl kernels with different outcomes:

A) Network won't come up properly (no inet address received etc).
Sujith ath9k panic fix:
http://marc.info/?l=linux-wireless&m=122857527427734&w=2
Johannes fix HT channel selection:
http://marc.info/?l=linux-wireless&m=122866746021496&w=2
Sujith changes Johannes patch:
http://marc.info/?l=linux-wireless&m=122866853122939&w=2

B) New kernel panic through the ath9k driver.
Sujith ath9k panic fix:
http://marc.info/?l=linux-wireless&m=122857527427734&w=2
Sujith 'stabelize connection':
http://marc.info/?l=linux-wireless&m=122858606608610&w=2
Johannes fix HT channel selection:
http://marc.info/?l=linux-wireless&m=122866746021496&w=2
Sujith changes Johannes patch:
http://marc.info/?l=linux-wireless&m=122866853122939&w=2

I'll send Sujith a private letter with a picture of the new panic.

Below is a piece of /var/log/kern.log from kernel A). A couple of
minutes where it just keeps adding entries in the log while I don't do
anything:

18:40:48 : cfg80211: Using static regulatory domain info
18:40:48 : cfg80211: Regulatory domain: US
18:40:48 : ^I(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
18:40:48 : ^I(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
18:40:48 : ^I(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
18:40:48 : ^I(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
18:40:48 : ^I(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
18:40:48 : ^I(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
18:40:48 : ^I(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
18:40:48 : cfg80211: Calling CRDA for country: US
18:40:48 : ath9k: 0.1
18:40:48 : ath9k 0000:02:00.0: enabling device (0000 -> 0002)
18:40:48 : ath9k 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
18:40:48 : uhci_hcd 0000:00:10.2: PCI INT C -> GSI 21 (level, low) -> IRQ 21
18:40:48 : uhci_hcd 0000:00:10.2: UHCI Host Controller
18:40:48 : uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
18:40:48 : uhci_hcd 0000:00:10.2: irq 21, io base 0x00001c40
18:40:48 : usb usb4: configuration #1 chosen from 1 choice
18:40:48 : hub 4-0:1.0: USB hub found
18:40:48 : hub 4-0:1.0: 2 ports detected
18:40:48 : ath9k: 2MHz channel: 2412, channelFlags: 0x300e0
18:40:48 : ath9k: 2MHz channel: 2417, channelFlags: 0x300e0
18:40:48 : ath9k: 2MHz channel: 2422, channelFlags: 0x300e0
18:40:48 : ath9k: 2MHz channel: 2427, channelFlags: 0x300e0
18:40:48 : ath9k: 2MHz channel: 2432, channelFlags: 0x700e0
18:40:48 : ath9k: 2MHz channel: 2437, channelFlags: 0x700e0
18:40:48 : ath9k: 2MHz channel: 2442, channelFlags: 0x700e0
18:40:48 : ath9k: 2MHz channel: 2447, channelFlags: 0x500e0
18:40:48 : ath9k: 2MHz channel: 2452, channelFlags: 0x500e0
18:40:48 : ath9k: 2MHz channel: 2457, channelFlags: 0x500e0
18:40:48 : ath9k: 2MHz channel: 2462, channelFlags: 0x500e0
18:40:48 : ath9k: Rate: 1Mbps, ratecode: 27
18:40:48 : ath9k: Rate: 2Mbps, ratecode: 26
18:40:48 : ath9k: Rate: 5Mbps, ratecode: 25
18:40:48 : ath9k: Rate: 11Mbps, ratecode: 24
18:40:48 : ath9k: Rate: 6Mbps, ratecode: 11
18:40:48 : ath9k: Rate: 9Mbps, ratecode: 15
18:40:48 : ath9k: Rate: 12Mbps, ratecode: 10
18:40:48 : ath9k: Rate: 18Mbps, ratecode: 14
18:40:48 : ath9k: Rate: 24Mbps, ratecode: 9
18:40:48 : ath9k: Rate: 36Mbps, ratecode: 13
18:40:48 : ath9k: Rate: 48Mbps, ratecode: 8
18:40:48 : ath9k: Rate: 54Mbps, ratecode: 12
18:40:48 : ath9k: Rate: 6Mbps, ratecode: 11
18:40:48 : ath9k: Rate: 9Mbps, ratecode: 15
18:40:48 : ath9k: Rate: 12Mbps, ratecode: 10
18:40:48 : ath9k: Rate: 18Mbps, ratecode: 14
18:40:48 : ath9k: Rate: 24Mbps, ratecode: 9
18:40:48 : ath9k: Rate: 36Mbps, ratecode: 13
18:40:48 : ath9k: Rate: 48Mbps, ratecode: 8
18:40:48 : ath9k: Rate: 54Mbps, ratecode: 12
18:40:48 : ath9k: tx DMA: 512 buffers 1 desc/buf
18:40:48 : ath9k: tx DMA map: ffff88007ba00000 (77824) -> 0 (77824)
18:40:48 : ath9k: beacon DMA: 4 buffers 1 desc/buf
18:40:48 : ath9k: beacon DMA map: ffff88007c319000 (608) -> 0 (608)
18:40:48 : ath9k: cachelsz 64 rxbufsize 3904
18:40:48 : ath9k: rx DMA: 512 buffers 1 desc/buf
18:40:48 : ath9k: rx DMA map: ffff88007ba20000 (77824) -> 0 (77824)
18:40:48 : phy0: Selected rate control algorithm 'ath9k_rate_control'
18:40:48 : Registered led device: ath9k-phy0:radio
18:40:48 : Registered led device: ath9k-phy0:assoc
18:40:48 : Registered led device: ath9k-phy0:tx
18:40:48 : Registered led device: ath9k-phy0:rx
18:40:48 : phy0: Atheros AR5416 MAC/BB Rev:2 AR2133 RF Rev:81: mem=0xffffc20000120000, irq=17
18:40:48 : ieee1394: Host added: ID:BUS[0-00:1023] GUID[000ae40510101a78]
18:40:48 : lp0: using parport0 (interrupt-driven).
18:40:48 : SCSI subsystem initialized
18:40:48 : Adding 2144636k swap on /dev/hda9. Priority:-1 extents:1 across:2144636k
18:40:48 : EXT3 FS on hda2, internal journal
18:40:48 : kjournald starting. Commit interval 5 seconds
18:40:48 : EXT3 FS on hda6, internal journal
18:40:48 : EXT3-fs: mounted filesystem with ordered data mode.
18:40:48 : kjournald starting. Commit interval 5 seconds
18:40:48 : EXT3 FS on hda8, internal journal
18:40:48 : EXT3-fs: mounted filesystem with ordered data mode.
18:40:48 : kjournald starting. Commit interval 5 seconds
18:40:48 : EXT3 FS on hda5, internal journal
18:40:48 : EXT3-fs: mounted filesystem with ordered data mode.
18:40:48 : kjournald starting. Commit interval 5 seconds
18:40:48 : EXT3 FS on hda7, internal journal
18:40:48 : EXT3-fs: mounted filesystem with ordered data mode.
18:40:53 : ath9k: Starting driver with initial channel: 2412 MHz
18:40:53 : ath9k: Attach a VAP of type: 2
18:40:53 : ath9k: BSS Changed PREAMBLE 0
18:40:53 : ath9k: BSS Changed CTS PROT 0
18:40:53 : ath9k: Set HW RX filter: 0x0
18:40:53 : ath9k: Set channel: 2412 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:53 : ath9k: Configure tx [queue/halq] [0/3], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:53 : ath9k: Configure tx [queue/halq] [1/2], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:53 : ath9k: Configure tx [queue/halq] [2/1], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:53 : ath9k: Configure tx [queue/halq] [3/0], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:53 : ath9k: Set HW RX filter: 0x0
18:40:53 : ath9k: Set HW RX filter: 0x0
18:40:53 : ADDRCONF(NETDEV_UP): ath0: link is not ready
18:40:53 : ath9k: Set HW RX filter: 0x0
18:40:53 : ath9k: Set HW RX filter: 0x10
18:40:53 : ath9k: Set channel: 2412 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:53 : ath9k: Set channel: 2417 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:40:53 : ath9k: Set channel: 2422 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:40:53 : ath9k: Set channel: 2427 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:40:53 : ath9k: Set channel: 2432 MHz
18:40:53 : ath9k: tx chmask: 1, rx chmask: 1
18:40:53 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2437 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2442 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2447 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2452 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:40:54 : powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 3400+ processors (1 cpu cores) (version 2.20.00)
18:40:54 : powernow-k8: 0 : fid 0xe (2200 MHz), vid 0x2
18:40:54 : powernow-k8: 1 : fid 0xc (2000 MHz), vid 0x6
18:40:54 : powernow-k8: 2 : fid 0xa (1800 MHz), vid 0xa
18:40:54 : powernow-k8: 3 : fid 0x0 (800 MHz), vid 0x12
18:40:54 : powernow-k8: ph2 null fid transition 0xe
18:40:54 : Marking TSC unstable due to cpufreq changes
18:40:54 : ath9k: Set channel: 2457 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2462 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:40:54 : ath9k: Set channel: 2412 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:54 : ath9k: Set HW RX filter: 0x0
18:40:54 essage repeated 2 times
18:40:54 : ath9k: Detach Interface
18:40:54 : ath9k: Cleaning up
18:40:54 : ath9k: Driver halt
18:40:54 : r8169: eth0: link down
18:40:54 : ADDRCONF(NETDEV_UP): eth0: link is not ready
18:40:54 : ath9k: Starting driver with initial channel: 2412 MHz
18:40:54 : ath9k: Attach a VAP of type: 2
18:40:54 : ath9k: BSS Changed PREAMBLE 0
18:40:54 : ath9k: BSS Changed CTS PROT 0
18:40:54 : ath9k: Set HW RX filter: 0x0
18:40:54 : ath9k: Set channel: 2412 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e2, chanwidth: 0
18:40:54 : ath9k: Configure tx [queue/halq] [0/3], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:54 : ath9k: Configure tx [queue/halq] [1/2], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:54 : ath9k: Configure tx [queue/halq] [2/1], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:54 : ath9k: Configure tx [queue/halq] [3/0], aifs: 2, cw_min: 31, cw_max: 1023, txop: 0
18:40:54 : ath9k: Set HW RX filter: 0x0
18:40:54 : ath9k: Set HW RX filter: 0x0
18:40:54 : ADDRCONF(NETDEV_UP): ath0: link is not ready
18:40:54 : ath9k: Set HW RX filter: 0x0
18:40:54 essage repeated 2 times
18:40:54 : ath9k: Set channel: 2412 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:54 : ath9k: Set HW RX filter: 0x10
18:40:54 : ath9k: Set channel: 2412 MHz
18:40:54 : ath9k: tx chmask: 1, rx chmask: 1
18:40:54 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2417 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2422 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2427 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : warning: `dhclient' uses 32-bit capabilities (legacy support in use)
18:40:55 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Set HW RX filter: 0x0
18:40:55 : ath9k: Set HW RX filter: 0x0
18:40:55 : ath9k: Set channel: 2432 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2437 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2442 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2447 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2452 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2457 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2462 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:40:55 : ath9k: Set channel: 2412 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: Set channel: 2412 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: RX filter 0x0 bssid 00:1b:11:60:7a:3d aid 0x0
18:40:55 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Set HW RX filter: 0x0
18:40:55 : ath9k: Set channel: 2412 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: Configure tx [queue/halq] [0/3], aifs: 2, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath9k: Configure tx [queue/halq] [1/2], aifs: 2, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath9k: Configure tx [queue/halq] [2/1], aifs: 2, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath9k: Configure tx [queue/halq] [3/0], aifs: 2, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:40:55 : ath0: authenticated
18:40:55 : ath0: associate with AP 00:1b:11:60:7a:3d
18:40:55 : ath0: RX AssocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:40:55 : ath0: associated
18:40:55 : ath9k: Choosing rate table for mode: 10
18:40:55 : ath9k: Configure tx [queue/halq] [2/1], aifs: 3, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath9k: Configure tx [queue/halq] [3/0], aifs: 7, cw_min: 15, cw_max: 1023, txop: 0
18:40:55 : ath9k: Configure tx [queue/halq] [1/2], aifs: 2, cw_min: 7, cw_max: 15, txop: 94
18:40:55 : ath9k: Configure tx [queue/halq] [0/3], aifs: 2, cw_min: 3, cw_max: 7, txop: 47
18:40:55 : ath9k: Set channel: 2412 MHz
18:40:55 : ath9k: tx chmask: 1, rx chmask: 1
18:40:55 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:40:55 : ath9k: BSS Changed PREAMBLE 1
18:40:55 : ath9k: BSS Changed ASSOC 1
18:40:55 : ath9k: Bss Info ASSOC 4
18:40:55 : ADDRCONF(NETDEV_CHANGE): ath0: link becomes ready
18:40:55 : ath9k: Set HW RX filter: 0x0
18:40:55 : ath9k: Set HW RX filter: 0x0
18:40:55 : Clocksource tsc unstable (delta = -90870712 ns)
18:41:06 : ath0: no IPv6 routers present
18:41:07 : ath0: deauthenticated (Reason: 0)
18:41:07 : ath9k: Set channel: 2412 MHz
18:41:07 : ath9k: tx chmask: 1, rx chmask: 1
18:41:07 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:07 : ath9k: BSS Changed PREAMBLE 0
18:41:07 : ath9k: BSS Changed CTS PROT 0
18:41:07 : ath9k: BSS Changed ASSOC 0
18:41:07 : ath9k: Bss Info DISSOC
18:41:08 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:41:08 : ath0 direct probe responded
18:41:08 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:41:08 : ath0: authenticated
18:41:08 : ath0: associate with AP 00:1b:11:60:7a:3d
18:41:08 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:41:08 : ath0: associated
18:41:08 : ath9k: Choosing rate table for mode: 10
18:41:08 : ath9k: Set channel: 2412 MHz
18:41:08 : ath9k: tx chmask: 1, rx chmask: 1
18:41:08 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:08 : ath9k: BSS Changed PREAMBLE 1
18:41:08 : ath9k: BSS Changed ASSOC 1
18:41:08 : ath9k: Bss Info ASSOC 4
18:41:08 : ath9k: Set HW RX filter: 0x10
18:41:08 : ath9k: Set channel: 2412 MHz
18:41:08 : ath9k: tx chmask: 1, rx chmask: 1
18:41:08 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:08 : ath9k: Set channel: 2417 MHz
18:41:08 : ath9k: tx chmask: 1, rx chmask: 1
18:41:08 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2422 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2427 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2432 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2437 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2442 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2447 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2452 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2457 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2462 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:41:09 : ath9k: Set channel: 2412 MHz
18:41:09 : ath9k: tx chmask: 1, rx chmask: 1
18:41:09 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:09 : ath9k: Set HW RX filter: 0x0
18:41:20 : ath0: deauthenticated (Reason: 0)
18:41:20 : ath9k: Set channel: 2412 MHz
18:41:20 : ath9k: tx chmask: 1, rx chmask: 1
18:41:20 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:20 : ath9k: BSS Changed PREAMBLE 0
18:41:20 : ath9k: BSS Changed CTS PROT 0
18:41:20 : ath9k: BSS Changed ASSOC 0
18:41:20 : ath9k: Bss Info DISSOC
18:41:21 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:41:21 : ath0 direct probe responded
18:41:21 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:41:21 : ath0: authenticated
18:41:21 : ath0: associate with AP 00:1b:11:60:7a:3d
18:41:21 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:41:21 : ath0: associated
18:41:21 : ath9k: Choosing rate table for mode: 10
18:41:21 : ath9k: Set channel: 2412 MHz
18:41:21 : ath9k: tx chmask: 1, rx chmask: 1
18:41:21 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:21 : ath9k: BSS Changed PREAMBLE 1
18:41:21 : ath9k: BSS Changed ASSOC 1
18:41:21 : ath9k: Bss Info ASSOC 4
18:41:21 : ath9k: Set HW RX filter: 0x10
18:41:21 : ath9k: Set channel: 2412 MHz
18:41:21 : ath9k: tx chmask: 1, rx chmask: 1
18:41:21 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:21 : ath9k: Set channel: 2417 MHz
18:41:21 : ath9k: tx chmask: 1, rx chmask: 1
18:41:21 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2422 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2427 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2432 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2437 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2442 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2447 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2452 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2457 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2462 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:41:22 : ath9k: Set channel: 2412 MHz
18:41:22 : ath9k: tx chmask: 1, rx chmask: 1
18:41:22 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:22 : ath9k: Set HW RX filter: 0x0
18:41:33 : ath0: deauthenticated (Reason: 0)
18:41:33 : ath9k: Set channel: 2412 MHz
18:41:33 : ath9k: tx chmask: 1, rx chmask: 1
18:41:33 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:33 : ath9k: BSS Changed PREAMBLE 0
18:41:33 : ath9k: BSS Changed CTS PROT 0
18:41:33 : ath9k: BSS Changed ASSOC 0
18:41:33 : ath9k: Bss Info DISSOC
18:41:34 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:41:34 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 2
18:41:34 : ath0 direct probe responded
18:41:34 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:41:34 : ath0: authenticated
18:41:34 : ath0: associate with AP 00:1b:11:60:7a:3d
18:41:34 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:41:34 : ath0: associated
18:41:34 : ath9k: Choosing rate table for mode: 10
18:41:34 : ath9k: Set channel: 2412 MHz
18:41:34 : ath9k: tx chmask: 1, rx chmask: 1
18:41:34 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:34 : ath9k: BSS Changed PREAMBLE 1
18:41:34 : ath9k: BSS Changed ASSOC 1
18:41:34 : ath9k: Bss Info ASSOC 4
18:41:35 : ath9k: Set HW RX filter: 0x10
18:41:35 : ath9k: Set channel: 2412 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2417 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2422 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2427 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2432 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2437 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2442 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2447 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2452 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2457 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2462 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:41:35 : ath9k: Set channel: 2412 MHz
18:41:35 : ath9k: tx chmask: 1, rx chmask: 1
18:41:35 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:35 : ath9k: Set HW RX filter: 0x0
18:41:46 : ath0: deauthenticated (Reason: 0)
18:41:46 : ath9k: Set channel: 2412 MHz
18:41:46 : ath9k: tx chmask: 1, rx chmask: 1
18:41:46 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:46 : ath9k: BSS Changed PREAMBLE 0
18:41:46 : ath9k: BSS Changed CTS PROT 0
18:41:46 : ath9k: BSS Changed ASSOC 0
18:41:46 : ath9k: Bss Info DISSOC
18:41:47 : ath9k: Set HW RX filter: 0x0
18:41:47 : ath9k: Set HW RX filter: 0x0
18:41:47 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:41:48 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 2
18:41:48 : ath0 direct probe responded
18:41:48 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:41:48 : ath0: authenticated
18:41:48 : ath0: associate with AP 00:1b:11:60:7a:3d
18:41:48 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:41:48 : ath0: associated
18:41:48 : ath9k: Choosing rate table for mode: 10
18:41:48 : ath9k: Set channel: 2412 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:48 : ath9k: BSS Changed PREAMBLE 1
18:41:48 : ath9k: BSS Changed ASSOC 1
18:41:48 : ath9k: Bss Info ASSOC 4
18:41:48 : ath9k: Set HW RX filter: 0x10
18:41:48 : ath9k: Set channel: 2412 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2417 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2422 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2427 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2432 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2437 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2442 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2447 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2452 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2457 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:41:48 : ath9k: Set channel: 2462 MHz
18:41:48 : ath9k: tx chmask: 1, rx chmask: 1
18:41:48 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:41:49 : ath9k: Set channel: 2412 MHz
18:41:49 : ath9k: tx chmask: 1, rx chmask: 1
18:41:49 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:41:49 : ath9k: Set HW RX filter: 0x0
18:41:50 : ath9k: Set HW RX filter: 0x0
18:42:00 : ath0: deauthenticated (Reason: 0)
18:42:00 : ath9k: Set channel: 2412 MHz
18:42:00 : ath9k: tx chmask: 1, rx chmask: 1
18:42:00 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:00 : ath9k: BSS Changed PREAMBLE 0
18:42:00 : ath9k: BSS Changed CTS PROT 0
18:42:00 : ath9k: BSS Changed ASSOC 0
18:42:00 : ath9k: Bss Info DISSOC
18:42:01 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:42:01 : ath0 direct probe responded
18:42:01 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:42:01 : ath0: authenticated
18:42:01 : ath0: associate with AP 00:1b:11:60:7a:3d
18:42:01 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:42:01 : ath0: associated
18:42:01 : ath9k: Choosing rate table for mode: 10
18:42:01 : ath9k: Set channel: 2412 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:01 : ath9k: BSS Changed PREAMBLE 1
18:42:01 : ath9k: BSS Changed ASSOC 1
18:42:01 : ath9k: Bss Info ASSOC 4
18:42:01 : ath9k: Set HW RX filter: 0x10
18:42:01 : ath9k: Set channel: 2412 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2417 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2422 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2427 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2432 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2437 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2442 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2447 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2452 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2457 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:42:01 : ath9k: Set channel: 2462 MHz
18:42:01 : ath9k: tx chmask: 1, rx chmask: 1
18:42:01 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:42:02 : ath9k: Set channel: 2412 MHz
18:42:02 : ath9k: tx chmask: 1, rx chmask: 1
18:42:02 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:02 : ath9k: Set HW RX filter: 0x0
18:42:13 : ath0: deauthenticated (Reason: 0)
18:42:13 : ath9k: Set channel: 2412 MHz
18:42:13 : ath9k: tx chmask: 1, rx chmask: 1
18:42:13 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:13 : ath9k: BSS Changed PREAMBLE 0
18:42:13 : ath9k: BSS Changed CTS PROT 0
18:42:13 : ath9k: BSS Changed ASSOC 0
18:42:13 : ath9k: Bss Info DISSOC
18:42:14 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:42:14 : ath0 direct probe responded
18:42:14 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:42:14 : ath0: authenticated
18:42:14 : ath0: associate with AP 00:1b:11:60:7a:3d
18:42:14 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:42:14 : ath0: associated
18:42:14 : ath9k: Choosing rate table for mode: 10
18:42:14 : ath9k: Set channel: 2412 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:14 : ath9k: BSS Changed PREAMBLE 1
18:42:14 : ath9k: BSS Changed ASSOC 1
18:42:14 : ath9k: Bss Info ASSOC 4
18:42:14 : ath9k: Set HW RX filter: 0x10
18:42:14 : ath9k: Set channel: 2412 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2417 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2422 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2427 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2432 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2437 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2442 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2447 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2452 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2457 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:42:14 : ath9k: Set channel: 2462 MHz
18:42:14 : ath9k: tx chmask: 1, rx chmask: 1
18:42:14 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:42:15 : ath9k: Set channel: 2412 MHz
18:42:15 : ath9k: tx chmask: 1, rx chmask: 1
18:42:15 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:15 : ath9k: Set HW RX filter: 0x0
18:42:26 : ath0: deauthenticated (Reason: 0)
18:42:26 : ath9k: Set channel: 2412 MHz
18:42:26 : ath9k: tx chmask: 1, rx chmask: 1
18:42:26 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:26 : ath9k: BSS Changed PREAMBLE 0
18:42:26 : ath9k: BSS Changed CTS PROT 0
18:42:26 : ath9k: BSS Changed ASSOC 0
18:42:26 : ath9k: Bss Info DISSOC
18:42:27 : ath0: direct probe to AP 00:1b:11:60:7a:3d try 1
18:42:27 : ath0 direct probe responded
18:42:27 : ath0: authenticate with AP 00:1b:11:60:7a:3d
18:42:27 : ath0: authenticated
18:42:27 : ath0: associate with AP 00:1b:11:60:7a:3d
18:42:27 : ath0: RX ReassocResp from 00:1b:11:60:7a:3d (capab=0x431 status=0 aid=4)
18:42:27 : ath0: associated
18:42:27 : ath9k: Choosing rate table for mode: 10
18:42:27 : ath9k: Set channel: 2412 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:27 : ath9k: BSS Changed PREAMBLE 1
18:42:27 : ath9k: BSS Changed ASSOC 1
18:42:27 : ath9k: Bss Info ASSOC 4
18:42:27 : ath9k: Set HW RX filter: 0x10
18:42:27 : ath9k: Set channel: 2412 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2412 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2417 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2412 MHz) -> (2417 MHz), cflags:300e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2422 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2417 MHz) -> (2422 MHz), cflags:300e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2427 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2422 MHz) -> (2427 MHz), cflags:300e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2432 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2427 MHz) -> (2432 MHz), cflags:700e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2437 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2432 MHz) -> (2437 MHz), cflags:700e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2442 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2437 MHz) -> (2442 MHz), cflags:700e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2447 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2442 MHz) -> (2447 MHz), cflags:500e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2452 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2447 MHz) -> (2452 MHz), cflags:500e0, chanwidth: 0
18:42:27 : ath9k: Set channel: 2457 MHz
18:42:27 : ath9k: tx chmask: 1, rx chmask: 1
18:42:27 : ath9k: (2452 MHz) -> (2457 MHz), cflags:500e0, chanwidth: 0
18:42:28 : ath9k: Set channel: 2462 MHz
18:42:28 : ath9k: tx chmask: 1, rx chmask: 1
18:42:28 : ath9k: (2457 MHz) -> (2462 MHz), cflags:500e0, chanwidth: 0
18:42:28 : ath9k: Set channel: 2412 MHz
18:42:28 : ath9k: tx chmask: 1, rx chmask: 1
18:42:28 : ath9k: (2462 MHz) -> (2412 MHz), cflags:300e0, chanwidth: 0
18:42:28 : ath9k: Set HW RX filter: 0x0

/Mats

2008-12-07 17:44:39

by Johannes Berg

[permalink] [raw]
Subject: Re: [RFT] mac80211: fix HT channel selection

On Sun, 2008-12-07 at 22:16 +0530, Sujith wrote:

> The check for AP mode should be removed.

Good point.

> The patch below applies on top of your
> patch and should handle the new changes properly.

Yeah, looks appropriate. Since you probably can never change channel w/o
changing HT, we could probably remove _CHANGED_HT completely.

> But I'll test it tomorrow by switching like crazy among ht20/ht40/legacy,
> in both STA and AP mode. :)

I won't really have the possibility (nor time) to test it at all, if it
works (or you can fix it) feel free to just send it to John with those
fixes below rolled in.

johannes


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2008-12-07 18:43:56

by Johannes Berg

[permalink] [raw]
Subject: Re: [RFT] mac80211: fix HT channel selection

On Sun, 2008-12-07 at 19:38 +0100, Mats Johannesson wrote:
> On Sun, 07 Dec 2008 17:30:46 +0100 Johannes Berg wrote:
> > HT management is done differently for AP and STA modes, unify
> > to just the ->config() callback since HT is fundamentally a
> > PHY property and cannot be per-BSS.
> >
> > Signed-off-by: Johannes Berg <[email protected]>
> > ---
> > Please test. Mats, this might fix your problem (if it applies on top
> > of the patch that fixes the panic)
>
> Crazy results. Made two 2.6.28-rc7-wl kernels with different outcomes:

Ok, strange, but I don't know enough about ath9k to help you, sorry.

johannes


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2008-12-07 16:41:51

by Ivo Van Doorn

[permalink] [raw]
Subject: Re: [RFT] mac80211: fix HT channel selection

On Sunday 07 December 2008, Johannes Berg wrote:
> HT management is done differently for AP and STA modes, unify
> to just the ->config() callback since HT is fundamentally a
> PHY property and cannot be per-BSS.

Ah very nice, I was recently hit this for the rt2x00 implementation,
intended to send a mail about it when I had done some more research. :)

Thanks!

> Signed-off-by: Johannes Berg <[email protected]>
> ---
> Please test. Mats, this might fix your problem (if it applies on top of
> the patch that fixes the panic)
>
> drivers/net/wireless/ath9k/main.c | 71 ---------------------------------
> drivers/net/wireless/iwlwifi/iwl-agn.c | 21 ++++++---
> drivers/net/wireless/mac80211_hwsim.c | 7 ---
> include/net/mac80211.h | 5 --
> net/mac80211/ht.c | 57 --------------------------
> net/mac80211/ieee80211_i.h | 3 -
> net/mac80211/mlme.c | 67 +++++++++++++++++++++++++++++++
> 7 files changed, 85 insertions(+), 146 deletions(-)