iwlwifi: make iwlwifi send beacons
authorDaniel C Halperin <daniel.c.halperin@intel.com>
Fri, 13 Nov 2009 19:56:34 +0000 (11:56 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 18 Nov 2009 22:09:06 +0000 (17:09 -0500)
Handle BSS_CHANGED_BEACON_ENABLED to enable the sending
of beacons. Also set the correct HT RXON and QoS config.

Signed-off-by: Daniel C Halperin <daniel.c.halperin@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-core.c

index 29f3b73..1c65065 100644 (file)
@@ -2563,6 +2563,10 @@ void iwl_config_ap(struct iwl_priv *priv)
                        IWL_WARN(priv, "REPLY_RXON_TIMING failed - "
                                        "Attempting to continue.\n");
 
+               /* AP has all antennas */
+               priv->chain_noise_data.active_chains =
+                       priv->hw_params.valid_rx_ant;
+               iwl_set_rxon_ht(priv, &priv->current_ht_config);
                if (priv->cfg->ops->hcmd->set_rxon_chain)
                        priv->cfg->ops->hcmd->set_rxon_chain(priv);
 
@@ -2591,6 +2595,7 @@ void iwl_config_ap(struct iwl_priv *priv)
                /* restore RXON assoc */
                priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
                iwlcore_commit_rxon(priv);
+               iwl_reset_qos(priv);
                spin_lock_irqsave(&priv->lock, flags);
                iwl_activate_qos(priv, 1);
                spin_unlock_irqrestore(&priv->lock, flags);
index 33da44f..a2636f4 100644 (file)
@@ -2497,6 +2497,14 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
                }
        }
 
+       if ((changes & BSS_CHANGED_BEACON_ENABLED) &&
+           vif->bss_conf.enable_beacon) {
+               memcpy(priv->staging_rxon.bssid_addr,
+                      bss_conf->bssid, ETH_ALEN);
+               memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN);
+               iwlcore_config_ap(priv);
+       }
+
        mutex_unlock(&priv->mutex);
 
        IWL_DEBUG_MAC80211(priv, "leave\n");