diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c index f6d86ccce6a8..7bdc6220743f 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | |||
@@ -208,8 +208,10 @@ u32 iwl_mvm_mac_get_queues_mask(struct ieee80211_vif *vif) | |||
208 | if (vif->type == NL80211_IFTYPE_P2P_DEVICE) | 208 | if (vif->type == NL80211_IFTYPE_P2P_DEVICE) |
209 | return BIT(IWL_MVM_OFFCHANNEL_QUEUE); | 209 | return BIT(IWL_MVM_OFFCHANNEL_QUEUE); |
210 | 210 | ||
211 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) | 211 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { |
212 | qmask |= BIT(vif->hw_queue[ac]); | 212 | if (vif->hw_queue[ac] != IEEE80211_INVAL_HW_QUEUE) |
213 | qmask |= BIT(vif->hw_queue[ac]); | ||
214 | } | ||
213 | 215 | ||
214 | if (vif->type == NL80211_IFTYPE_AP) | 216 | if (vif->type == NL80211_IFTYPE_AP) |
215 | qmask |= BIT(vif->cab_queue); | 217 | qmask |= BIT(vif->cab_queue); |
@@ -460,6 +462,9 @@ exit_fail: | |||
460 | 462 | ||
461 | int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) | 463 | int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) |
462 | { | 464 | { |
465 | unsigned int wdg_timeout = iwlmvm_mod_params.tfd_q_hang_detect ? | ||
466 | mvm->cfg->base_params->wd_timeout : | ||
467 | IWL_WATCHDOG_DISABLED; | ||
463 | u32 ac; | 468 | u32 ac; |
464 | int ret; | 469 | int ret; |
465 | 470 | ||
@@ -472,16 +477,17 @@ int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) | |||
472 | switch (vif->type) { | 477 | switch (vif->type) { |
473 | case NL80211_IFTYPE_P2P_DEVICE: | 478 | case NL80211_IFTYPE_P2P_DEVICE: |
474 | iwl_mvm_enable_ac_txq(mvm, IWL_MVM_OFFCHANNEL_QUEUE, | 479 | iwl_mvm_enable_ac_txq(mvm, IWL_MVM_OFFCHANNEL_QUEUE, |
475 | IWL_MVM_TX_FIFO_VO); | 480 | IWL_MVM_TX_FIFO_VO, wdg_timeout); |
476 | break; | 481 | break; |
477 | case NL80211_IFTYPE_AP: | 482 | case NL80211_IFTYPE_AP: |
478 | iwl_mvm_enable_ac_txq(mvm, vif->cab_queue, | 483 | iwl_mvm_enable_ac_txq(mvm, vif->cab_queue, |
479 | IWL_MVM_TX_FIFO_MCAST); | 484 | IWL_MVM_TX_FIFO_MCAST, wdg_timeout); |
480 | /* fall through */ | 485 | /* fall through */ |
481 | default: | 486 | default: |
482 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) | 487 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) |
483 | iwl_mvm_enable_ac_txq(mvm, vif->hw_queue[ac], | 488 | iwl_mvm_enable_ac_txq(mvm, vif->hw_queue[ac], |
484 | iwl_mvm_ac_to_tx_fifo[ac]); | 489 | iwl_mvm_ac_to_tx_fifo[ac], |
490 | wdg_timeout); | ||
485 | break; | 491 | break; |
486 | } | 492 | } |
487 | 493 | ||
@@ -496,14 +502,14 @@ void iwl_mvm_mac_ctxt_release(struct iwl_mvm *mvm, struct ieee80211_vif *vif) | |||
496 | 502 | ||
497 | switch (vif->type) { | 503 | switch (vif->type) { |
498 | case NL80211_IFTYPE_P2P_DEVICE: | 504 | case NL80211_IFTYPE_P2P_DEVICE: |
499 | iwl_mvm_disable_txq(mvm, IWL_MVM_OFFCHANNEL_QUEUE); | 505 | iwl_mvm_disable_txq(mvm, IWL_MVM_OFFCHANNEL_QUEUE, 0); |
500 | break; | 506 | break; |
501 | case NL80211_IFTYPE_AP: | 507 | case NL80211_IFTYPE_AP: |
502 | iwl_mvm_disable_txq(mvm, vif->cab_queue); | 508 | iwl_mvm_disable_txq(mvm, vif->cab_queue, 0); |
503 | /* fall through */ | 509 | /* fall through */ |
504 | default: | 510 | default: |
505 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) | 511 | for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) |
506 | iwl_mvm_disable_txq(mvm, vif->hw_queue[ac]); | 512 | iwl_mvm_disable_txq(mvm, vif->hw_queue[ac], 0); |
507 | } | 513 | } |
508 | } | 514 | } |
509 | 515 | ||
@@ -975,7 +981,7 @@ static int iwl_mvm_mac_ctxt_send_beacon(struct iwl_mvm *mvm, | |||
975 | beacon_cmd.tx.tx_flags = cpu_to_le32(tx_flags); | 981 | beacon_cmd.tx.tx_flags = cpu_to_le32(tx_flags); |
976 | 982 | ||
977 | mvm->mgmt_last_antenna_idx = | 983 | mvm->mgmt_last_antenna_idx = |
978 | iwl_mvm_next_antenna(mvm, mvm->fw->valid_tx_ant, | 984 | iwl_mvm_next_antenna(mvm, iwl_mvm_get_valid_tx_ant(mvm), |
979 | mvm->mgmt_last_antenna_idx); | 985 | mvm->mgmt_last_antenna_idx); |
980 | 986 | ||
981 | beacon_cmd.tx.rate_n_flags = | 987 | beacon_cmd.tx.rate_n_flags = |