diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2012-06-21 04:53:44 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-25 03:37:58 -0400 |
commit | b04db9ac4f7641332e0133b2fd8f82e6e4553947 (patch) | |
tree | 4d4b0fc6009f865fa3866c9062d2ae76e8e13ada /drivers/net/wireless/iwlwifi/dvm/ucode.c | |
parent | e75dac921d88ac1fa1ad08686ab242556f8b888b (diff) |
iwlwifi: configure the queues from the op_mode
Since the op_mode defines the queue mapping, let it do it
completely through the API functions.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm/ucode.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/ucode.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/ucode.c b/drivers/net/wireless/iwlwifi/dvm/ucode.c index b3a314ba48c7..6d8d6dd7943f 100644 --- a/drivers/net/wireless/iwlwifi/dvm/ucode.c +++ b/drivers/net/wireless/iwlwifi/dvm/ucode.c | |||
@@ -226,13 +226,50 @@ int iwl_send_bt_env(struct iwl_priv *priv, u8 action, u8 type) | |||
226 | return ret; | 226 | return ret; |
227 | } | 227 | } |
228 | 228 | ||
229 | static const u8 iwlagn_default_queue_to_tx_fifo[] = { | ||
230 | IWL_TX_FIFO_VO, | ||
231 | IWL_TX_FIFO_VI, | ||
232 | IWL_TX_FIFO_BE, | ||
233 | IWL_TX_FIFO_BK, | ||
234 | }; | ||
235 | |||
236 | static const u8 iwlagn_ipan_queue_to_tx_fifo[] = { | ||
237 | IWL_TX_FIFO_VO, | ||
238 | IWL_TX_FIFO_VI, | ||
239 | IWL_TX_FIFO_BE, | ||
240 | IWL_TX_FIFO_BK, | ||
241 | IWL_TX_FIFO_BK_IPAN, | ||
242 | IWL_TX_FIFO_BE_IPAN, | ||
243 | IWL_TX_FIFO_VI_IPAN, | ||
244 | IWL_TX_FIFO_VO_IPAN, | ||
245 | IWL_TX_FIFO_BE_IPAN, | ||
246 | IWL_TX_FIFO_UNUSED, | ||
247 | IWL_TX_FIFO_AUX, | ||
248 | }; | ||
229 | 249 | ||
230 | static int iwl_alive_notify(struct iwl_priv *priv) | 250 | static int iwl_alive_notify(struct iwl_priv *priv) |
231 | { | 251 | { |
252 | const u8 *queue_to_txf; | ||
253 | u8 n_queues; | ||
232 | int ret; | 254 | int ret; |
255 | int i; | ||
233 | 256 | ||
234 | iwl_trans_fw_alive(priv->trans); | 257 | iwl_trans_fw_alive(priv->trans); |
235 | 258 | ||
259 | if (priv->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_PAN && | ||
260 | priv->eeprom_data->sku & EEPROM_SKU_CAP_IPAN_ENABLE) { | ||
261 | n_queues = ARRAY_SIZE(iwlagn_ipan_queue_to_tx_fifo); | ||
262 | queue_to_txf = iwlagn_ipan_queue_to_tx_fifo; | ||
263 | } else { | ||
264 | n_queues = ARRAY_SIZE(iwlagn_default_queue_to_tx_fifo); | ||
265 | queue_to_txf = iwlagn_default_queue_to_tx_fifo; | ||
266 | } | ||
267 | |||
268 | for (i = 0; i < n_queues; i++) | ||
269 | if (queue_to_txf[i] != IWL_TX_FIFO_UNUSED) | ||
270 | iwl_trans_ac_txq_enable(priv->trans, i, | ||
271 | queue_to_txf[i]); | ||
272 | |||
236 | priv->passive_no_rx = false; | 273 | priv->passive_no_rx = false; |
237 | priv->transport_queue_stop = 0; | 274 | priv->transport_queue_stop = 0; |
238 | 275 | ||