iwlwifi: use dtim_period from association, and set listen_interval
authorTomas Winkler <tomas.winkler@intel.com>
Sat, 19 Jul 2008 01:41:24 +0000 (04:41 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 4 Aug 2008 19:09:10 +0000 (15:09 -0400)
This patch uses dtim_period from association, and sets the listen_interval.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl4965-base.c

index cd6d668f4e001e0be3939416f812554b48169a00..5e57f3ae2ea6012ba5c38a168d1003645fc6b1ab 100644 (file)
@@ -666,8 +666,7 @@ struct iwl4965_rxon_assoc_cmd {
        __le16 reserved;
 } __attribute__ ((packed));
 
-
-
+#define IWL_CONN_MAX_LISTEN_INTERVAL   10
 
 /*
  * REPLY_RXON_TIMING = 0x14 (command, has simple generic response)
index 60d443e77c386fb8ea9f26b4f5588171f4c45d6e..96beacf703a6225eb675457eefcc70934ae6157e 100644 (file)
@@ -827,6 +827,7 @@ int iwl_setup_mac(struct iwl_priv *priv)
                hw->ampdu_queues = priv->cfg->mod_params->num_of_ampdu_queues;
 
        hw->conf.beacon_int = 100;
+       hw->max_listen_interval = IWL_CONN_MAX_LISTEN_INTERVAL;
 
        if (priv->bands[IEEE80211_BAND_2GHZ].n_channels)
                priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
index 9db6aac0218508439d0c1a19606fbd356c23e0f5..f71b3f3f81ba96de8ec2aaa59b7b7b9999412ba8 100644 (file)
@@ -639,7 +639,6 @@ static void iwl_activate_qos(struct iwl_priv *priv, u8 force)
 }
 
 #define MAX_UCODE_BEACON_INTERVAL      4096
-#define INTEL_CONN_LISTEN_INTERVAL     __constant_cpu_to_le16(0xA)
 
 static __le16 iwl4965_adjust_beacon_interval(u16 beacon_val)
 {
@@ -669,7 +668,7 @@ static void iwl4965_setup_rxon_timing(struct iwl_priv *priv)
        priv->rxon_timing.timestamp.dw[0] =
                                cpu_to_le32(priv->timestamp & 0xFFFFFFFF);
 
-       priv->rxon_timing.listen_interval = INTEL_CONN_LISTEN_INTERVAL;
+       priv->rxon_timing.listen_interval = cpu_to_le16(conf->listen_interval);
 
        tsf = priv->timestamp;
 
@@ -2835,6 +2834,7 @@ static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co
 
        spin_lock_irqsave(&priv->lock, flags);
 
+
        /* if we are switching from ht to 2.4 clear flags
         * from any ht related info since 2.4 does not
         * support ht */
@@ -3164,6 +3164,7 @@ static void iwl4965_bss_info_changed(struct ieee80211_hw *hw,
                if (bss_conf->assoc) {
                        priv->assoc_id = bss_conf->aid;
                        priv->beacon_int = bss_conf->beacon_int;
+                       priv->power_data.dtim_period = bss_conf->dtim_period;
                        priv->timestamp = bss_conf->timestamp;
                        priv->assoc_capability = bss_conf->assoc_capability;
                        priv->next_scan_jiffies = jiffies +