summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2017-11-09 18:14:40 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2017-11-09 18:14:40 -0500
commit017629002e331d2a5a1161226e73bf8d5766d1d7 (patch)
tree4e5772962ea7b163afa3aa82ba99b72e9d10a0f2
parent41edc4f5e914bf0069a8810adef9f3c612a5841e (diff)
downloadlongterm-queue-4.8-017629002e331d2a5a1161226e73bf8d5766d1d7.tar.gz
iwlwifi: drop and yet another patch n/a for 4.8.x
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--queue/iwlwifi-mvm-fix-pending-frame-counter-calculation.patch148
-rw-r--r--queue/series1
2 files changed, 0 insertions, 149 deletions
diff --git a/queue/iwlwifi-mvm-fix-pending-frame-counter-calculation.patch b/queue/iwlwifi-mvm-fix-pending-frame-counter-calculation.patch
deleted file mode 100644
index 9c908b0..0000000
--- a/queue/iwlwifi-mvm-fix-pending-frame-counter-calculation.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 94c3e614df2117626fccfac8f821c66e30556384 Mon Sep 17 00:00:00 2001
-From: Sara Sharon <sara.sharon@intel.com>
-Date: Wed, 7 Dec 2016 15:04:37 +0200
-Subject: [PATCH] iwlwifi: mvm: fix pending frame counter calculation
-
-commit 94c3e614df2117626fccfac8f821c66e30556384 upstream.
-
-In DQA mode the check whether to decrement the pending frames
-counter relies on the tid status and not on the txq id.
-This may result in an inconsistent state of the pending frames
-counter in case frame is queued on a non aggregation queue but
-with this TID, and will be followed by a failure to remove the
-station and later on SYSASSERT 0x3421 when trying to remove the
-MAC.
-Such frames are for example bar and qos NDPs.
-Fix it by aligning the condition of incrementing the counter
-with the condition of decrementing it - rely on TID state for
-DQA mode.
-Also, avoid internal error like this affecting station removal
-for DQA mode - since we can know for sure it is an internal
-error.
-
-Fixes: cf961e16620f ("iwlwifi: mvm: support dqa-mode agg on non-shared queue")
-Signed-off-by: Sara Sharon <sara.sharon@intel.com>
-Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-
-diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
-index 40fb64ead469..1bad933b3ad4 100644
---- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
-+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
-@@ -1501,6 +1501,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- {
- struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
- struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta);
-+ u8 sta_id = mvm_sta->sta_id;
- int ret;
-
- lockdep_assert_held(&mvm->mutex);
-@@ -1509,7 +1510,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- kfree(mvm_sta->dup_data);
-
- if ((vif->type == NL80211_IFTYPE_STATION &&
-- mvmvif->ap_sta_id == mvm_sta->sta_id) ||
-+ mvmvif->ap_sta_id == sta_id) ||
- iwl_mvm_is_dqa_supported(mvm)){
- ret = iwl_mvm_drain_sta(mvm, mvm_sta, true);
- if (ret)
-@@ -1525,8 +1526,17 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- ret = iwl_mvm_drain_sta(mvm, mvm_sta, false);
-
- /* If DQA is supported - the queues can be disabled now */
-- if (iwl_mvm_is_dqa_supported(mvm))
-+ if (iwl_mvm_is_dqa_supported(mvm)) {
- iwl_mvm_disable_sta_queues(mvm, vif, mvm_sta);
-+ /*
-+ * If pending_frames is set at this point - it must be
-+ * driver internal logic error, since queues are empty
-+ * and removed successuly.
-+ * warn on it but set it to 0 anyway to avoid station
-+ * not being removed later in the function
-+ */
-+ WARN_ON(atomic_xchg(&mvm->pending_frames[sta_id], 0));
-+ }
-
- /* If there is a TXQ still marked as reserved - free it */
- if (iwl_mvm_is_dqa_supported(mvm) &&
-@@ -1544,7 +1554,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- if (WARN((*status != IWL_MVM_QUEUE_RESERVED) &&
- (*status != IWL_MVM_QUEUE_FREE),
- "sta_id %d reserved txq %d status %d",
-- mvm_sta->sta_id, reserved_txq, *status)) {
-+ sta_id, reserved_txq, *status)) {
- spin_unlock_bh(&mvm->queue_info_lock);
- return -EINVAL;
- }
-@@ -1554,7 +1564,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- }
-
- if (vif->type == NL80211_IFTYPE_STATION &&
-- mvmvif->ap_sta_id == mvm_sta->sta_id) {
-+ mvmvif->ap_sta_id == sta_id) {
- /* if associated - we can't remove the AP STA now */
- if (vif->bss_conf.assoc)
- return ret;
-@@ -1563,7 +1573,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT;
-
- /* clear d0i3_ap_sta_id if no longer relevant */
-- if (mvm->d0i3_ap_sta_id == mvm_sta->sta_id)
-+ if (mvm->d0i3_ap_sta_id == sta_id)
- mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
- }
- }
-@@ -1572,7 +1582,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- * This shouldn't happen - the TDLS channel switch should be canceled
- * before the STA is removed.
- */
-- if (WARN_ON_ONCE(mvm->tdls_cs.peer.sta_id == mvm_sta->sta_id)) {
-+ if (WARN_ON_ONCE(mvm->tdls_cs.peer.sta_id == sta_id)) {
- mvm->tdls_cs.peer.sta_id = IWL_MVM_STATION_COUNT;
- cancel_delayed_work(&mvm->tdls_cs.dwork);
- }
-@@ -1582,21 +1592,20 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
- * calls the drain worker.
- */
- spin_lock_bh(&mvm_sta->lock);
-+
- /*
- * There are frames pending on the AC queues for this station.
- * We need to wait until all the frames are drained...
- */
-- if (atomic_read(&mvm->pending_frames[mvm_sta->sta_id])) {
-- rcu_assign_pointer(mvm->fw_id_to_mac_id[mvm_sta->sta_id],
-+ if (atomic_read(&mvm->pending_frames[sta_id])) {
-+ rcu_assign_pointer(mvm->fw_id_to_mac_id[sta_id],
- ERR_PTR(-EBUSY));
- spin_unlock_bh(&mvm_sta->lock);
-
- /* disable TDLS sta queues on drain complete */
- if (sta->tdls) {
-- mvm->tfd_drained[mvm_sta->sta_id] =
-- mvm_sta->tfd_queue_msk;
-- IWL_DEBUG_TDLS(mvm, "Draining TDLS sta %d\n",
-- mvm_sta->sta_id);
-+ mvm->tfd_drained[sta_id] = mvm_sta->tfd_queue_msk;
-+ IWL_DEBUG_TDLS(mvm, "Draining TDLS sta %d\n", sta_id);
- }
-
- ret = iwl_mvm_drain_sta(mvm, mvm_sta, true);
-diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
-index 8daf4fbe4534..f82b765650d6 100644
---- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
-+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
-@@ -1015,7 +1015,10 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
- spin_unlock(&mvmsta->lock);
-
- /* Increase pending frames count if this isn't AMPDU */
-- if (!is_ampdu)
-+ if ((iwl_mvm_is_dqa_supported(mvm) &&
-+ mvmsta->tid_data[tx_cmd->tid_tspec].state != IWL_AGG_ON &&
-+ mvmsta->tid_data[tx_cmd->tid_tspec].state != IWL_AGG_STARTING) ||
-+ (!iwl_mvm_is_dqa_supported(mvm) && !is_ampdu))
- atomic_inc(&mvm->pending_frames[mvmsta->sta_id]);
-
- return 0;
---
-2.12.0
-
diff --git a/queue/series b/queue/series
index 69fe9a7..2f3f9ea 100644
--- a/queue/series
+++ b/queue/series
@@ -86,7 +86,6 @@ iwlwifi-mvm-overwrite-skb-info-later.patch
iwlwifi-pcie-don-t-increment-decrement-a-bool.patch
iwlwifi-mvm-fix-reorder-timer-re-arming.patch
iwlwifi-mvm-Use-aux-queue-for-offchannel-frames-in-d.patch
-iwlwifi-mvm-fix-pending-frame-counter-calculation.patch
iwlwifi-mvm-fix-references-to-first_agg_queue-in-DQA.patch
iwlwifi-mvm-synchronize-firmware-DMA-paging-memory.patch
iwlwifi-mvm-writing-zero-bytes-to-debugfs-causes-a-c.patch