aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c30
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.h1
8 files changed, 40 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 24743b97ba35..1daf159914ad 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -217,6 +217,7 @@ static struct iwl_lib_ops iwl1000_lib = {
217 .set_ct_kill = iwl1000_set_ct_threshold, 217 .set_ct_kill = iwl1000_set_ct_threshold,
218 }, 218 },
219 .manage_ibss_station = iwlagn_manage_ibss_station, 219 .manage_ibss_station = iwlagn_manage_ibss_station,
220 .update_bcast_station = iwl_update_bcast_station,
220 .debugfs_ops = { 221 .debugfs_ops = {
221 .rx_stats_read = iwl_ucode_rx_stats_read, 222 .rx_stats_read = iwl_ucode_rx_stats_read,
222 .tx_stats_read = iwl_ucode_tx_stats_read, 223 .tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 67526a1be025..1dd3bc4c107e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2280,6 +2280,7 @@ static struct iwl_lib_ops iwl4965_lib = {
2280 .set_ct_kill = iwl4965_set_ct_threshold, 2280 .set_ct_kill = iwl4965_set_ct_threshold,
2281 }, 2281 },
2282 .manage_ibss_station = iwlagn_manage_ibss_station, 2282 .manage_ibss_station = iwlagn_manage_ibss_station,
2283 .update_bcast_station = iwl_update_bcast_station,
2283 .debugfs_ops = { 2284 .debugfs_ops = {
2284 .rx_stats_read = iwl_ucode_rx_stats_read, 2285 .rx_stats_read = iwl_ucode_rx_stats_read,
2285 .tx_stats_read = iwl_ucode_tx_stats_read, 2286 .tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index fa2dbb56177c..b8f3e20f2c80 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -393,6 +393,7 @@ static struct iwl_lib_ops iwl5000_lib = {
393 .set_ct_kill = iwl5000_set_ct_threshold, 393 .set_ct_kill = iwl5000_set_ct_threshold,
394 }, 394 },
395 .manage_ibss_station = iwlagn_manage_ibss_station, 395 .manage_ibss_station = iwlagn_manage_ibss_station,
396 .update_bcast_station = iwl_update_bcast_station,
396 .debugfs_ops = { 397 .debugfs_ops = {
397 .rx_stats_read = iwl_ucode_rx_stats_read, 398 .rx_stats_read = iwl_ucode_rx_stats_read,
398 .tx_stats_read = iwl_ucode_tx_stats_read, 399 .tx_stats_read = iwl_ucode_tx_stats_read,
@@ -455,6 +456,7 @@ static struct iwl_lib_ops iwl5150_lib = {
455 .set_ct_kill = iwl5150_set_ct_threshold, 456 .set_ct_kill = iwl5150_set_ct_threshold,
456 }, 457 },
457 .manage_ibss_station = iwlagn_manage_ibss_station, 458 .manage_ibss_station = iwlagn_manage_ibss_station,
459 .update_bcast_station = iwl_update_bcast_station,
458 .debugfs_ops = { 460 .debugfs_ops = {
459 .rx_stats_read = iwl_ucode_rx_stats_read, 461 .rx_stats_read = iwl_ucode_rx_stats_read,
460 .tx_stats_read = iwl_ucode_tx_stats_read, 462 .tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index c909a9c5e5e1..61cf0b3e88c2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -318,6 +318,7 @@ static struct iwl_lib_ops iwl6000_lib = {
318 .set_calib_version = iwl6000_set_calib_version, 318 .set_calib_version = iwl6000_set_calib_version,
319 }, 319 },
320 .manage_ibss_station = iwlagn_manage_ibss_station, 320 .manage_ibss_station = iwlagn_manage_ibss_station,
321 .update_bcast_station = iwl_update_bcast_station,
321 .debugfs_ops = { 322 .debugfs_ops = {
322 .rx_stats_read = iwl_ucode_rx_stats_read, 323 .rx_stats_read = iwl_ucode_rx_stats_read,
323 .tx_stats_read = iwl_ucode_tx_stats_read, 324 .tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 329e5107b5c3..f47a58ff3252 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2110,6 +2110,9 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
2110 iwl_set_flags_for_band(priv, conf->channel->band, priv->vif); 2110 iwl_set_flags_for_band(priv, conf->channel->band, priv->vif);
2111 spin_unlock_irqrestore(&priv->lock, flags); 2111 spin_unlock_irqrestore(&priv->lock, flags);
2112 2112
2113 if (priv->cfg->ops->lib->update_bcast_station)
2114 ret = priv->cfg->ops->lib->update_bcast_station(priv);
2115
2113 set_ch_out: 2116 set_ch_out:
2114 /* The list of supported rates and rate mask can be different 2117 /* The list of supported rates and rate mask can be different
2115 * for each band; since the band may have changed, reset 2118 * for each band; since the band may have changed, reset
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index cdcb51d8bc21..15930e064022 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -196,6 +196,7 @@ struct iwl_lib_ops {
196 /* station management */ 196 /* station management */
197 int (*manage_ibss_station)(struct iwl_priv *priv, 197 int (*manage_ibss_station)(struct iwl_priv *priv,
198 struct ieee80211_vif *vif, bool add); 198 struct ieee80211_vif *vif, bool add);
199 int (*update_bcast_station)(struct iwl_priv *priv);
199 /* recover from tx queue stall */ 200 /* recover from tx queue stall */
200 void (*recover_from_tx_stall)(unsigned long data); 201 void (*recover_from_tx_stall)(unsigned long data);
201 /* check for plcp health */ 202 /* check for plcp health */
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 6a9cd08bd449..9511f03f07e0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -1259,6 +1259,36 @@ int iwl_alloc_bcast_station(struct iwl_priv *priv, bool init_lq)
1259} 1259}
1260EXPORT_SYMBOL_GPL(iwl_alloc_bcast_station); 1260EXPORT_SYMBOL_GPL(iwl_alloc_bcast_station);
1261 1261
1262/**
1263 * iwl_update_bcast_station - update broadcast station's LQ command
1264 *
1265 * Only used by iwlagn. Placed here to have all bcast station management
1266 * code together.
1267 */
1268int iwl_update_bcast_station(struct iwl_priv *priv)
1269{
1270 unsigned long flags;
1271 struct iwl_link_quality_cmd *link_cmd;
1272 u8 sta_id = priv->hw_params.bcast_sta_id;
1273
1274 link_cmd = iwl_sta_alloc_lq(priv, sta_id);
1275 if (!link_cmd) {
1276 IWL_ERR(priv, "Unable to initialize rate scaling for bcast station.\n");
1277 return -ENOMEM;
1278 }
1279
1280 spin_lock_irqsave(&priv->sta_lock, flags);
1281 if (priv->stations[sta_id].lq)
1282 kfree(priv->stations[sta_id].lq);
1283 else
1284 IWL_DEBUG_INFO(priv, "Bcast station rate scaling has not been initialized yet.\n");
1285 priv->stations[sta_id].lq = link_cmd;
1286 spin_unlock_irqrestore(&priv->sta_lock, flags);
1287
1288 return 0;
1289}
1290EXPORT_SYMBOL_GPL(iwl_update_bcast_station);
1291
1262void iwl_dealloc_bcast_station(struct iwl_priv *priv) 1292void iwl_dealloc_bcast_station(struct iwl_priv *priv)
1263{ 1293{
1264 unsigned long flags; 1294 unsigned long flags;
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.h b/drivers/net/wireless/iwlwifi/iwl-sta.h
index 619bb99d85cf..ba95b1a590a5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.h
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.h
@@ -60,6 +60,7 @@ void iwl_restore_stations(struct iwl_priv *priv);
60void iwl_clear_ucode_stations(struct iwl_priv *priv); 60void iwl_clear_ucode_stations(struct iwl_priv *priv);
61int iwl_alloc_bcast_station(struct iwl_priv *priv, bool init_lq); 61int iwl_alloc_bcast_station(struct iwl_priv *priv, bool init_lq);
62void iwl_dealloc_bcast_station(struct iwl_priv *priv); 62void iwl_dealloc_bcast_station(struct iwl_priv *priv);
63int iwl_update_bcast_station(struct iwl_priv *priv);
63int iwl_get_free_ucode_key_index(struct iwl_priv *priv); 64int iwl_get_free_ucode_key_index(struct iwl_priv *priv);
64int iwl_send_add_sta(struct iwl_priv *priv, 65int iwl_send_add_sta(struct iwl_priv *priv,
65 struct iwl_addsta_cmd *sta, u8 flags); 66 struct iwl_addsta_cmd *sta, u8 flags);