]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
iwlagn: fix PAN slot timing wrt. DTIM
authorJohannes Berg <johannes.berg@intel.com>
Thu, 11 Nov 2010 02:25:49 +0000 (18:25 -0800)
committerWey-Yi Guy <wey-yi.w.guy@intel.com>
Tue, 16 Nov 2010 15:46:49 +0000 (07:46 -0800)
When the DTIM is not 1, then the slot timing is in
some cases required to be calclulated based on the
DTIM interval instead of the beacon interval, fix
that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c

index ffb2f4111ad0bbbec4db0b19c7edd74425a8d476..366340f3fb0f076a2af46ae4a1c50325185803ba 100644 (file)
@@ -307,6 +307,7 @@ static int iwlagn_set_pan_params(struct iwl_priv *priv)
 
        if (ctx_bss->vif && ctx_pan->vif) {
                int bcnint = ctx_pan->vif->bss_conf.beacon_int;
+               int dtim = ctx_pan->vif->bss_conf.dtim_period ?: 1;
 
                /* should be set, but seems unused?? */
                cmd.flags |= cpu_to_le16(IWL_WIPAN_PARAMS_FLG_SLOTTED_MODE);
@@ -329,10 +330,10 @@ static int iwlagn_set_pan_params(struct iwl_priv *priv)
                if (test_bit(STATUS_SCAN_HW, &priv->status) ||
                    (!ctx_bss->vif->bss_conf.idle &&
                     !ctx_bss->vif->bss_conf.assoc)) {
-                       slot0 = bcnint * 3 - 20;
+                       slot0 = dtim * bcnint * 3 - 20;
                        slot1 = 20;
                } else if (!ctx_pan->vif->bss_conf.idle &&
-                           !ctx_pan->vif->bss_conf.assoc) {
+                          !ctx_pan->vif->bss_conf.assoc) {
                        slot1 = bcnint * 3 - 20;
                        slot0 = 20;
                }