aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinette Chatre <reinette.chatre@intel.com>2010-01-22 17:22:49 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-01-25 16:36:22 -0500
commit3459ab5a1c92eaf8b76e9fa1b6ca529cf83066f3 (patch)
treeda8acd0d103f0a36d7f0c6772fbc253599421c8e
parent1fa97aaeb7fb5111f69abfdb8db656ce19e4951e (diff)
iwlwifi: make broadcast station addition generic
Add function pointer for broadcast station addition so that we can call it in from iwlcore at a later time. We only distinguish between iwlagn and iwl3945 broadcast station addition. For the iwl3945 station addition we add that function to iwlcore since that is where most station functionality resides, making it part of iwl3945 will require significant code reorganization that will dilute station management functionality. This seems to be an efficient solution. It may seem as though we are removing error checking when adding the 3945 broadcast station but this error checking was never really necessary since the function returns the station id and the broadcast station id is always set. Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c7
-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-agn.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c11
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.h1
9 files changed, 23 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 85162e2c35d9..4281999cfaaa 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -140,6 +140,7 @@ static struct iwl_lib_ops iwl1000_lib = {
140 .temperature = iwl5000_temperature, 140 .temperature = iwl5000_temperature,
141 .set_ct_kill = iwl1000_set_ct_threshold, 141 .set_ct_kill = iwl1000_set_ct_threshold,
142 }, 142 },
143 .add_bcast_station = iwl_add_bcast_station,
143}; 144};
144 145
145static const struct iwl_ops iwl1000_ops = { 146static const struct iwl_ops iwl1000_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 764479f74c8b..57194bbd2762 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -1951,11 +1951,7 @@ static int iwl3945_commit_rxon(struct iwl_priv *priv)
1951 } 1951 }
1952 1952
1953 /* Add the broadcast address so we can send broadcast frames */ 1953 /* Add the broadcast address so we can send broadcast frames */
1954 if (iwl_add_station(priv, iwl_bcast_addr, false, CMD_SYNC, NULL) == 1954 priv->cfg->ops->lib->add_bcast_station(priv);
1955 IWL_INVALID_STATION) {
1956 IWL_ERR(priv, "Error adding BROADCAST address for transmit.\n");
1957 return -EIO;
1958 }
1959 1955
1960 /* If we have set the ASSOC_MSK and we are in BSS mode then 1956 /* If we have set the ASSOC_MSK and we are in BSS mode then
1961 * add the IWL_AP_ID to the station rate table */ 1957 * add the IWL_AP_ID to the station rate table */
@@ -2796,6 +2792,7 @@ static struct iwl_lib_ops iwl3945_lib = {
2796 .post_associate = iwl3945_post_associate, 2792 .post_associate = iwl3945_post_associate,
2797 .isr = iwl_isr_legacy, 2793 .isr = iwl_isr_legacy,
2798 .config_ap = iwl3945_config_ap, 2794 .config_ap = iwl3945_config_ap,
2795 .add_bcast_station = iwl3945_add_bcast_station,
2799}; 2796};
2800 2797
2801static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = { 2798static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index c36fef99b4b0..aebe8c51d3e1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2206,6 +2206,7 @@ static struct iwl_lib_ops iwl4965_lib = {
2206 .temperature = iwl4965_temperature_calib, 2206 .temperature = iwl4965_temperature_calib,
2207 .set_ct_kill = iwl4965_set_ct_threshold, 2207 .set_ct_kill = iwl4965_set_ct_threshold,
2208 }, 2208 },
2209 .add_bcast_station = iwl_add_bcast_station,
2209}; 2210};
2210 2211
2211static const struct iwl_ops iwl4965_ops = { 2212static const struct iwl_ops iwl4965_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index cbbc0e4f2c76..6027e2a658d1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -1503,6 +1503,7 @@ struct iwl_lib_ops iwl5000_lib = {
1503 .temperature = iwl5000_temperature, 1503 .temperature = iwl5000_temperature,
1504 .set_ct_kill = iwl5000_set_ct_threshold, 1504 .set_ct_kill = iwl5000_set_ct_threshold,
1505 }, 1505 },
1506 .add_bcast_station = iwl_add_bcast_station,
1506}; 1507};
1507 1508
1508static struct iwl_lib_ops iwl5150_lib = { 1509static struct iwl_lib_ops iwl5150_lib = {
@@ -1556,6 +1557,7 @@ static struct iwl_lib_ops iwl5150_lib = {
1556 .temperature = iwl5150_temperature, 1557 .temperature = iwl5150_temperature,
1557 .set_ct_kill = iwl5150_set_ct_threshold, 1558 .set_ct_kill = iwl5150_set_ct_threshold,
1558 }, 1559 },
1560 .add_bcast_station = iwl_add_bcast_station,
1559}; 1561};
1560 1562
1561static const struct iwl_ops iwl5000_ops = { 1563static const struct iwl_ops iwl5000_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index f89ef4aa78fd..81e03e33ec73 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -266,6 +266,7 @@ static struct iwl_lib_ops iwl6000_lib = {
266 .temperature = iwl5000_temperature, 266 .temperature = iwl5000_temperature,
267 .set_ct_kill = iwl6000_set_ct_threshold, 267 .set_ct_kill = iwl6000_set_ct_threshold,
268 }, 268 },
269 .add_bcast_station = iwl_add_bcast_station,
269}; 270};
270 271
271static const struct iwl_ops iwl6000_ops = { 272static const struct iwl_ops iwl6000_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index e9f786443d1f..bed5dda8d6b2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -203,7 +203,8 @@ int iwl_commit_rxon(struct iwl_priv *priv)
203 priv->start_calib = 0; 203 priv->start_calib = 0;
204 204
205 /* Add the broadcast address so we can send broadcast frames */ 205 /* Add the broadcast address so we can send broadcast frames */
206 iwl_add_bcast_station(priv); 206 priv->cfg->ops->lib->add_bcast_station(priv);
207
207 208
208 /* If we have set the ASSOC_MSK and we are in BSS mode then 209 /* If we have set the ASSOC_MSK and we are in BSS mode then
209 * add the IWL_AP_ID to the station rate table */ 210 * add the IWL_AP_ID to the station rate table */
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 661918347d48..e14e32976b80 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -188,6 +188,8 @@ struct iwl_lib_ops {
188 188
189 /* temperature */ 189 /* temperature */
190 struct iwl_temp_ops temp_ops; 190 struct iwl_temp_ops temp_ops;
191 /* station management */
192 void (*add_bcast_station)(struct iwl_priv *priv);
191}; 193};
192 194
193struct iwl_led_ops { 195struct iwl_led_ops {
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 842f15653238..fcac73cf82bc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -1127,6 +1127,7 @@ static void iwl_sta_init_bcast_lq(struct iwl_priv *priv)
1127 */ 1127 */
1128void iwl_add_bcast_station(struct iwl_priv *priv) 1128void iwl_add_bcast_station(struct iwl_priv *priv)
1129{ 1129{
1130 IWL_DEBUG_INFO(priv, "Adding broadcast station to station table\n");
1130 iwl_add_station(priv, iwl_bcast_addr, false, CMD_SYNC, NULL); 1131 iwl_add_station(priv, iwl_bcast_addr, false, CMD_SYNC, NULL);
1131 1132
1132 /* Set up default rate scaling table in device's station table */ 1133 /* Set up default rate scaling table in device's station table */
@@ -1135,6 +1136,16 @@ void iwl_add_bcast_station(struct iwl_priv *priv)
1135EXPORT_SYMBOL(iwl_add_bcast_station); 1136EXPORT_SYMBOL(iwl_add_bcast_station);
1136 1137
1137/** 1138/**
1139 * iwl3945_add_bcast_station - add broadcast station into station table.
1140 */
1141void iwl3945_add_bcast_station(struct iwl_priv *priv)
1142{
1143 IWL_DEBUG_INFO(priv, "Adding broadcast station to station table\n");
1144 iwl_add_station(priv, iwl_bcast_addr, false, CMD_SYNC, NULL);
1145}
1146EXPORT_SYMBOL(iwl3945_add_bcast_station);
1147
1148/**
1138 * iwl_get_sta_id - Find station's index within station table 1149 * iwl_get_sta_id - Find station's index within station table
1139 * 1150 *
1140 * If new IBSS station, create new entry in station table 1151 * If new IBSS station, create new entry in station table
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.h b/drivers/net/wireless/iwlwifi/iwl-sta.h
index 8c6850d03e47..2dc35fe28f56 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.h
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.h
@@ -53,6 +53,7 @@ void iwl_update_tkip_key(struct iwl_priv *priv,
53 53
54int iwl_rxon_add_station(struct iwl_priv *priv, const u8 *addr, bool is_ap); 54int iwl_rxon_add_station(struct iwl_priv *priv, const u8 *addr, bool is_ap);
55void iwl_add_bcast_station(struct iwl_priv *priv); 55void iwl_add_bcast_station(struct iwl_priv *priv);
56void iwl3945_add_bcast_station(struct iwl_priv *priv);
56int iwl_remove_station(struct iwl_priv *priv, const u8 *addr, bool is_ap); 57int iwl_remove_station(struct iwl_priv *priv, const u8 *addr, bool is_ap);
57void iwl_clear_stations_table(struct iwl_priv *priv); 58void iwl_clear_stations_table(struct iwl_priv *priv);
58int iwl_get_free_ucode_key_index(struct iwl_priv *priv); 59int iwl_get_free_ucode_key_index(struct iwl_priv *priv);