diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-08-23 04:46:37 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-08-27 12:11:49 -0400 |
commit | 8f2d3d2ae17855e396483724f152f223e6f01bfe (patch) | |
tree | edaf836cba8426be3d93426beccc94848ccbfb42 /drivers | |
parent | dcef732c72fbe960de5069d3921bb6ce6847be58 (diff) |
iwlwifi: contextify command sending
Some commands will have different command IDs
for different contexts, so we need to store
those IDs in the context structure and use
them instead of hardcoding the commands.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 |
5 files changed, 18 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c index 3e5069943dde..2d4cdb027aa6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | |||
@@ -77,7 +77,7 @@ int iwlagn_send_rxon_assoc(struct iwl_priv *priv, | |||
77 | ctx->staging.ofdm_ht_triple_stream_basic_rates; | 77 | ctx->staging.ofdm_ht_triple_stream_basic_rates; |
78 | rxon_assoc.acquisition_data = ctx->staging.acquisition_data; | 78 | rxon_assoc.acquisition_data = ctx->staging.acquisition_data; |
79 | 79 | ||
80 | ret = iwl_send_cmd_pdu_async(priv, REPLY_RXON_ASSOC, | 80 | ret = iwl_send_cmd_pdu_async(priv, ctx->rxon_assoc_cmd, |
81 | sizeof(rxon_assoc), &rxon_assoc, NULL); | 81 | sizeof(rxon_assoc), &rxon_assoc, NULL); |
82 | if (ret) | 82 | if (ret) |
83 | return ret; | 83 | return ret; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 23db6c3e9aee..d3714f076a0c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -152,7 +152,7 @@ int iwl_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
152 | IWL_DEBUG_INFO(priv, "Toggling associated bit on current RXON\n"); | 152 | IWL_DEBUG_INFO(priv, "Toggling associated bit on current RXON\n"); |
153 | active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK; | 153 | active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK; |
154 | 154 | ||
155 | ret = iwl_send_cmd_pdu(priv, REPLY_RXON, | 155 | ret = iwl_send_cmd_pdu(priv, ctx->rxon_cmd, |
156 | sizeof(struct iwl_rxon_cmd), | 156 | sizeof(struct iwl_rxon_cmd), |
157 | active_rxon); | 157 | active_rxon); |
158 | 158 | ||
@@ -187,7 +187,7 @@ int iwl_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
187 | * stations is needed after it (the RXON command) completes | 187 | * stations is needed after it (the RXON command) completes |
188 | */ | 188 | */ |
189 | if (!new_assoc) { | 189 | if (!new_assoc) { |
190 | ret = iwl_send_cmd_pdu(priv, REPLY_RXON, | 190 | ret = iwl_send_cmd_pdu(priv, ctx->rxon_cmd, |
191 | sizeof(struct iwl_rxon_cmd), &ctx->staging); | 191 | sizeof(struct iwl_rxon_cmd), &ctx->staging); |
192 | if (ret) { | 192 | if (ret) { |
193 | IWL_ERR(priv, "Error setting new RXON (%d)\n", ret); | 193 | IWL_ERR(priv, "Error setting new RXON (%d)\n", ret); |
@@ -209,7 +209,7 @@ int iwl_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
209 | /* Apply the new configuration | 209 | /* Apply the new configuration |
210 | * RXON assoc doesn't clear the station table in uCode, | 210 | * RXON assoc doesn't clear the station table in uCode, |
211 | */ | 211 | */ |
212 | ret = iwl_send_cmd_pdu(priv, REPLY_RXON, | 212 | ret = iwl_send_cmd_pdu(priv, ctx->rxon_cmd, |
213 | sizeof(struct iwl_rxon_cmd), &ctx->staging); | 213 | sizeof(struct iwl_rxon_cmd), &ctx->staging); |
214 | if (ret) { | 214 | if (ret) { |
215 | IWL_ERR(priv, "Error setting new RXON (%d)\n", ret); | 215 | IWL_ERR(priv, "Error setting new RXON (%d)\n", ret); |
@@ -3244,7 +3244,7 @@ void iwl_post_associate(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
3244 | 3244 | ||
3245 | ret = iwl_send_rxon_timing(priv, vif); | 3245 | ret = iwl_send_rxon_timing(priv, vif); |
3246 | if (ret) | 3246 | if (ret) |
3247 | IWL_WARN(priv, "REPLY_RXON_TIMING failed - " | 3247 | IWL_WARN(priv, "RXON timing - " |
3248 | "Attempting to continue.\n"); | 3248 | "Attempting to continue.\n"); |
3249 | 3249 | ||
3250 | ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; | 3250 | ctx->staging.filter_flags |= RXON_FILTER_ASSOC_MSK; |
@@ -3481,7 +3481,7 @@ void iwl_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
3481 | /* RXON Timing */ | 3481 | /* RXON Timing */ |
3482 | ret = iwl_send_rxon_timing(priv, vif); | 3482 | ret = iwl_send_rxon_timing(priv, vif); |
3483 | if (ret) | 3483 | if (ret) |
3484 | IWL_WARN(priv, "REPLY_RXON_TIMING failed - " | 3484 | IWL_WARN(priv, "RXON timing failed - " |
3485 | "Attempting to continue.\n"); | 3485 | "Attempting to continue.\n"); |
3486 | 3486 | ||
3487 | /* AP has all antennas */ | 3487 | /* AP has all antennas */ |
@@ -4200,6 +4200,11 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
4200 | for (i = 0; i < NUM_IWL_RXON_CTX; i++) | 4200 | for (i = 0; i < NUM_IWL_RXON_CTX; i++) |
4201 | priv->contexts[i].ctxid = i; | 4201 | priv->contexts[i].ctxid = i; |
4202 | 4202 | ||
4203 | priv->contexts[IWL_RXON_CTX_BSS].rxon_cmd = REPLY_RXON; | ||
4204 | priv->contexts[IWL_RXON_CTX_BSS].rxon_timing_cmd = REPLY_RXON_TIMING; | ||
4205 | priv->contexts[IWL_RXON_CTX_BSS].rxon_assoc_cmd = REPLY_RXON_ASSOC; | ||
4206 | BUILD_BUG_ON(NUM_IWL_RXON_CTX != 1); | ||
4207 | |||
4203 | SET_IEEE80211_DEV(hw, &pdev->dev); | 4208 | SET_IEEE80211_DEV(hw, &pdev->dev); |
4204 | 4209 | ||
4205 | IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n"); | 4210 | IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n"); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index f7bfe59c0ca8..a145d17cd943 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c | |||
@@ -545,7 +545,7 @@ int iwl_send_rxon_timing(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
545 | le32_to_cpu(ctx->timing.beacon_init_val), | 545 | le32_to_cpu(ctx->timing.beacon_init_val), |
546 | le16_to_cpu(ctx->timing.atim_window)); | 546 | le16_to_cpu(ctx->timing.atim_window)); |
547 | 547 | ||
548 | return iwl_send_cmd_pdu(priv, REPLY_RXON_TIMING, | 548 | return iwl_send_cmd_pdu(priv, ctx->rxon_timing_cmd, |
549 | sizeof(ctx->timing), &ctx->timing); | 549 | sizeof(ctx->timing), &ctx->timing); |
550 | } | 550 | } |
551 | EXPORT_SYMBOL(iwl_send_rxon_timing); | 551 | EXPORT_SYMBOL(iwl_send_rxon_timing); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index da54bd53c99d..6a7e9ff4a88c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -1126,6 +1126,8 @@ struct iwl_rxon_context { | |||
1126 | struct iwl_rxon_time_cmd timing; | 1126 | struct iwl_rxon_time_cmd timing; |
1127 | 1127 | ||
1128 | u8 bcast_sta_id; | 1128 | u8 bcast_sta_id; |
1129 | |||
1130 | u8 rxon_cmd, rxon_assoc_cmd, rxon_timing_cmd; | ||
1129 | }; | 1131 | }; |
1130 | 1132 | ||
1131 | struct iwl_priv { | 1133 | struct iwl_priv { |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 630b8d641720..4321d970d58d 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -4013,6 +4013,10 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
4013 | for (i = 0; i < NUM_IWL_RXON_CTX; i++) | 4013 | for (i = 0; i < NUM_IWL_RXON_CTX; i++) |
4014 | priv->contexts[i].ctxid = i; | 4014 | priv->contexts[i].ctxid = i; |
4015 | 4015 | ||
4016 | priv->contexts[IWL_RXON_CTX_BSS].rxon_cmd = REPLY_RXON; | ||
4017 | priv->contexts[IWL_RXON_CTX_BSS].rxon_timing_cmd = REPLY_RXON_TIMING; | ||
4018 | priv->contexts[IWL_RXON_CTX_BSS].rxon_assoc_cmd = REPLY_RXON_ASSOC; | ||
4019 | |||
4016 | /* | 4020 | /* |
4017 | * Disabling hardware scan means that mac80211 will perform scans | 4021 | * Disabling hardware scan means that mac80211 will perform scans |
4018 | * "the hard way", rather than using device's scan. | 4022 | * "the hard way", rather than using device's scan. |