All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Coelho <luca@coelho.fi>
To: linux-wireless@vger.kernel.org
Cc: kvalo@codeaurora.org, Sara Sharon <sara.sharon@intel.com>,
	Luca Coelho <luciano.coelho@intel.com>
Subject: [PATCH 06/17] iwlwifi: mvm: fix references to first_agg_queue in DQA mode
Date: Wed,  8 Feb 2017 13:23:11 +0200	[thread overview]
Message-ID: <20170208112322.29413-7-luca@coelho.fi> (raw)
In-Reply-To: <20170208112322.29413-1-luca@coelho.fi>

From: Sara Sharon <sara.sharon@intel.com>

In DQA mode, first_agg_queue is initialized to
IWL_MVM_DQA_MIN_DATA_QUEUE. This causes two bugs in the tx response
flow:

1. When TX fails, we set IEEE80211_TX_STAT_AMPDU_NO_BACK regardless
   if we actually have aggregation open on the queue. This causes
   mac80211 to send a BAR frame even though there is no aggregation
   open.
   Fix that by simply checking the AMPDU flag that is set on by
   mac80211 for AMPDU packets.

2. When reclaiming frames in aggregation mode, we reclaim based on
   scheduler ssn and not the SN.
   The reason is that scheduler ssn may be ahead of SN due to a hole
   in the BA window that was filled.
   However, if we have aggregations open on IWL_MVM_DQA_BSS_CLIENT_QUEUE
   the reclaim flow will still go to the code of non-aggregation
   instead of the aggregation code since IWL_MVM_DQA_BSS_CLIENT_QUEUE
   is smaller than IWL_MVM_DQA_MIN_DATA_QUEUE, although it is a valid
   aggregation queue.
   Fix that by always using the aggregation reclaim code by default in
   DQA mode (currently it is implicitly used by default for all queues
   except the reserved BSS queue).

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>
---
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 4ba639eda7a3..1d147599cca9 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -1274,8 +1274,6 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
 
 		memset(&info->status, 0, sizeof(info->status));
 
-		info->flags &= ~IEEE80211_TX_CTL_AMPDU;
-
 		/* inform mac80211 about what happened with the frame */
 		switch (status & TX_STATUS_MSK) {
 		case TX_STATUS_SUCCESS:
@@ -1298,10 +1296,11 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
 			(void *)(uintptr_t)le32_to_cpu(tx_resp->initial_rate);
 
 		/* Single frame failure in an AMPDU queue => send BAR */
-		if (txq_id >= mvm->first_agg_queue &&
+		if (info->flags & IEEE80211_TX_CTL_AMPDU &&
 		    !(info->flags & IEEE80211_TX_STAT_ACK) &&
 		    !(info->flags & IEEE80211_TX_STAT_TX_FILTERED))
 			info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
+		info->flags &= ~IEEE80211_TX_CTL_AMPDU;
 
 		/* W/A FW bug: seq_ctl is wrong when the status isn't success */
 		if (status != TX_STATUS_SUCCESS) {
@@ -1336,7 +1335,7 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
 		ieee80211_tx_status(mvm->hw, skb);
 	}
 
-	if (txq_id >= mvm->first_agg_queue) {
+	if (iwl_mvm_is_dqa_supported(mvm) || txq_id >= mvm->first_agg_queue) {
 		/* If this is an aggregation queue, we use the ssn since:
 		 * ssn = wifi seq_num % 256.
 		 * The seq_ctl is the sequence control of the packet to which
-- 
2.11.0

  parent reply	other threads:[~2017-02-08 11:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-08 11:23 [PATCH 00/17] iwlwifi: updates intended for v4.11 2017-02-08 Luca Coelho
2017-02-08 11:23 ` [PATCH 01/17] iwlwifi: pcie: move msix conf functions above other functions Luca Coelho
2017-02-08 11:23 ` [PATCH 02/17] iwlwifi: pcie: separate between SW and HW MSIX configuration Luca Coelho
2017-02-08 11:23 ` [PATCH 03/17] iwlwifi: pcie: re-configure IVAR table after suspend-resume Luca Coelho
2017-02-08 11:23 ` [PATCH 04/17] iwlwifi: pcie: Re-configure IVAR table after stop device Luca Coelho
2017-02-08 11:23 ` [PATCH 05/17] iwlwifi: mvm: fix a print of NSS for HT rate Luca Coelho
2017-02-08 11:23 ` Luca Coelho [this message]
2017-02-08 11:23 ` [PATCH 07/17] iwlwifi: mvm: fix reorder timer re-arming Luca Coelho
2017-02-08 11:23 ` [PATCH 08/17] iwlwifi: mvm: use the PROBE_RESP_QUEUE to send deauth to unknown station Luca Coelho
2017-02-08 14:29 ` [PATCH 00/17] iwlwifi: updates intended for v4.11 2017-02-08 Kalle Valo
2017-02-08 14:31   ` Coelho, Luciano
2017-02-08 15:51 ` [PATCH 09/17] iwlwifi: pcie: don't increment / decrement a bool Luca Coelho
2017-02-08 15:51   ` [PATCH 10/17] iwlwifi: make RTPM depend on EXPERT Luca Coelho
2017-02-08 15:51   ` [PATCH 11/17] iwlwifi: dvm: don't call << operator with a negative value Luca Coelho
2017-02-08 15:51   ` [PATCH 12/17] iwlwifi: mvm: " Luca Coelho
2017-02-08 15:51   ` [PATCH 13/17] iwlwifi: pcie: set STATUS_RFKILL immediately after interrupt Luca Coelho
2017-02-08 15:51   ` [PATCH 14/17] iwlwifi: mvm: Fix CSA received immediately after association Luca Coelho
2017-02-08 15:51   ` [PATCH 15/17] iwlwifi: mvm: avoid race condition in ADD_STA Luca Coelho
2017-02-08 15:51   ` [PATCH 16/17] iwlwifi: mvm: Fix removal of IGTK Luca Coelho
2017-02-08 15:51   ` [PATCH 17/17] iwlwifi: mvm: avoid exceeding the allowed print length Luca Coelho

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170208112322.29413-7-luca@coelho.fi \
    --to=luca@coelho.fi \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luciano.coelho@intel.com \
    --cc=sara.sharon@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.