diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/utils.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/utils.c | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c index f0a114102c3f..8decf9953229 100644 --- a/drivers/net/wireless/iwlwifi/mvm/utils.c +++ b/drivers/net/wireless/iwlwifi/mvm/utils.c | |||
| @@ -432,7 +432,7 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm) | |||
| 432 | mvm->status, table.valid); | 432 | mvm->status, table.valid); |
| 433 | } | 433 | } |
| 434 | 434 | ||
| 435 | IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id, | 435 | IWL_ERR(mvm, "0x%08X | %s\n", table.error_id, |
| 436 | desc_lookup(table.error_id)); | 436 | desc_lookup(table.error_id)); |
| 437 | IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1); | 437 | IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1); |
| 438 | IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2); | 438 | IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2); |
| @@ -531,49 +531,50 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) | |||
| 531 | } | 531 | } |
| 532 | 532 | ||
| 533 | void iwl_mvm_enable_txq(struct iwl_mvm *mvm, int queue, u16 ssn, | 533 | void iwl_mvm_enable_txq(struct iwl_mvm *mvm, int queue, u16 ssn, |
| 534 | const struct iwl_trans_txq_scd_cfg *cfg) | 534 | const struct iwl_trans_txq_scd_cfg *cfg, |
| 535 | unsigned int wdg_timeout) | ||
| 535 | { | 536 | { |
| 536 | if (iwl_mvm_is_dqa_supported(mvm)) { | 537 | struct iwl_scd_txq_cfg_cmd cmd = { |
| 537 | struct iwl_scd_txq_cfg_cmd cmd = { | 538 | .scd_queue = queue, |
| 538 | .scd_queue = queue, | 539 | .enable = 1, |
| 539 | .enable = 1, | 540 | .window = cfg->frame_limit, |
| 540 | .window = cfg->frame_limit, | 541 | .sta_id = cfg->sta_id, |
| 541 | .sta_id = cfg->sta_id, | 542 | .ssn = cpu_to_le16(ssn), |
| 542 | .ssn = cpu_to_le16(ssn), | 543 | .tx_fifo = cfg->fifo, |
| 543 | .tx_fifo = cfg->fifo, | 544 | .aggregate = cfg->aggregate, |
| 544 | .aggregate = cfg->aggregate, | 545 | .tid = cfg->tid, |
| 545 | .flags = IWL_SCD_FLAGS_DQA_ENABLED, | 546 | }; |
| 546 | .tid = cfg->tid, | 547 | |
| 547 | .control = IWL_SCD_CONTROL_SET_SSN, | 548 | if (!iwl_mvm_is_scd_cfg_supported(mvm)) { |
| 548 | }; | 549 | iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, cfg, |
| 549 | int ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, | 550 | wdg_timeout); |
| 550 | sizeof(cmd), &cmd); | 551 | return; |
| 551 | if (ret) | ||
| 552 | IWL_ERR(mvm, | ||
| 553 | "Failed to configure queue %d on FIFO %d\n", | ||
| 554 | queue, cfg->fifo); | ||
| 555 | } | 552 | } |
| 556 | 553 | ||
| 557 | iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, | 554 | iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, NULL, wdg_timeout); |
| 558 | iwl_mvm_is_dqa_supported(mvm) ? NULL : cfg); | 555 | WARN(iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, sizeof(cmd), &cmd), |
| 556 | "Failed to configure queue %d on FIFO %d\n", queue, cfg->fifo); | ||
| 559 | } | 557 | } |
| 560 | 558 | ||
| 561 | void iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue) | 559 | void iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue, u8 flags) |
| 562 | { | 560 | { |
| 563 | iwl_trans_txq_disable(mvm->trans, queue, | 561 | struct iwl_scd_txq_cfg_cmd cmd = { |
| 564 | !iwl_mvm_is_dqa_supported(mvm)); | 562 | .scd_queue = queue, |
| 565 | 563 | .enable = 0, | |
| 566 | if (iwl_mvm_is_dqa_supported(mvm)) { | 564 | }; |
| 567 | struct iwl_scd_txq_cfg_cmd cmd = { | 565 | int ret; |
| 568 | .scd_queue = queue, | 566 | |
| 569 | .enable = 0, | 567 | if (!iwl_mvm_is_scd_cfg_supported(mvm)) { |
| 570 | }; | 568 | iwl_trans_txq_disable(mvm->trans, queue, true); |
| 571 | int ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, CMD_ASYNC, | 569 | return; |
| 572 | sizeof(cmd), &cmd); | ||
| 573 | if (ret) | ||
| 574 | IWL_ERR(mvm, "Failed to disable queue %d (ret=%d)\n", | ||
| 575 | queue, ret); | ||
| 576 | } | 570 | } |
| 571 | |||
| 572 | iwl_trans_txq_disable(mvm->trans, queue, false); | ||
| 573 | ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, flags, | ||
| 574 | sizeof(cmd), &cmd); | ||
| 575 | if (ret) | ||
| 576 | IWL_ERR(mvm, "Failed to disable queue %d (ret=%d)\n", | ||
| 577 | queue, ret); | ||
| 577 | } | 578 | } |
| 578 | 579 | ||
| 579 | /** | 580 | /** |
| @@ -665,7 +666,7 @@ bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm) | |||
| 665 | if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1) | 666 | if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1) |
| 666 | return false; | 667 | return false; |
| 667 | 668 | ||
| 668 | if (!mvm->cfg->rx_with_siso_diversity) | 669 | if (mvm->cfg->rx_with_siso_diversity) |
| 669 | return false; | 670 | return false; |
| 670 | 671 | ||
| 671 | ieee80211_iterate_active_interfaces_atomic( | 672 | ieee80211_iterate_active_interfaces_atomic( |
