diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/utils.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/utils.c | 79 |
1 files changed, 40 insertions, 39 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c index 917431e30f74..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 | /** |
@@ -620,7 +621,7 @@ void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
620 | lockdep_assert_held(&mvm->mutex); | 621 | lockdep_assert_held(&mvm->mutex); |
621 | 622 | ||
622 | /* SMPS is irrelevant for NICs that don't have at least 2 RX antenna */ | 623 | /* SMPS is irrelevant for NICs that don't have at least 2 RX antenna */ |
623 | if (num_of_ant(mvm->fw->valid_rx_ant) == 1) | 624 | if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1) |
624 | return; | 625 | return; |
625 | 626 | ||
626 | if (vif->type == NL80211_IFTYPE_AP) | 627 | if (vif->type == NL80211_IFTYPE_AP) |
@@ -662,7 +663,7 @@ bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm) | |||
662 | 663 | ||
663 | lockdep_assert_held(&mvm->mutex); | 664 | lockdep_assert_held(&mvm->mutex); |
664 | 665 | ||
665 | if (num_of_ant(mvm->fw->valid_rx_ant) == 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) |