2008-09-16 06:05:28

by Zhu Yi

[permalink] [raw]
Subject: [PATCH 1/2] iwlwifi: don't delay scan in IBSS mode

From: Tomas Winkler <[email protected]>

Scan need to be delayed only after association to allow EAPOL
exchange. We don't need the delay for IBSS mode.

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Zhu Yi <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-agn.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 2737627..2652672 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2568,8 +2568,6 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
iwl_chain_noise_reset(priv);
priv->start_calib = 1;

- /* we have just associated, don't start scan too early */
- priv->next_scan_jiffies = jiffies + IWL_DELAY_NEXT_SCAN;
}

static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf);
@@ -3171,6 +3169,10 @@ static void iwl4965_bss_info_changed(struct ieee80211_hw *hw,
priv->power_data.dtim_period = bss_conf->dtim_period;
priv->timestamp = bss_conf->timestamp;
priv->assoc_capability = bss_conf->assoc_capability;
+
+ /* we have just associated, don't start scan too early
+ * leave time for EAPOL echange complete
+ */
priv->next_scan_jiffies = jiffies +
IWL_DELAY_NEXT_SCAN_AFTER_ASSOC;
mutex_lock(&priv->mutex);
--
1.5.3.6



2008-09-16 09:30:37

by Tomas Winkler

[permalink] [raw]
Subject: Re: [PATCH 1/2] iwlwifi: don't delay scan in IBSS mode

> + /* we have just associated, don't start scan too early
> + * leave time for EAPOL echange complete
> + */
John please fix this little typo when applying (echange complete ->
exchange to complete )
Thanks
Tomas

2008-09-16 06:53:47

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 1/2] iwlwifi: don't delay scan in IBSS mode

On Tue, 2008-09-16 at 14:01 +0800, Zhu Yi wrote:
> From: Tomas Winkler <[email protected]>
>
> Scan need to be delayed only after association to allow EAPOL
> exchange. We don't need the delay for IBSS mode.

FWIW, I'd love to see that delay thing moved into mac80211.

johannes


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

2008-09-16 09:00:54

by Tomas Winkler

[permalink] [raw]
Subject: Re: [PATCH 1/2] iwlwifi: don't delay scan in IBSS mode

On Tue, Sep 16, 2008 at 9:53 AM, Johannes Berg
<[email protected]> wrote:
> On Tue, 2008-09-16 at 14:01 +0800, Zhu Yi wrote:
>> From: Tomas Winkler <[email protected]>
>>
>> Scan need to be delayed only after association to allow EAPOL
>> exchange. We don't need the delay for IBSS mode.
>
> FWIW, I'd love to see that delay thing moved into mac80211.

I'm just looking into this new scan proposals.
Tomas

2008-09-16 06:05:29

by Zhu Yi

[permalink] [raw]
Subject: [PATCH 2/2] iwlwifi: make PS use named constants

From: Tomas Winkler <[email protected]>

This patch adds named constants for configuring MIMO power save
chain settings.

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Zhu Yi <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-core.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index d80184e..8203887 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -697,8 +697,12 @@ void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_info *ht_info)
}
EXPORT_SYMBOL(iwl_set_rxon_ht);

-/*
- * Determine how many receiver/antenna chains to use.
+#define IWL_NUM_RX_CHAINS_MULTIPLE 3
+#define IWL_NUM_RX_CHAINS_SINGLE 2
+#define IWL_NUM_IDLE_CHAINS_DUAL 2
+#define IWL_NUM_IDLE_CHAINS_SINGLE 1
+
+/* Determine how many receiver/antenna chains to use.
* More provides better reception via diversity. Fewer saves power.
* MIMO (dual stream) requires at least 2, but works better with 3.
* This does not determine *which* chains to use, just how many.
@@ -711,9 +715,9 @@ static int iwl_get_active_rx_chain_count(struct iwl_priv *priv)
/* # of Rx chains to use when expecting MIMO. */
if (is_single || (!is_cam && (priv->current_ht_config.sm_ps ==
WLAN_HT_CAP_SM_PS_STATIC)))
- return 2;
+ return IWL_NUM_RX_CHAINS_SINGLE;
else
- return 3;
+ return IWL_NUM_RX_CHAINS_MULTIPLE;
}

static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
@@ -724,10 +728,11 @@ static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
switch (priv->current_ht_config.sm_ps) {
case WLAN_HT_CAP_SM_PS_STATIC:
case WLAN_HT_CAP_SM_PS_DYNAMIC:
- idle_cnt = (is_cam) ? 2 : 1;
+ idle_cnt = (is_cam) ? IWL_NUM_IDLE_CHAINS_DUAL :
+ IWL_NUM_IDLE_CHAINS_SINGLE;
break;
case WLAN_HT_CAP_SM_PS_DISABLED:
- idle_cnt = (is_cam) ? active_cnt : 1;
+ idle_cnt = (is_cam) ? active_cnt : IWL_NUM_IDLE_CHAINS_SINGLE;
break;
case WLAN_HT_CAP_SM_PS_INVALID:
default:
@@ -796,7 +801,7 @@ void iwl_set_rxon_chain(struct iwl_priv *priv)

priv->staging_rxon.rx_chain = cpu_to_le16(rx_chain);

- if (!is_single && (active_rx_cnt >= 2) && is_cam)
+ if (!is_single && (active_rx_cnt >= IWL_NUM_RX_CHAINS_SINGLE) && is_cam)
priv->staging_rxon.rx_chain |= RXON_RX_CHAIN_MIMO_FORCE_MSK;
else
priv->staging_rxon.rx_chain &= ~RXON_RX_CHAIN_MIMO_FORCE_MSK;
--
1.5.3.6